diff --git a/src/web/html/setup.html b/src/web/html/setup.html index 127adce2..3b168b7f 100644 --- a/src/web/html/setup.html +++ b/src/web/html/setup.html @@ -1130,8 +1130,7 @@ function hideDispPins(pins, dispType) { // create pin map for each display type. - // It depends on fix pin array (see var pins) - // var pins = [['clock', 'disp_clk'], ['data', 'disp_data'], ['cs', 'disp_cs'], ['dc', 'disp_dc'], ['reset', 'disp_rst']]; + // It depends on fix pin array, see var pins: ['clock', 'data', 'cs', 'dc', 'reset', 'busy'] const pinMap = new Map([ [0, [0,0,0,0,0,0]], //none [1, [1,1,0,0,0,0]], //SSD1306_128X64 diff --git a/src/web/web.h b/src/web/web.h index 13f1f4ae..a387e224 100644 --- a/src/web/web.h +++ b/src/web/web.h @@ -596,19 +596,32 @@ class Web { // display mConfig->plugin.display.pwrSaveAtIvOffline = (request->arg("disp_pwr") == "on"); - mConfig->plugin.display.screenSaver = request->arg("disp_screensaver").toInt(); - mConfig->plugin.display.graph_ratio = request->arg("disp_graph_ratio").toInt(); mConfig->plugin.display.graph_size = request->arg("disp_graph_size").toInt(); - mConfig->plugin.display.rot = request->arg("disp_rot").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.disp_data = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_data").toInt(); - mConfig->plugin.display.disp_clk = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_clk").toInt(); - mConfig->plugin.display.disp_cs = (mConfig->plugin.display.type < 3) ? DEF_PIN_OFF : request->arg("disp_cs").toInt(); - mConfig->plugin.display.disp_reset = (mConfig->plugin.display.type < 3) ? DEF_PIN_OFF : request->arg("disp_rst").toInt(); - mConfig->plugin.display.disp_dc = (mConfig->plugin.display.type < 3) ? DEF_PIN_OFF : request->arg("disp_dc").toInt(); - mConfig->plugin.display.disp_busy = (mConfig->plugin.display.type < 10) ? DEF_PIN_OFF : request->arg("disp_bsy").toInt(); - mConfig->plugin.display.pirPin = request->arg("pir_pin").toInt(); + mConfig->plugin.display.rot = request->arg("disp_rot").toInt(); + mConfig->plugin.display.type = request->arg("disp_typ").toInt(); + mConfig->plugin.display.contrast = (mConfig->plugin.display.type == 0) || // contrast available only according optionsMap in setup.html, otherwise default value + (mConfig->plugin.display.type == 10) ? 60 : request->arg("disp_cont").toInt(); + mConfig->plugin.display.screenSaver = ((mConfig->plugin.display.type == 1) || // screensaver available only according optionsMap in setup.html, otherwise default value + (mConfig->plugin.display.type == 2) || + (mConfig->plugin.display.type == 4) || + (mConfig->plugin.display.type == 5) || + (mConfig->plugin.display.type == 6)) ? request->arg("disp_screensaver").toInt() : 1; + mConfig->plugin.display.graph_ratio = ((mConfig->plugin.display.type == 1) || // display graph available only according optionsMap in setup.html, otherwise has to be 0 + (mConfig->plugin.display.type == 2) || + (mConfig->plugin.display.type == 3) || + (mConfig->plugin.display.type == 6)) ? request->arg("disp_graph_ratio").toInt() : 0; + + // available pins according pinMap in setup.html, otherwise default value + mConfig->plugin.display.disp_data = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_data").toInt(); + mConfig->plugin.display.disp_clk = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : request->arg("disp_clk").toInt(); + mConfig->plugin.display.disp_cs = (mConfig->plugin.display.type != 3) && + (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_cs").toInt(); + mConfig->plugin.display.disp_dc = (mConfig->plugin.display.type != 3) && + (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_dc").toInt(); + mConfig->plugin.display.disp_reset = (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_rst").toInt(); + mConfig->plugin.display.disp_busy = (mConfig->plugin.display.type != 10) ? DEF_PIN_OFF : request->arg("disp_bsy").toInt(); + mConfig->plugin.display.pirPin = (mConfig->plugin.display.screenSaver != 2) ? DEF_PIN_OFF : request->arg("pir_pin").toInt(); // pir pin only for motion screensaver + // otherweise default value mApp->saveSettings((request->arg("reboot") == "on"));