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

Commit 81d018fb authored by Joseph Pirozzo's avatar Joseph Pirozzo Committed by android-build-merger
Browse files

Merge "Support AVRCP Controller on JNI thread" into pi-dev am: 6785d68a

am: 5d8a5a25

Change-Id: I2a74ec21f663b463e739e48c4c9e12d32b48355f
parents ce587f5f 5d8a5a25
Loading
Loading
Loading
Loading
+53 −46
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ static bool copy_jstring(uint8_t* str, int maxBytes, jstring jstr, JNIEnv* env);

static void cleanup_items(btrc_folder_items_t* p_items, int numItems);

static void btavrcp_remote_features_callback(RawAddress* bd_addr,
static void btavrcp_remote_features_callback(const RawAddress& bd_addr,
                                             btrc_remote_features_t features) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;
@@ -76,13 +76,13 @@ static void btavrcp_remote_features_callback(RawAddress* bd_addr,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getRcFeatures, addr.get(),
                               (jint)features);
}

/** Callback for play status request */
static void btavrcp_get_play_status_callback(RawAddress* bd_addr) {
static void btavrcp_get_play_status_callback(const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -99,13 +99,13 @@ static void btavrcp_get_play_status_callback(RawAddress* bd_addr) {
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getPlayStatus, addr.get());
}

static void btavrcp_get_element_attr_callback(uint8_t num_attr,
                                              btrc_media_attr_t* p_attrs,
                                              RawAddress* bd_addr) {
                                              const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -131,14 +131,14 @@ static void btavrcp_get_element_attr_callback(uint8_t num_attr,
  sCallbackEnv->SetIntArrayRegion(attrs.get(), 0, num_attr, (jint*)p_attrs);

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getElementAttr, addr.get(),
                               (jbyte)num_attr, attrs.get());
}

static void btavrcp_register_notification_callback(btrc_event_id_t event_id,
                                                   uint32_t param,
                                                   RawAddress* bd_addr) {
                                                   const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -155,13 +155,13 @@ static void btavrcp_register_notification_callback(btrc_event_id_t event_id,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_registerNotification,
                               addr.get(), (jint)event_id, (jint)param);
}

static void btavrcp_volume_change_callback(uint8_t volume, uint8_t ctype,
                                           RawAddress* bd_addr) {
                                           const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -178,14 +178,14 @@ static void btavrcp_volume_change_callback(uint8_t volume, uint8_t ctype,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);

  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_volumeChangeCallback,
                               addr.get(), (jint)volume, (jint)ctype);
}

static void btavrcp_passthrough_command_callback(int id, int pressed,
                                                 RawAddress* bd_addr) {
                                                 const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -201,14 +201,14 @@ static void btavrcp_passthrough_command_callback(int id, int pressed,
    return;
  }
  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);

  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_handlePassthroughCmd,
                               addr.get(), (jint)id, (jint)pressed);
}

static void btavrcp_set_addressed_player_callback(uint16_t player_id,
                                                  RawAddress* bd_addr) {
                                                  const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -225,13 +225,13 @@ static void btavrcp_set_addressed_player_callback(uint16_t player_id,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_setAddressedPlayerCallback,
                               addr.get(), (jint)player_id);
}

static void btavrcp_set_browsed_player_callback(uint16_t player_id,
                                                RawAddress* bd_addr) {
                                                const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;
  if (!mCallbacksObj) {
@@ -246,7 +246,7 @@ static void btavrcp_set_browsed_player_callback(uint16_t player_id,
    return;
  }
  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);

  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_setBrowsedPlayerCallback,
                               addr.get(), (jint)player_id);
@@ -254,7 +254,7 @@ static void btavrcp_set_browsed_player_callback(uint16_t player_id,

static void btavrcp_get_folder_items_callback(
    uint8_t scope, uint32_t start_item, uint32_t end_item, uint8_t num_attr,
    uint32_t* p_attr_ids, RawAddress* bd_addr) {
    uint32_t* p_attr_ids, const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -273,7 +273,7 @@ static void btavrcp_get_folder_items_callback(
  uint32_t* puiAttr = (uint32_t*)p_attr_ids;
  ScopedLocalRef<jintArray> attr_ids(sCallbackEnv.get(), NULL);
  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);

  /* check number of attributes requested by remote device */
  if ((num_attr != BTRC_NUM_ATTR_ALL) && (num_attr != BTRC_NUM_ATTR_NONE)) {
@@ -294,7 +294,7 @@ static void btavrcp_get_folder_items_callback(
}

static void btavrcp_change_path_callback(uint8_t direction, uint8_t* folder_uid,
                                         RawAddress* bd_addr) {
                                         const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -318,7 +318,7 @@ static void btavrcp_change_path_callback(uint8_t direction, uint8_t* folder_uid,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->SetByteArrayRegion(
      attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)folder_uid);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_changePathCallback,
@@ -329,7 +329,7 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid,
                                           uint16_t uid_counter,
                                           uint8_t num_attr,
                                           btrc_media_attr_t* p_attrs,
                                           RawAddress* bd_addr) {
                                           const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;

@@ -360,7 +360,7 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->SetIntArrayRegion(attrs.get(), 0, num_attr, (jint*)p_attrs);
  sCallbackEnv->SetByteArrayRegion(
      attr_uid.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid);
@@ -371,7 +371,8 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid,
}

static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter,
                                       uint8_t* uid, RawAddress* bd_addr) {
                                       uint8_t* uid,
                                       const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;
  if (!mCallbacksObj) {
@@ -394,7 +395,7 @@ static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->SetByteArrayRegion(
      attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_playItemCallback,
@@ -403,7 +404,7 @@ static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter,
}

static void btavrcp_get_total_num_items_callback(uint8_t scope,
                                                 RawAddress* bd_addr) {
                                                 const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;
  if (!mCallbacksObj) {
@@ -419,13 +420,13 @@ static void btavrcp_get_total_num_items_callback(uint8_t scope,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getTotalNumOfItemsCallback,
                               addr.get(), (jbyte)scope);
}

static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len,
                                    uint8_t* p_str, RawAddress* bd_addr) {
                                    uint8_t* p_str, const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;
  if (!mCallbacksObj) {
@@ -448,7 +449,7 @@ static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->SetByteArrayRegion(attrs.get(), 0, str_len * sizeof(uint8_t),
                                   (jbyte*)p_str);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_searchCallback, addr.get(),
@@ -457,7 +458,7 @@ static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len,

static void btavrcp_add_to_play_list_callback(uint8_t scope, uint8_t* uid,
                                              uint16_t uid_counter,
                                              RawAddress* bd_addr) {
                                              const RawAddress& bd_addr) {
  CallbackEnv sCallbackEnv(__func__);
  if (!sCallbackEnv.valid()) return;
  if (!mCallbacksObj) {
@@ -480,7 +481,7 @@ static void btavrcp_add_to_play_list_callback(uint8_t scope, uint8_t* uid,
  }

  sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(RawAddress),
                                   (jbyte*)bd_addr);
                                   (jbyte*)bd_addr.address);
  sCallbackEnv->SetByteArrayRegion(
      attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid);
  sCallbackEnv->CallVoidMethod(mCallbacksObj, method_addToPlayListCallback,
@@ -629,9 +630,11 @@ static jboolean getPlayStatusRspNative(JNIEnv* env, jobject object,
    jniThrowIOException(env, EINVAL);
    return JNI_FALSE;
  }
  RawAddress rawAddress;
  rawAddress.FromOctets((uint8_t*)addr);

  bt_status_t status = sBluetoothAvrcpInterface->get_play_status_rsp(
      (RawAddress*)addr, (btrc_play_status_t)playStatus, songLen, songPos);
      rawAddress, (btrc_play_status_t)playStatus, songLen, songPos);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed get_play_status_rsp, status: %d", status);
  }
@@ -693,9 +696,10 @@ static jboolean getElementAttrRspNative(JNIEnv* env, jobject object,
    return JNI_FALSE;
  }

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status =
      sBluetoothAvrcpInterface->get_element_attr_rsp(btAddr, numAttr, pAttrs);
  RawAddress rawAddress;
  rawAddress.FromOctets((uint8_t*)addr);
  bt_status_t status = sBluetoothAvrcpInterface->get_element_attr_rsp(
      rawAddress, numAttr, pAttrs);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed get_element_attr_rsp, status: %d", status);
  }
@@ -756,10 +760,11 @@ static jboolean getItemAttrRspNative(JNIEnv* env, jobject object,
      break;
    }
  }
  RawAddress rawAddress;
  rawAddress.FromOctets((uint8_t*)addr);

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->get_item_attr_rsp(
      btAddr, (btrc_status_t)rspStatus, numAttr, pAttrs);
      rawAddress, (btrc_status_t)rspStatus, numAttr, pAttrs);
  if (status != BT_STATUS_SUCCESS)
    ALOGE("Failed get_item_attr_rsp, status: %d", status);

@@ -1025,7 +1030,7 @@ static jboolean mediaPlayerListRspNative(

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->get_folder_items_list_rsp(
      btAddr, (btrc_status_t)rspStatus, uidCounter, numItems, p_items);
      *btAddr, (btrc_status_t)rspStatus, uidCounter, numItems, p_items);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed get_folder_items_list_rsp, status: %d", status);
  }
@@ -1160,7 +1165,7 @@ static jboolean getFolderItemsRspNative(

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->get_folder_items_list_rsp(
      btAddr, (btrc_status_t)rspStatus, uidCounter, numItems, p_items);
      *btAddr, (btrc_status_t)rspStatus, uidCounter, numItems, p_items);
  if (status != BT_STATUS_SUCCESS)
    ALOGE("Failed get_folder_items_list_rsp, status: %d", status);

@@ -1198,7 +1203,7 @@ static jboolean setAddressedPlayerRspNative(JNIEnv* env, jobject object,

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->set_addressed_player_rsp(
      btAddr, (btrc_status_t)rspStatus);
      *btAddr, (btrc_status_t)rspStatus);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed set_addressed_player_rsp, status: %d", status);
  }
