diff options
| author | Adam Pigg <adam@piggz.co.uk> | 2020-07-15 09:02:01 (GMT) |
|---|---|---|
| committer | Adam Pigg <adam@piggz.co.uk> | 2020-07-15 09:02:01 (GMT) |
| commit | 686e826f4e656546523e989535c74f286a91855b (patch) | |
| tree | fffbdafbf06bd158345abb0577ba859cde1d8df0 /src/Components/Ble/MusicService.cpp | |
| parent | 306aa25aada3635506c593c6a90bf03218365d02 (diff) | |
Rework characteristic handling
Diffstat (limited to 'src/Components/Ble/MusicService.cpp')
| -rw-r--r-- | src/Components/Ble/MusicService.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/Components/Ble/MusicService.cpp b/src/Components/Ble/MusicService.cpp index 05754e4..080a814 100644 --- a/src/Components/Ble/MusicService.cpp +++ b/src/Components/Ble/MusicService.cpp @@ -20,27 +20,28 @@ Pinetime::Controllers::MusicService::MusicService() msAlbumCharUuid.value[11] = msAlbumCharId[0]; msAlbumCharUuid.value[12] = msAlbumCharId[1]; - characteristicDefinition[0] = {(ble_uuid_t*)(&msEventCharUuid), + characteristicDefinition[0] = { .uuid = (ble_uuid_t*)(&msEventCharUuid), .access_cb = MSCallback, .arg = this, - .flags = BLE_GATT_CHR_F_NOTIFY | BLE_GATT_CHR_F_READ + .flags = BLE_GATT_CHR_F_NOTIFY, + .val_handle = &m_eventHandle }; - characteristicDefinition[1] = {(ble_uuid_t*)(&msStatusCharUuid), + characteristicDefinition[1] = { .uuid = (ble_uuid_t*)(&msStatusCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ }; - characteristicDefinition[2] = {(ble_uuid_t*)(&msTrackCharUuid), + characteristicDefinition[2] = { .uuid = (ble_uuid_t*)(&msTrackCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ }; - characteristicDefinition[3] = {(ble_uuid_t*)(&msArtistCharUuid), + characteristicDefinition[3] = { .uuid = (ble_uuid_t*)(&msArtistCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ }; - characteristicDefinition[4] = {(ble_uuid_t*)(&msAlbumCharUuid), + characteristicDefinition[4] = { .uuid = (ble_uuid_t*)(&msAlbumCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ @@ -72,8 +73,6 @@ void Pinetime::Controllers::MusicService::Init() int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt) { - connectionHandle = conn_handle; - if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) { size_t notifSize = OS_MBUF_PKTLEN(ctxt->om); uint8_t data[notifSize + 1]; @@ -112,12 +111,16 @@ void Pinetime::Controllers::MusicService::event(char event) struct os_mbuf *om; int ret; + uint16_t connectionHandle = 0; + om = ble_hs_mbuf_from_flat(&event, 1); - ble_gatts_find_chr((ble_uuid_t *) &msUuid, (ble_uuid_t *) &msEventCharUuid, nullptr, - &eventCharacteristicHandle); + ret = ble_gatts_find_svc((ble_uuid_t *) &msUuid, &connectionHandle); - ret = ble_gattc_notify_custom(connectionHandle, eventCharacteristicHandle, om); + if (connectionHandle == 0) { + return; + } + ret = ble_gattc_notify_custom(connectionHandle, m_eventHandle, om); } |
