diff --git a/src/components/ble/AlertNotificationClient.cpp b/src/components/ble/AlertNotificationClient.cpp index e3bc9242..a1703586 100644 --- a/src/components/ble/AlertNotificationClient.cpp +++ b/src/components/ble/AlertNotificationClient.cpp @@ -143,24 +143,22 @@ int AlertNotificationClient::OnDescriptorDiscoveryEventCallback(uint16_t connect void AlertNotificationClient::OnNotification(ble_gap_event* event) { if (event->notify_rx.attr_handle == newAlertHandle) { - constexpr size_t stringTerminatorSize = 1; // end of string '\0' - constexpr size_t headerSize = 3; - const auto maxMessageSize {NotificationManager::MaximumMessageSize()}; - const auto maxBufferSize {maxMessageSize + headerSize}; + constexpr uint32_t headerSize = 3; + constexpr uint32_t maxMessageSize = NotificationManager::MaximumMessageSize(); // Ignore notifications with empty message - const auto packetLen = OS_MBUF_PKTLEN(event->notify_rx.om); - if (packetLen <= headerSize) + const uint32_t packetLen = OS_MBUF_PKTLEN(event->notify_rx.om); + if (packetLen <= headerSize) { return; + } - size_t bufferSize = std::min(packetLen + stringTerminatorSize, maxBufferSize); - auto messageSize = std::min(maxMessageSize, (bufferSize - headerSize)); + const uint32_t messageSize = std::min(maxMessageSize, packetLen - headerSize); NotificationManager::Notification notif; - os_mbuf_copydata(event->notify_rx.om, headerSize, messageSize - 1, notif.message.data()); - notif.message[messageSize - 1] = '\0'; + os_mbuf_copydata(event->notify_rx.om, headerSize, messageSize, notif.message.data()); + notif.message[messageSize] = '\0'; notif.size = messageSize; - notif.category = Pinetime::Controllers::NotificationManager::Categories::SimpleAlert; + notif.category = NotificationManager::Categories::SimpleAlert; notificationManager.Push(std::move(notif)); systemTask.PushMessage(Pinetime::System::Messages::OnNewNotification); diff --git a/src/components/ble/AlertNotificationService.cpp b/src/components/ble/AlertNotificationService.cpp index d9f28698..7e477881 100644 --- a/src/components/ble/AlertNotificationService.cpp +++ b/src/components/ble/AlertNotificationService.cpp @@ -46,27 +46,24 @@ AlertNotificationService::AlertNotificationService(System::SystemTask& systemTas int AlertNotificationService::OnAlert(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}; + constexpr uint32_t headerSize = 3; + constexpr uint32_t maxMessageSize = NotificationManager::MaximumMessageSize(); // Ignore notifications with empty message - const auto packetLen = OS_MBUF_PKTLEN(ctxt->om); + const uint32_t packetLen = OS_MBUF_PKTLEN(ctxt->om); if (packetLen <= headerSize) { return 0; } - size_t bufferSize = std::min(packetLen + stringTerminatorSize, maxBufferSize); - auto messageSize = std::min(maxMessageSize, (bufferSize - headerSize)); - Categories category; + const uint32_t messageSize = std::min(maxMessageSize, packetLen - headerSize); NotificationManager::Notification notif; - os_mbuf_copydata(ctxt->om, headerSize, messageSize - 1, notif.message.data()); - os_mbuf_copydata(ctxt->om, 0, 1, &category); - notif.message[messageSize - 1] = '\0'; + os_mbuf_copydata(ctxt->om, headerSize, messageSize, notif.message.data()); + notif.message[messageSize] = '\0'; notif.size = messageSize; + Categories category; + os_mbuf_copydata(ctxt->om, 0, 1, &category); // TODO convert all ANS categories to NotificationController categories switch (category) { case Categories::Call: @@ -77,9 +74,8 @@ int AlertNotificationService::OnAlert(struct ble_gatt_access_ctxt* ctxt) { break; } - auto event = Pinetime::System::Messages::OnNewNotification; notificationManager.Push(std::move(notif)); - systemTask.PushMessage(event); + systemTask.PushMessage(Pinetime::System::Messages::OnNewNotification); } return 0; }