Swadge 2024 2.0.0
APIs to develop games for the Magfest Swadge
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
swadgePass.c File Reference

Macros

#define MAC_ADDR_LEN   6
 
#define MAC_STR_LEN   ((2 * MAC_ADDR_LEN) + 1)
 
#define SWADGE_PASS_PREAMBLE   0x5350
 
#define SWADGE_PASS_VERSION   0
 
#define MAX_NUM_SWADGE_PASSES   100
 

Functions

void fillSwadgePassPacket (swadgePassPacket_t *packet)
 Fill a SwadgePass packet with data from all modes before transmission.
 
void sendSwadgePass (swadgePassPacket_t *packet)
 Transmit a SwadgePass packet.
 
void initSwadgePassReceiver (void)
 Initialize the SwadgePass receiver. This reads SwadgePass data from NVS to SPIRAM so that each reception doesn't require a bunch of NVS reads.
 
void deinitSwadgePassReceiver (void)
 Deinitialize the SwadgePass receiver. This frees memory.
 
void receiveSwadgePass (const esp_now_recv_info_t *esp_now_info, const uint8_t *data, uint8_t len, int8_t rssi)
 Receive an ESP NOW packet and save it if it is a SwadgePass packet.
 
void getSwadgePasses (list_t *swadgePasses, const struct swadgeMode *mode, bool getUsed)
 Fill a list with SwadgePass data. The list should be empty before calling this function.
 
void freeSwadgePasses (list_t *swadgePasses)
 Free SwadgePass data loaded with getSwadgePasses()
 
bool isPacketUsedByMode (swadgePassData_t *data, const struct swadgeMode *mode)
 Return if a given mode has used this SwadgePass data yet.
 
void setPacketUsedByMode (swadgePassData_t *data, const struct swadgeMode *mode, bool isUsed)
 Set if a given mode has used this SwadgePass data yet.
 

Macro Definition Documentation

◆ MAC_ADDR_LEN

#define MAC_ADDR_LEN   6

◆ MAC_STR_LEN

#define MAC_STR_LEN   ((2 * MAC_ADDR_LEN) + 1)

◆ SWADGE_PASS_PREAMBLE

#define SWADGE_PASS_PREAMBLE   0x5350

◆ SWADGE_PASS_VERSION

#define SWADGE_PASS_VERSION   0

◆ MAX_NUM_SWADGE_PASSES

#define MAX_NUM_SWADGE_PASSES   100

Function Documentation

◆ fillSwadgePassPacket()

void fillSwadgePassPacket ( swadgePassPacket_t * packet)

Fill a SwadgePass packet with data from all modes before transmission.

Parameters
packetThe packet to fill

◆ sendSwadgePass()

void sendSwadgePass ( swadgePassPacket_t * packet)
inline

Transmit a SwadgePass packet.

Parameters
packetThe packet to transmit

◆ initSwadgePassReceiver()

void initSwadgePassReceiver ( void )

Initialize the SwadgePass receiver. This reads SwadgePass data from NVS to SPIRAM so that each reception doesn't require a bunch of NVS reads.

◆ deinitSwadgePassReceiver()

void deinitSwadgePassReceiver ( void )

Deinitialize the SwadgePass receiver. This frees memory.

◆ receiveSwadgePass()

void receiveSwadgePass ( const esp_now_recv_info_t * esp_now_info,
const uint8_t * data,
uint8_t len,
int8_t rssi )

Receive an ESP NOW packet and save it if it is a SwadgePass packet.

This limits the number of received SwadgePasses to MAX_NUM_SWADGE_PASSES. If a SwadgePass is received while at capacity, the most used SwadgePass will be deleted first, as determined by the most number of bits set in swadgePassNvs_t.usedModeMask.

If a SwadgePass is received from a Swadge for which there already is data, the old data will be overwritten if it's different and the swadgePassNvs_t.usedModeMask will always be cleared.

Parameters
esp_now_infoMetadata for the packet, including src and dst MAC addresses
dataThe received data
lenThe length of the received data
rssiunused

◆ getSwadgePasses()

void getSwadgePasses ( list_t * swadgePasses,
const struct swadgeMode * mode,
bool getUsed )

Fill a list with SwadgePass data. The list should be empty before calling this function.

Parameters
swadgePassesA list to fill with type swadgePassData_t
modeThe Swadge Mode getting SwadgePass data (may be NULL)
getUsedtrue to return all SwadgePass data, false to return only unused SwadgePass data

◆ freeSwadgePasses()

void freeSwadgePasses ( list_t * swadgePasses)

Free SwadgePass data loaded with getSwadgePasses()

Parameters
swadgePassesA list of SwadgePasses to free. The list should contain swadgePassData_t

◆ isPacketUsedByMode()

bool isPacketUsedByMode ( swadgePassData_t * data,
const struct swadgeMode * mode )

Return if a given mode has used this SwadgePass data yet.

Parameters
dataThe SwadgePass data
modeThe mode using the SwadgePass data
Returns
true if this data has been used by the given mode yet, false if it has not

◆ setPacketUsedByMode()

void setPacketUsedByMode ( swadgePassData_t * data,
const struct swadgeMode * mode,
bool isUsed )

Set if a given mode has used this SwadgePass data yet.

This will write changes to NVS.

Parameters
dataThe SwadgePass data
modeThe mode using the SwadgePass data
isUsedtrue if the data should be set as used, false if it should be set as unused