@@ -1252,7 +1257,7 @@ static jboolean setBrowsedPlayerRspNative(JNIEnv* env, jobject object,
  uint16_t charset_id = BTRC_CHARSET_ID_UTF8;
  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->set_browsed_player_rsp(
      btAddr, (btrc_status_t)rspStatus, numItems, charset_id, folder_depth,
      *btAddr, (btrc_status_t)rspStatus, numItems, charset_id, folder_depth,
      p_folders);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("%s: Failed set_browsed_player_rsp, status: %d", __func__, status);
@@ -1283,7 +1288,7 @@ static jboolean changePathRspNative(JNIEnv* env, jobject object,
  uint32_t nItems = (uint32_t)numItems;
  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->change_path_rsp(
      btAddr, (btrc_status_t)rspStatus, (uint32_t)nItems);
      *btAddr, (btrc_status_t)rspStatus, (uint32_t)nItems);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed change_path_rsp, status: %d", status);
  }
@@ -1309,7 +1314,8 @@ static jboolean searchRspNative(JNIEnv* env, jobject object, jbyteArray address,
  uint32_t nItems = (uint32_t)numItems;
  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->search_rsp(
      btAddr, (btrc_status_t)rspStatus, (uint32_t)uidCounter, (uint32_t)nItems);
      *btAddr, (btrc_status_t)rspStatus, (uint32_t)uidCounter,
      (uint32_t)nItems);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed search_rsp, status: %d", status);
  }
@@ -1333,8 +1339,8 @@ static jboolean playItemRspNative(JNIEnv* env, jobject object,
  }

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status =
      sBluetoothAvrcpInterface->play_item_rsp(btAddr, (btrc_status_t)rspStatus);
  bt_status_t status = sBluetoothAvrcpInterface->play_item_rsp(
      *btAddr, (btrc_status_t)rspStatus);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed play_item_rsp, status: %d", status);
  }
@@ -1360,7 +1366,8 @@ static jboolean getTotalNumOfItemsRspNative(JNIEnv* env, jobject object,
  uint32_t nItems = (uint32_t)numItems;
  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->get_total_num_of_items_rsp(
      btAddr, (btrc_status_t)rspStatus, (uint32_t)uidCounter, (uint32_t)nItems);
      *btAddr, (btrc_status_t)rspStatus, (uint32_t)uidCounter,
      (uint32_t)nItems);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed get_total_num_of_items_rsp, status: %d", status);
  }
@@ -1384,7 +1391,7 @@ static jboolean addToNowPlayingRspNative(JNIEnv* env, jobject object,

  RawAddress* btAddr = (RawAddress*)addr;
  bt_status_t status = sBluetoothAvrcpInterface->add_to_now_playing_rsp(
      btAddr, (btrc_status_t)rspStatus);
      *btAddr, (btrc_status_t)rspStatus);
  if (status != BT_STATUS_SUCCESS) {
    ALOGE("Failed add_to_now_playing_rsp, status: %d", status);
  }
+82 −48

File changed.

Preview size limit exceeded, changes collapsed.