summaryrefslogtreecommitdiff
path: root/src/components/ble/AlertNotificationService.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/ble/AlertNotificationService.cpp')
-rw-r--r--src/components/ble/AlertNotificationService.cpp75
1 files changed, 32 insertions, 43 deletions
diff --git a/src/components/ble/AlertNotificationService.cpp b/src/components/ble/AlertNotificationService.cpp
index d91e2090..e9f5941e 100644
--- a/src/components/ble/AlertNotificationService.cpp
+++ b/src/components/ble/AlertNotificationService.cpp
@@ -11,8 +11,7 @@ constexpr ble_uuid16_t AlertNotificationService::ansUuid;
constexpr ble_uuid16_t AlertNotificationService::ansCharUuid;
constexpr ble_uuid128_t AlertNotificationService::notificationEventUuid;
-
-int AlertNotificationCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) {
+int AlertNotificationCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) {
auto anService = static_cast<AlertNotificationService*>(arg);
return anService->OnAlert(conn_handle, attr_handle, ctxt);
}
@@ -26,62 +25,52 @@ void AlertNotificationService::Init() {
ASSERT(res == 0);
}
-AlertNotificationService::AlertNotificationService ( System::SystemTask& systemTask, NotificationManager& notificationManager )
- : characteristicDefinition{
- {
- .uuid = (ble_uuid_t *) &ansCharUuid,
- .access_cb = AlertNotificationCallback,
- .arg = this,
- .flags = BLE_GATT_CHR_F_WRITE
- },
- {
- .uuid = (ble_uuid_t *) &notificationEventUuid,
- .access_cb = AlertNotificationCallback,
- .arg = this,
- .flags = BLE_GATT_CHR_F_NOTIFY,
- .val_handle = &eventHandle
- },
- {
- 0
- }
- },
- serviceDefinition{
- {
- /* Device Information Service */
- .type = BLE_GATT_SVC_TYPE_PRIMARY,
- .uuid = (ble_uuid_t *) &ansUuid,
- .characteristics = characteristicDefinition
- },
- {
- 0
- },
- }, systemTask{systemTask}, notificationManager{notificationManager} {
+AlertNotificationService::AlertNotificationService(System::SystemTask& systemTask, NotificationManager& notificationManager)
+ : characteristicDefinition {{.uuid = (ble_uuid_t*) &ansCharUuid,
+ .access_cb = AlertNotificationCallback,
+ .arg = this,
+ .flags = BLE_GATT_CHR_F_WRITE},
+ {.uuid = (ble_uuid_t*) &notificationEventUuid,
+ .access_cb = AlertNotificationCallback,
+ .arg = this,
+ .flags = BLE_GATT_CHR_F_NOTIFY,
+ .val_handle = &eventHandle},
+ {0}},
+ serviceDefinition {
+ {/* Device Information Service */
+ .type = BLE_GATT_SVC_TYPE_PRIMARY,
+ .uuid = (ble_uuid_t*) &ansUuid,
+ .characteristics = characteristicDefinition},
+ {0},
+ },
+ systemTask {systemTask},
+ notificationManager {notificationManager} {
}
-int AlertNotificationService::OnAlert(uint16_t conn_handle, uint16_t attr_handle,
- struct ble_gatt_access_ctxt *ctxt) {
+int AlertNotificationService::OnAlert(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt) {
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) {
constexpr size_t stringTerminatorSize = 1; // end of string '\0'
constexpr size_t headerSize = 3;
const auto maxMessageSize {NotificationManager::MaximumMessageSize()};
- const auto maxBufferSize{maxMessageSize + headerSize};
+ const auto maxBufferSize {maxMessageSize + headerSize};
// Ignore notifications with empty message
const auto packetLen = OS_MBUF_PKTLEN(ctxt->om);
- if(packetLen <= headerSize) return 0;
+ if (packetLen <= headerSize)
+ return 0;
size_t bufferSize = std::min(packetLen + stringTerminatorSize, maxBufferSize);
- auto messageSize = std::min(maxMessageSize, (bufferSize-headerSize));
+ auto messageSize = std::min(maxMessageSize, (bufferSize - headerSize));
Categories category;
NotificationManager::Notification notif;
- os_mbuf_copydata(ctxt->om, headerSize, messageSize-1, notif.message.data());
+ os_mbuf_copydata(ctxt->om, headerSize, messageSize - 1, notif.message.data());
os_mbuf_copydata(ctxt->om, 0, 1, &category);
- notif.message[messageSize-1] = '\0';
+ notif.message[messageSize - 1] = '\0';
notif.size = messageSize;
// TODO convert all ANS categories to NotificationController categories
- switch(category) {
+ switch (category) {
case Categories::Call:
notif.category = Pinetime::Controllers::NotificationManager::Categories::IncomingCall;
break;
@@ -99,7 +88,7 @@ int AlertNotificationService::OnAlert(uint16_t conn_handle, uint16_t attr_handle
void AlertNotificationService::AcceptIncomingCall() {
auto response = IncomingCallResponses::Answer;
- auto *om = ble_hs_mbuf_from_flat(&response, 1);
+ auto* om = ble_hs_mbuf_from_flat(&response, 1);
uint16_t connectionHandle = systemTask.nimble().connHandle();
@@ -112,7 +101,7 @@ void AlertNotificationService::AcceptIncomingCall() {
void AlertNotificationService::RejectIncomingCall() {
auto response = IncomingCallResponses::Reject;
- auto *om = ble_hs_mbuf_from_flat(&response, 1);
+ auto* om = ble_hs_mbuf_from_flat(&response, 1);
uint16_t connectionHandle = systemTask.nimble().connHandle();
@@ -125,7 +114,7 @@ void AlertNotificationService::RejectIncomingCall() {
void AlertNotificationService::MuteIncomingCall() {
auto response = IncomingCallResponses::Mute;
- auto *om = ble_hs_mbuf_from_flat(&response, 1);
+ auto* om = ble_hs_mbuf_from_flat(&response, 1);
uint16_t connectionHandle = systemTask.nimble().connHandle();