Loading system/bta/hh/bta_hh_int.h +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,9 @@ #include "stack/include/bt_hdr.h" #include "types/raw_address.h" #define ANDROID_HEADTRACKER_DATA_SIZE 13 #define ANDROID_HEADTRACKER_REPORT_ID 1 /* state machine events, these events are handled by the state machine */ enum tBTA_HH_INT_EVT : uint16_t { BTA_HH_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HH), Loading system/bta/hh/bta_hh_le.cc +18 −1 Original line number Diff line number Diff line Loading @@ -2364,6 +2364,23 @@ static bool bta_hh_le_iso_data_callback(const RawAddress& addr, return false; } bta_hh_co_data(p_dev_cb->hid_handle, data, size); uint8_t* report = data; uint8_t len = size; if (com::android::bluetooth::flags::headtracker_sdu_size()) { if (size == ANDROID_HEADTRACKER_DATA_SIZE) { report = (uint8_t*)osi_malloc(size + 1); report[0] = ANDROID_HEADTRACKER_REPORT_ID; mempcpy(&report[1], data, size); len = size + 1; } else if (size != ANDROID_HEADTRACKER_DATA_SIZE + 1) { log::warn("Unexpected headtracker data size {} from {}", size, addr); } } bta_hh_co_data(p_dev_cb->hid_handle, report, len); if (report != data) { osi_free(report); } return true; } system/bta/le_audio/le_audio_types.h +6 −0 Original line number Diff line number Diff line Loading @@ -315,6 +315,12 @@ constexpr uint8_t kLeAudioMetadataHeadtrackerTransportVal = 1; constexpr uint8_t kLeAudioMetadataHeadtrackerTransportLeAcl = 1; constexpr uint8_t kLeAudioMetadataHeadtrackerTransportLeIso = 2; /* Android Headtracker config parameters */ constexpr uint32_t kLeAudioHeadtrackerSduItv = 20000; constexpr uint16_t kLeAudioHeadtrackerMaxTransLat = 20; constexpr uint16_t kLeAudioHeadtrackerMaxSduSize = 13; constexpr uint8_t kLeAudioHeadtrackerRtn = 2; /* CSIS Types */ constexpr uint8_t kDefaultScanDurationS = 5; constexpr uint8_t kDefaultCsisSetSize = 2; Loading system/bta/le_audio/state_machine.cc +8 −5 Original line number Diff line number Diff line Loading @@ -1485,11 +1485,14 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { group->dsa_.active = true; /* Todo: Replace literal values */ param.sdu_itv_stom = 20000; param.max_trans_lat_stom = 20; param.sdu_itv_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerSduItv; param.max_trans_lat_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerMaxTransLat; it->max_sdu_size_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerMaxSduSize; if (!com::android::bluetooth::flags::headtracker_sdu_size()) { it->max_sdu_size_stom = 15; it->rtn_stom = 2; } it->rtn_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerRtn; it++; } Loading Loading
system/bta/hh/bta_hh_int.h +3 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,9 @@ #include "stack/include/bt_hdr.h" #include "types/raw_address.h" #define ANDROID_HEADTRACKER_DATA_SIZE 13 #define ANDROID_HEADTRACKER_REPORT_ID 1 /* state machine events, these events are handled by the state machine */ enum tBTA_HH_INT_EVT : uint16_t { BTA_HH_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HH), Loading
system/bta/hh/bta_hh_le.cc +18 −1 Original line number Diff line number Diff line Loading @@ -2364,6 +2364,23 @@ static bool bta_hh_le_iso_data_callback(const RawAddress& addr, return false; } bta_hh_co_data(p_dev_cb->hid_handle, data, size); uint8_t* report = data; uint8_t len = size; if (com::android::bluetooth::flags::headtracker_sdu_size()) { if (size == ANDROID_HEADTRACKER_DATA_SIZE) { report = (uint8_t*)osi_malloc(size + 1); report[0] = ANDROID_HEADTRACKER_REPORT_ID; mempcpy(&report[1], data, size); len = size + 1; } else if (size != ANDROID_HEADTRACKER_DATA_SIZE + 1) { log::warn("Unexpected headtracker data size {} from {}", size, addr); } } bta_hh_co_data(p_dev_cb->hid_handle, report, len); if (report != data) { osi_free(report); } return true; }
system/bta/le_audio/le_audio_types.h +6 −0 Original line number Diff line number Diff line Loading @@ -315,6 +315,12 @@ constexpr uint8_t kLeAudioMetadataHeadtrackerTransportVal = 1; constexpr uint8_t kLeAudioMetadataHeadtrackerTransportLeAcl = 1; constexpr uint8_t kLeAudioMetadataHeadtrackerTransportLeIso = 2; /* Android Headtracker config parameters */ constexpr uint32_t kLeAudioHeadtrackerSduItv = 20000; constexpr uint16_t kLeAudioHeadtrackerMaxTransLat = 20; constexpr uint16_t kLeAudioHeadtrackerMaxSduSize = 13; constexpr uint8_t kLeAudioHeadtrackerRtn = 2; /* CSIS Types */ constexpr uint8_t kDefaultScanDurationS = 5; constexpr uint8_t kDefaultCsisSetSize = 2; Loading
system/bta/le_audio/state_machine.cc +8 −5 Original line number Diff line number Diff line Loading @@ -1485,11 +1485,14 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { group->dsa_.active = true; /* Todo: Replace literal values */ param.sdu_itv_stom = 20000; param.max_trans_lat_stom = 20; param.sdu_itv_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerSduItv; param.max_trans_lat_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerMaxTransLat; it->max_sdu_size_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerMaxSduSize; if (!com::android::bluetooth::flags::headtracker_sdu_size()) { it->max_sdu_size_stom = 15; it->rtn_stom = 2; } it->rtn_stom = bluetooth::le_audio::types::kLeAudioHeadtrackerRtn; it++; } Loading