Browse Source

add language settings

pull/1255/head
you69man 2 years ago
parent
commit
2759be0d04
  1. 10
      src/config/settings.h
  2. 2
      src/plugins/Display/Display.h
  3. 3
      src/plugins/Display/Display_Mono.h
  4. 3
      src/plugins/Display/Display_Mono_128X32.h
  5. 5
      src/plugins/Display/Display_Mono_128X64.h
  6. 3
      src/plugins/Display/Display_Mono_64X48.h
  7. 5
      src/plugins/Display/Display_Mono_84X48.h
  8. 6
      src/utils/helper.h
  9. 3
      src/web/RestApi.h
  10. 11
      src/web/html/setup.html
  11. 1
      src/web/web.h

10
src/config/settings.h

@ -167,6 +167,7 @@ typedef struct {
//uint16_t wakeUp; //uint16_t wakeUp;
//uint16_t sleepAt; //uint16_t sleepAt;
uint8_t contrast; uint8_t contrast;
uint8_t language;
uint8_t disp_data; uint8_t disp_data;
uint8_t disp_clk; uint8_t disp_clk;
uint8_t disp_cs; uint8_t disp_cs;
@ -455,8 +456,9 @@ class settings {
memset(&mCfg.inst, 0, sizeof(cfgInst_t)); memset(&mCfg.inst, 0, sizeof(cfgInst_t));
mCfg.plugin.display.pwrSaveAtIvOffline = false; mCfg.plugin.display.pwrSaveAtIvOffline = false;
mCfg.plugin.display.contrast = 60;
mCfg.plugin.display.screenSaver = 1; // default: 1 .. pixelshift for OLED for downward compatibility mCfg.plugin.display.screenSaver = 1; // default: 1 .. pixelshift for OLED for downward compatibility
mCfg.plugin.display.contrast = 60;
mCfg.plugin.display.language = 0; // 0 .. EN, 1 .. GE, 2 .. FR
mCfg.plugin.display.rot = 0; mCfg.plugin.display.rot = 0;
mCfg.plugin.display.disp_data = DEF_PIN_OFF; // SDA mCfg.plugin.display.disp_data = DEF_PIN_OFF; // SDA
mCfg.plugin.display.disp_clk = DEF_PIN_OFF; // SCL mCfg.plugin.display.disp_clk = DEF_PIN_OFF; // SCL
@ -675,10 +677,11 @@ class settings {
disp[F("type")] = mCfg.plugin.display.type; disp[F("type")] = mCfg.plugin.display.type;
disp[F("pwrSafe")] = (bool)mCfg.plugin.display.pwrSaveAtIvOffline; disp[F("pwrSafe")] = (bool)mCfg.plugin.display.pwrSaveAtIvOffline;
disp[F("screenSaver")] = mCfg.plugin.display.screenSaver; disp[F("screenSaver")] = mCfg.plugin.display.screenSaver;
disp[F("contrast")] = mCfg.plugin.display.contrast;
disp[F("dispLanguage")] = mCfg.plugin.display.language;
disp[F("rotation")] = mCfg.plugin.display.rot; disp[F("rotation")] = mCfg.plugin.display.rot;
//disp[F("wake")] = mCfg.plugin.display.wakeUp; //disp[F("wake")] = mCfg.plugin.display.wakeUp;
//disp[F("sleep")] = mCfg.plugin.display.sleepAt; //disp[F("sleep")] = mCfg.plugin.display.sleepAt;
disp[F("contrast")] = mCfg.plugin.display.contrast;
disp[F("data")] = mCfg.plugin.display.disp_data; disp[F("data")] = mCfg.plugin.display.disp_data;
disp[F("clock")] = mCfg.plugin.display.disp_clk; disp[F("clock")] = mCfg.plugin.display.disp_clk;
disp[F("cs")] = mCfg.plugin.display.disp_cs; disp[F("cs")] = mCfg.plugin.display.disp_cs;
@ -691,10 +694,11 @@ class settings {
getVal<uint8_t>(disp, F("type"), &mCfg.plugin.display.type); getVal<uint8_t>(disp, F("type"), &mCfg.plugin.display.type);
getVal<bool>(disp, F("pwrSafe"), &mCfg.plugin.display.pwrSaveAtIvOffline); getVal<bool>(disp, F("pwrSafe"), &mCfg.plugin.display.pwrSaveAtIvOffline);
getVal<uint8_t>(disp, F("screenSaver"), &mCfg.plugin.display.screenSaver); getVal<uint8_t>(disp, F("screenSaver"), &mCfg.plugin.display.screenSaver);
getVal<uint8_t>(disp, F("contrast"), &mCfg.plugin.display.contrast);
getVal<uint8_t>(disp, F("dispLanguage"), &mCfg.plugin.display.language);
getVal<uint8_t>(disp, F("rotation"), &mCfg.plugin.display.rot); getVal<uint8_t>(disp, F("rotation"), &mCfg.plugin.display.rot);
//mCfg.plugin.display.wakeUp = disp[F("wake")]; //mCfg.plugin.display.wakeUp = disp[F("wake")];
//mCfg.plugin.display.sleepAt = disp[F("sleep")]; //mCfg.plugin.display.sleepAt = disp[F("sleep")];
getVal<uint8_t>(disp, F("contrast"), &mCfg.plugin.display.contrast);
getVal<uint8_t>(disp, F("data"), &mCfg.plugin.display.disp_data); getVal<uint8_t>(disp, F("data"), &mCfg.plugin.display.disp_data);
getVal<uint8_t>(disp, F("clock"), &mCfg.plugin.display.disp_clk); getVal<uint8_t>(disp, F("clock"), &mCfg.plugin.display.disp_clk);
getVal<uint8_t>(disp, F("cs"), &mCfg.plugin.display.disp_cs); getVal<uint8_t>(disp, F("cs"), &mCfg.plugin.display.disp_cs);

2
src/plugins/Display/Display.h

@ -54,7 +54,7 @@ class Display {
default: mMono = NULL; break; default: mMono = NULL; break;
} }
if(mMono) { if(mMono) {
mMono->config(mCfg->pwrSaveAtIvOffline, mCfg->screenSaver, mCfg->contrast); mMono->config(mCfg->pwrSaveAtIvOffline, mCfg->screenSaver, mCfg->contrast, mCfg->language);
mMono->init(mCfg->type, mCfg->rot, mCfg->disp_cs, mCfg->disp_dc, 0xff, mCfg->disp_clk, mCfg->disp_data, &mDisplayData); mMono->init(mCfg->type, mCfg->rot, mCfg->disp_cs, mCfg->disp_dc, 0xff, mCfg->disp_clk, mCfg->disp_data, &mDisplayData);
} }

3
src/plugins/Display/Display_Mono.h

@ -25,7 +25,7 @@ class DisplayMono {
DisplayMono() {}; DisplayMono() {};
virtual void init(uint8_t type, uint8_t rot, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) = 0; virtual void init(uint8_t type, uint8_t rot, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) = 0;
virtual void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) = 0; virtual void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) = 0;
virtual void disp(void) = 0; virtual void disp(void) = 0;
// Common loop function, manages display on/off functions for powersave and screensaver with motionsensor // Common loop function, manages display on/off functions for powersave and screensaver with motionsensor
@ -72,6 +72,7 @@ class DisplayMono {
bool mEnPowerSave; bool mEnPowerSave;
uint8_t mScreenSaver = 1; // 0 .. off; 1 .. pixelShift; 2 .. motionsensor uint8_t mScreenSaver = 1; // 0 .. off; 1 .. pixelShift; 2 .. motionsensor
uint8_t mLuminance; uint8_t mLuminance;
uint8_t mLanguage;
uint8_t mLoopCnt; uint8_t mLoopCnt;
uint8_t mLineXOffsets[5] = {}; uint8_t mLineXOffsets[5] = {};

3
src/plugins/Display/Display_Mono_128X32.h

@ -12,10 +12,11 @@ class DisplayMono128X32 : public DisplayMono {
mExtra = 0; mExtra = 0;
} }
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) { void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave; mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver; mScreenSaver = screenSaver;
mLuminance = lum; mLuminance = lum;
mLanguage = lang;
} }
void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) { void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {

5
src/plugins/Display/Display_Mono_128X64.h

@ -12,10 +12,11 @@ class DisplayMono128X64 : public DisplayMono {
mExtra = 0; mExtra = 0;
} }
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) { void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave; mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver; mScreenSaver = screenSaver;
mLuminance = lum; mLuminance = lum;
mLanguage = lang;
} }
void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) { void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {
@ -75,7 +76,7 @@ class DisplayMono128X64 : public DisplayMono {
// print Date and time // print Date and time
if (0 != mDisplayData->utcTs) if (0 != mDisplayData->utcTs)
printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), ah::LANG_GE).c_str(), l_Time, 0xff); printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), (ah::lang) mLanguage).c_str(), l_Time, 0xff);
// dynamic status bar, alternatively: // dynamic status bar, alternatively:
// print ip address // print ip address

