Compare commits
4 commits
6382526391
...
257f0b7cde
Author | SHA1 | Date | |
---|---|---|---|
![]() |
257f0b7cde | ||
![]() |
747e336cc1 | ||
![]() |
ba23026d13 | ||
![]() |
eaef8247e5 |
7 changed files with 92 additions and 15 deletions
|
@ -259,10 +259,11 @@ void BLE_UpdateTagPacket(int16_t damage, color_t color, uint8_t target_BD_ADDR[B
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Event number used for all BLE_PACKET_TYPE_PARAMETERS packets.
|
||||||
|
static uint8_t ParametersEventNumber = 0;
|
||||||
|
|
||||||
void BLE_RespondToConfigurationPacket(const BLE_ParametersPacket_T *const packet, BLE_ConfigurationSubtype_T response)
|
void BLE_RespondToConfigurationPacket(const BLE_ParametersPacket_T *const packet, BLE_ConfigurationSubtype_T response)
|
||||||
{
|
{
|
||||||
static uint8_t EventNumber = 0;
|
|
||||||
|
|
||||||
Advertising_Data.length = BLE_KTAG_PACKET_TOTAL_SIZE;
|
Advertising_Data.length = BLE_KTAG_PACKET_TOTAL_SIZE;
|
||||||
|
|
||||||
// Manufacturer Specific Data
|
// Manufacturer Specific Data
|
||||||
|
@ -275,7 +276,7 @@ void BLE_RespondToConfigurationPacket(const BLE_ParametersPacket_T *const packet
|
||||||
Advertising_Data.data[6] = 'a';
|
Advertising_Data.data[6] = 'a';
|
||||||
Advertising_Data.data[7] = 'g';
|
Advertising_Data.data[7] = 'g';
|
||||||
Advertising_Data.data[8] = BLE_PACKET_TYPE_PARAMETERS;
|
Advertising_Data.data[8] = BLE_PACKET_TYPE_PARAMETERS;
|
||||||
Advertising_Data.data[9] = EventNumber++;
|
Advertising_Data.data[9] = ParametersEventNumber++;
|
||||||
Advertising_Data.data[10] = packet->BD_ADDR[0];
|
Advertising_Data.data[10] = packet->BD_ADDR[0];
|
||||||
Advertising_Data.data[11] = packet->BD_ADDR[1];
|
Advertising_Data.data[11] = packet->BD_ADDR[1];
|
||||||
Advertising_Data.data[12] = packet->BD_ADDR[2];
|
Advertising_Data.data[12] = packet->BD_ADDR[2];
|
||||||
|
@ -311,6 +312,51 @@ void BLE_RespondToConfigurationPacket(const BLE_ParametersPacket_T *const packet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BLE_BroadcastCurrentParameterInfoPacket(const BLE_ParameterKey_T key_one, const uint32_t value_one, const BLE_ParameterKey_T key_two, const uint32_t value_two)
|
||||||
|
{
|
||||||
|
Advertising_Data.length = BLE_KTAG_PACKET_TOTAL_SIZE;
|
||||||
|
|
||||||
|
// Manufacturer Specific Data
|
||||||
|
Advertising_Data.data[0] = 0x1E;
|
||||||
|
Advertising_Data.data[1] = 0xFF;
|
||||||
|
Advertising_Data.data[2] = 0xFF;
|
||||||
|
Advertising_Data.data[3] = 0xFF;
|
||||||
|
Advertising_Data.data[4] = 'K';
|
||||||
|
Advertising_Data.data[5] = 'T';
|
||||||
|
Advertising_Data.data[6] = 'a';
|
||||||
|
Advertising_Data.data[7] = 'g';
|
||||||
|
Advertising_Data.data[8] = BLE_PACKET_TYPE_PARAMETERS;
|
||||||
|
Advertising_Data.data[9] = ParametersEventNumber++;
|
||||||
|
Advertising_Data.data[10] = BLE_BROADCAST_ADDRESS[0];
|
||||||
|
Advertising_Data.data[11] = BLE_BROADCAST_ADDRESS[1];
|
||||||
|
Advertising_Data.data[12] = BLE_BROADCAST_ADDRESS[2];
|
||||||
|
Advertising_Data.data[13] = BLE_BROADCAST_ADDRESS[3];
|
||||||
|
Advertising_Data.data[14] = BLE_BROADCAST_ADDRESS[4];
|
||||||
|
Advertising_Data.data[15] = BLE_BROADCAST_ADDRESS[5];
|
||||||
|
Advertising_Data.data[16] = BLE_CURRENT_PARAMETER_INFORMATION;
|
||||||
|
Advertising_Data.data[17] = (uint8_t)((key_one >> 0) & 0xFF);
|
||||||
|
Advertising_Data.data[18] = (uint8_t)((key_one >> 8) & 0xFF);
|
||||||
|
Advertising_Data.data[19] = (uint8_t)((value_one >> 0) & 0xFF);
|
||||||
|
Advertising_Data.data[20] = (uint8_t)((value_one >> 8) & 0xFF);
|
||||||
|
Advertising_Data.data[21] = (uint8_t)((value_one >> 16) & 0xFF);
|
||||||
|
Advertising_Data.data[22] = (uint8_t)((value_one >> 24) & 0xFF);
|
||||||
|
Advertising_Data.data[23] = (uint8_t)((key_two >> 0) & 0xFF);
|
||||||
|
Advertising_Data.data[24] = (uint8_t)((key_two >> 8) & 0xFF);
|
||||||
|
Advertising_Data.data[25] = (uint8_t)((value_two >> 0) & 0xFF);
|
||||||
|
Advertising_Data.data[26] = (uint8_t)((value_two >> 8) & 0xFF);
|
||||||
|
Advertising_Data.data[27] = (uint8_t)((value_two >> 16) & 0xFF);
|
||||||
|
Advertising_Data.data[28] = (uint8_t)((value_two >> 24) & 0xFF);
|
||||||
|
Advertising_Data.data[29] = 0xFF;
|
||||||
|
Advertising_Data.data[30] = 0xFF;
|
||||||
|
|
||||||
|
SystemKResult_T result = BLE_SetAdvertisingData(&Advertising_Data);
|
||||||
|
|
||||||
|
if (result != SYSTEMK_RESULT_SUCCESS)
|
||||||
|
{
|
||||||
|
KLOG_ERROR(KLOG_TAG, "Error responding to configuration packet!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BLE_UpdateHelloPacket()
|
void BLE_UpdateHelloPacket()
|
||||||
{
|
{
|
||||||
static uint8_t EventNumber = 0;
|
static uint8_t EventNumber = 0;
|
||||||
|
@ -404,12 +450,12 @@ bool BLE_IsBLEPacketForMe(const uint8_t BD_ADDR[6])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is this the broadcast address?
|
// Is this the broadcast address?
|
||||||
if ((BD_ADDR[0] == 0xFF) &&
|
if ((BD_ADDR[0] == BLE_BROADCAST_ADDRESS[0]) &&
|
||||||
(BD_ADDR[1] == 0xFF) &&
|
(BD_ADDR[1] == BLE_BROADCAST_ADDRESS[1]) &&
|
||||||
(BD_ADDR[2] == 0xFF) &&
|
(BD_ADDR[2] == BLE_BROADCAST_ADDRESS[2]) &&
|
||||||
(BD_ADDR[3] == 0xFF) &&
|
(BD_ADDR[3] == BLE_BROADCAST_ADDRESS[3]) &&
|
||||||
(BD_ADDR[4] == 0xFF) &&
|
(BD_ADDR[4] == BLE_BROADCAST_ADDRESS[4]) &&
|
||||||
(BD_ADDR[5] == 0xFF))
|
(BD_ADDR[5] == BLE_BROADCAST_ADDRESS[5]))
|
||||||
{
|
{
|
||||||
for_me = true;
|
for_me = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,6 +295,7 @@ void BLE_UpdateInstigationPacket(uint32_t Game_Length_in_ms, uint32_t Time_Remai
|
||||||
void BLE_UpdateStatusPacket(uint8_t current_state);
|
void BLE_UpdateStatusPacket(uint8_t current_state);
|
||||||
void BLE_UpdateTagPacket(int16_t damage, color_t color, uint8_t target_BD_ADDR[BD_ADDR_SIZE]);
|
void BLE_UpdateTagPacket(int16_t damage, color_t color, uint8_t target_BD_ADDR[BD_ADDR_SIZE]);
|
||||||
void BLE_RespondToConfigurationPacket(const BLE_ParametersPacket_T *const packet, BLE_ConfigurationSubtype_T response);
|
void BLE_RespondToConfigurationPacket(const BLE_ParametersPacket_T *const packet, BLE_ConfigurationSubtype_T response);
|
||||||
|
void BLE_BroadcastCurrentParameterInfoPacket(const BLE_ParameterKey_T key_one, const uint32_t value_one, const BLE_ParameterKey_T key_two, const uint32_t value_two);
|
||||||
void BLE_UpdateHelloPacket();
|
void BLE_UpdateHelloPacket();
|
||||||
bool BLE_IsBLEPacketForMe(const uint8_t BD_ADDR[BD_ADDR_SIZE]);
|
bool BLE_IsBLEPacketForMe(const uint8_t BD_ADDR[BD_ADDR_SIZE]);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
const uint8_t BLE_BROADCAST_ADDRESS[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||||||
|
|
||||||
//! Converts a 6-byte Bluetooth Low Energy address to a human-readable string (for logging).
|
//! Converts a 6-byte Bluetooth Low Energy address to a human-readable string (for logging).
|
||||||
/*!
|
/*!
|
||||||
* \param bd_addr The Bluetooth address as a 6-byte array
|
* \param bd_addr The Bluetooth address as a 6-byte array
|
||||||
|
|
|
@ -19,4 +19,6 @@
|
||||||
* file in the root of this repository. If not, see <http://www.gnu.org/licenses/>.
|
* file in the root of this repository. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
extern const uint8_t BLE_BROADCAST_ADDRESS[6];
|
||||||
|
|
||||||
const char* BLE_ADDR_To_Str(const uint8_t bd_addr[6]);
|
const char* BLE_ADDR_To_Str(const uint8_t bd_addr[6]);
|
|
@ -109,9 +109,9 @@ static inline void PackPulseTrain(TimedPulseTrain_T *pulsetrain, uint32_t data)
|
||||||
|
|
||||||
TimedPulseTrain_T *NEC_EncodePacket(CommandPacket_T *packet)
|
TimedPulseTrain_T *NEC_EncodePacket(CommandPacket_T *packet)
|
||||||
{
|
{
|
||||||
uint32_t packed_data = 0x00000000;
|
uint32_t data = packet->data;
|
||||||
|
|
||||||
PackPulseTrain(&Command_Send_Buffer, packed_data);
|
PackPulseTrain(&Command_Send_Buffer, data);
|
||||||
|
|
||||||
return &Command_Send_Buffer;
|
return &Command_Send_Buffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,8 @@ const StateActivity_T STATE_CONFIGURING_Activities =
|
||||||
{
|
{
|
||||||
.Entry = Configuring_Entry,
|
.Entry = Configuring_Entry,
|
||||||
.Do = Configuring_Do,
|
.Do = Configuring_Do,
|
||||||
.Exit = Configuring_Exit};
|
.Exit = Configuring_Exit
|
||||||
|
};
|
||||||
|
|
||||||
//! Sets up the Configuring state.
|
//! Sets up the Configuring state.
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -30,6 +30,15 @@ static void Wrapping_Up_Entry(StateMachineContext_T * context);
|
||||||
static void Wrapping_Up_Do(StateMachineContext_T * context);
|
static void Wrapping_Up_Do(StateMachineContext_T * context);
|
||||||
static void Wrapping_Up_Exit(StateMachineContext_T * context);
|
static void Wrapping_Up_Exit(StateMachineContext_T * context);
|
||||||
|
|
||||||
|
static TimerHandle_t BLEInfoRequestResponseTimer = NULL;
|
||||||
|
static StaticTimer_t xBLEInfoRequestResponseTimerBuffer;
|
||||||
|
static TickType_t xBLEInfoRequestResponseTimerPeriod = 3000 / portTICK_PERIOD_MS;
|
||||||
|
|
||||||
|
static void BLEInfoRequestResponseTimerCallback(TimerHandle_t xTimer)
|
||||||
|
{
|
||||||
|
BLE_UpdateStatusPacket(STATE_WRAPPING_UP);
|
||||||
|
}
|
||||||
|
|
||||||
//! Activities for the **Wrapping Up** state.
|
//! Activities for the **Wrapping Up** state.
|
||||||
const StateActivity_T STATE_WRAPPING_UP_Activities =
|
const StateActivity_T STATE_WRAPPING_UP_Activities =
|
||||||
{
|
{
|
||||||
|
@ -52,6 +61,22 @@ static void Wrapping_Up_Entry(StateMachineContext_T * context)
|
||||||
{
|
{
|
||||||
KLOG_ERROR(KLOG_TAG, "Couldn't start BLE!");
|
KLOG_ERROR(KLOG_TAG, "Couldn't start BLE!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (BLEInfoRequestResponseTimer == NULL)
|
||||||
|
{
|
||||||
|
BLEInfoRequestResponseTimer = xTimerCreateStatic(
|
||||||
|
"BLEInfoRequestResponse",
|
||||||
|
xBLEInfoRequestResponseTimerPeriod,
|
||||||
|
pdFALSE,
|
||||||
|
(void *)0,
|
||||||
|
BLEInfoRequestResponseTimerCallback,
|
||||||
|
&xBLEInfoRequestResponseTimerBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BLEInfoRequestResponseTimer == NULL)
|
||||||
|
{
|
||||||
|
KLOG_ERROR(KLOG_TAG, "Couldn't create the BLEInfoRequestResponseTimer!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Executes the Wrapping Up state.
|
//! Executes the Wrapping Up state.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue