timed-remote

Flipper Zero app for sending delayed IR commands
git clone git://src.adamsgaard.dk/timed-remote # fast
git clone https://src.adamsgaard.dk/timed-remote.git # slow
Log | Files | Refs | README | LICENSE Back to index

timed_remote.h (1699B)


      1 #pragma once
      2 
      3 #include <furi.h>
      4 #include <gui/gui.h>
      5 #include <gui/modules/popup.h>
      6 #include <gui/modules/submenu.h>
      7 #include <gui/modules/text_input.h>
      8 #include <gui/modules/variable_item_list.h>
      9 #include <gui/modules/widget.h>
     10 #include <gui/scene_manager.h>
     11 #include <gui/view_dispatcher.h>
     12 #include <lib/infrared/signal/infrared_signal.h>
     13 
     14 /* Timer mode enumeration */
     15 typedef enum {
     16   TimerModeCountdown,
     17   TimerModeScheduled,
     18 } TimerMode;
     19 
     20 /* View IDs for ViewDispatcher */
     21 typedef enum {
     22   TimedRemoteViewSubmenu,
     23   TimedRemoteViewVariableItemList,
     24   TimedRemoteViewTextInput,
     25   TimedRemoteViewWidget,
     26   TimedRemoteViewPopup,
     27 } TimedRemoteView;
     28 
     29 /* Maximum lengths */
     30 #define SIGNAL_NAME_MAX_LEN 32
     31 #define FILE_PATH_MAX_LEN 256
     32 
     33 /* Main application state */
     34 typedef struct {
     35   /* Core Flipper components */
     36   Gui *gui;
     37   ViewDispatcher *view_dispatcher;
     38   SceneManager *scene_manager;
     39 
     40   /* Views */
     41   Submenu *submenu;
     42   VariableItemList *variable_item_list;
     43   TextInput *text_input;
     44   Widget *widget;
     45   Popup *popup;
     46 
     47   /* IR state */
     48   InfraredSignal *ir_signal;
     49   char signal_name[SIGNAL_NAME_MAX_LEN];
     50   char selected_file_path[FILE_PATH_MAX_LEN];
     51 
     52   /* Timer configuration */
     53   TimerMode timer_mode;
     54   uint8_t hours;
     55   uint8_t minutes;
     56   uint8_t seconds;
     57 
     58   /* Repeat options (Countdown mode only) */
     59   uint8_t repeat_count; /* 0 = off, 255 = unlimited, 1-99 = count */
     60   uint8_t repeats_remaining;
     61 
     62   /* Timer runtime state */
     63   FuriTimer *timer;
     64   uint32_t seconds_remaining;
     65 
     66   /* Text input buffer */
     67   char text_input_buffer[SIGNAL_NAME_MAX_LEN];
     68 } TimedRemoteApp;
     69 
     70 /* App lifecycle */
     71 TimedRemoteApp *timed_remote_app_alloc(void);
     72 void timed_remote_app_free(TimedRemoteApp *app);