| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #ifndef WII_ANAL_H_
- #define WII_ANAL_H_
- #include <furi.h> // Core API
- #include <input/input.h> // GUI Input extensions
- #include <notification/notification_messages.h>
- //----------------------------------------------------------------------------- ----------------------------------------
- // GUI scenes
- //
- typedef enum scene {
- SCENE_NONE = 0,
- SCENE_SPLASH = 1,
- SCENE_RIP = 2,
- SCENE_WAIT = 3,
- SCENE_DEBUG = 4,
- SCENE_DUMP = 5,
- SCENE_CLASSIC = 6,
- SCENE_CLASSIC_N = 7,
- SCENE_NUNCHUCK = 8,
- SCENE_NUNCHUCK_ACC = 9,
- } scene_t;
- //----------------------------------------------------------------------------- ----------------------------------------
- #include "wii_i2c.h"
- #include "wii_ec.h"
- //----------------------------------------------------------------------------- ----------------------------------------
- // A list of event IDs handled by this plugin
- //
- typedef enum eventID {
- EVID_NONE,
- EVID_UNKNOWN,
- // A full list of events can be found with: `grep -r --color "void.*set_.*_callback" applications/gui/*`
- // ...A free gift to you from the makers of well written code that conforms to a good coding standard
- EVID_KEY, // keypad
- EVID_TICK, // tick
- EVID_WIIEC, // wii extension controller
- } eventID_t;
- //----------------------------------------------------------------------------- ----------------------------------------
- // An item in the event message-queue
- //
- typedef struct eventMsg {
- eventID_t id;
- union {
- InputEvent input; // --> applications/input/input.h
- wiiEcEvent_t wiiEc; // --> local
- };
- } eventMsg_t;
- //----------------------------------------------------------------------------- ----------------------------------------
- // State variables for this plugin
- // An instance of this is allocated on the heap, and the pointer is passed back to the OS
- // Access to this memory is controlled by mutex
- //
- typedef struct state {
- FuriMutex* mutex; // mutex for using this struct
- bool run; // true : plugin is running
- bool timerEn; // controller scanning enabled
- FuriTimer* timer; // the timer
- uint32_t timerHz; // system ticks per second
- int fps; // poll/refresh [frames]-per-second
- int cnvW; // canvas width
- int cnvH; // canvas height
- scene_t scene; // current scene
- scene_t scenePrev; // previous scene
- scene_t scenePegg; // previous scene for easter eggs
- int flash; // flash counter (flashing icons)
- int hold; // hold type: {-1=tough-peak, 0=none, +1=peak-hold}
- ecCalib_t calib; // Software calibration mode
- bool pause; // Accelerometer animation pause
- bool apause; // Accelerometer animation auto-pause
- NotificationApp* notify; // OS nitifcation queue (for patting the backlight watchdog timer)
- wiiEC_t ec; // Extension Controller details
- } state_t;
- //============================================================================= ========================================
- // Function prototypes
- //
- void timerEn(state_t* state, bool on);
- #endif //WII_ANAL_H_
|