uint8_t capabilities, uint16_t codecs,
uint16_t audio_control_point_handle,
uint16_t volume_handle, uint64_t hiSyncId,
- uint16_t render_delay, uint16_t preparation_delay) {
- DVLOG(2) << __func__ << " " << address << ", hiSyncId=" << loghex(hiSyncId);
- hearingDevices.Add(HearingDevice(
- address, psm, capabilities, codecs, audio_control_point_handle,
- volume_handle, hiSyncId, render_delay, preparation_delay));
+ uint16_t render_delay, uint16_t preparation_delay,
+ uint16_t is_white_listed) {
+ DVLOG(2) << __func__ << " " << address << ", hiSyncId=" << loghex(hiSyncId)
+ << ", isWhiteListed=" << is_white_listed;
+ if (is_white_listed) {
+ hearingDevices.Add(HearingDevice(
+ address, psm, capabilities, codecs, audio_control_point_handle,
+ volume_handle, hiSyncId, render_delay, preparation_delay));
+
+ // TODO: we should increase the scanning window for few seconds, to get
+ // faster initial connection, same after hearing aid disconnects, i.e.
+ // BTM_BleSetConnScanParams(2048, 1024);
- // TODO: we should increase the scanning window for few seconds, to get
- // faster initial connection, same after hearing aid disconnects, i.e.
- // BTM_BleSetConnScanParams(2048, 1024);
-
- /* add device into BG connection to accept remote initiated connection */
- BTA_GATTC_Open(gatt_if, address, false, GATT_TRANSPORT_LE, false);
- BTA_DmBleStartAutoConn();
+ /* add device into BG connection to accept remote initiated connection */
+ BTA_GATTC_Open(gatt_if, address, false, GATT_TRANSPORT_LE, false);
+ BTA_DmBleStartAutoConn();
+ }
callbacks->OnDeviceAvailable(capabilities, hiSyncId, address);
}
uint16_t audio_control_point_handle,
uint16_t volume_handle, uint64_t hiSyncId,
uint16_t render_delay,
- uint16_t preparation_delay) {
+ uint16_t preparation_delay,
+ uint16_t is_white_listed) {
if (!instance) {
LOG(ERROR) << "Not initialized yet";
}
instance->AddFromStorage(address, psm, capabilities, codecs,
audio_control_point_handle, volume_handle, hiSyncId,
- render_delay, preparation_delay);
+ render_delay, preparation_delay, is_white_listed);
};
void HearingAid::CleanUp() {
uint8_t capabilities, uint16_t codec,
uint16_t audioControlPointHandle,
uint16_t volumeHandle, uint64_t hiSyncId,
- uint16_t render_delay, uint16_t preparation_delay);
+ uint16_t render_delay, uint16_t preparation_delay,
+ uint16_t is_white_listed);
virtual void Connect(const RawAddress& address) = 0;
virtual void Disconnect(const RawAddress& address) = 0;
/** Deletes the bonded hearing aid device info from NVRAM */
void btif_storage_remove_hearing_aid(const RawAddress& address);
+/** Remove the hearing aid device from white list */
+void btif_storage_remove_hearing_aid_white_list(const RawAddress& address);
+
/*******************************************************************************
*
* Function btif_storage_is_retricted_device
DVLOG(2) << __func__ << " address: " << address;
do_in_bta_thread(FROM_HERE, Bind(&HearingAid::Disconnect,
Unretained(HearingAid::Get()), address));
- do_in_jni_thread(FROM_HERE,
- Bind(&btif_storage_remove_hearing_aid, address));
+ do_in_jni_thread(
+ FROM_HERE, Bind(&btif_storage_remove_hearing_aid_white_list, address));
}
void SetVolume(int8_t volume) override {
constexpr char HEARING_AID_SYNC_ID[] = "HearingAidSyncId";
constexpr char HEARING_AID_RENDER_DELAY[] = "HearingAidRenderDelay";
constexpr char HEARING_AID_PREPARATION_DELAY[] = "HearingAidPreparationDelay";
+constexpr char HEARING_AID_IS_WHITE_LISTED[] = "HearingAidIsWhiteListed";
void btif_storage_add_hearing_aid(const RawAddress& address, uint16_t psm,
uint8_t capabilities, uint16_t codecs,
btif_config_set_int(bdstr, HEARING_AID_RENDER_DELAY, render_delay);
btif_config_set_int(bdstr, HEARING_AID_PREPARATION_DELAY,
preparation_delay);
+ btif_config_set_int(bdstr, HEARING_AID_IS_WHITE_LISTED, true);
btif_config_save();
},
address, psm, capabilities, codecs, audio_control_point_handle,
if (btif_config_get_int(name, HEARING_AID_PREPARATION_DELAY, &value))
preparation_delay = value;
+ uint16_t is_white_listed = 0;
+ if (btif_config_get_int(name, HEARING_AID_IS_WHITE_LISTED, &value))
+ is_white_listed = value;
+
RawAddress bd_addr;
RawAddress::FromString(name, bd_addr);
// add extracted information to BTA Hearing Aid
do_in_bta_thread(
- FROM_HERE, Bind(&HearingAid::AddFromStorage, bd_addr, psm, capabilities,
- codecs, audio_control_point_handle, volume_handle,
- hi_sync_id, render_delay, preparation_delay));
+ FROM_HERE,
+ Bind(&HearingAid::AddFromStorage, bd_addr, psm, capabilities, codecs,
+ audio_control_point_handle, volume_handle, hi_sync_id,
+ render_delay, preparation_delay, is_white_listed));
}
}
btif_config_remove(addrstr, HEARING_AID_AUDIO_CONTROL_POINT);
btif_config_remove(addrstr, HEARING_AID_VOLUME_HANDLE);
btif_config_remove(addrstr, HEARING_AID_SYNC_ID);
+ btif_config_remove(addrstr, HEARING_AID_IS_WHITE_LISTED);
btif_config_save();
}
+/** Remove the hearing aid device from white list */
+void btif_storage_remove_hearing_aid_white_list(const RawAddress& address) {
+ std::string addrstr = address.ToString();
+
+ btif_config_set_int(addrstr, HEARING_AID_IS_WHITE_LISTED, false);
+}
+
/*******************************************************************************
*
* Function btif_storage_is_restricted_device