#ifndef BlinkerText_H #define BlinkerText_H #include "../Blinker/BlinkerConfig.h" #include "../Blinker/BlinkerUtility.h" class BlinkerText { public : BlinkerText(char _name[]) { textName = (char*)malloc((strlen(_name)+1)*sizeof(char)); strcpy(textName, _name); } template <typename T> void print(T _text) { // if (isnan(_text)) return; String textData = BLINKER_F("{\""); textData += BLINKER_F(BLINKER_CMD_TEXT); textData += BLINKER_F("\":\""); textData += STRING_format(_text); textData += BLINKER_F("\""); if (_fresh >> 0 & 0x01) { textData += BLINKER_F(",\""); textData += BLINKER_F(BLINKER_CMD_ICON); textData += BLINKER_F("\":\""); textData += nicon; textData += BLINKER_F("\""); free(nicon); } if (_fresh >> 1 & 0x01) { textData += BLINKER_F(",\""); textData += BLINKER_F(BLINKER_CMD_COLOR); textData += BLINKER_F("\":\""); textData += ncolor; textData += BLINKER_F("\""); free(ncolor); } textData += BLINKER_F("}"); _fresh = 0; Blinker.printArray(textName, textData); } template <typename T1, typename T2> void print(T1 _text1, T2 _text2) { // if (isnan(_text1) || isnan(_text2)) return; String textData = BLINKER_F("{\""); textData += BLINKER_F(BLINKER_CMD_TEXT); textData += BLINKER_F("\":\""); textData += STRING_format(_text1); textData += BLINKER_F("\",\""); textData += BLINKER_F(BLINKER_CMD_TEXT1); textData += BLINKER_F("\":\""); textData += STRING_format(_text2); textData += BLINKER_F("\""); if (_fresh >> 0 & 0x01) { textData += BLINKER_F(",\""); textData += BLINKER_F(BLINKER_CMD_ICON); textData += BLINKER_F("\":\""); textData += nicon; textData += BLINKER_F("\""); free(nicon); } if (_fresh >> 1 & 0x01) { textData += BLINKER_F(",\""); textData += BLINKER_F(BLINKER_CMD_COLOR); textData += BLINKER_F("\":\""); textData += ncolor; textData += BLINKER_F("\""); free(ncolor); } textData += BLINKER_F("}"); _fresh = 0; Blinker.printArray(textName, textData); } void icon(const String & _icon) { if (_fresh >> 0 & 0x01) free(nicon); nicon = (char*)malloc((_icon.length()+1)*sizeof(char)); strcpy(nicon, _icon.c_str()); _fresh |= 0x01 << 0; } void color(const String & _clr) { if (_fresh >> 1 & 0x01) free(ncolor); ncolor = (char*)malloc((_clr.length()+1)*sizeof(char)); strcpy(ncolor, _clr.c_str()); _fresh |= 0x01 << 1; } private : char * nicon;// = ""; char * ncolor;// = ""; char * textName; uint8_t _fresh = 0; }; #endif