Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c267d82 authored by Jakub Pawłowski's avatar Jakub Pawłowski Committed by Automerger Merge Worker
Browse files

Merge changes I3f2ebc2e,I85acad11 am: 68343043 am: 471f6deb

parents ab846233 471f6deb
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -605,7 +605,7 @@ jbyteArray prepareRawLtvArray(
                            (const jbyte*)&kv_pair.first);
    offset += 1;
    // Value
    env->SetByteArrayRegion(raw_metadata, offset, 1,
    env->SetByteArrayRegion(raw_metadata, offset, kv_pair.second.size(),
                            (const jbyte*)kv_pair.second.data());
    offset += kv_pair.second.size();
  }
@@ -839,7 +839,19 @@ jobject prepareBluetoothLeBroadcastMetadataObject(
    return nullptr;
  }

  ScopedLocalRef<jbyteArray> code(env, env->NewByteArray(sizeof(RawAddress)));
  // Skip the leading null char bytes
  int nativeCodeSize = 16;
  int nativeCodeLeadingZeros = 0;
  if (broadcast_metadata.broadcast_code) {
    auto& nativeCode = broadcast_metadata.broadcast_code.value();
    nativeCodeLeadingZeros =
        std::find_if(nativeCode.cbegin(), nativeCode.cend(),
                     [](int x) { return x != 0x00; }) -
        nativeCode.cbegin();
    nativeCodeSize = nativeCode.size() - nativeCodeLeadingZeros;
  }

  ScopedLocalRef<jbyteArray> code(env, env->NewByteArray(nativeCodeSize));
  if (!code.get()) {
    LOG(ERROR) << "Failed to create new jbyteArray for the broadcast code";
    return nullptr;
@@ -847,8 +859,10 @@ jobject prepareBluetoothLeBroadcastMetadataObject(

  if (broadcast_metadata.broadcast_code) {
    env->SetByteArrayRegion(
        code.get(), 0, sizeof(RawAddress),
        (jbyte*)broadcast_metadata.broadcast_code.value().data());
        code.get(), 0, nativeCodeSize,
        (const jbyte*)broadcast_metadata.broadcast_code->data() +
            nativeCodeLeadingZeros);
    CHECK(!env->ExceptionCheck());
  }

  return env->NewObject(
@@ -1150,8 +1164,9 @@ static void CreateBroadcastNative(JNIEnv* env, jobject object,
    }

    // Padding with zeros on LSB positions if code is shorter than 16 octets
    env->GetByteArrayRegion(broadcast_code, code_array.size() - size, size,
                            (jbyte*)code_array.data());
    env->GetByteArrayRegion(
        broadcast_code, 0, size,
        (jbyte*)code_array.data() + code_array.size() - size);
  }

  jbyte* meta = env->GetByteArrayElements(metadata, nullptr);
+3 −3
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.android.bluetooth.leaudio.R;

import java.io.ByteArrayOutputStream;
import java.util.Arrays;
import java.nio.charset.StandardCharsets;

public class BroadcasterActivity extends AppCompatActivity {
    private BroadcasterViewModel mViewModel;
@@ -149,8 +149,8 @@ public class BroadcasterActivity extends AppCompatActivity {
                byte[] code = metadata.getBroadcastCode();
                addr_text = metaLayout.findViewById(R.id.broadcast_code_text);
                if (code != null) {
                    addr_text.setText("Broadcast Code: " +
                            Arrays.toString(metadata.getBroadcastCode()));
                    addr_text.setText("Broadcast Code: "
                            + new String(code, StandardCharsets.UTF_8));
                } else {
                    addr_text.setVisibility(View.INVISIBLE);
                }