Fix for "Configured" event not working.
This commit is contained in:
parent
45df6f952a
commit
866f484b00
6 changed files with 28 additions and 6 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue