| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #pragma once
- #include <MeshCore.h>
- #include <helpers/ui/DisplayDriver.h>
- #include <helpers/ui/UIScreen.h>
- #include <helpers/SensorManager.h>
- #include <helpers/BaseSerialInterface.h>
- #include <Arduino.h>
- #include <helpers/sensors/LPPDataHelpers.h>
- #include "ScrollingStatusBar.h"
- #ifndef LED_STATE_ON
- #define LED_STATE_ON 1
- #endif
- #ifdef PIN_BUZZER
- #include <helpers/ui/buzzer.h>
- #endif
- #ifdef PIN_VIBRATION
- #include <helpers/ui/GenericVibration.h>
- #endif
- #include "../AbstractUITask.h"
- #include "../NodePrefs.h"
- class UITask : public AbstractUITask {
- DisplayDriver* _display;
- SensorManager* _sensors;
- ScrollingStatusBar _statusBar;
- #ifdef PIN_BUZZER
- genericBuzzer buzzer;
- #endif
- #ifdef PIN_VIBRATION
- GenericVibration vibration;
- #endif
- unsigned long _next_refresh, _auto_off;
- NodePrefs* _node_prefs;
- char _alert[80];
- unsigned long _alert_expiry;
- int _msgcount;
- unsigned long ui_started_at, next_batt_chck;
- int next_backlight_btn_check = 0;
- uint16_t _cached_batt_mv;
- #ifdef PIN_STATUS_LED
- int led_state = 0;
- int next_led_change = 0;
- int last_led_increment = 0;
- #endif
- #ifdef PIN_USER_BTN_ANA
- unsigned long _analogue_pin_read_millis = millis();
- #endif
- UIScreen* splash;
- UIScreen* home;
- // UIScreen* msg_preview;
- UIScreen* curr;
- void userLedHandler();
- // Button action handlers
- char checkDisplayOn(char c);
- char handleLongPress(char c);
- char handleDoubleClick(char c);
- char handleTripleClick(char c);
- void setCurrScreen(UIScreen* c);
- public:
- UITask(mesh::MainBoard* board, BaseSerialInterface* serial) : AbstractUITask(board, serial), _display(NULL), _sensors(NULL) {
- next_batt_chck = _next_refresh = 0;
- _cached_batt_mv = 0;
- ui_started_at = 0;
- curr = NULL;
- }
- void begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* node_prefs);
- void gotoHomeScreen() { setCurrScreen(home); }
- void showAlert(const char* text, int duration_millis);
- int getMsgCount() const { return _msgcount; }
- uint16_t getCachedBattMV() const { return _cached_batt_mv; }
- bool hasDisplay() const { return _display != NULL; }
- bool isButtonPressed() const;
- bool isBuzzerQuiet() {
- #ifdef PIN_BUZZER
- return buzzer.isQuiet();
- #else
- return true;
- #endif
- }
- void toggleBuzzer();
- bool getGPSState();
- void toggleGPS();
- // from AbstractUITask
- void msgRead(int msgcount) override;
- void newMsg(uint8_t path_len, const char* from_name, const char* text, int msgcount) override;
- void notify(UIEventType t = UIEventType::none) override;
- void loop() override;
- void shutdown(bool restart = false);
- };
|