#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "scenes/sonicare_scene.h" #include #include #include #include typedef struct Sonicare Sonicare; typedef enum { SonicareResetStateInit, SonicareResetStateSuccess, SonicareResetStateFailedAuth, SonicareResetStateFailedWrite, } SonicareResetState; struct Sonicare { ViewDispatcher* view_dispatcher; Gui* gui; NotificationApp* notifications; SceneManager* scene_manager; Storage* storage; DialogsApp* dialogs; Widget* widget; // Common Views Submenu* submenu; DialogEx* dialog_ex; Popup* popup; TextInput* text_input; ByteInput* byte_input; // NFC Nfc* nfc; NfcPoller* poller; NfcListener* listener; NfcDevice* nfc_device; MfUltralightData* nfc_data; // Reset flow SonicareResetState reset_state; uint8_t sonicare_uid[7]; uint8_t sonicare_mfg[10]; }; typedef enum { SonicareViewSubmenu, SonicareViewDialogEx, SonicareViewPopup, SonicareViewWidget, SonicareViewTextInput, SonicareViewByteInput, SonicareViewRead, SonicareViewReadComplete, } SonicareView; typedef enum { SonicareMenuIndexRead, SonicareMenuIndexAbout, SonicareMenuIndexSaved, SonicareMenuIndexAddManually, SonicareMenuIndexExtraActions, } SonicareMenuIndex; typedef enum { NfcCustomEventWorkerExit, } NfcCustomEvent; void sonicare_widget_callback(GuiButtonType result, InputType type, void* context);