98 lines
2.1 KiB
C
98 lines
2.1 KiB
C
|
#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
|