From 866f484b008b5b8dd0df0bac26bf0cd38b2d5b4e Mon Sep 17 00:00:00 2001 From: Joe Kearney Date: Sat, 21 Feb 2026 12:49:55 -0600 Subject: [PATCH] Fix for "Configured" event not working. --- BLE/BLE_Packet_Tracker.c | 14 ++++++++------ BLE/BLE_Packet_Tracker.h | 1 + BLE/BLE_Utils.c | 5 +++++ States/Playing/State_Playing.c | 2 ++ States/State_Configuring.c | 2 ++ States/State_Machine.c | 10 ++++++++++ 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/BLE/BLE_Packet_Tracker.c b/BLE/BLE_Packet_Tracker.c index 86ef2bd..8327b49 100644 --- a/BLE/BLE_Packet_Tracker.c +++ b/BLE/BLE_Packet_Tracker.c @@ -54,9 +54,6 @@ bool BLE_IsPacketNew(const uint8_t *sender_BD_ADDR, BLE_PacketType_T packet_type, uint8_t event_number) { - //esp_log_level_set("BLE", ESP_LOG_DEBUG); - //KLOG_DEBUG("BLE", "Packet from %s", BLE_ADDR_To_Str(sender_BD_ADDR)); - // Check if the packet already exists in the tracker. for (int i = 0; i < Tracker.count; i++) { @@ -66,11 +63,18 @@ bool BLE_IsPacketNew(const uint8_t *sender_BD_ADDR, (Tracker.packets[index].event_number == event_number)) { // We've already seen this packet. + KLOG_TRACE("BLE", "Packet from %s is not new.", BLE_ADDR_To_Str(sender_BD_ADDR)); return false; } } - // The packet is new--find the location to store it. + KLOG_DEBUG("BLE", "Packet from %s is new.", BLE_ADDR_To_Str(sender_BD_ADDR)); + return true; +} + +void BLE_RememberPacket(const uint8_t* sender_BD_ADDR, BLE_PacketType_T packet_type, uint8_t event_number) +{ + // Find the location to store the packet. int new_index; if (Tracker.count < MAX_REMEMBERED_PACKETS) { @@ -89,8 +93,6 @@ bool BLE_IsPacketNew(const uint8_t *sender_BD_ADDR, memcpy(Tracker.packets[new_index].sender_BD_ADDR, sender_BD_ADDR, BD_ADDR_SIZE); Tracker.packets[new_index].packet_type = packet_type; Tracker.packets[new_index].event_number = event_number; - - return true; } // Initialize the MessageTracker diff --git a/BLE/BLE_Packet_Tracker.h b/BLE/BLE_Packet_Tracker.h index 6a49c71..b7737da 100644 --- a/BLE/BLE_Packet_Tracker.h +++ b/BLE/BLE_Packet_Tracker.h @@ -32,6 +32,7 @@ extern "C" { #endif bool BLE_IsPacketNew(const uint8_t* sender_BD_ADDR, BLE_PacketType_T packet_type, uint8_t event_number); +void BLE_RememberPacket(const uint8_t* sender_BD_ADDR, BLE_PacketType_T packet_type, uint8_t event_number); void BLE_ClearPacketTracker(void); #ifdef __cplusplus diff --git a/BLE/BLE_Utils.c b/BLE/BLE_Utils.c index cc420ea..39b1aed 100644 --- a/BLE/BLE_Utils.c +++ b/BLE/BLE_Utils.c @@ -118,6 +118,11 @@ SystemKResult_T BLE_HandleCommonEvents(KEvent_T *event) result = SYSTEMK_RESULT_OVERFLOW; } } + + if (result != SYSTEMK_RESULT_EVENT_NOT_HANDLED) + { + BLE_RememberPacket(event_packet->BD_ADDR, BLE_PACKET_TYPE_EVENT, event_packet->event_number); + } } } } diff --git a/States/Playing/State_Playing.c b/States/Playing/State_Playing.c index 4d51c71..0fc69b1 100644 --- a/States/Playing/State_Playing.c +++ b/States/Playing/State_Playing.c @@ -206,6 +206,8 @@ void HandleBLETagPacket(const BLE_TagPacket_T *const packet) { if (BLE_IsPacketNew(packet->BD_ADDR, BLE_PACKET_TYPE_TAG, packet->event_number)) { + BLE_RememberPacket(packet->BD_ADDR, BLE_PACKET_TYPE_TAG, packet->event_number); + Health_In_Percent = (int16_t)Get_Health(); if (packet->damage > 0) diff --git a/States/State_Configuring.c b/States/State_Configuring.c index 6b581e6..b6fa1f5 100644 --- a/States/State_Configuring.c +++ b/States/State_Configuring.c @@ -376,6 +376,8 @@ void HandleBLEConfigurationPacket(const BLE_ParametersPacket_T *const packet) { if (BLE_IsPacketNew(packet->BD_ADDR, BLE_PACKET_TYPE_PARAMETERS, packet->event_number)) { + BLE_RememberPacket(packet->BD_ADDR, BLE_PACKET_TYPE_PARAMETERS, packet->event_number); + if (packet->subtype == BLE_REQUEST_PARAMETER_CHANGE) { SystemKResult_T result = SYSTEMK_RESULT_SUCCESS; diff --git a/States/State_Machine.c b/States/State_Machine.c index 63e71a3..577cc7d 100644 --- a/States/State_Machine.c +++ b/States/State_Machine.c @@ -135,6 +135,8 @@ void HandleBLEEventPacket(const BLE_EventPacket_T *const packet, StateMachineCon { if (BLE_IsPacketNew(packet->BD_ADDR, BLE_PACKET_TYPE_EVENT, packet->event_number)) { + BLE_RememberPacket(packet->BD_ADDR, BLE_PACKET_TYPE_EVENT, packet->event_number); + if (packet->event_ID == BLE_EVENT_CONFIGURED) { if (context->States.Current_State == STATE_CONFIGURING) @@ -146,6 +148,10 @@ void HandleBLEEventPacket(const BLE_EventPacket_T *const packet, StateMachineCon }; Transition_For_Event(context, STATE_READY, &Event); } + else + { + KLOG_WARN("STATE", "Ignoring a BLE Configured event--not in the Configuring State!"); + } } else if (packet->event_ID == BLE_EVENT_CONFIGURE) { @@ -158,6 +164,10 @@ void HandleBLEEventPacket(const BLE_EventPacket_T *const packet, StateMachineCon }; Transition_For_Event(context, STATE_CONFIGURING, &Event); } + else + { + KLOG_WARN("STATE", "Ignoring a BLE Configure event--not in the Ready State!"); + } } else if (packet->event_ID == BLE_EVENT_WRAPUP_COMPLETE) { -- 2.47.3