Lines Matching refs:device
145 auto device = volume_control_devices_.FindByAddress(address); in Connect() local
146 if (!device) { in Connect()
154 device->connecting_actively = true; in Connect()
156 if (device->IsConnected()) { in Connect()
158 device->connection_id); in Connect()
160 if (device->IsReady()) { in Connect()
161 callbacks_->OnConnectionState(ConnectionState::CONNECTED, device->address); in Connect()
163 OnGattConnected(GATT_SUCCESS, device->connection_id, gatt_if_, device->address, in Connect()
192 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in OnGattConnected() local
193 if (!device) { in OnGattConnected()
200 device_cleanup_helper(device, device->connecting_actively); in OnGattConnected()
205 device->connection_id = connection_id; in OnGattConnected()
206 device->mtu_ = mtu; in OnGattConnected()
213 if (device->IsEncryptionEnabled()) { in OnGattConnected()
218 if (!device->EnableEncryption()) { in OnGattConnected()
220 device->Disconnect(gatt_if_); in OnGattConnected()
225 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in OnEncryptionComplete() local
226 if (!device) { in OnEncryptionComplete()
236 device_cleanup_helper(device, device->connecting_actively); in OnEncryptionComplete()
242 if (device->HasHandles()) { in OnEncryptionComplete()
243 device->EnqueueInitialRequests(gatt_if_, chrc_read_callback_static, OnGattWriteCccStatic); in OnEncryptionComplete()
246 BTA_GATTC_ServiceSearchRequest(device->connection_id, kVolumeControlUuid); in OnEncryptionComplete()
250 void ClearDeviceInformationAndStartSearch(VolumeControlDevice* device) { in ClearDeviceInformationAndStartSearch() argument
251 if (!device) { in ClearDeviceInformationAndStartSearch()
256 bluetooth::log::info("address={}", device->address); in ClearDeviceInformationAndStartSearch()
257 if (device->known_service_handles_ == false) { in ClearDeviceInformationAndStartSearch()
262 std::vector<RawAddress> devices = {device->address}; in ClearDeviceInformationAndStartSearch()
263 device->DeregisterNotifications(gatt_if_); in ClearDeviceInformationAndStartSearch()
273 device->ResetHandles(); in ClearDeviceInformationAndStartSearch()
274 BTA_GATTC_ServiceSearchRequest(device->connection_id, kVolumeControlUuid); in ClearDeviceInformationAndStartSearch()
278 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in OnServiceChangeEvent() local
279 if (!device) { in OnServiceChangeEvent()
284 ClearDeviceInformationAndStartSearch(device); in OnServiceChangeEvent()
288 VolumeControlDevice* device = volume_control_devices_.FindByConnId(conn_id); in OnMtuChanged() local
289 if (!device) { in OnMtuChanged()
293 device->mtu_ = mtu; in OnMtuChanged()
297 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in OnServiceDiscDoneEvent() local
298 if (!device) { in OnServiceDiscDoneEvent()
303 if (device->known_service_handles_ == false) { in OnServiceDiscDoneEvent()
304 BTA_GATTC_ServiceSearchRequest(device->connection_id, kVolumeControlUuid); in OnServiceDiscDoneEvent()
309 VolumeControlDevice* device = volume_control_devices_.FindByConnId(connection_id); in OnServiceSearchComplete() local
310 if (!device) { in OnServiceSearchComplete()
316 if (device->IsReady()) { in OnServiceSearchComplete()
323 device_cleanup_helper(device, device->connecting_actively); in OnServiceSearchComplete()
327 if (!device->IsEncryptionEnabled()) { in OnServiceSearchComplete()
332 bool success = device->UpdateHandles(); in OnServiceSearchComplete()
335 device_cleanup_helper(device, device->connecting_actively); in OnServiceSearchComplete()
339 device->EnqueueInitialRequests(gatt_if_, chrc_read_callback_static, OnGattWriteCccStatic); in OnServiceSearchComplete()
345 VolumeControlDevice* device = volume_control_devices_.FindByConnId(conn_id); in OnCharacteristicValueChanged() local
346 if (!device) { in OnCharacteristicValueChanged()
354 bluetooth::log::info("Database out of sync for {}", device->address); in OnCharacteristicValueChanged()
355 ClearDeviceInformationAndStartSearch(device); in OnCharacteristicValueChanged()
360 if (handle == device->volume_state_handle) { in OnCharacteristicValueChanged()
361 OnVolumeControlStateReadOrNotified(device, len, value, is_notification); in OnCharacteristicValueChanged()
362 verify_device_ready(device, handle); in OnCharacteristicValueChanged()
365 if (handle == device->volume_flags_handle) { in OnCharacteristicValueChanged()
366 OnVolumeControlFlagsChanged(device, len, value); in OnCharacteristicValueChanged()
367 verify_device_ready(device, handle); in OnCharacteristicValueChanged()
376 VolumeAudioInput* input = device->audio_inputs.FindByServiceHandle(service->handle); in OnCharacteristicValueChanged()
379 OnExtAudioInputStateChanged(device, input, len, value); in OnCharacteristicValueChanged()
381 OnExtAudioInTypeChanged(device, input, len, value); in OnCharacteristicValueChanged()
383 OnExtAudioInputStatusChanged(device, input, len, value); in OnCharacteristicValueChanged()
385 OnExtAudioInDescChanged(device, input, len, value); in OnCharacteristicValueChanged()
387 OnExtAudioInGainSettingChanged(device, input, len, value); in OnCharacteristicValueChanged()
389 bluetooth::log::error("{} unknown input handle={:#x}", device->address, handle); in OnCharacteristicValueChanged()
393 verify_device_ready(device, handle); in OnCharacteristicValueChanged()
397 VolumeOffset* offset = device->audio_offsets.FindByServiceHandle(service->handle); in OnCharacteristicValueChanged()
400 OnExtAudioOutStateChanged(device, offset, len, value); in OnCharacteristicValueChanged()
402 OnExtAudioOutLocationChanged(device, offset, len, value); in OnCharacteristicValueChanged()
404 OnOffsetOutputDescChanged(device, offset, len, value); in OnCharacteristicValueChanged()
406 bluetooth::log::error("{} unknown offset handle={:#x}", device->address, handle); in OnCharacteristicValueChanged()
410 verify_device_ready(device, handle); in OnCharacteristicValueChanged()
414 bluetooth::log::error("{}, unknown handle={:#x}", device->address, handle); in OnCharacteristicValueChanged()
426 void HandleAutonomusVolumeChange(VolumeControlDevice* device, bool is_volume_change, in HandleAutonomusVolumeChange() argument
428 bluetooth::log::debug("{}, is volume change: {}, is mute change: {}", device->address, in HandleAutonomusVolumeChange()
439 callbacks_->OnVolumeStateChanged(device->address, device->volume, device->mute, device->flags, in HandleAutonomusVolumeChange()
445 csis_api->GetGroupId(device->address, bluetooth::le_audio::uuid::kCapServiceUuid); in HandleAutonomusVolumeChange()
447 bluetooth::log::warn("No group for device {}", device->address); in HandleAutonomusVolumeChange()
448 callbacks_->OnVolumeStateChanged(device->address, device->volume, device->mute, device->flags, in HandleAutonomusVolumeChange()
456 if (!dev || !dev->IsConnected() || (dev->address == device->address)) { in HandleAutonomusVolumeChange()
465 callbacks_->OnGroupVolumeStateChanged(group_id, device->volume, device->mute, true); in HandleAutonomusVolumeChange()
470 std::vector<uint8_t> arg({device->volume}); in HandleAutonomusVolumeChange()
477 uint8_t opcode = device->mute ? kControlPointOpcodeMute : kControlPointOpcodeUnmute; in HandleAutonomusVolumeChange()
484 void OnVolumeControlStateReadOrNotified(VolumeControlDevice* device, uint16_t len, uint8_t* value, in OnVolumeControlStateReadOrNotified() argument
487 bluetooth::log::error("{}, malformed len={:#x}", device->address, len); in OnVolumeControlStateReadOrNotified()
496 STREAM_TO_UINT8(device->change_counter, pp); in OnVolumeControlStateReadOrNotified()
498 bool is_volume_change = (device->volume != vol); in OnVolumeControlStateReadOrNotified()
499 device->volume = vol; in OnVolumeControlStateReadOrNotified()
501 bool is_mute_change = (device->mute != mute); in OnVolumeControlStateReadOrNotified()
502 device->mute = mute; in OnVolumeControlStateReadOrNotified()
504 bluetooth::log::info("{}, volume {:#x} mute {:#x} change_counter {:#x}", device->address, in OnVolumeControlStateReadOrNotified()
505 device->volume, device->mute, device->change_counter); in OnVolumeControlStateReadOrNotified()
507 if (!device->IsReady()) { in OnVolumeControlStateReadOrNotified()
508 bluetooth::log::info("Device: {} is not ready yet.", device->address); in OnVolumeControlStateReadOrNotified()
514 callbacks_->OnVolumeStateChanged(device->address, device->volume, device->mute, device->flags, in OnVolumeControlStateReadOrNotified()
519 auto addr = device->address; in OnVolumeControlStateReadOrNotified()
527 device->address); in OnVolumeControlStateReadOrNotified()
528 HandleAutonomusVolumeChange(device, is_volume_change, is_mute_change); in OnVolumeControlStateReadOrNotified()
533 auto it = find(op->devices_.begin(), op->devices_.end(), device->address); in OnVolumeControlStateReadOrNotified()
541 callbacks_->OnGroupVolumeStateChanged(op->group_id_, device->volume, device->mute, in OnVolumeControlStateReadOrNotified()
546 callbacks_->OnVolumeStateChanged(device->address, device->volume, device->mute, device->flags, in OnVolumeControlStateReadOrNotified()
554 void OnVolumeControlFlagsChanged(VolumeControlDevice* device, uint16_t /*len*/, uint8_t* value) { in OnVolumeControlFlagsChanged() argument
555 device->flags = *value; in OnVolumeControlFlagsChanged()
557 bluetooth::log::info("{}, flags {:#x}", device->address, device->flags); in OnVolumeControlFlagsChanged()
560 void OnExtAudioOutStateChanged(VolumeControlDevice* device, VolumeOffset* offset, uint16_t len, in OnExtAudioOutStateChanged() argument
563 bluetooth::log::error("{}, id={:#x}, malformed len={:#x}", device->address, offset->id, len); in OnExtAudioOutStateChanged()
571 bluetooth::log::verbose("{}, len:{}", device->address, base::HexEncode(value, len)); in OnExtAudioOutStateChanged()
572 bluetooth::log::info("{} id={:#x} offset: {:#x} counter: {:#x}", device->address, offset->id, in OnExtAudioOutStateChanged()
575 if (!device->IsReady()) { in OnExtAudioOutStateChanged()
576 bluetooth::log::info("Device: {} is not ready yet.", device->address); in OnExtAudioOutStateChanged()
580 callbacks_->OnExtAudioOutVolumeOffsetChanged(device->address, offset->id, offset->offset); in OnExtAudioOutStateChanged()
583 void OnExtAudioOutLocationChanged(VolumeControlDevice* device, VolumeOffset* offset, uint16_t len, in OnExtAudioOutLocationChanged() argument
586 bluetooth::log::error("{}, id={:#x}, malformed len={:#x}", device->address, offset->id, len); in OnExtAudioOutLocationChanged()
593 bluetooth::log::verbose("{}, data :{}", device->address, base::HexEncode(value, len)); in OnExtAudioOutLocationChanged()
594 bluetooth::log::info("{} id={:#x}, location={:#x}", device->address, offset->id, in OnExtAudioOutLocationChanged()
597 if (!device->IsReady()) { in OnExtAudioOutLocationChanged()
598 bluetooth::log::info("Device: {} is not ready yet.", device->address); in OnExtAudioOutLocationChanged()
602 callbacks_->OnExtAudioOutLocationChanged(device->address, offset->id, offset->location); in OnExtAudioOutLocationChanged()
605 void OnExtAudioInputStateChanged(VolumeControlDevice* device, VolumeAudioInput* input, in OnExtAudioInputStateChanged() argument
608 bluetooth::log::error("{}, id={}, malformed len={:#x}", device->address, input->id, len); in OnExtAudioInputStateChanged()
617 bluetooth::log::error("{} Invalid mute value: {:#x}", device->address, mute); in OnExtAudioInputStateChanged()
625 bluetooth::log::error("{} Invalid GainMode value: {:#x}", device->address, gain_mode); in OnExtAudioInputStateChanged()
631 bluetooth::log::verbose("{}, data:{}", device->address, base::HexEncode(value, len)); in OnExtAudioInputStateChanged()
634 device->address, input->id, input->gain_setting, input->mute, input->gain_mode, in OnExtAudioInputStateChanged()
637 if (!device->device_ready) { in OnExtAudioInputStateChanged()
641 callbacks_->OnExtAudioInStateChanged(device->address, input->id, input->gain_setting, in OnExtAudioInputStateChanged()
645 void OnExtAudioInTypeChanged(VolumeControlDevice* device, VolumeAudioInput* input, uint16_t len, in OnExtAudioInTypeChanged() argument
648 bluetooth::log::error("{}, id={}, malformed len={:#x}", device->address, input->id, len); in OnExtAudioInTypeChanged()
653 bluetooth::log::error("Invalid type {} for {} id={}", device->address, *value, input->id); in OnExtAudioInTypeChanged()
659 bluetooth::log::info("{}, id={:#x} type={}", device->address, input->id, input->type); in OnExtAudioInTypeChanged()
661 if (!device->device_ready) { in OnExtAudioInTypeChanged()
665 callbacks_->OnExtAudioInTypeChanged(device->address, input->id, input->type); in OnExtAudioInTypeChanged()
668 void OnExtAudioInputStatusChanged(VolumeControlDevice* device, VolumeAudioInput* input, in OnExtAudioInputStatusChanged() argument
671 bluetooth::log::error("{}, id={}, malformed len={:#x}", device->address, input->id, len); in OnExtAudioInputStatusChanged()
677 device->address, input->id); in OnExtAudioInputStatusChanged()
683 bluetooth::log::info("{}, id={:#x} status {}", device->address, input->id, input->status); in OnExtAudioInputStatusChanged()
685 if (!device->device_ready) { in OnExtAudioInputStatusChanged()
689 callbacks_->OnExtAudioInStatusChanged(device->address, input->id, input->status); in OnExtAudioInputStatusChanged()
692 void OnExtAudioInDescChanged(VolumeControlDevice* device, VolumeAudioInput* input, uint16_t len, in OnExtAudioInDescChanged() argument
697 device->address, input->id); in OnExtAudioInDescChanged()
702 bluetooth::log::info("{}, id={:#x}, descriptor: {}", device->address, input->id, in OnExtAudioInDescChanged()
705 if (!device->device_ready) { in OnExtAudioInDescChanged()
709 callbacks_->OnExtAudioInDescriptionChanged(device->address, input->id, input->description, in OnExtAudioInDescChanged()
715 VolumeControlDevice* device = volume_control_devices_.FindByConnId(connection_id); in OnExtAudioInCPWrite() local
716 if (!device) { in OnExtAudioInCPWrite()
723 device->address, handle, status); in OnExtAudioInCPWrite()
730 callbacks_->OnExtAudioInSetGainSettingFailed(device->address, id); in OnExtAudioInCPWrite()
734 callbacks_->OnExtAudioInSetMuteFailed(device->address, id); in OnExtAudioInCPWrite()
738 callbacks_->OnExtAudioInSetGainModeFailed(device->address, id); in OnExtAudioInCPWrite()
745 void OnExtAudioInGainSettingChanged(VolumeControlDevice* device, VolumeAudioInput* input, in OnExtAudioInGainSettingChanged() argument
748 bluetooth::log::error("{}, id={}, malformed len={:#x}", device->address, input->id, len); in OnExtAudioInGainSettingChanged()
757 bluetooth::log::verbose("{}, len:{}", device->address, base::HexEncode(value, len)); in OnExtAudioInGainSettingChanged()
759 device->address, input->id, input->gain_settings.unit, in OnExtAudioInGainSettingChanged()
762 if (!device->device_ready) { in OnExtAudioInGainSettingChanged()
767 device->address, input->id, input->gain_settings.unit, input->gain_settings.min, in OnExtAudioInGainSettingChanged()
773 VolumeControlDevice* device = volume_control_devices_.FindByConnId(connection_id); in OnExtAudioOutCPWrite() local
774 if (!device) { in OnExtAudioOutCPWrite()
786 void OnOffsetOutputDescChanged(VolumeControlDevice* device, VolumeOffset* offset, uint16_t len, in OnOffsetOutputDescChanged() argument
791 device->address, offset->id); in OnOffsetOutputDescChanged()
796 bluetooth::log::info("{}, {}", device->address, description); in OnOffsetOutputDescChanged()
798 if (!device->IsReady()) { in OnOffsetOutputDescChanged()
799 bluetooth::log::info("Device: {} is not ready yet.", device->address); in OnOffsetOutputDescChanged()
803 callbacks_->OnExtAudioOutDescriptionChanged(device->address, offset->id, offset->description); in OnOffsetOutputDescChanged()
808 VolumeControlDevice* device = volume_control_devices_.FindByConnId(connection_id); in OnGattWriteCcc() local
809 if (!device) { in OnGattWriteCcc()
817 bluetooth::log::info("Database out of sync for {}, conn_id: 0x{:04x}", device->address, in OnGattWriteCcc()
819 ClearDeviceInformationAndStartSearch(device); in OnGattWriteCcc()
823 device_cleanup_helper(device, true); in OnGattWriteCcc()
829 device->address); in OnGattWriteCcc()
831 verify_device_ready(device, handle); in OnGattWriteCcc()
853 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in Disconnect() local
854 if (!device) { in Disconnect()
860 bluetooth::log::info("GAP_EVT_CONN_CLOSED: {}", device->address); in Disconnect()
861 device->connecting_actively = false; in Disconnect()
862 device_cleanup_helper(device, true); in Disconnect()
877 VolumeControlDevice* device = volume_control_devices_.FindByConnId(connection_id); in OnGattDisconnected() local
878 if (!device) { in OnGattDisconnected()
884 if (!device->IsConnected()) { in OnGattDisconnected()
894 bool notify = device->IsReady() || device->connecting_actively; in OnGattDisconnected()
895 device_cleanup_helper(device, notify); in OnGattDisconnected()
1020 VolumeControlDevice* device = volume_control_devices_.FindByConnId(connection_id); in OnWriteControlResponse() local
1021 if (!device) { in OnWriteControlResponse()
1035 RemoveDeviceFromOperationList(device->address, PTR_TO_INT(data)); in OnWriteControlResponse()
1038 bluetooth::log::info("Database out of sync for {}", device->address); in OnWriteControlResponse()
1039 ClearDeviceInformationAndStartSearch(device); in OnWriteControlResponse()
1328 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioOutVolumeOffset() local
1329 if (!device) { in GetExtAudioOutVolumeOffset()
1334 device->GetExtAudioOutVolumeOffset(ext_output_id, chrc_read_callback_static, nullptr); in GetExtAudioOutVolumeOffset()
1347 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioOutLocation() local
1348 if (!device) { in GetExtAudioOutLocation()
1353 device->GetExtAudioOutLocation(ext_output_id, chrc_read_callback_static, nullptr); in GetExtAudioOutLocation()
1358 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in SetExtAudioOutLocation() local
1359 if (!device) { in SetExtAudioOutLocation()
1364 device->SetExtAudioOutLocation(ext_output_id, location); in SetExtAudioOutLocation()
1368 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioOutDescription() local
1369 if (!device) { in GetExtAudioOutDescription()
1374 device->GetExtAudioOutDescription(ext_output_id, chrc_read_callback_static, nullptr); in GetExtAudioOutDescription()
1379 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in SetExtAudioOutDescription() local
1380 if (!device) { in SetExtAudioOutDescription()
1385 device->SetExtAudioOutDescription(ext_output_id, descr); in SetExtAudioOutDescription()
1390 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioInState() local
1391 if (!device) { in GetExtAudioInState()
1396 device->GetExtAudioInState(ext_input_id, chrc_read_callback_static, nullptr); in GetExtAudioInState()
1400 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioInStatus() local
1401 if (!device) { in GetExtAudioInStatus()
1406 device->GetExtAudioInStatus(ext_input_id, chrc_read_callback_static, nullptr); in GetExtAudioInStatus()
1410 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioInType() local
1411 if (!device) { in GetExtAudioInType()
1416 device->GetExtAudioInType(ext_input_id, chrc_read_callback_static, nullptr); in GetExtAudioInType()
1420 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioInGainProps() local
1421 if (!device) { in GetExtAudioInGainProps()
1426 device->GetExtAudioInGainProps(ext_input_id, chrc_read_callback_static, nullptr); in GetExtAudioInGainProps()
1430 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in GetExtAudioInDescription() local
1431 if (!device) { in GetExtAudioInDescription()
1436 device->GetExtAudioInDescription(ext_input_id, chrc_read_callback_static, nullptr); in GetExtAudioInDescription()
1441 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in SetExtAudioInDescription() local
1442 if (!device) { in SetExtAudioInDescription()
1447 device->SetExtAudioInDescription(ext_input_id, descr); in SetExtAudioInDescription()
1455 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in SetExtAudioInGainSetting() local
1456 if (!device) { in SetExtAudioInGainSetting()
1462 if (!device->ExtAudioInControlPointOperation( in SetExtAudioInGainSetting()
1481 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in SetExtAudioInGainMode() local
1482 if (!device) { in SetExtAudioInGainMode()
1488 if (!device->ExtAudioInControlPointOperation( in SetExtAudioInGainMode()
1511 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in SetExtAudioInMute() local
1512 if (!device) { in SetExtAudioInMute()
1518 if (!device->ExtAudioInControlPointOperation( in SetExtAudioInMute()
1555 void verify_device_ready(VolumeControlDevice* device, uint16_t handle) { in verify_device_ready() argument
1556 bluetooth::log::debug("{}, isReady {}", device->address, device->IsReady()); in verify_device_ready()
1557 if (device->IsReady()) { in verify_device_ready()
1563 if (device->VerifyReady(handle)) { in verify_device_ready()
1566 callbacks_->OnDeviceAvailable(device->address, device->audio_offsets.Size(), in verify_device_ready()
1567 device->audio_inputs.Size()); in verify_device_ready()
1568 callbacks_->OnConnectionState(ConnectionState::CONNECTED, device->address); in verify_device_ready()
1571 callbacks_->OnVolumeStateChanged(device->address, device->volume, device->mute, device->flags, in verify_device_ready()
1574 device->EnqueueRemainingRequests(gatt_if_, chrc_read_callback_static, in verify_device_ready()
1579 void device_cleanup_helper(VolumeControlDevice* device, bool notify) { in device_cleanup_helper() argument
1580 device->Disconnect(gatt_if_); in device_cleanup_helper()
1582 RemoveDeviceFromOperationList(device->address); in device_cleanup_helper()
1583 device->mtu_ = GATT_DEF_BLE_MTU_SIZE; in device_cleanup_helper()
1586 callbacks_->OnConnectionState(ConnectionState::DISCONNECTED, device->address); in device_cleanup_helper()
1606 VolumeControlDevice* device = volume_control_devices_.FindByAddress(address); in ext_audio_out_control_point_helper() local
1607 if (!device) { in ext_audio_out_control_point_helper()
1611 device->ExtAudioOutControlPointOperation( in ext_audio_out_control_point_helper()