Fix for "Configured" event not working.

This commit is contained in:
Joe Kearney 2026-02-21 12:49:55 -06:00
parent 45df6f952a
commit 866f484b00
6 changed files with 28 additions and 6 deletions

View file

@ -54,9 +54,6 @@ bool BLE_IsPacketNew(const uint8_t *sender_BD_ADDR,
BLE_PacketType_T packet_type, BLE_PacketType_T packet_type,
uint8_t event_number) 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. // Check if the packet already exists in the tracker.
for (int i = 0; i < Tracker.count; i++) 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)) (Tracker.packets[index].event_number == event_number))
{ {
// We've already seen this packet. // We've already seen this packet.
KLOG_TRACE("BLE", "Packet from %s is not new.", BLE_ADDR_To_Str(sender_BD_ADDR));
return false; 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; int new_index;
if (Tracker.count < MAX_REMEMBERED_PACKETS) 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); 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].packet_type = packet_type;
Tracker.packets[new_index].event_number = event_number; Tracker.packets[new_index].event_number = event_number;
return true;
} }
// Initialize the MessageTracker // Initialize the MessageTracker

View file

@ -32,6 +32,7 @@ extern "C" {
#endif #endif
bool BLE_IsPacketNew(const uint8_t* sender_BD_ADDR, BLE_PacketType_T packet_type, uint8_t event_number); 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); void BLE_ClearPacketTracker(void);
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -118,6 +118,11 @@ SystemKResult_T BLE_HandleCommonEvents(KEvent_T *event)
result = SYSTEMK_RESULT_OVERFLOW; 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);
}
} }
} }
} }

View file

@ -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)) 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(); Health_In_Percent = (int16_t)Get_Health();
if (packet->damage > 0) if (packet->damage > 0)

View file

@ -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)) 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) if (packet->subtype == BLE_REQUEST_PARAMETER_CHANGE)
{ {
SystemKResult_T result = SYSTEMK_RESULT_SUCCESS; SystemKResult_T result = SYSTEMK_RESULT_SUCCESS;

View file

@ -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)) 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 (packet->event_ID == BLE_EVENT_CONFIGURED)
{ {
if (context->States.Current_State == STATE_CONFIGURING) 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); 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) 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); 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) else if (packet->event_ID == BLE_EVENT_WRAPUP_COMPLETE)
{ {