Swadge ESP32-S2/S3
APIs to develop for the Magfest Swadge
Loading...
Searching...
No Matches
swadgePass.h
Go to the documentation of this file.
1
136
137#pragma once
138
139//==============================================================================
140// Includes
141//==============================================================================
142
143#include "swadge.h"
144#include "fairyCollectionData.h"
145
146//==============================================================================
147// Defines
148//==============================================================================
149
150#define MAX_NUM_SWADGE_PASSES 50
151
152//==============================================================================
153// Structs
154//==============================================================================
155
159typedef struct __attribute__((packed)) swadgePassPacket
160{
161 uint16_t preamble;
162 uint8_t version;
163 int32_t username;
165 struct
166 {
167 fairy_t fairy;
168 profileCard_t card;
169 } fairyCol;
170
171 struct
172 {
173 int8_t maxLevels;
174 int16_t accuracy;
175 int32_t totalScore;
176 int32_t adjScore;
177 } gottaGo;
178
179#ifdef CONFIG_BUILD_TYPE_DEBUG
180 struct
181 {
182 uint16_t highScore;
183 } highScoreTest;
184#endif
185
186 struct
187 {
188 uint16_t highScore;
189 } roboRunner;
191
200
209
210//==============================================================================
211// Forward declaration
212//==============================================================================
213
214struct swadgeMode;
215
216//==============================================================================
217// Function Declarations
218//==============================================================================
219
220void initSwadgePassReceiver(void);
221void deinitSwadgePassReceiver(void);
222
225void receiveSwadgePass(const esp_now_recv_info_t* esp_now_info, const uint8_t* data, uint8_t len, int8_t rssi);
226
227void getSwadgePasses(list_t* swadgePasses, const struct swadgeMode* mode, bool getUsed);
228void freeSwadgePasses(list_t* swadgePasses);
229
230bool isPacketUsedByMode(swadgePassData_t* data, const struct swadgeMode* mode);
231void setPacketUsedByMode(swadgePassData_t* data, const struct swadgeMode* mode, bool isUsed);
232
233void pruneSwadgePasses(void);
#define NVS_KEY_NAME_MAX_SIZE
Definition hdw-nvs.h:59
A doubly linked list with pointers to the first and last nodes.
Definition linked_list.h:87
Definition swadge.h:250
A SwadgePass packet which is transmitted over ESP NOW.
Definition swadgePass.h:160
uint16_t preamble
Two bytes that specifically begin a SwadgePass packet.
Definition swadgePass.h:161
int32_t username
Definition swadgePass.h:163
uint8_t version
A version byte to differentiate packets per-year.
Definition swadgePass.h:162
struct swadgePassPacket swadgePassPacket_t
A SwadgePass packet which is transmitted over ESP NOW.
void sendSwadgePass(swadgePassPacket_t *packet)
Transmit a SwadgePass packet.
Definition swadgePass.c:67
char key[NVS_KEY_NAME_MAX_SIZE]
A string representation of the other Swadge's MAC address.
Definition swadgePass.h:206
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.
Definition swadgePass.c:125
void deinitSwadgePassReceiver(void)
Deinitialize the SwadgePass receiver. This frees memory.
Definition swadgePass.c:101
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.
Definition swadgePass.c:242
void freeSwadgePasses(list_t *swadgePasses)
Free SwadgePass data loaded with getSwadgePasses().
Definition swadgePass.c:298
void fillSwadgePassPacket(swadgePassPacket_t *packet)
Fill a SwadgePass packet with data from all modes before transmission.
Definition swadgePass.c:43
swadgePassNvs_t data
The SwadgePass data stored in this Swadge's NVS.
Definition swadgePass.h:207
swadgePassPacket_t packet
The received SwadgePass packet.
Definition swadgePass.h:198
void initSwadgePassReceiver(void)
Initialize the SwadgePass receiver. This reads SwadgePass data from NVS to SPIRAM so that each recept...
Definition swadgePass.c:89
bool isPacketUsedByMode(swadgePassData_t *data, const struct swadgeMode *mode)
Return if a given mode has used this SwadgePass data yet.
Definition swadgePass.c:313
uint32_t usedModeMask
A bitmask indicating if a mode has used this data.
Definition swadgePass.h:197
void setPacketUsedByMode(swadgePassData_t *data, const struct swadgeMode *mode, bool isUsed)
Set if a given mode has used this SwadgePass data yet.
Definition swadgePass.c:330
void pruneSwadgePasses(void)
Prune received SwadgePasses down to MAX_NUM_SWADGE_PASSES (50).
Definition swadgePass.c:358
SwadgePass data that is received from another Swadge.
Definition swadgePass.h:205
SwadgePass data that is saved to NVS.
Definition swadgePass.h:196