Swadge 2024 2.0.0
APIs to develop games for the Magfest Swadge
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
swadge2024.h
Go to the documentation of this file.
1
160
161#ifndef _SWADGE_MODE_H_
162#define _SWADGE_MODE_H_
163
164// Standard C includes
165#include <stdint.h>
166#include <inttypes.h>
167#include <stdbool.h>
168#include <stdlib.h>
169#include <stdio.h>
170#include <string.h>
171#include <math.h>
172
173// Useful ESP things
174#include <esp_heap_caps.h>
175#include <esp_log.h>
176#include <esp_random.h>
177
178// Hardware interfaces
179#include "crashwrap.h"
180#include "hdw-imu.h"
181#include "hdw-battmon.h"
182#include "hdw-btn.h"
183#include "hdw-dac.h"
184#include "hdw-esp-now.h"
185#include "hdw-led.h"
186#include "hdw-mic.h"
187#include "hdw-nvs.h"
188#include "hdw-temperature.h"
189#include "hdw-tft.h"
190#include "hdw-usb.h"
191
192// Drawing interfaces
193#include "palette.h"
194#include "color_utils.h"
195#include "font.h"
196#include "wsg.h"
197#include "shapes.h"
198#include "fill.h"
199#include "menu.h"
200#include "menuManiaRenderer.h"
201
202// Asset loaders
203#include "cnfs.h"
204#include "fs_wsg.h"
205#include "fs_font.h"
206#include "fs_txt.h"
207#include "fs_json.h"
208
209// Connection interface
210#include "p2pConnection.h"
211
212// General utilities
213#include "linked_list.h"
214#include "macros.h"
215#include "trigonometry.h"
216#include "vector2d.h"
217#include "geometry.h"
218#include "settingsManager.h"
219#include "touchUtils.h"
220#include "vectorFl2d.h"
221#include "geometryFl.h"
222#include "imu_utils.h"
223#include "swadgePass.h"
224#include "trophy.h"
225
226// Sound utilities
227#include "soundFuncs.h"
228#include "swSynth.h"
229#include "midiPlayer.h"
230
231#define EXIT_TIME_US 1000000
233#define DEFAULT_FRAME_RATE_US (1000000 / 40)
234
235// Forward declaration
236struct swadgePassPacket;
237
243typedef struct swadgeMode
244{
248 const char* modeName;
249
256
262
268
274
281
285 void (*fnEnterMode)(void);
286
290 void (*fnExitMode)(void);
291
298 void (*fnMainLoop)(int64_t elapsedUs);
299
307 void (*fnAudioCallback)(uint16_t* samples, uint32_t sampleCnt);
308
319 void (*fnBackgroundDrawCallback)(int16_t x, int16_t y, int16_t w, int16_t h, int16_t up, int16_t upNum);
320
329 void (*fnEspNowRecvCb)(const esp_now_recv_info_t* esp_now_info, const uint8_t* data, uint8_t len, int8_t rssi);
330
338 void (*fnEspNowSendCb)(const uint8_t* mac_addr, esp_now_send_status_t status);
339
350 int16_t (*fnAdvancedUSB)(uint8_t* buffer, uint16_t length, uint8_t isGet);
351
357
368
374
376
377void switchToSwadgeMode(const swadgeMode_t* mode);
379
380void deinitSystem(void);
381
382void openQuickSettings(void);
383void setFrameRateUs(uint32_t newFrameRateUs);
384uint32_t getFrameRateUs(void);
385
386void switchToSpeaker(void);
387void switchToMicrophone(void);
388
389void powerDownPeripherals(void);
390void powerUpPeripherals(void);
391
392// Getters
393font_t* getSysFont(void);
395
396#endif
A font is a collection of font_ch_t for all ASCII characters. Each character has the same height and ...
Definition font.h:66
A button event containing the button that triggered the event, whether it was pressed or released,...
Definition hdw-btn.h:117
void(* fnDacCallback_t)(uint8_t *samples, int16_t len)
A callback which requests DAC samples from the application.
Definition hdw-dac.h:94
wifiMode_t
The different WiFi modes.
Definition hdw-esp-now.h:99
Contains information which applies to the entire MIDI file.
Definition midiFileParser.h:87
A struct of all the function pointers necessary for a swadge mode. If a mode does not need a particul...
void powerDownPeripherals(void)
Power down all hardware peripherals.
Definition swadge2024.c:938
wifiMode_t wifiMode
This is a setting, not a function pointer. Set it to NO_WIFI to save power by not using WiFi at all....
Definition swadge2024.h:255
void setFrameRateUs(uint32_t newFrameRateUs)
Set the framerate, in microseconds.
Definition swadge2024.c:858
const char * modeName
This swadge mode's name, used in menus. This is not a function pointer.
Definition swadge2024.h:248
void softSwitchToPendingSwadge(void)
Switch to the pending Swadge mode without restarting the system.
Definition swadge2024.c:761
void(* fnAudioCallback)(uint16_t *samples, uint32_t sampleCnt)
This function is called whenever audio samples are read from the microphone (ADC) and are ready for p...
Definition swadge2024.h:307
fnDacCallback_t fnDacCb
This function is called to fill sample buffers for the DAC. If this is NULL, then globalMidiPlayerFil...
Definition swadge2024.h:356
bool checkButtonQueueWrapper(buttonEvt_t *evt)
Service the queue of button events that caused interrupts This only returns a single event,...
Definition swadge2024.c:806
void switchToMicrophone(void)
Enable the microphone and disable the speaker (and battery monitor)
Definition swadge2024.c:916
midiFile_t * getSysSound(void)
void switchToSwadgeMode(const swadgeMode_t *mode)
Definition swadge2024.c:750
bool overrideSelectBtn
If this is false, then PB_SELECT events will only be used to return to the main menu or open the quic...
Definition swadge2024.h:280
void(* fnEspNowRecvCb)(const esp_now_recv_info_t *esp_now_info, const uint8_t *data, uint8_t len, int8_t rssi)
This function is called whenever an ESP-NOW packet is received.
Definition swadge2024.h:329
void deinitSystem(void)
Deinitialize all components in the system.
Definition swadge2024.c:651
bool overrideUsb
If this is false, then the default TinyUSB driver will be installed (HID gamepad)....
Definition swadge2024.h:261
void(* fnBackgroundDrawCallback)(int16_t x, int16_t y, int16_t w, int16_t h, int16_t up, int16_t upNum)
This function is called when the display driver wishes to update a section of the display.
Definition swadge2024.h:319
void powerUpPeripherals(void)
Power up all hardware peripherals.
Definition swadge2024.c:955
void(* fnAddToSwadgePassPacket)(struct swadgePassPacket *packet)
This function is called to fill in a SwadgePass packet with mode-specific data. The Swadge mode shoul...
Definition swadge2024.h:367
uint32_t getFrameRateUs(void)
Get the current framerate, in microseconds.
Definition swadge2024.c:868
trophyDataList_t * trophyData
A struct with the settings and data required for trophy behavior. Set to NULL for no trophies.
Definition swadge2024.h:372
bool usesThermometer
If this is false, the thermometer will not be initialized and readTemperatureSensor() will not work....
Definition swadge2024.h:273
void(* fnExitMode)(void)
This function is called when the mode is exited. It should free any allocated memory.
Definition swadge2024.h:290
font_t * getSysFont(void)
Get the Sys Ibm Font. Font is pre-loaded fto ensure a font is always available for devs to use.
Definition swadge2024.c:995
bool usesAccelerometer
If this is false, the accelerometer will not be initialized and accelGetAccelVec() will not work....
Definition swadge2024.h:267
void(* fnEnterMode)(void)
This function is called when this mode is started. It should initialize variables and start the mode.
Definition swadge2024.h:285
void(* fnEspNowSendCb)(const uint8_t *mac_addr, esp_now_send_status_t status)
This function is called whenever an ESP-NOW packet is sent. It is just a status callback whether or n...
Definition swadge2024.h:338
void switchToSpeaker(void)
Enable the speaker (and battery monitor) and disable the microphone.
Definition swadge2024.c:897
void(* fnMainLoop)(int64_t elapsedUs)
This function is called from the main loop. It's pretty quick, but the timing may be inconsistent.
Definition swadge2024.h:298
void openQuickSettings(void)
Definition swadge2024.c:845
int16_t(* fnAdvancedUSB)(uint8_t *buffer, uint16_t length, uint8_t isGet)
Advanced USB Functionality, for hooking existing advanced_usb interface.
Definition swadge2024.h:350
Definition swadge2024.h:244
A SwadgePass packet which is transmitted over ESP NOW.
Definition swadgePass.h:120
Trophies for swadge modes.
The data object dev hands to the trophy showcase that contains all the const data.
Definition trophy.h:323