| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #pragma once
- #include <furi.h>
- #include <gui/gui.h>
- #include <gui/view_dispatcher.h>
- #include <gui/scene_manager.h>
- #include <gui/modules/widget.h>
- #include <gui/modules/submenu.h>
- #include <gui/modules/text_input.h>
- #include <lib/toolbox/random_name.h>
- #include <notification/notification.h>
- #include <notification/notification_messages.h>
- #include <dialogs/dialogs.h>
- #include <storage/storage.h>
- extern const GpioPin* const pinD0;
- extern const GpioPin* const pinD1;
- extern volatile int bit_count;
- #define MAX_BITS 42
- extern volatile bool data[];
- extern volatile uint32_t data_fall[];
- extern volatile uint32_t data_rise[];
- extern bool data_saved;
- #define WIEGAND_KEY_NAME_SIZE 25
- #define WIEGAND_APPS_DATA_FOLDER EXT_PATH("apps_data")
- #define WIEGAND_SAVE_FOLDER \
- WIEGAND_APPS_DATA_FOLDER "/" \
- "wiegand"
- #define WIEGAND_SAVE_EXTENSION ".wgn"
- #define TAG "WIEGAND_APP"
- typedef enum {
- WiegandMainMenuScene,
- WiegandInstructionsScene,
- WiegandReadScene,
- WiegandDataScene,
- WiegandSaveScene,
- WiegandLoadScene,
- WiegandSceneCount,
- } WiegandScene;
- typedef enum {
- WiegandSubmenuView,
- WiegandWidgetView,
- WiegandTextInputView,
- } WiegandView;
- typedef struct App {
- SceneManager* scene_manager;
- ViewDispatcher* view_dispatcher;
- Submenu* submenu;
- Widget* widget;
- TextInput* text_input;
- DialogsApp* dialogs;
- FuriString* file_path;
- char file_name[WIEGAND_KEY_NAME_SIZE];
- FuriTimer* timer;
- } App;
- typedef enum {
- WiegandMainMenuInstructions,
- WiegandMainMenuRead,
- WiegandMainMenuLoad,
- } WiegandMainMenuSceneIndex;
- typedef enum {
- WiegandMainMenuUnknownEvent,
- WiegandMainMenuInstructionsEvent,
- WiegandMainMenuReadEvent,
- WiegandMainMenuLoadEvent,
- } WiegandMainMenuEvent;
- typedef enum {
- WiegandDataSceneSaveButtonEvent,
- WiegandDataScenePlayButtonEvent,
- WiegandDataSceneSaveFileEvent,
- } WiegandDataEvent;
- void wiegand_menu_callback(void* context, uint32_t index);
- void wiegand_main_menu_scene_on_enter(void* context);
- bool wiegand_main_menu_scene_on_event(void* context, SceneManagerEvent event);
- // void wiegand_main_menu_scene_on_exit(void* context);
- void wiegand_instructions_scene_on_enter(void* context);
- // bool wiegand_instructions_scene_on_event(void* context, SceneManagerEvent event);
- // void wiegand_instructions_scene_on_exit(void* context);
- void wiegand_isr_d0(void* context);
- void wiegand_isr_d1(void* context);
- void wiegand_start_read(void* context);
- void wiegand_stop_read(void* context);
- void wiegand_timer_callback(void* context);
- void wiegand_read_scene_on_enter(void* context);
- // bool wiegand_read_scene_on_event(void* context, SceneManagerEvent event);
- void wiegand_read_scene_on_exit(void* context);
- void wiegand_add_info_4bit_8bit(FuriString* buffer);
- void wiegand_add_info_26bit(FuriString* buffer);
- void wiegand_add_info_24bit(FuriString* buffer);
- void wiegand_add_info(FuriString* buffer);
- void single_vibro();
- void wiegand_play();
- void wiegand_button_callback(GuiButtonType result, InputType type, void* context);
- void wiegand_data_scene_on_enter(void* context);
- bool wiegand_data_scene_on_event(void* context, SceneManagerEvent event);
- // void wiegand_data_scene_on_exit(void* context);
- void wiegand_data_scene_save_name_text_input_callback(void* context);
- void ensure_dir_exists(Storage* storage);
- void wiegand_save(void* context);
- void wiegand_save_scene_on_enter(void* context);
- bool wiegand_save_scene_on_event(void* context, SceneManagerEvent event);
- // void wiegand_save_scene_on_exit(void* context);
- void wiegand_load_scene_on_enter(void* context);
- // bool wiegand_load_scene_on_event(void* context, SceneManagerEvent event);
- // void wiegand_load_scene_on_exit(void* context);
- bool wiegand_custom_callback(void* context, uint32_t custom_event);
- bool wiegand_back_event_callback(void* context);
- // Methods with no implementation.
- bool wiegand_empty_scene_on_event(void* context, SceneManagerEvent event);
- void wiegand_empty_scene_on_exit(void* _ctx);
- App* app_alloc();
- void app_free(void* context);
|