WIP: New BLE
This commit is contained in:
parent
4fe072f2d3
commit
a9212c5a3a
12 changed files with 191 additions and 56 deletions
|
@ -59,11 +59,13 @@ typedef enum
|
|||
BLE_PACKET_TYPE_BUFFER_FREE = 0,
|
||||
BLE_PACKET_TYPE_INSTIGATE_GAME = 1,
|
||||
BLE_FIRST_VALID_PACKET_TYPE = BLE_PACKET_TYPE_INSTIGATE_GAME,
|
||||
BLE_PACKET_TYPE_JOIN_NOW = 2,
|
||||
BLE_PACKET_TYPE_EVENT = 2,
|
||||
BLE_PACKET_TYPE_TAG = 3,
|
||||
BLE_PACKET_TYPE_CONSOLE = 4,
|
||||
BLE_PACKET_TYPE_STATUS = 5,
|
||||
BLE_LAST_VALID_PACKET_TYPE = BLE_PACKET_TYPE_STATUS,
|
||||
BLE_PACKET_TYPE_CONFIGURATION = 6,
|
||||
BLE_PACKET_TYPE_HELLO = 7,
|
||||
BLE_LAST_VALID_PACKET_TYPE = BLE_PACKET_TYPE_HELLO,
|
||||
BLE_PACKET_TYPE_UNKNOWN
|
||||
} BLE_PacketType_T;
|
||||
|
||||
|
@ -87,11 +89,10 @@ typedef struct
|
|||
|
||||
uint32_t game_length_in_ms;
|
||||
uint32_t time_remaining_until_countdown_in_ms;
|
||||
uint8_t random_time_after_countdown_in_ms_x100;
|
||||
uint8_t unused[12];
|
||||
uint8_t unused[13];
|
||||
} __attribute__((packed, aligned(1))) BLE_InstigationPacket_T;
|
||||
|
||||
//! Contents of the BLE packet #BLE_PACKET_TYPE_JOIN_NOW.
|
||||
//! Contents of the BLE packet #BLE_PACKET_TYPE_EVENT.
|
||||
typedef struct
|
||||
{
|
||||
BLE_PacketType_T type;
|
||||
|
@ -99,10 +100,11 @@ typedef struct
|
|||
int8_t RSSI;
|
||||
uint8_t event_number;
|
||||
|
||||
uint32_t game_length_in_ms;
|
||||
uint32_t time_remaining_in_game_in_ms;
|
||||
uint8_t unused[13];
|
||||
} __attribute__((packed, aligned(1))) BLE_JoinNowPacket_T;
|
||||
uint8_t target_BD_ADDR[BD_ADDR_SIZE];
|
||||
uint32_t event_ID;
|
||||
uint32_t event_data;
|
||||
uint8_t unused[7];
|
||||
} __attribute__((packed, aligned(1))) BLE_EventPacket_T;
|
||||
|
||||
//! Contents of the BLE packet #BLE_PACKET_TYPE_TAG.
|
||||
typedef struct
|
||||
|
@ -149,17 +151,61 @@ typedef struct
|
|||
uint16_t maximum_health;
|
||||
color_t primary_color;
|
||||
color_t secondary_color;
|
||||
uint8_t unused[5];
|
||||
uint8_t SystemK_top_level_state; // StateID_T
|
||||
uint8_t unused[4];
|
||||
} __attribute__((packed, aligned(1)))BLE_StatusPacket_T;
|
||||
|
||||
//! Contents of the BLE packet #BLE_PACKET_TYPE_CONFIGURATION.
|
||||
typedef struct
|
||||
{
|
||||
BLE_PacketType_T type;
|
||||
uint8_t BD_ADDR[BD_ADDR_SIZE];
|
||||
int8_t RSSI;
|
||||
uint8_t event_number;
|
||||
|
||||
uint8_t target_BD_ADDR[BD_ADDR_SIZE];
|
||||
uint8_t subtype;
|
||||
uint16_t key_one;
|
||||
uint32_t value_one;
|
||||
uint16_t key_two;
|
||||
uint32_t value_two;
|
||||
uint8_t unused[2];
|
||||
} __attribute__((packed, aligned(1)))BLE_ConfigurationPacket_T;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
BLE_DEVICE_TYPE_LITTLE_BOY_BLUE = 0x0000,
|
||||
BLE_DEVICE_TYPE_2020TPC = 0x0001,
|
||||
BLE_DEVICE_TYPE_MOBILE_APP = 0x0002,
|
||||
BLE_DEVICE_TYPE_32ESPECIAL = 0x0003,
|
||||
BLE_DEVICE_TYPE_UNKNOWN = 0xFFFF
|
||||
} BLE_DeviceType_T;
|
||||
|
||||
//! Contents of the BLE packet #BLE_PACKET_TYPE_HELLO.
|
||||
typedef struct
|
||||
{
|
||||
BLE_PacketType_T type;
|
||||
uint8_t BD_ADDR[BD_ADDR_SIZE];
|
||||
int8_t RSSI;
|
||||
uint8_t event_number;
|
||||
|
||||
uint8_t SystemK_major_version;
|
||||
uint8_t SystemK_minor_version;
|
||||
uint16_t device_type;
|
||||
uint8_t team_ID;
|
||||
uint8_t device_name[SYSTEMK_MAX_CHARS_IN_DEVICE_NAME];
|
||||
} __attribute__((packed, aligned(1)))BLE_HelloPacket_T;
|
||||
|
||||
typedef union
|
||||
{
|
||||
BLE_GenericPacketType_T Generic;
|
||||
BLE_InstigationPacket_T Instigation;
|
||||
BLE_JoinNowPacket_T JoinNow;
|
||||
BLE_EventPacket_T Event;
|
||||
BLE_TagPacket_T Tag;
|
||||
BLE_ConsolePacket_T Console;
|
||||
BLE_StatusPacket_T Status;
|
||||
BLE_ConfigurationPacket_T Configuration;
|
||||
BLE_HelloPacket_T Hello;
|
||||
} BLE_Packet_T;
|
||||
|
||||
/* Include Files */
|
||||
|
@ -180,8 +226,9 @@ void BLE_InitPacketBuffers(void);
|
|||
|
||||
BLE_Packet_T * BLE_DecodeKTagPacket(const uint8_t * received_data, uint8_t received_data_length, uint8_t peer_BD_ADDR[BD_ADDR_SIZE], int8_t rssi_in_dBm);
|
||||
void BLE_UpdateInstigationPacket(uint32_t Game_Length_in_ms, uint32_t Time_Remaining_Until_Countdown_in_ms);
|
||||
void BLE_UpdateStatusPacket();
|
||||
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_UpdateHelloPacket();
|
||||
bool BLE_IsBLEPacketForMe(const uint8_t BD_ADDR[BD_ADDR_SIZE]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue