LedDisplay/vscode/OmobiLEDdisplayBluetooth/include/LedDisplayController.h

98 lines
2.1 KiB
C
Raw Normal View History

#ifndef LED_DISPLAY_CONTROLLER
#define LED_DISPLAY_CONTROLLER
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include "esp_task_wdt.h"
#include <EEPROM.h>
class LedDisplayController
{
public:
explicit LedDisplayController(const byte pin);
~LedDisplayController();
enum text_align_t
{
TEXTLEFT,
TEXTCENTER,
TEXTRIGHT
};
enum set_param_index_t
{
PTEXT,
PTIME,
PCOLOR,
PALIGN,
PSCROLL,
PSCROLL_RUNS,
PACTIVE
};
static const uint16_t text_nr_sets = 2;
static const uint16_t MAX_TXT_LENGTH = 256;
static const int nr_param_names = 7;
typedef struct text_set_t
{
char text[MAX_TXT_LENGTH];
uint16_t time_ms;
uint16_t color;
text_align_t align;
bool text_scroll;
uint16_t text_scroll_pass;
bool active;
} text_set_t;
typedef struct sets_t
{
text_set_t sets[text_nr_sets];
char valid[3];
} sets_t;
void disp_update();
void setTexts(sets_t texts);
sets_t getTexts();
uint16_t Color(uint8_t r, uint8_t g, uint8_t b);
private:
TaskHandle_t displayUpdateTask;
Adafruit_NeoMatrix* matrix;
const String set_param_name[nr_param_names] = {"text_", "time_", "color_", "align_", "scroll_", "scroll_runs_", "active_"};
const uint16_t DISP_STRUCT_SIZE = sizeof(sets_t);
sets_t text_sets;
uint16_t text_curr_nr;
uint32_t text_set_starttime;
int text_pos;
unsigned int text_pass;
unsigned int textpixel;
bool disp_show;
void storeDisplaySet();
bool loadDisplaySet();
void disp_scroll_text();
void disp_switch_text();
void disp_start_set();
void disp_init();
void show_matrix(const char *text, int pos, uint16_t color);
String get_paramstring_from_struct(String name);
void set_param_to_struct(String name, String value);
String getset_param_at_struct(String name, String value, bool set);
};
void updateDisplayGlobal(void*);
extern LedDisplayController *ledDisplayControllerGlobal;
#endif // LED_DISPLAY_CONTROLLER