Loading jni/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,8 @@ LOCAL_SRC_FILES:= \ com_android_bluetooth_hdp.cpp \ com_android_bluetooth_pan.cpp \ com_android_bluetooth_gatt.cpp \ com_android_bluetooth_sdp.cpp com_android_bluetooth_sdp.cpp \ scoped_bt_addr.cpp LOCAL_C_INCLUDES += \ $(JNI_H_INCLUDE) \ Loading jni/com_android_bluetooth.h +3 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,8 @@ public: return mCallbackEnv; } const char* method_name() { return mName; } private: JNIEnv *mCallbackEnv; const char *mName; Loading jni/com_android_bluetooth_a2dp.cpp +5 −16 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "android_runtime/AndroidRuntime.h" #include "com_android_bluetooth.h" #include "hardware/bt_av.h" #include "scoped_bt_addr.h" #include "utils/Log.h" #include <string.h> Loading Loading @@ -53,15 +54,9 @@ static void bta2dp_connection_state_callback(btav_connection_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onConnectionStateChanged, (jint)state, addr.get()); } Loading @@ -72,15 +67,9 @@ static void bta2dp_audio_state_callback(btav_audio_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onAudioStateChanged, (jint)state, addr.get()); } Loading jni/com_android_bluetooth_a2dp_sink.cpp +7 −24 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "android_runtime/AndroidRuntime.h" #include "com_android_bluetooth.h" #include "hardware/bt_av.h" #include "scoped_bt_addr.h" #include "utils/Log.h" #include <string.h> Loading @@ -39,15 +40,9 @@ static void bta2dp_connection_state_callback(btav_connection_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onConnectionStateChanged, (jint)state, addr.get()); } Loading @@ -58,15 +53,9 @@ static void bta2dp_audio_state_callback(btav_audio_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onAudioStateChanged, (jint)state, addr.get()); } Loading @@ -78,15 +67,9 @@ static void bta2dp_audio_config_callback(bt_bdaddr_t* bd_addr, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onAudioConfigChanged, addr.get(), (jint)sample_rate, (jint)channel_count); Loading jni/com_android_bluetooth_avrcp.cpp +35 −126 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "android_runtime/AndroidRuntime.h" #include "com_android_bluetooth.h" #include "hardware/bt_rc.h" #include "scoped_bt_addr.h" #include "utils/Log.h" #include <string.h> Loading Loading @@ -68,15 +69,9 @@ static void btavrcp_remote_features_callback(bt_bdaddr_t* bd_addr, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Unable to allocate byte array for bd_addr"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getRcFeatures, addr.get(), (jint)features); } Loading @@ -92,15 +87,8 @@ static void btavrcp_get_play_status_callback(bt_bdaddr_t* bd_addr) { return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_play_status command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getPlayStatus, addr.get()); } Loading @@ -116,12 +104,8 @@ static void btavrcp_get_element_attr_callback(uint8_t num_attr, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_element_attr command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jintArray> attrs( sCallbackEnv.get(), (jintArray)sCallbackEnv->NewIntArray(num_attr)); Loading @@ -132,8 +116,6 @@ 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(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getElementAttr, addr.get(), (jbyte)num_attr, attrs.get()); } Loading @@ -149,15 +131,9 @@ static void btavrcp_register_notification_callback(btrc_event_id_t event_id, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for register_notification command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_registerNotification, addr.get(), (jint)event_id, (jint)param); } Loading @@ -173,15 +149,8 @@ static void btavrcp_volume_change_callback(uint8_t volume, uint8_t ctype, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for volume_change command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_volumeChangeCallback, addr.get(), (jint)volume, (jint)ctype); Loading @@ -198,14 +167,8 @@ static void btavrcp_passthrough_command_callback(int id, int pressed, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for passthrough_command command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_handlePassthroughCmd, addr.get(), (jint)id, (jint)pressed); Loading @@ -222,15 +185,9 @@ static void btavrcp_set_addressed_player_callback(uint16_t player_id, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for set_addressed_player command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_setAddressedPlayerCallback, addr.get(), (jint)player_id); } Loading @@ -245,14 +202,8 @@ static void btavrcp_set_browsed_player_callback(uint16_t player_id, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for set_browsed_player command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_setBrowsedPlayerCallback, addr.get(), (jint)player_id); Loading @@ -270,17 +221,11 @@ static void btavrcp_get_folder_items_callback( return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_folder_items command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; uint32_t* puiAttr = (uint32_t*)p_attr_ids; ScopedLocalRef<jintArray> attr_ids(sCallbackEnv.get(), NULL); sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); /* check number of attributes requested by remote device */ if ((num_attr != BTRC_NUM_ATTR_ALL) && (num_attr != BTRC_NUM_ATTR_NONE)) { Loading Loading @@ -311,6 +256,9 @@ static void btavrcp_change_path_callback(uint8_t direction, uint8_t* folder_uid, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); if (!attrs.get()) { Loading @@ -318,15 +266,6 @@ static void btavrcp_change_path_callback(uint8_t direction, uint8_t* folder_uid, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for change_path command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion( attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)folder_uid); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_changePathCallback, Loading @@ -347,6 +286,9 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attr_uid( sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); if (!attr_uid.get()) { Loading @@ -354,13 +296,6 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_item_attr command"); return; } ScopedLocalRef<jintArray> attrs( sCallbackEnv.get(), (jintArray)sCallbackEnv->NewIntArray(num_attr)); if (!attrs.get()) { Loading @@ -368,8 +303,6 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid, return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetIntArrayRegion(attrs.get(), 0, num_attr, (jint*)p_attrs); sCallbackEnv->SetByteArrayRegion( attr_uid.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid); Loading @@ -388,6 +321,9 @@ static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); if (!attrs.get()) { Loading @@ -395,15 +331,6 @@ static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for play_item command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion( attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_playItemCallback, Loading @@ -420,15 +347,9 @@ static void btavrcp_get_total_num_items_callback(uint8_t scope, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_total_num_items command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getTotalNumOfItemsCallback, addr.get(), (jbyte)scope); } Loading @@ -442,6 +363,9 @@ static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(str_len)); if (!attrs.get()) { Loading @@ -449,15 +373,6 @@ static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for search command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion(attrs.get(), 0, str_len * sizeof(uint8_t), (jbyte*)p_str); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_searchCallback, addr.get(), Loading @@ -474,12 +389,8 @@ static void btavrcp_add_to_play_list_callback(uint8_t scope, uint8_t* uid, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for add_to_play_list command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); Loading @@ -488,8 +399,6 @@ static void btavrcp_add_to_play_list_callback(uint8_t scope, uint8_t* uid, return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion( attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_addToPlayListCallback, Loading Loading
jni/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -15,7 +15,8 @@ LOCAL_SRC_FILES:= \ com_android_bluetooth_hdp.cpp \ com_android_bluetooth_pan.cpp \ com_android_bluetooth_gatt.cpp \ com_android_bluetooth_sdp.cpp com_android_bluetooth_sdp.cpp \ scoped_bt_addr.cpp LOCAL_C_INCLUDES += \ $(JNI_H_INCLUDE) \ Loading
jni/com_android_bluetooth.h +3 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,8 @@ public: return mCallbackEnv; } const char* method_name() { return mName; } private: JNIEnv *mCallbackEnv; const char *mName; Loading
jni/com_android_bluetooth_a2dp.cpp +5 −16 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "android_runtime/AndroidRuntime.h" #include "com_android_bluetooth.h" #include "hardware/bt_av.h" #include "scoped_bt_addr.h" #include "utils/Log.h" #include <string.h> Loading Loading @@ -53,15 +54,9 @@ static void bta2dp_connection_state_callback(btav_connection_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onConnectionStateChanged, (jint)state, addr.get()); } Loading @@ -72,15 +67,9 @@ static void bta2dp_audio_state_callback(btav_audio_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onAudioStateChanged, (jint)state, addr.get()); } Loading
jni/com_android_bluetooth_a2dp_sink.cpp +7 −24 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "android_runtime/AndroidRuntime.h" #include "com_android_bluetooth.h" #include "hardware/bt_av.h" #include "scoped_bt_addr.h" #include "utils/Log.h" #include <string.h> Loading @@ -39,15 +40,9 @@ static void bta2dp_connection_state_callback(btav_connection_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onConnectionStateChanged, (jint)state, addr.get()); } Loading @@ -58,15 +53,9 @@ static void bta2dp_audio_state_callback(btav_audio_state_t state, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onAudioStateChanged, (jint)state, addr.get()); } Loading @@ -78,15 +67,9 @@ static void bta2dp_audio_config_callback(bt_bdaddr_t* bd_addr, CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for connection state"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_onAudioConfigChanged, addr.get(), (jint)sample_rate, (jint)channel_count); Loading
jni/com_android_bluetooth_avrcp.cpp +35 −126 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "android_runtime/AndroidRuntime.h" #include "com_android_bluetooth.h" #include "hardware/bt_rc.h" #include "scoped_bt_addr.h" #include "utils/Log.h" #include <string.h> Loading Loading @@ -68,15 +69,9 @@ static void btavrcp_remote_features_callback(bt_bdaddr_t* bd_addr, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Unable to allocate byte array for bd_addr"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getRcFeatures, addr.get(), (jint)features); } Loading @@ -92,15 +87,8 @@ static void btavrcp_get_play_status_callback(bt_bdaddr_t* bd_addr) { return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_play_status command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getPlayStatus, addr.get()); } Loading @@ -116,12 +104,8 @@ static void btavrcp_get_element_attr_callback(uint8_t num_attr, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_element_attr command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jintArray> attrs( sCallbackEnv.get(), (jintArray)sCallbackEnv->NewIntArray(num_attr)); Loading @@ -132,8 +116,6 @@ 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(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getElementAttr, addr.get(), (jbyte)num_attr, attrs.get()); } Loading @@ -149,15 +131,9 @@ static void btavrcp_register_notification_callback(btrc_event_id_t event_id, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for register_notification command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_registerNotification, addr.get(), (jint)event_id, (jint)param); } Loading @@ -173,15 +149,8 @@ static void btavrcp_volume_change_callback(uint8_t volume, uint8_t ctype, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for volume_change command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_volumeChangeCallback, addr.get(), (jint)volume, (jint)ctype); Loading @@ -198,14 +167,8 @@ static void btavrcp_passthrough_command_callback(int id, int pressed, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for passthrough_command command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_handlePassthroughCmd, addr.get(), (jint)id, (jint)pressed); Loading @@ -222,15 +185,9 @@ static void btavrcp_set_addressed_player_callback(uint16_t player_id, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for set_addressed_player command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_setAddressedPlayerCallback, addr.get(), (jint)player_id); } Loading @@ -245,14 +202,8 @@ static void btavrcp_set_browsed_player_callback(uint16_t player_id, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for set_browsed_player command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->CallVoidMethod(mCallbacksObj, method_setBrowsedPlayerCallback, addr.get(), (jint)player_id); Loading @@ -270,17 +221,11 @@ static void btavrcp_get_folder_items_callback( return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_folder_items command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; uint32_t* puiAttr = (uint32_t*)p_attr_ids; ScopedLocalRef<jintArray> attr_ids(sCallbackEnv.get(), NULL); sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); /* check number of attributes requested by remote device */ if ((num_attr != BTRC_NUM_ATTR_ALL) && (num_attr != BTRC_NUM_ATTR_NONE)) { Loading Loading @@ -311,6 +256,9 @@ static void btavrcp_change_path_callback(uint8_t direction, uint8_t* folder_uid, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); if (!attrs.get()) { Loading @@ -318,15 +266,6 @@ static void btavrcp_change_path_callback(uint8_t direction, uint8_t* folder_uid, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for change_path command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion( attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)folder_uid); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_changePathCallback, Loading @@ -347,6 +286,9 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attr_uid( sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); if (!attr_uid.get()) { Loading @@ -354,13 +296,6 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_item_attr command"); return; } ScopedLocalRef<jintArray> attrs( sCallbackEnv.get(), (jintArray)sCallbackEnv->NewIntArray(num_attr)); if (!attrs.get()) { Loading @@ -368,8 +303,6 @@ static void btavrcp_get_item_attr_callback(uint8_t scope, uint8_t* uid, return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetIntArrayRegion(attrs.get(), 0, num_attr, (jint*)p_attrs); sCallbackEnv->SetByteArrayRegion( attr_uid.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid); Loading @@ -388,6 +321,9 @@ static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); if (!attrs.get()) { Loading @@ -395,15 +331,6 @@ static void btavrcp_play_item_callback(uint8_t scope, uint16_t uid_counter, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for play_item command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion( attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_playItemCallback, Loading @@ -420,15 +347,9 @@ static void btavrcp_get_total_num_items_callback(uint8_t scope, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for get_total_num_items command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_getTotalNumOfItemsCallback, addr.get(), (jbyte)scope); } Loading @@ -442,6 +363,9 @@ static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len, return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(str_len)); if (!attrs.get()) { Loading @@ -449,15 +373,6 @@ static void btavrcp_search_callback(uint16_t charset_id, uint16_t str_len, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for search command"); return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion(attrs.get(), 0, str_len * sizeof(uint8_t), (jbyte*)p_str); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_searchCallback, addr.get(), Loading @@ -474,12 +389,8 @@ static void btavrcp_add_to_play_list_callback(uint8_t scope, uint8_t* uid, return; } ScopedLocalRef<jbyteArray> addr( sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(bt_bdaddr_t))); if (!addr.get()) { ALOGE("Fail to new jbyteArray bd addr for add_to_play_list command"); return; } ScopedBtAddr addr(&sCallbackEnv, bd_addr); if (!addr.get()) return; ScopedLocalRef<jbyteArray> attrs(sCallbackEnv.get(), sCallbackEnv->NewByteArray(BTRC_UID_SIZE)); Loading @@ -488,8 +399,6 @@ static void btavrcp_add_to_play_list_callback(uint8_t scope, uint8_t* uid, return; } sCallbackEnv->SetByteArrayRegion(addr.get(), 0, sizeof(bt_bdaddr_t), (jbyte*)bd_addr); sCallbackEnv->SetByteArrayRegion( attrs.get(), 0, sizeof(uint8_t) * BTRC_UID_SIZE, (jbyte*)uid); sCallbackEnv->CallVoidMethod(mCallbacksObj, method_addToPlayListCallback, Loading