3
src/plugins/Display/Display_Mono_64X48.h

@ -12,10 +12,11 @@ class DisplayMono64X48 : public DisplayMono {
mExtra = 0; mExtra = 0;
} }
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) { void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave; mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver; mScreenSaver = screenSaver;
mLuminance = lum; mLuminance = lum;
mLanguage = lang;
} }
void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) { void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {

5
src/plugins/Display/Display_Mono_84X48.h

@ -13,10 +13,11 @@ class DisplayMono84X48 : public DisplayMono {
mExtra = 0; mExtra = 0;
} }
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) { void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave; mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver; mScreenSaver = screenSaver;
mLuminance = lum; mLuminance = lum;
mLanguage = lang;
} }
void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) { void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {
@ -59,7 +60,7 @@ class DisplayMono84X48 : public DisplayMono {
// print Date and time // print Date and time
if (0 != mDisplayData->utcTs) if (0 != mDisplayData->utcTs)
printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), ah::LANG_GE).c_str(), l_Time, 0xff); printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), (ah::lang) mLanguage).c_str(), l_Time, 0xff);
// alternatively: // alternatively:
// print ip address // print ip address

6
src/utils/helper.h

@ -38,9 +38,9 @@ static Timezone gTimezone(CEST, CET);
namespace ah { namespace ah {
enum lang { enum lang {
LANG_GE, LANG_EN=0,
LANG_EN, LANG_GE=1,
LANG_FR LANG_FR=2
}; };
void ip2Arr(uint8_t ip[], const char *ipStr); void ip2Arr(uint8_t ip[], const char *ipStr);
void ip2Char(uint8_t ip[], char *str); void ip2Char(uint8_t ip[], char *str);

3
src/web/RestApi.h

@ -580,8 +580,9 @@ class RestApi {
obj[F("disp_typ")] = (uint8_t)mConfig->plugin.display.type; obj[F("disp_typ")] = (uint8_t)mConfig->plugin.display.type;
obj[F("disp_pwr")] = (bool)mConfig->plugin.display.pwrSaveAtIvOffline; obj[F("disp_pwr")] = (bool)mConfig->plugin.display.pwrSaveAtIvOffline;
obj[F("disp_screensaver")] = (uint8_t)mConfig->plugin.display.screenSaver; obj[F("disp_screensaver")] = (uint8_t)mConfig->plugin.display.screenSaver;
obj[F("disp_rot")] = (uint8_t)mConfig->plugin.display.rot;
obj[F("disp_cont")] = (uint8_t)mConfig->plugin.display.contrast; obj[F("disp_cont")] = (uint8_t)mConfig->plugin.display.contrast;
obj[F("disp_language")]= (uint8_t)mConfig->plugin.display.language;
obj[F("disp_rot")] = (uint8_t)mConfig->plugin.display.rot;
obj[F("disp_clk")] = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_clk; obj[F("disp_clk")] = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_clk;
obj[F("disp_data")] = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_data; obj[F("disp_data")] = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_data;
obj[F("disp_cs")] = (mConfig->plugin.display.type < 3) ? DEF_PIN_OFF : mConfig->plugin.display.disp_cs; obj[F("disp_cs")] = (mConfig->plugin.display.type < 3) ? DEF_PIN_OFF : mConfig->plugin.display.disp_cs;

11
src/web/html/setup.html

@ -287,6 +287,7 @@
<div class="col-12 col-sm-3 my-2">Luminance</div> <div class="col-12 col-sm-3 my-2">Luminance</div>
<div class="col-12 col-sm-9"><input type="number" name="disp_cont" min="0" max="255"></select></div> <div class="col-12 col-sm-9"><input type="number" name="disp_cont" min="0" max="255"></select></div>
</div> </div>
<div id="dispLanguage"></div>
<p class="des">Pinout</p> <p class="des">Pinout</p>
<div id="dispPins"></div> <div id="dispPins"></div>
<div id="pirPin"></div> <div id="pirPin"></div>
@ -1008,6 +1009,16 @@
]) ])
); );
var opts2 = [[0, "english"], [1, "german"], [2, "french"]];
var language_sel = sel("disp_language", opts2, obj["disp_language"]);
language_sel.id = 'disp_language';
document.getElementById("dispLanguage").append(
ml("div", {class: "row mb-3"}, [
ml("div", {class: "col-12 col-sm-3 my-2"}, "Language"),
ml("div", {class: "col-12 col-sm-9"}, language_sel)
])
);
var esp8266pirpins = [[255, "off / default"], var esp8266pirpins = [[255, "off / default"],
[17, "A0"]]; [17, "A0"]];
document.getElementById("pirPin").append( document.getElementById("pirPin").append(

1
src/web/web.h

@ -568,6 +568,7 @@ class Web {
// display // display
mConfig->plugin.display.pwrSaveAtIvOffline = (request->arg("disp_pwr") == "on"); mConfig->plugin.display.pwrSaveAtIvOffline = (request->arg("disp_pwr") == "on");
mConfig->plugin.display.screenSaver = request->arg("disp_screensaver").toInt(); mConfig->plugin.display.screenSaver = request->arg("disp_screensaver").toInt();
mConfig->plugin.display.language = request->arg("disp_language").toInt();
mConfig->plugin.display.rot = request->arg("disp_rot").toInt(); mConfig->plugin.display.rot = request->arg("disp_rot").toInt();
mConfig->plugin.display.type = request->arg("disp_typ").toInt(); mConfig->plugin.display.type = request->arg("disp_typ").toInt();
mConfig->plugin.display.contrast = (mConfig->plugin.display.type == 0) ? 60 : request->arg("disp_cont").toInt(); mConfig->plugin.display.contrast = (mConfig->plugin.display.type == 0) ? 60 : request->arg("disp_cont").toInt();

Loading…
Cancel
Save