diff --git a/.svn/entries b/.svn/entries deleted file mode 100644 index 48082f7..0000000 --- a/.svn/entries +++ /dev/null @@ -1 +0,0 @@ -12 diff --git a/.svn/format b/.svn/format deleted file mode 100644 index 48082f7..0000000 --- a/.svn/format +++ /dev/null @@ -1 +0,0 @@ -12 diff --git a/.svn/pristine/00/00cb4c99fd7a6c755a3cedc9d0633df66cd7a677.svn-base b/.svn/pristine/00/00cb4c99fd7a6c755a3cedc9d0633df66cd7a677.svn-base deleted file mode 100644 index 3c457f3..0000000 --- a/.svn/pristine/00/00cb4c99fd7a6c755a3cedc9d0633df66cd7a677.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -/*! roundSlider v1.3 | (c) 2015-2016, Soundar | MIT license | http://roundsliderui.com/licence.html */ -.rs-control{position:relative;outline:0 none}.rs-container{position:relative}.rs-control *,.rs-control *:before,.rs-control *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.rs-animation .rs-transition{-webkit-transition:all .5s linear 0s;-moz-transition:all .5s linear 0s;-o-transition:all .5s linear 0s;transition:all .5s linear 0s}.rs-bar{-webkit-transform-origin:100% 50%;-moz-transform-origin:100% 50%;-ms-transform-origin:100% 50%;-o-transform-origin:100% 50%;transform-origin:100% 50%}.rs-control .rs-split .rs-path,.rs-control .rs-overlay1,.rs-control .rs-overlay2{-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;-o-transform-origin:50% 100%;transform-origin:50% 100%}.rs-control .rs-overlay{-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.rs-control.rs-error{border:1px dotted;text-align:center}.rs-readonly{height:100%;width:100%;top:0;position:absolute;z-index:100}.rs-disabled{opacity:.35}.rs-inner-container{height:100%;width:100%;position:relative;overflow:hidden}.quarter div.rs-block{height:200%;width:200%}.half.top div.rs-block,.half.bottom div.rs-block{height:200%;width:100%}.half.left div.rs-block,.half.right div.rs-block{height:100%;width:200%}.bottom>.rs-inner-container>.rs-block{top:auto;bottom:0}.right .rs-inner-container>.rs-block{right:0}div.rs-block{-webkit-border-radius:100%;border-radius:100%}.rs-block{height:100%;width:100%;display:block;position:absolute;top:0;overflow:hidden;z-index:3}.rs-block .rs-inner{-webkit-border-radius:1000px;border-radius:1000px;display:block;height:100%;width:100%;position:relative}.rs-overlay{width:50%}.rs-overlay1,.rs-overlay2{width:100%}.rs-overlay,.rs-overlay1,.rs-overlay2{position:absolute;background-color:#fff;z-index:3;top:0;height:50%}.rs-bar{position:absolute;height:0;z-index:10}.rs-bar.rs-rounded{z-index:5}.rs-bar .rs-seperator{height:0;display:block;float:left}.rs-bar:not(.rs-rounded) .rs-seperator{border-left:none;border-right:none}.rs-bar.rs-start .rs-seperator{border-top:none}.rs-bar.rs-end .rs-seperator{border-bottom:none}.rs-bar.rs-start.rs-rounded .rs-seperator{border-radius:0 0 1000px 1000px}.rs-bar.rs-end.rs-rounded .rs-seperator{border-radius:1000px 1000px 0 0}.full .rs-bar,.half .rs-bar{width:50%}.half.left .rs-bar,.half.right .rs-bar,.quarter .rs-bar{width:100%}.full .rs-bar,.half.left .rs-bar,.half.right .rs-bar{top:50%}.bottom .rs-bar{top:0}.half.right .rs-bar,.quarter.right .rs-bar{right:100%}.rs-handle.rs-move{cursor:move}.rs-readonly .rs-handle.rs-move{cursor:default}.rs-path{display:block;height:100%;width:100%}.rs-split .rs-path{-webkit-border-radius:1000px 1000px 0 0;border-radius:1000px 1000px 0 0;overflow:hidden;height:50%;position:absolute;top:0;z-index:2}.rs-tooltip{position:absolute;cursor:default;border:1px solid transparent;z-index:10}.full .rs-tooltip{top:50%;left:50%}.bottom .rs-tooltip{top:0}.top .rs-tooltip{bottom:0}.right .rs-tooltip{left:0}.left .rs-tooltip{right:0}.half.top .rs-tooltip,.half.bottom .rs-tooltip{left:50%}.half.left .rs-tooltip,.half.right .rs-tooltip{top:50%}.rs-tooltip .rs-input{outline:0 none;border:none;background:transparent}.rs-tooltip-text{font-family:verdana;font-size:13px;border-radius:7px;text-align:center}.rs-tooltip.edit,.rs-tooltip .rs-input{padding:5px 8px}.rs-tooltip.hover,.rs-tooltip.edit:hover{border:1px solid #aaa;cursor:pointer}.rs-readonly .rs-tooltip.edit:hover{border-color:transparent;cursor:default}.rs-handle{border-radius:1000px;outline:0 none;float:left}.rs-handle.rs-handle-square{border-radius:0}.rs-handle-dot{border:1px solid #aaa;padding:6px}.rs-handle-dot:after{display:block;content:"";border:1px solid #aaa;height:100%;width:100%;border-radius:100%}.rs-seperator{border:1px solid #aaa}.rs-border{border:1px solid #aaa}.rs-path-color{background-color:#fff}.rs-range-color{background-color:#54bbe0}.rs-bg-color{background-color:#fff}.rs-handle{background-color:#838383}.rs-handle-dot{background-color:#fff}.rs-handle-dot:after{background-color:#838383} \ No newline at end of file diff --git a/.svn/pristine/01/019b7099bb98b73e80715cedac620928e63d225f.svn-base b/.svn/pristine/01/019b7099bb98b73e80715cedac620928e63d225f.svn-base deleted file mode 100644 index 2fdc40d..0000000 --- a/.svn/pristine/01/019b7099bb98b73e80715cedac620928e63d225f.svn-base +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - ${eclipse_home} - - String getProperty(Properties props, String key, int level) { - def value = null - value = props.getProperty(key); - if (value != null) { - // Get the index of the first constant, if any - def beginIndex = 0; - def startName = value.indexOf('${', beginIndex); - - while (startName != -1) { - if (level+1 > 5) { - // Exceeded MAX_SUBST_DEPTH - // Return the value as is - return value; - } - - def endName = value.indexOf('}', startName + 1); - if (endName == -1) { - // Terminating symbol not found - // Return the value as is - return value; - } - - def constName = value.substring(startName+2, endName); - def constValue = getProperty(props, constName, level+1); - - if (constValue == null) { - // Property name not found - // Return the value as is - return value; - } - - // Insert the constant value into the - // original property value - def newValue = (startName>0) - ? value.substring(0, startName) : ""; - newValue += constValue; - - // Start checking for constants at this index - beginIndex = newValue.length(); - - // Append the remainder of the value - newValue += value.substring(endName+1); - - value = newValue; - - // Look for the next constant - startName = value.indexOf('${', beginIndex); - } - } - - // Return the value as is - return value; - } - - def props = new Properties() - - props['eclipse_home'] = properties['eclipse_home'] - props['project_loc'] = properties['project_loc'] - new File(properties['project_loc'] + './.settings/org.eclipse.cdt.core.prefs').eachLine { line -> - if ((matcher = line =~ /.*\/([AJ].+)\/value=(.+)$/)) { - props[matcher[0][1]] = matcher[0][2] - } - } - props.each{ k, v -> - properties[k] = getProperty(props, k, 0) - } - - properties['A.BUILD.SPIFFS_SIZE'] = Integer.parseInt(properties['A.BUILD.SPIFFS_END'].substring(2),16) - Integer.parseInt(properties['A.BUILD.SPIFFS_START'].substring(2), 16) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.svn/pristine/04/04958fdb2de09f4cef5b2909d2b825e9e85a5b31.svn-base b/.svn/pristine/04/04958fdb2de09f4cef5b2909d2b825e9e85a5b31.svn-base deleted file mode 100644 index ccbf197..0000000 --- a/.svn/pristine/04/04958fdb2de09f4cef5b2909d2b825e9e85a5b31.svn-base +++ /dev/null @@ -1,621 +0,0 @@ -#define ONE_TUBE -#define NEOPIXELS - -//#define DEBUG_ESP_WIFI -//#define DEBUG_ESP_PORT Serial - -//#define DEBUG(...) { Serial.println(__VA_ARGS__); } -#define DEBUG(...) { } - -#include "Arduino.h" -#include -#include -#define OTA -#ifdef OTA -#include -#endif -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#ifdef NEOPIXELS -#include - -#define PIN 1 - -// How many NeoPixels are attached to the Arduino? -#define NUMPIXELS 8 - -// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals. -// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest -// example for more information on possible values. -Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); -#endif - -unsigned long nowMs = 0; - -String chipId = String(ESP.getChipId(), HEX); -String ssid = "STC-"; - -StringConfigItem hostName("hostname", 63, "ITS1A"); - -AsyncWebServer server(80); -AsyncWebSocket ws("/ws"); // access at ws://[esp ip]/ws -AsyncHTTPClient httpClient; -DNSServer dns; -AsyncWiFiManager wifiManager(&server,&dns); - -ITS1ANixieDriver nixieDriver(6); -NixieDriver *pDriver = &nixieDriver; -SixNixieClock oneNixieClock(pDriver); -NixieClock *pNixieClock = &oneNixieClock; - -namespace ConfigSet1 { -#include -} - -namespace ConfigSet2 { -#include -} // End namespace - -namespace ConfigSet3 { -#include -} // End namespace - -namespace ConfigSet4 { -#include -} // End namespace - -namespace ConfigSet5 { -#include -} // End namespace - -StringConfigItem set1Name("set1_name", 12, "24 Hour"); -StringConfigItem set2Name("set2_name", 12, "12 Hour"); -StringConfigItem set3Name("set3_name", 12, "Fast Clock"); -StringConfigItem set4Name("set4_name", 12, "Test"); -StringConfigItem set5Name("set5_name", 12, "Test"); -BaseConfigItem *configSetPresetNames[] = { - &set1Name, - &set2Name, - &set3Name, - &set4Name, - &set5Name, - 0 -}; - -CompositeConfigItem presetNamesConfig("preset_names", 0, configSetPresetNames); - -StringConfigItem currentSet("current_set", 4, "set1"); - -BaseConfigItem *configSetGlobal[] = { - &hostName, - ¤tSet, - 0 -}; - -CompositeConfigItem globalConfig("global", 0, configSetGlobal); - -BaseConfigItem *configSetRoot[] = { - &globalConfig, - &presetNamesConfig, - &ConfigSet1::config, - &ConfigSet2::config, - &ConfigSet3::config, - &ConfigSet4::config, - &ConfigSet5::config, - 0 -}; - -CompositeConfigItem rootConfig("root", 0, configSetRoot); - -EEPROMConfig config(rootConfig); - -namespace CurrentConfig { - String name("set1"); - CompositeConfigItem *config = &ConfigSet1::config; - - // Clock config values - BooleanConfigItem *time_or_date = &ConfigSet1::time_or_date; - ByteConfigItem *date_format = &ConfigSet1::date_format; - BooleanConfigItem *time_format = &ConfigSet1::time_format; - BooleanConfigItem *hour_format = &ConfigSet1::hour_format; - ByteConfigItem *fading = &ConfigSet1::fading; - ByteConfigItem *indicator = &ConfigSet1::indicator; - BooleanConfigItem *scrollback = &ConfigSet1::scrollback; - IntConfigItem *digits_on = &ConfigSet1::digits_on; - ByteConfigItem *display_on = &ConfigSet1::display_on; - ByteConfigItem *display_off = &ConfigSet1::display_off; - StringConfigItem *time_url = &ConfigSet1::time_url; - - // LED config values - ByteConfigItem *hue = &ConfigSet1::hue; - ByteConfigItem *saturation = &ConfigSet1::saturation; - BooleanConfigItem *backlight = &ConfigSet1::backlight; - BooleanConfigItem *hue_cycling = &ConfigSet1::hue_cycling; - ByteConfigItem *led_scale = &ConfigSet1::led_scale; - IntConfigItem *cycle_time = &ConfigSet1::cycle_time; - - // Extra config values - BooleanConfigItem *dimming = &ConfigSet1::dimming; - BooleanConfigItem *display = &ConfigSet1::display; - BooleanConfigItem *hv = &ConfigSet1::hv; - ByteConfigItem *voltage = &ConfigSet1::voltage; - IntConfigItem *digit = &ConfigSet1::digit; - ByteConfigItem *count_speed = &ConfigSet1::count_speed; - - // UPS config values - ByteConfigItem *charge_rate = &ConfigSet1::charge_rate; - BooleanConfigItem *lpm = &ConfigSet1::lpm; - ByteConfigItem *wakeup_time = &ConfigSet1::wakeup_time; - ByteConfigItem *sensitivity = &ConfigSet1::sensitivity; - - void setCurrent(const String &name) { - if (CurrentConfig::name == name) { - return; // Already set to this - } - - BaseConfigItem *newConfig = rootConfig.get(name.c_str()); - - if (newConfig) { - DEBUG("Changing preset to:"); - DEBUG(name); - CurrentConfig::name = name; - config = static_cast(newConfig); - - /* - * I hate doing this. - */ - - // Clock config values - time_or_date = static_cast(config->get("time_or_date")); - date_format = static_cast(config->get("date_format")); - time_format = static_cast(config->get("time_format")); - hour_format = static_cast(config->get("hour_format")); - fading = static_cast(config->get("fading")); - indicator = static_cast(config->get("indicator")); - scrollback = static_cast(config->get("scrollback")); - digits_on = static_cast(config->get("digits_on")); - display_on = static_cast(config->get("display_on")); - display_off = static_cast(config->get("display_off")); - time_url = static_cast(config->get("time_url")); - - // LED config values - hue = static_cast(config->get("hue")); - saturation = static_cast(config->get("saturation")); - backlight = static_cast(config->get("backlight")); - hue_cycling = static_cast(config->get("hue_cycling")); - led_scale = static_cast(config->get("led_scale")); - cycle_time = static_cast(config->get("cycle_time")); - - // Extra config values - dimming = static_cast(config->get("dimming")); - display = static_cast(config->get("display")); - hv = static_cast(config->get("hv")); - voltage = static_cast(config->get("voltage")); - digit = static_cast(config->get("digit")); - count_speed = static_cast(config->get("count_speed")); - - // UPS config values - charge_rate = static_cast(config->get("charge_rate")); - lpm = static_cast(config->get("lpm")); - wakeup_time = static_cast(config->get("wakeup_time")); - sensitivity = static_cast(config->get("sensitivity")); - - BaseConfigItem *currentSetName = rootConfig.get("current_set"); - currentSetName->fromString(name); - currentSetName->put(); - } - } -} - -void initClock() { - pDriver->init(); - pNixieClock->setNixieDriver(pDriver); - pNixieClock->init(); -} - -void grabInts(String s, int *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void grabBytes(String s, byte *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void readTimeFailed(String msg) { - DEBUG(msg); -} - -#define SYNC_HOURS 3 -#define SYNC_MINS 4 -#define SYNC_SECS 5 -#define SYNC_DAY 2 -#define SYNC_MONTH 1 -#define SYNC_YEAR 0 - -bool timeInitialized = false; - -void setTimeFromInternet() { - String body = httpClient.getBody(); - DEBUG(String("Got response") + body); - int intValues[6]; - grabInts(body, &intValues[0], ","); - - timeInitialized = true; - setTime(intValues[SYNC_HOURS], intValues[SYNC_MINS], intValues[SYNC_SECS], intValues[SYNC_DAY], intValues[SYNC_MONTH], intValues[SYNC_YEAR]); -} - -AsyncWiFiManagerParameter *hostnameParam; - -void initFromEEPROM() { -// config.setDebugPrint(debugPrint); - config.init(); -// rootConfig.debug(debugPrint); - DEBUG(hostName); - rootConfig.get(); // Read all of the config values from EEPROM - String currentSetName = currentSet; - CurrentConfig::setCurrent(currentSetName); - DEBUG(hostName); - - hostnameParam = new AsyncWiFiManagerParameter("Hostname", "clock host name", hostName.value.c_str(), 63); -} - -void createSSID() { - // Create a unique SSID that includes the hostname. Max SSID length is 32! - ssid = (chipId + hostName).substring(0, 31); -} - -void getTime() { - if (WiFi.status() == WL_CONNECTED) { - httpClient.makeRequest(setTimeFromInternet, readTimeFailed); - } -} - -void StartOTA() { - // Port defaults to 8266 - ArduinoOTA.setPort(8266); - - // Hostname defaults to esp8266-[ChipID] - ArduinoOTA.setHostname(((String)hostName).c_str()); - - // No authentication by default -// ArduinoOTA.setPassword("in14"); - - ArduinoOTA.onStart([]() {DEBUG("OTA Start");}); - ArduinoOTA.onEnd([]() {DEBUG("\nOTA End");}); - ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - DEBUG("OTA Progress: ");DEBUG(progress / (total / 100));DEBUG("\r"); - }); - ArduinoOTA.onError([](ota_error_t error) { - DEBUG("OTA Error:") - switch (error) { - case OTA_AUTH_ERROR: DEBUG("Auth Failed"); break; - case OTA_BEGIN_ERROR: DEBUG("Begin Failed"); break; - case OTA_CONNECT_ERROR: DEBUG("Connect Failed"); break; - case OTA_RECEIVE_ERROR: DEBUG("Receive Failed"); break; - case OTA_END_ERROR: DEBUG("End Failed"); break; - } - }); - - ArduinoOTA.begin(); -} - -void mainHandler(AsyncWebServerRequest *request) { - DEBUG("Got request") - request->send(SPIFFS, "/index.html"); -} - -void sendFavicon(AsyncWebServerRequest *request) { - DEBUG("Got favicon request") - request->send(SPIFFS, "/assets/favicon-32x32.png", "image/png"); -} - -void broadcastUpdate(const BaseConfigItem& item) { - const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1); - DynamicJsonBuffer jsonBuffer(bufferSize); - - JsonObject& root = jsonBuffer.createObject(); - root["type"] = "sv.update"; - - JsonObject& value = root.createNestedObject("value"); - String rawJSON = item.toJSON(); // This object needs to hang around until we are done serializing. - value[item.name] = ArduinoJson::RawJson(rawJSON.c_str()); - -// root.printTo(*debugPrint); - - size_t len = root.measureLength(); - AsyncWebSocketMessageBuffer * buffer = ws.makeBuffer(len); // creates a buffer (len + 1) for you. - if (buffer) { - root.printTo((char *)buffer->get(), len + 1); - ws.textAll(buffer); - } -} - -WSMenuHandler wsMenuHandler(ups); -WSConfigHandler wsClockHandler(rootConfig, "clock"); -WSConfigHandler wsLEDHandler(rootConfig, "leds"); -WSConfigHandler wsExtraHandler(rootConfig, "extra"); -WSPresetValuesHandler wsPresetValuesHandler(rootConfig); -WSInfoHandler wsInfoHandler(ssid); -WSPresetNamesHandler wsPresetNamesHandler(rootConfig); -WSUPSHandler wsUPSHandler(rootConfig, "ups", ups, usbRating); - -WSHandler *wsHandlers[] = { - &wsMenuHandler, - &wsClockHandler, - &wsLEDHandler, - &wsExtraHandler, - &wsPresetValuesHandler, - &wsInfoHandler, - &wsPresetNamesHandler, - &wsUPSHandler -}; - -void updateValue(int screen, String pair) { - int index = pair.indexOf(':'); - DEBUG(pair) - // _key has to hang around because key points to an internal data structure - String _key = pair.substring(0, index); - const char* key = _key.c_str(); - String value = pair.substring(index+1); - if (screen == 4) { - CurrentConfig::setCurrent(value); - StringConfigItem temp(key, 10, value); - broadcastUpdate(temp); - } else if (screen == 6) { - BaseConfigItem *item = rootConfig.get(key); - if (item != 0) { - item->fromString(value); - item->put(); - broadcastUpdate(*item); - } - } else { - if (strcmp(key, "tube_type") == 0) { - BaseConfigItem *item = rootConfig.get(key); - if (item != 0) { - item->fromString(value); - item->put(); - initClock(); - broadcastUpdate(*item); - } - } else { - BaseConfigItem *item = CurrentConfig::config->get(key); - if (item != 0) { - item->fromString(value); - item->put(); - // Shouldn't special case this stuff. Should attach listeners to the config value! - // TODO: This won't work if we just switch change sets instead! -#ifndef USE_NTP - if (strcmp(key, CurrentConfig::time_url->name) == 0) { - httpClient.initialize(value); - getTime(); - } -#endif - broadcastUpdate(*item); - } - } - } -} - -/* - * Handle application protocol - */ -void handleWSMsg(AsyncWebSocketClient *client, char *data) { - String wholeMsg(data); - int code = wholeMsg.substring(0, wholeMsg.indexOf(':')).toInt(); - - if (code < 9) { - wsHandlers[code]->handle(client, data); - } else { - String message = wholeMsg.substring(wholeMsg.indexOf(':')+1); - int screen = message.substring(0, message.indexOf(':')).toInt(); - String pair = message.substring(message.indexOf(':')+1); - updateValue(screen, pair); - } -} - -/* - * Handle transport protocol - */ -void wsHandler(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) { - //Handle WebSocket event - switch (type) { - case WS_EVT_CONNECT: - DEBUG("WS connected") - ; - break; - case WS_EVT_DISCONNECT: - DEBUG("WS disconnected") - ; - break; - case WS_EVT_ERROR: - DEBUG("WS error") - ; - DEBUG((char* )data) - ; - break; - case WS_EVT_PONG: - DEBUG("WS pong") - ; - break; - case WS_EVT_DATA: // Yay we got something! - DEBUG("WS data") - ; - AwsFrameInfo * info = (AwsFrameInfo*) arg; - if (info->final && info->index == 0 && info->len == len) { - //the whole message is in a single frame and we got all of it's data - if (info->opcode == WS_TEXT) { - DEBUG("WS text data"); - data[len] = 0; - handleWSMsg(client, (char *) data); - } else { - DEBUG("WS binary data"); - } - } else { - DEBUG("WS data was split up!"); - } - break; - } -} - -void eepromUpdate() { - config.commit(); -} - -void snoozeUpdate(); - -void SetupServer() { - DEBUG("SetupServer()"); - hostName = String(hostnameParam->getValue()); - hostName.put(); - config.commit(); - DEBUG(hostName.value); - MDNS.begin(hostName.value.c_str()); - MDNS.addService("http", "tcp", 80); - StartOTA(); - - server.serveStatic("/", SPIFFS, "/"); - server.on("/", HTTP_GET, mainHandler).setFilter(ON_STA_FILTER); - server.on("/assets/favicon-32x32.png", HTTP_GET, sendFavicon); - server.serveStatic("/assets", SPIFFS, "/assets"); - - // attach AsyncWebSocket - ws.onEvent(wsHandler); - server.addHandler(&ws); - server.begin(); - ws.enable(true); - - getTime(); -} - -SoftMSTimer::TimerInfo syncTimeTimer = { - 3600000, // 1 hour between syncs - 0, - true, - getTime -}; - -SoftMSTimer::TimerInfo *infos[] = { - &syncTimeTimer, - 0 -}; - -SoftMSTimer timedFunctions(infos); - -void setup() -{ -#ifdef NEOPIXELS - pixels.begin(); // This initializes the NeoPixel library. - pixels.setBrightness(0); - pixels.show(); -#endif - - chipId.toUpperCase(); -// Serial.begin(921600); -// Serial.begin(115200); - - EEPROM.begin(1024); - SPIFFS.begin(); - - initFromEEPROM(); - - initClock(); - - createSSID(); - - DEBUG("Set wifiManager") - wifiManager.setDebugOutput(false); - wifiManager.setConnectTimeout(10); - wifiManager.setSaveConfigCallback(SetupServer); - wifiManager.startConfigPortalModeless(ssid.c_str(), "secretsauce"); - - httpClient.initialize("http://time.nixies.us/getTime/America/New_York"); - getTime(); - - nowMs = millis(); - - DEBUG("Exit setup") -} - -int r = 256; -unsigned long nextMs = 0; - -void loop() -{ - ArduinoOTA.handle(); - wifiManager.loop(); - - nowMs = millis(); - -#ifdef NEOPIXELS - // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one. - - if (nowMs > nextMs) { - nextMs = nowMs + 15; - pixels.setBrightness(255); - - // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255 - for (int i=0; i< NUMPIXELS; i++) { - pixels.setPixelColor(i, pixels.Color(abs(r - 255),30,30)); // Moderately bright green color. - } - - pixels.show(); // This sends the updated pixel color to the hardware. - - r = (r + 1) % 510; - } -#endif - - if (timeInitialized) { - pNixieClock->setClockMode(true); - pNixieClock->setCountSpeed(60); - } else { - pNixieClock->setClockMode(false); - pNixieClock->setCountSpeed(60); - } - - pNixieClock->setFadeMode(0); - pNixieClock->setTimeMode(true); - pNixieClock->setDateFormat(1); - pNixieClock->setShowSeconds(false); - pNixieClock->set12hour(false); - pNixieClock->setOnOff(6, 0); - pNixieClock->setDigitsOn(1500); - pNixieClock->setScrollback(true); - - pNixieClock->loop(nowMs); - timedFunctions.loop(); -} diff --git a/.svn/pristine/0e/0e72cdba1e443db4b8f5cda9f9f3bf034a1911b4.svn-base b/.svn/pristine/0e/0e72cdba1e443db4b8f5cda9f9f3bf034a1911b4.svn-base deleted file mode 100644 index 9e5d537..0000000 Binary files a/.svn/pristine/0e/0e72cdba1e443db4b8f5cda9f9f3bf034a1911b4.svn-base and /dev/null differ diff --git a/.svn/pristine/11/11463d6d5e1ac54ae2ccb796c3c5eb758b7b9794.svn-base b/.svn/pristine/11/11463d6d5e1ac54ae2ccb796c3c5eb758b7b9794.svn-base deleted file mode 100644 index aa065d9..0000000 --- a/.svn/pristine/11/11463d6d5e1ac54ae2ccb796c3c5eb758b7b9794.svn-base +++ /dev/null @@ -1,233 +0,0 @@ -#!/usr/bin/env node - -/* - * A test server - */ -'use strict'; - -var express = require('express'); -var http = require('http'); -var ws = require('ws'); - -var app = new express(); - -var server = http.createServer(app); - -var wss = new ws.Server({ server }); - -app.use(function(req, res, next) { - console.log(req.originalUrl); - next(); -}); - -app.use(express.static('web')); - -var pages = { - "type":"sv.init.menu", - "value": [ - {"1": { "url" : "clock.html", "title" : "Clock" }}, - {"2": { "url" : "leds.html", "title" : "LEDs" }}, - {"3": { "url" : "extra.html", "title" : "Extra" }}, - {"4": { "url" : "presets.html", "title" : "Presets" }}, - {"5": { "url" : "info.html", "title" : "Info" }}, - {"6": { "url" : "preset_names.html", "title" : "Preset Names", "noNav" : true}} - ] - } - - -var sendValues = function(conn, screen) { -} - -var sendPages = function(conn) { - var json = JSON.stringify(pages); - conn.send(json); - console.log(json); -} - -var sendClockValues = function(conn) { - var json = '{"type":"sv.init.clock","value":'; - json += JSON.stringify(state[1]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendLEDValues = function(conn) { - var json = '{"type":"sv.init.leds","value":'; - json += JSON.stringify(state[2]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendExtraValues = function(conn) { - var json = '{"type":"sv.init.extra","value":'; - json += JSON.stringify(state[3]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendPresetValues = function(conn) { - var json = '{"type":"sv.init.presets","value":'; - json += JSON.stringify(state[4]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendInfoValues = function(conn) { - var json = '{"type":"sv.init.info","value":'; - json += JSON.stringify(state[5]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendPresetNames = function(conn) { - var json = '{"type":"sv.init.preset_names","value":'; - json += JSON.stringify(state[6]); - json += '}'; - console.log(json); - conn.send(json); -} - -var state = { - "1": { - 'time_or_date': true, - 'date_format': 1, - 'hour_format': true, - 'fading': 2, - 'colons': 1, - 'leading_zero': true, - 'display_on': 10, - 'display_off': 20, - 'time_server': 'http://niobo.us/blah' - }, - "2": { - 'backlight': true, - 'hue_cycling': false, - 'cycle_time': 100, - 'hue': 180, - 'saturation': 190, - 'brightness': 200 - }, - "3": { - 'show_date': 1, - 'effect': 2, - 'display': true, - 'test': 60, - 'reset_time': 2500, - 'set_time': 200 - }, - "4": { - 'preset' : 'set3' - }, - "5": { - 'esp_boot_version' : "1234", - 'esp_free_heap' : "5678", - 'esp_sketch_size' : "90123", - 'esp_sketch_space' : "4567", - 'esp_flash_size' : "8901", - 'esp_chip_id' : "chip id", - 'wifi_ip_address' : "192.168.1.1", - 'wifi_mac_address' : "0E:12:34:56:78", - 'wifi_ssid' : "STC-Wonderful" - }, - "6": { - 'set1_name' : 'Clock 1', - 'set2_name' : 'Clock 2', - 'set3_name' : 'Clock 3', - 'set4_name' : 'Conditioner', - 'set5_name' : 'Manual' - } -} - -var broadcastUpdate = function(conn, field, value) { - var json = '{"type":"sv.update","value":{' + '"' + field + '":' + value + '}}'; - console.log(json); - try { - conn.send(json); - } catch (e) { - - } -} - -var updateValue = function(conn, screen, pair) { - console.log(pair); - var index = pair.indexOf(':'); - - var key = pair.substring(0, index); - var value = pair.substring(index+1); - try { - value = JSON.parse(value); - } catch (e) { - - } - - if (screen == 4 || screen == 6) { - state[screen][key] = '"' + value + '"'; - } else { - state[screen][key] = value; - } - broadcastUpdate(conn, key, state[screen][key]); -} - -var updateHue = function(conn) { - var hue = state['2']['hue']; - hue = (hue + 1) % 256; -// updateValue(conn, 2, "hue:" + hue); -} - -wss.on('connection', function(conn) { - console.log('connected'); - var hueTimer = setInterval(updateHue, 500, conn); - - //connection is up, let's add a simple simple event - conn.on('message', function(message) { - - //log the received message and send it back to the client - console.log('received: %s', message); - var code = parseInt(message.substring(0, message.indexOf(':'))); - - switch (code) { - case 0: - sendPages(conn); - break; - case 1: - sendClockValues(conn); - break; - case 2: - sendLEDValues(conn); - break; - case 3: - sendExtraValues(conn); - break; - case 4: - sendPresetValues(conn); - break; - case 5: - sendInfoValues(conn); - break; - case 6: - sendPresetNames(conn); - break; - case 9: - message = message.substring(message.indexOf(':')+1); - var screen = message.substring(0, message.indexOf(':')); - var pair = message.substring(message.indexOf(':')+1); - updateValue(conn, screen, pair); - break; - } - }); - - conn.on('close', function() { - clearInterval(hueTimer); - }); -}); - -//start our server -server.listen(process.env.PORT || 8080, function() { - console.log('Server started on port' + server.address().port + ':)'); -}); - diff --git a/.svn/pristine/13/13adba42930f8dcf89c84667fdacd162bae83555.svn-base b/.svn/pristine/13/13adba42930f8dcf89c84667fdacd162bae83555.svn-base deleted file mode 100644 index b984450..0000000 --- a/.svn/pristine/13/13adba42930f8dcf89c84667fdacd162bae83555.svn-base +++ /dev/null @@ -1,531 +0,0 @@ -eclipse.preferences.version=1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.ALT_SIZE_COMMAND/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ALT_SIZE_COMMAND/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ALT_SIZE_COMMAND/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" --format\=avr --mcu\=${A.BUILD.MCU} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE/value=arduino.ar -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE_PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE_PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE_PATH/value=${A.BUILD.PATH}/${A.ARCHIVE_FILE} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.ARCH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.ARCH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.ARCH/value=ESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.BOARD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.BOARD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.BOARD/value=ESP8266_ESP01 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE.PATH/value=${A.RUNTIME.PLATFORM.PATH}/cores/${A.BUILD.CORE} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_LEVEL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_LEVEL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_LEVEL/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_PORT/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.EXTRA_FLAGS/value=-DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_FREQ/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_FREQ/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_FREQ/value=40 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_LD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_LD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_LD/value=eagle.flash.1m256.ld -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_MODE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_MODE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_MODE/value=dout -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_SIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_SIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_SIZE/value=1M -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.F_CPU/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.F_CPU/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.F_CPU/value=80000000L -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_FLAGS/value=-DLWIP_OPEN_SRC -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_LIB/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_LIB/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_LIB/value=-llwip_gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.MCU/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.MCU/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.MCU/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PROJECT_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PROJECT_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PROJECT_NAME/value=${ProjName} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_BLOCKSIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_BLOCKSIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_BLOCKSIZE/value=4096 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_END/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_END/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_END/value=0xFB000 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_PAGESIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_PAGESIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_PAGESIZE/value=256 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_START/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_START/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_START/value=0xBB000 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SYSTEM.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SYSTEM.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SYSTEM.PATH/value=${A.RUNTIME.PLATFORM.PATH}/system -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT.PATH/value=C\:\\Users\\mpand\\eclipse\\arduinoPlugin\\packages\\esp8266\\hardware\\esp8266\\2.3.0\\variants\\generic -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT/value=generic -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.CMD/value=xtensa-lx106-elf-ar -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.FLAGS/value=cru -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AS.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AS.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AS.CMD/value=xtensa-lx106-elf-as -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.CMD/value=xtensa-lx106-elf-gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.CMD/value=xtensa-lx106-elf-gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.FLAGS/value=-g ${A.COMPILER.WARNING_FLAGS} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-L${A.COMPILER.SDK.PATH}/lib" "-L${A.COMPILER.SDK.PATH}/ld" "-T${A.BUILD.FLASH_LD}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,register_chipv6_phy -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.LIBS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.LIBS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.LIBS/value=-lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lwps -laxtls -lsmartconfig -lmesh -lwpa2 ${A.BUILD.LWIP_LIB} -lstdc++ -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.FLAGS/value=-c ${A.COMPILER.WARNING_FLAGS} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions\=4 -MMD -std\=gnu99 -ffunction-sections -fdata-sections -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.CMD/value=xtensa-lx106-elf-g++ -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.FLAGS/value=-c ${A.COMPILER.WARNING_FLAGS} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions\=4 -std\=c++11 -MMD -ffunction-sections -fdata-sections -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPREPROCESSOR.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPREPROCESSOR.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPREPROCESSOR.FLAGS/value=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I${A.COMPILER.SDK.PATH}/include" "-I${A.COMPILER.SDK.PATH}/lwip/include" "-I${A.BUILD.PATH}/core" -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.CMD/value=esptool -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ESPTOOL.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ESPTOOL.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ESPTOOL.CMD/value=esptool.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.PATH/value=${A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH}/bin/ -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.CMD/value=xtensa-lx106-elf-gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.FLAGS/value=-c -g -x assembler-with-cpp -MMD -mlongcalls -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SDK.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SDK.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SDK.PATH/value=${A.RUNTIME.PLATFORM.PATH}/tools/sdk -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SIZE.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SIZE.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SIZE.CMD/value=xtensa-lx106-elf-size -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.ALL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.ALL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.ALL/value=-Wall -Wextra -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.DEFAULT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.DEFAULT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.DEFAULT/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.MORE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.MORE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.MORE/value=-Wall -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.NONE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.NONE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.NONE/value=-w -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS/value=${A.COMPILER.WARNING_FLAGS.ALL} -environment/project/io.sloeber.core.toolChain.release.34549407/A.ESP8266.NETWORK.UPLOAD.TOOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ESP8266.NETWORK.UPLOAD.TOOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ESP8266.NETWORK.UPLOAD.TOOL/value=esp8266OTA -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.DTS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.DTS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.DTS/value=3600 -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.LOCAL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.LOCAL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.LOCAL/value=1533343096 -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.UTC/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.UTC/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.UTC/value=1533357496 -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.ZONE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.ZONE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.ZONE/value=-18000 -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.CORE.REFERENCED.PLATFORM/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.CORE.REFERENCED.PLATFORM/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.CORE.REFERENCED.PLATFORM/value=${JANTJE.SELECTED.PLATFORM} -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.USED.BOARDS_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.USED.BOARDS_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.USED.BOARDS_FILE/value=${JANTJE.BOARDS_FILE} -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.VARIANT.REFERENCED.PLATFORM/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.VARIANT.REFERENCED.PLATFORM/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.VARIANT.REFERENCED.PLATFORM/value=${JANTJE.SELECTED.PLATFORM} -environment/project/io.sloeber.core.toolChain.release.34549407/A.NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.NAME/value=Generic ESP8285 Module -environment/project/io.sloeber.core.toolChain.release.34549407/A.PACKAGES/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.PACKAGES/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.PACKAGES/value=${eclipse_home}/arduinoPlugin/packages -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-ar" cru "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/arduino.ar" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.2/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} ${A.COMPILER.AR.EXTRA_FLAGS} "${A.BUILD.PATH}/arduino.ar" "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc" -g -Wall -Wextra -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-LC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lib" "-LC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/ld" "-Teagle.flash.1m256.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,register_chipv6_phy -o "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.elf" -Wl,--start-group -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.2/value=\ "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/arduino.ar" -lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lwps -laxtls -lsmartconfig -lmesh -lwpa2 -llwip_gcc -lstdc++ -Wl,--end-group "-LC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} ${A.COMPILER.C.ELF.EXTRA_FLAGS} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -Wl,--start-group ${A.OBJECT_FILES} "${A.BUILD.PATH}/arduino.ar" ${A.COMPILER.C.ELF.LIBS} -Wl,--end-group "-L${A.BUILD.PATH}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/include" "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lwip/include" "-IC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/core" -c -Wall -Wextra -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions\=4 -std\=gnu99 -ffunction-sections -fdata-sections -DF_CPU\=80000000L -DLWIP_OPEN_SRC -DARDUINO\=10802 -DARDUINO_ESP8266_ESP01 -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD\=\\"ESP8266_ESP01\\"" -DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.2/value=\ -o -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.3/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.3/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.3/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.C.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.LWIP_FLAGS} ${A.BUILD.DEBUG_PORT} ${A.BUILD.DEBUG_LEVEL} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} "-DARDUINO_BOARD\=\\"${A.BUILD.BOARD}\\"" ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/include" "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lwip/include" "-IC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/core" -c -Wall -Wextra -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions\=4 -std\=c++11 -ffunction-sections -fdata-sections -DF_CPU\=80000000L -DLWIP_OPEN_SRC -DARDUINO\=10802 -DARDUINO_ESP8266_ESP01 -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD\=\\"ESP8266_ESP01\\"" -DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.2/value=\ -o -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.3/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.3/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.3/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.CPP.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.LWIP_FLAGS} ${A.BUILD.DEBUG_PORT} ${A.BUILD.DEBUG_LEVEL} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} "-DARDUINO_BOARD\=\\"${A.BUILD.BOARD}\\"" ${A.COMPILER.CPP.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13/esptool.exe" -eo "C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/bootloaders/eboot/eboot.elf" -bo "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.bin" -bm dout -bf 40 -bz 1M -bs .text -bp 4096 -ec -eo "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.RUNTIME.TOOLS.ESPTOOL.PATH}/${A.COMPILER.ESPTOOL.CMD}" -eo "${A.RUNTIME.PLATFORM.PATH}/bootloaders/eboot/eboot.elf" -bo "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" -bm ${A.BUILD.FLASH_MODE} -bf ${A.BUILD.FLASH_FREQ} -bz ${A.BUILD.FLASH_SIZE} -bs .text -bp 4096 -ec -eo "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.SAVE_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.SAVE_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.SAVE_FILE/value=${A.BUILD.PROJECT_NAME}.${A.BUILD.VARIANT}.bin -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.TMP_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.TMP_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.TMP_FILE/value=${A.BUILD.PROJECT_NAME}.bin -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/include" "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lwip/include" "-IC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/core" -c -g -x assembler-with-cpp -mlongcalls -DF_CPU\=80000000L -DLWIP_OPEN_SRC -DARDUINO\=10802 -DARDUINO_ESP8266_ESP01 -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD\=\\"ESP8266_ESP01\\"" -DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.2/value=\ -o -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.3/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.3/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.3/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.S.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.LWIP_FLAGS} ${A.BUILD.DEBUG_PORT} ${A.BUILD.DEBUG_LEVEL} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} "-DARDUINO_BOARD\=\\"${A.BUILD.BOARD}\\"" ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-size" -A "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.elf" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX.DATA/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX.DATA/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX.DATA/value=^(?\:\\.data|\\.rodata|\\.bss)\\s+([0-9]+).* -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX/value=^(?\:\\.irom0\\.text|\\.text|\\.data|\\.rodata|)\\s+([0-9]+).* -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.HARDWARE.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.HARDWARE.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.HARDWARE.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.IDE.VERSION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.IDE.VERSION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.IDE.VERSION/value=10802 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.PLATFORM.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.PLATFORM.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.PLATFORM.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.REFERENCED.PLATFORM.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.REFERENCED.PLATFORM.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.REFERENCED.PLATFORM.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA-1.1.1.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA-1.1.1.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA-1.1.1.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/arduinoOTA/1.1.1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/arduinoOTA/1.1.1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA1.1.1.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA1.1.1.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA1.1.1.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/arduinoOTA/1.1.1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC-4.9.2-ATMEL3.5.4-ARDUINO2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC-4.9.2-ATMEL3.5.4-ARDUINO2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC-4.9.2-ATMEL3.5.4-ARDUINO2.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC4.9.2-ATMEL3.5.4-ARDUINO2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC4.9.2-ATMEL3.5.4-ARDUINO2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC4.9.2-ATMEL3.5.4-ARDUINO2.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO9.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO9.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.13.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.13.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.13.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.9.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.13.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.13.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.13.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.9.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.1.2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.1.2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.1.2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.1.2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.2.0.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.2.0.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.2.0.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.1.2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.1.2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.1.2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.1.2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.2.0.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.2.0.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.2.0.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-1.20.0-26-GB404FB9-2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-1.20.0-26-GB404FB9-2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-1.20.0-26-GB404FB9-2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC1.20.0-26-GB404FB9-2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC1.20.0-26-GB404FB9-2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC1.20.0-26-GB404FB9-2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLEDTR/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLEDTR/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLEDTR/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLERTS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLERTS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLERTS/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT.FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT.FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT.FILE/value=${A.SERIAL.PORT} -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT/value=${JANTJE.COM_PORT} -environment/project/io.sloeber.core.toolChain.release.34549407/A.SOFTWARE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SOFTWARE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SOFTWARE/value=ARDUINO -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/value=-v -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/value=${A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA/value=${A.TOOLS.ESPTOOL.NETWORK_CMD} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.CMD/value=esptool.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/value=${A.TOOLS.ESPTOOL.NETWORK.AUTH} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK_CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK_CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK_CMD/value=python.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.PATH/value=${A.RUNTIME.TOOLS.ESPTOOL.PATH} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN/value="${A.TOOLS.ESPTOOL.NETWORK_CMD}" "${A.RUNTIME.PLATFORM.PATH}/tools/espota.py" -i "${A.SERIAL.PORT}" -p "${A.TOOLS.ESPTOOL.NETWORK.PORT}" "--auth\=${A.TOOLS.ESPTOOL.NETWORK.PASSWORD}" -f "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.QUIET/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.QUIET/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.QUIET/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.VERBOSE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.VERBOSE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.VERBOSE/value=-vv -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PATTERN/value="${A.TOOLS.ESPTOOL.PATH}/${A.TOOLS.ESPTOOL.CMD}" ${A.TOOLS.ESPTOOL.UPLOAD.VERBOSE} -cd ${A.UPLOAD.RESETMETHOD} -cb ${A.UPLOAD.SPEED} -cp "${A.SERIAL.PORT}" -ca 0x00000 -cf "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PROTOCOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PROTOCOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PROTOCOL/value=esp -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.CMD/value=mkspiffs.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.PATH/value=${A.RUNTIME.TOOLS.MKSPIFFS.PATH} -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.ALTID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.ALTID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.ALTID/value=no_altID -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_DATA_SIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_DATA_SIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_DATA_SIZE/value=81920 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_SIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_SIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_SIZE/value=761840 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.PROTOCOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.PROTOCOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.PROTOCOL/value=stk500v1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.RESETMETHOD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.RESETMETHOD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.RESETMETHOD/value=nodemcu -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.SPEED/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.SPEED/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.SPEED/value=115200 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.TOOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.TOOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.TOOL/value=esptool -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.USBID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.USBID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.USBID/value=no_altID -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/A.VERSION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.VERSION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.VERSION/value=2.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ARCHITECTURE_ID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ARCHITECTURE_ID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ARCHITECTURE_ID/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARDS_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARDS_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARDS_FILE/value=C\:\\Users\\mpand\\eclipse\\arduinoPlugin\\packages\\esp8266\\hardware\\esp8266\\2.3.0\\boards.txt -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_ID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_ID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_ID/value=esp8285 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_NAME/value=Generic ESP8285 Module -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.COM_PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.COM_PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.COM_PORT/value=COM13 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ECLIPSE_LOCATION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ECLIPSE_LOCATION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ECLIPSE_LOCATION/value=C\:\\Users\\mpand\\eclipse\\ -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ALL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ALL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ALL/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ARCHIVE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ARCHIVE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ARCHIVE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ASSEMBLY/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ASSEMBLY/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ASSEMBLY/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.C.COMPILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.C.COMPILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.C.COMPILE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.COMPILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.COMPILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.COMPILE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.CPP.COMPILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.CPP.COMPILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.CPP.COMPILE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.LINK/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.LINK/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.LINK/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MAKE_LOCATION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MAKE_LOCATION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MAKE_LOCATION/value=${eclipse_home}/arduinoPlugin/tools/make/ -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MENU/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MENU/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MENU/value=CpuFrequency\=80\nFlashSize\=1M256\nResetMethod\=nodemcu\nUploadSpeed\=115200 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OBJCOPY/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OBJCOPY/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OBJCOPY/value=${A.RECIPE.OBJCOPY.HEX.PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OS_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OS_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OS_NAME/value=win32 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PACKAGE_ID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PACKAGE_ID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PACKAGE_ID/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PROJECT_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PROJECT_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PROJECT_NAME/value=ITS1A -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SELECTED.PLATFORM/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SELECTED.PLATFORM/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SELECTED.PLATFORM/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SIZE.SWITCH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SIZE.SWITCH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SIZE.SWITCH/value=${A.RECIPE.SIZE.PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.UPLOAD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.UPLOAD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.UPLOAD/value=Default -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WARNING_LEVEL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WARNING_LEVEL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WARNING_LEVEL/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WORKSPACE_LOCATION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WORKSPACE_LOCATION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WORKSPACE_LOCATION/value=C\:\\Users\\mpand\\eclipse-workspace -environment/project/io.sloeber.core.toolChain.release.34549407/PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${SystemRoot}\\system32${PathDelimiter}${SystemRoot}${PathDelimiter}${SystemRoot}\\system32\\Wbem${PathDelimiter}${sloeber_path_extension} -environment/project/io.sloeber.core.toolChain.release.34549407/append=true -environment/project/io.sloeber.core.toolChain.release.34549407/appendContributed=true diff --git a/.svn/pristine/15/1539a2f48979f033b0b529497086f8870e24801b.svn-base b/.svn/pristine/15/1539a2f48979f033b0b529497086f8870e24801b.svn-base deleted file mode 100644 index 2f29b6a..0000000 --- a/.svn/pristine/15/1539a2f48979f033b0b529497086f8870e24801b.svn-base +++ /dev/null @@ -1,110 +0,0 @@ -const gulp = require('gulp'); -const plumber = require('gulp-plumber'); -const htmlmin = require('gulp-htmlmin'); -const cleancss = require('gulp-clean-css'); -const uglify = require('gulp-uglify'); -const gzip = require('gulp-gzip'); -const del = require('del'); -const useref = require('gulp-useref'); -const gulpif = require('gulp-if'); -const inline = require('gulp-inline'); -const inlineImages = require('gulp-css-inline-images'); -const favicon = require('gulp-base64-favicon'); -const fs = require("fs"); -const readLine = require("readline"); -const log = require("fancy-log"); - -var props = {}; - -gulp.task('test', function() { - var lineReader = readLine.createInterface({ - input: fs.createReadStream(".settings/org.eclipse.cdt.core.prefs", "utf8") - }); - lineReader.on('line', function (line) { - var matcher; - var matched = line.match(/.*\/([AJ].+)\/value=(.+)$/); - if (matched) { - props[matched[1]] = matched[2]; - } - }); - lineReader.on('close', function() { - log(props); - }); -}); - -/* Clean destination folder */ -gulp.task('clean', function() { - return del(['data/*']); -}); - -/* Copy static files */ -gulp.task('files', function() { - return gulp.src([ - 'web/**/*.{jpg,jpeg,png,ico,gif}', - 'web/fsversion' - ]) - .pipe(gulp.dest('data/')); -}); - -/* Process HTML, CSS, JS --- INLINE --- */ -gulp.task('inline', function() { - return gulp.src('web/*.html') - .pipe(inline({ - base: 'web/', - js: uglify, - css: cleancss, - disabledTypes: ['svg', 'img'] - })) - .pipe(htmlmin({ - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true - })) - .pipe(gzip()) - .pipe(gulp.dest('data')); -}) - -gulp.task('buildfs_inline', function() { - return gulp.src('web/*.html') - .pipe(inline({ - base: 'web/', - js: uglify, - css: [cleancss], - disabledTypes: ['svg', 'img'] - })) - .pipe(inlineImages({ - webRoot: "web" - })) - .pipe(htmlmin({ - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true - })) - .pipe(gzip()) - .pipe(gulp.dest('data')); -}) - -/* Process HTML, CSS, JS */ -gulp.task('html', function() { - return gulp.src('web/*.html') - .pipe(useref()) - .pipe(plumber()) - .pipe(gulpif('*.css', cleancss())) - .pipe(gulpif('*.js', uglify())) - .pipe(gulpif('*.html', htmlmin({ - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true - }))) - .pipe(gzip()) - .pipe(gulp.dest('data')); -}); - -/* Build file system */ -gulp.task('buildfs', ['clean', 'files', 'html']); -gulp.task('buildfs2', ['clean', 'files', 'inline']); -gulp.task('default', ['buildfs_inline']); - \ No newline at end of file diff --git a/.svn/pristine/1b/1bef2eceeb7330f2c477e77b2bd2706a6db9c1d2.svn-base b/.svn/pristine/1b/1bef2eceeb7330f2c477e77b2bd2706a6db9c1d2.svn-base deleted file mode 100644 index 1155741..0000000 --- a/.svn/pristine/1b/1bef2eceeb7330f2c477e77b2bd2706a6db9c1d2.svn-base +++ /dev/null @@ -1,45 +0,0 @@ - - - Alexa - - - - - - Date switch name - - - Backlight switch name - - - Clock switch name - - - Test mode switch name - - - Hue cycling switch name - - - 12 hour switch name - - - Leading zero switch name - - - - diff --git a/.svn/pristine/1c/1cdcd215a09108dbe6cff684a6d33540ced6ea77.svn-base b/.svn/pristine/1c/1cdcd215a09108dbe6cff684a6d33540ced6ea77.svn-base deleted file mode 100644 index 5585685..0000000 --- a/.svn/pristine/1c/1cdcd215a09108dbe6cff684a6d33540ced6ea77.svn-base +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Edit the preset names - - - - - - - - Close - - diff --git a/.svn/pristine/1c/1cfd6a4d56b9eaf630377c07a099544e1acf8521.svn-base b/.svn/pristine/1c/1cfd6a4d56b9eaf630377c07a099544e1acf8521.svn-base deleted file mode 100644 index 5667080..0000000 --- a/.svn/pristine/1c/1cfd6a4d56b9eaf630377c07a099544e1acf8521.svn-base +++ /dev/null @@ -1,50 +0,0 @@ - - - LEDs - - - - - - - Backlight - - - - - - - Hue Cycling - - - - - - - Cycle Time (s) - - - - - - - Hue - - - - Saturation - - - - Brightness - - - - - diff --git a/.svn/pristine/24/24d1a279ffd743940a63302f2de4edc72e71acef.svn-base b/.svn/pristine/24/24d1a279ffd743940a63302f2de4edc72e71acef.svn-base deleted file mode 100644 index 8407d61..0000000 Binary files a/.svn/pristine/24/24d1a279ffd743940a63302f2de4edc72e71acef.svn-base and /dev/null differ diff --git a/.svn/pristine/25/25284cdc85b0e5e555a850a401be7a9af226ec88.svn-base b/.svn/pristine/25/25284cdc85b0e5e555a850a401be7a9af226ec88.svn-base deleted file mode 100644 index cb4f07a..0000000 --- a/.svn/pristine/25/25284cdc85b0e5e555a850a401be7a9af226ec88.svn-base +++ /dev/null @@ -1,25 +0,0 @@ - - - Presets - - - - - - Choose one! - - Clock 1 - - Clock 2 - - Clock 3 - - Conditioner - - Manual - - - Edit Names - - - \ No newline at end of file diff --git a/.svn/pristine/27/27a9c0cb0d108f03117c369da9a9cd0abaa3bffb.svn-base b/.svn/pristine/27/27a9c0cb0d108f03117c369da9a9cd0abaa3bffb.svn-base deleted file mode 100644 index 2c9c5d8..0000000 --- a/.svn/pristine/27/27a9c0cb0d108f03117c369da9a9cd0abaa3bffb.svn-base +++ /dev/null @@ -1,46 +0,0 @@ - - - Alexa - - - - - - - Date switch name - - - Backlight switch name - - - Clock switch name - - - Test mode switch name - - - Hue cycling switch name - - - 12 hour switch name - - - Leading zero switch name - - - - diff --git a/.svn/pristine/2e/2edfb2ffe3b5121f42113008cff449023db52f27.svn-base b/.svn/pristine/2e/2edfb2ffe3b5121f42113008cff449023db52f27.svn-base deleted file mode 100644 index 57f5624..0000000 Binary files a/.svn/pristine/2e/2edfb2ffe3b5121f42113008cff449023db52f27.svn-base and /dev/null differ diff --git a/.svn/pristine/33/3348d145d5befc29b84246eb1e781fcfe3091031.svn-base b/.svn/pristine/33/3348d145d5befc29b84246eb1e781fcfe3091031.svn-base deleted file mode 100644 index 0f74d67..0000000 --- a/.svn/pristine/33/3348d145d5befc29b84246eb1e781fcfe3091031.svn-base +++ /dev/null @@ -1,256 +0,0 @@ -#!/usr/bin/env node - -/* - * A test server - */ -'use strict'; - -var express = require('express'); -var http = require('http'); -var ws = require('ws'); - -var app = new express(); - -var server = http.createServer(app); - -var wss = new ws.Server({ server }); - -app.use(function(req, res, next) { - console.log(req.originalUrl); - next(); -}); - -app.use(express.static('web')); - -var pages = { - "type":"sv.init.menu", - "value": [ - {"1": { "url" : "clock.html", "title" : "Clock" }}, - {"2": { "url" : "leds.html", "title" : "LEDs" }}, - {"3": { "url" : "extra.html", "title" : "Extra" }}, - {"7": { "url" : "alexa.html", "title" : "Alexa" }}, - {"4": { "url" : "presets.html", "title" : "Presets" }}, - {"5": { "url" : "info.html", "title" : "Info" }}, - {"6": { "url" : "preset_names.html", "title" : "Preset Names", "noNav" : true}} - ] - } - - -var sendValues = function(conn, screen) { -} - -var sendPages = function(conn) { - var json = JSON.stringify(pages); - conn.send(json); - console.log(json); -} - -var sendClockValues = function(conn) { - var json = '{"type":"sv.init.clock","value":'; - json += JSON.stringify(state[1]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendLEDValues = function(conn) { - var json = '{"type":"sv.init.leds","value":'; - json += JSON.stringify(state[2]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendExtraValues = function(conn) { - var json = '{"type":"sv.init.extra","value":'; - json += JSON.stringify(state[3]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendPresetValues = function(conn) { - var json = '{"type":"sv.init.presets","value":'; - json += JSON.stringify(state[4]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendInfoValues = function(conn) { - var json = '{"type":"sv.init.info","value":'; - json += JSON.stringify(state[5]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendPresetNames = function(conn) { - var json = '{"type":"sv.init.preset_names","value":'; - json += JSON.stringify(state[6]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendAlexa = function(conn) { - var json = '{"type":"sv.init.alexa","value":'; - json += JSON.stringify(state[7]); - json += '}'; - console.log(json); - conn.send(json); -} - -var state = { - "1": { - 'time_or_date': true, - 'date_format': 1, - 'hour_format': true, - 'fading': 2, - 'colons': 1, - 'leading_zero': true, - 'display_on': 10, - 'display_off': 20, - 'time_server': 'http://niobo.us/blah' - }, - "2": { - 'backlight': true, - 'hue_cycling': false, - 'cycle_time': 100, - 'hue': 180, - 'saturation': 190, - 'brightness': 200 - }, - "3": { - 'show_date': 1, - 'out_effect': 2, - 'in_effect': 3, - 'display': true, - 'test': 60, - 'reset_time': 2500, - 'set_time': 200, - 'hv': true - }, - "4": { - 'preset' : 'set3' - }, - "5": { - 'esp_boot_version' : "1234", - 'esp_free_heap' : "5678", - 'esp_sketch_size' : "90123", - 'esp_sketch_space' : "4567", - 'esp_flash_size' : "8901", - 'esp_chip_id' : "chip id", - 'wifi_ip_address' : "192.168.1.1", - 'wifi_mac_address' : "0E:12:34:56:78", - 'wifi_ssid' : "STC-Wonderful" - }, - "6": { - 'set1_name' : 'Clock 1', - 'set2_name' : 'Clock 2', - 'set3_name' : 'Clock 3', - 'set4_name' : 'Conditioner', - 'set5_name' : 'Manual' - }, - "7": { - 'date_name' : 'date', - 'backlight_name' : 'backlight', - 'clock_name' : 'clock', - 'test_name' : 'test', - 'cycling_name' : 'hue cycling', - 'twelve_hour_name' : '12 hour', - 'zero_name' : 'leading zero' - } -} - -var broadcastUpdate = function(conn, field, value) { - var json = '{"type":"sv.update","value":{' + '"' + field + '":' + value + '}}'; - console.log(json); - try { - conn.send(json); - } catch (e) { - - } -} - -var updateValue = function(conn, screen, pair) { - console.log(pair); - var index = pair.indexOf(':'); - - var key = pair.substring(0, index); - var value = pair.substring(index+1); - try { - value = JSON.parse(value); - } catch (e) { - - } - - if (screen == 4 || screen == 6) { - state[screen][key] = '"' + value + '"'; - } else { - state[screen][key] = value; - } - broadcastUpdate(conn, key, state[screen][key]); -} - -var updateHue = function(conn) { - var hue = state['2']['hue']; - hue = (hue + 1) % 256; -// updateValue(conn, 2, "hue:" + hue); -} - -wss.on('connection', function(conn) { - console.log('connected'); - var hueTimer = setInterval(updateHue, 500, conn); - - //connection is up, let's add a simple simple event - conn.on('message', function(message) { - - //log the received message and send it back to the client - console.log('received: %s', message); - var code = parseInt(message.substring(0, message.indexOf(':'))); - - switch (code) { - case 0: - sendPages(conn); - break; - case 1: - sendClockValues(conn); - break; - case 2: - sendLEDValues(conn); - break; - case 3: - sendExtraValues(conn); - break; - case 4: - sendPresetValues(conn); - break; - case 5: - sendInfoValues(conn); - break; - case 6: - sendPresetNames(conn); - break; - case 7: - sendAlexa(conn); - break; - case 9: - message = message.substring(message.indexOf(':')+1); - var screen = message.substring(0, message.indexOf(':')); - var pair = message.substring(message.indexOf(':')+1); - updateValue(conn, screen, pair); - break; - } - }); - - conn.on('close', function() { - clearInterval(hueTimer); - }); -}); - -//start our server -server.listen(process.env.PORT || 8080, function() { - console.log('Server started on port' + server.address().port + ':)'); -}); - diff --git a/.svn/pristine/34/343318d8bcf2e049b9a3de5b01dd910b9cddbba9.svn-base b/.svn/pristine/34/343318d8bcf2e049b9a3de5b01dd910b9cddbba9.svn-base deleted file mode 100644 index 7d94a80..0000000 --- a/.svn/pristine/34/343318d8bcf2e049b9a3de5b01dd910b9cddbba9.svn-base +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/.svn/pristine/36/3695324deebf1e43e68fbefd80b0dfb83b9494e5.svn-base b/.svn/pristine/36/3695324deebf1e43e68fbefd80b0dfb83b9494e5.svn-base deleted file mode 100644 index 5ad07cd..0000000 --- a/.svn/pristine/36/3695324deebf1e43e68fbefd80b0dfb83b9494e5.svn-base +++ /dev/null @@ -1,165 +0,0 @@ - - - ITS1A - - - - - - io.sloeber.core.inoToCpp - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - io.sloeber.arduinonature - - - - core/core - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/cores/esp8266 - - - core/variant - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/variants/generic - - - libraries/Adafruit_LIS3DH - 2 - C:/Users/mpand/Documents/Arduino/libraries/Adafruit_LIS3DH - - - libraries/Adafruit_MCP23017_Arduino_Library - 2 - C:/Users/mpand/Documents/Arduino/libraries/Adafruit_MCP23017_Arduino_Library - - - libraries/Adafruit_NeoPixel - 2 - C:/Users/mpand/Documents/Arduino/libraries/Adafruit_NeoPixel - - - libraries/Adafruit_Unified_Sensor - 2 - ECLIPSE_HOME/arduinoPlugin/libraries/Adafruit_Unified_Sensor/1.0.2 - - - libraries/ArduinoJson - 2 - C:/Users/mpand/Documents/Arduino/libraries/ArduinoJson - - - libraries/ArduinoOTA - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/ArduinoOTA - - - libraries/Configs - 2 - C:/Users/mpand/Documents/Arduino/libraries/Configs - - - libraries/DNSServer - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/DNSServer - - - libraries/EEPROM - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/EEPROM - - - libraries/ESP8266WiFi - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WiFi - - - libraries/ESP8266mDNS - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266mDNS - - - libraries/ESPAsyncHttpClient - 2 - C:/Users/mpand/Documents/Arduino/libraries/ESPAsyncHttpClient - - - libraries/ESPAsyncTCP - 2 - C:/Users/mpand/Documents/Arduino/libraries/ESPAsyncTCP - - - libraries/ESPAsyncWebServer - 2 - C:/Users/mpand/Documents/Arduino/libraries/ESPAsyncWebServer - - - libraries/ESPAsyncWiFiManager - 2 - C:/Users/mpand/Documents/Arduino/libraries/ESPAsyncWiFiManager - - - libraries/Hash - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/Hash - - - libraries/NixieDriver - 2 - C:/Users/mpand/Documents/Arduino/libraries/NixieDriver - - - libraries/NixieMisc - 2 - C:/Users/mpand/Documents/Arduino/libraries/NixieMisc - - - libraries/OneNixieClock - 2 - C:/Users/mpand/Documents/Arduino/libraries/OneNixieClock - - - libraries/SPI - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/SPI - - - libraries/Time - 2 - C:/Users/mpand/Documents/Arduino/libraries/Time - - - libraries/U8g2 - 2 - C:/Users/mpand/Documents/Arduino/libraries/U8g2 - - - libraries/UPS - 2 - C:/Users/mpand/Documents/Arduino/libraries/UPS - - - libraries/Wire - 2 - ECLIPSE_HOME/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/libraries/Wire - - - diff --git a/.svn/pristine/36/36bc135d570dc27c7d2fe9b1c4cfe978f36e1224.svn-base b/.svn/pristine/36/36bc135d570dc27c7d2fe9b1c4cfe978f36e1224.svn-base deleted file mode 100644 index eca25fa..0000000 --- a/.svn/pristine/36/36bc135d570dc27c7d2fe9b1c4cfe978f36e1224.svn-base +++ /dev/null @@ -1,50 +0,0 @@ - - - LEDs - - - - - - - Backlight - - - - - - - Hue Cycling - - - - - - - Cycle Time (s) - - - - - - - Hue - - - - Saturation - - - - Brightness - - - - - diff --git a/.svn/pristine/37/37e171e28f5ebd955428742069f198af910f6a3d.svn-base b/.svn/pristine/37/37e171e28f5ebd955428742069f198af910f6a3d.svn-base deleted file mode 100644 index a343d06..0000000 --- a/.svn/pristine/37/37e171e28f5ebd955428742069f198af910f6a3d.svn-base +++ /dev/null @@ -1,540 +0,0 @@ -eclipse.preferences.version=1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.ALT_SIZE_COMMAND/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ALT_SIZE_COMMAND/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ALT_SIZE_COMMAND/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" --format\=avr --mcu\=${A.BUILD.MCU} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE/value=arduino.ar -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE_PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE_PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ARCHIVE_FILE_PATH/value=${A.BUILD.PATH}/${A.ARCHIVE_FILE} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.ARCH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.ARCH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.ARCH/value=ESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.BOARD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.BOARD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.BOARD/value=ESP8266_WEMOS_D1MINI -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE.PATH/value=${A.RUNTIME.PLATFORM.PATH}/cores/${A.BUILD.CORE} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.CORE/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_LEVEL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_LEVEL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_LEVEL/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.DEBUG_PORT/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.EXTRA_FLAGS/value=-DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_FREQ/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_FREQ/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_FREQ/value=40 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_LD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_LD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_LD/value=eagle.flash.4m1m.ld -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_MODE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_MODE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_MODE/value=dio -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_SIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_SIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.FLASH_SIZE/value=4M -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.F_CPU/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.F_CPU/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.F_CPU/value=80000000L -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_FLAGS/value=-DLWIP_OPEN_SRC -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_LIB/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_LIB/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.LWIP_LIB/value=-llwip_gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.MCU/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.MCU/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.MCU/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PROJECT_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PROJECT_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.PROJECT_NAME/value=${ProjName} -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_BLOCKSIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_BLOCKSIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_BLOCKSIZE/value=8192 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_END/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_END/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_END/value=0x3FB000 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_PAGESIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_PAGESIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_PAGESIZE/value=256 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_START/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_START/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SPIFFS_START/value=0x300000 -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SYSTEM.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SYSTEM.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.SYSTEM.PATH/value=${A.RUNTIME.PLATFORM.PATH}/system -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT.PATH/value=C\:\\Users\\mpand\\eclipse\\arduinoPlugin\\packages\\esp8266\\hardware\\esp8266\\2.3.0\\variants\\d1_mini -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.BUILD.VARIANT/value=d1_mini -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.CMD/value=xtensa-lx106-elf-ar -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AR.FLAGS/value=cru -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AS.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AS.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.AS.CMD/value=xtensa-lx106-elf-as -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.CMD/value=xtensa-lx106-elf-gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.CMD/value=xtensa-lx106-elf-gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.FLAGS/value=-g ${A.COMPILER.WARNING_FLAGS} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-L${A.COMPILER.SDK.PATH}/lib" "-L${A.COMPILER.SDK.PATH}/ld" "-T${A.BUILD.FLASH_LD}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,register_chipv6_phy -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.LIBS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.LIBS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.ELF.LIBS/value=-lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lwps -laxtls -lsmartconfig -lmesh -lwpa2 ${A.BUILD.LWIP_LIB} -lstdc++ -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.C.FLAGS/value=-c ${A.COMPILER.WARNING_FLAGS} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions\=4 -MMD -std\=gnu99 -ffunction-sections -fdata-sections -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.CMD/value=xtensa-lx106-elf-g++ -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPP.FLAGS/value=-c ${A.COMPILER.WARNING_FLAGS} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions\=4 -std\=c++11 -MMD -ffunction-sections -fdata-sections -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPREPROCESSOR.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPREPROCESSOR.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.CPREPROCESSOR.FLAGS/value=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I${A.COMPILER.SDK.PATH}/include" "-I${A.COMPILER.SDK.PATH}/lwip/include" "-I${A.BUILD.PATH}/core" -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.CMD/value=esptool -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ELF2HEX.FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ESPTOOL.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ESPTOOL.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.ESPTOOL.CMD/value=esptool.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.PATH/value=${A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH}/bin/ -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.CMD/value=xtensa-lx106-elf-gcc -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.EXTRA_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.EXTRA_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.EXTRA_FLAGS/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.S.FLAGS/value=-c -g -x assembler-with-cpp -MMD -mlongcalls -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SDK.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SDK.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SDK.PATH/value=${A.RUNTIME.PLATFORM.PATH}/tools/sdk -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SIZE.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SIZE.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.SIZE.CMD/value=xtensa-lx106-elf-size -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.ALL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.ALL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.ALL/value=-Wall -Wextra -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.DEFAULT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.DEFAULT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.DEFAULT/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.MORE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.MORE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.MORE/value=-Wall -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.NONE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.NONE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS.NONE/value=-w -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.COMPILER.WARNING_FLAGS/value=${A.COMPILER.WARNING_FLAGS.ALL} -environment/project/io.sloeber.core.toolChain.release.34549407/A.ESP8266.NETWORK.UPLOAD.TOOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.ESP8266.NETWORK.UPLOAD.TOOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.ESP8266.NETWORK.UPLOAD.TOOL/value=esp8266OTA -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.DTS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.DTS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.DTS/value=3600 -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.LOCAL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.LOCAL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.LOCAL/value=1528291486 -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.UTC/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.UTC/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.UTC/value=1528305886 -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.ZONE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.ZONE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.EXTRA.TIME.ZONE/value=-18000 -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.CORE.REFERENCED.PLATFORM/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.CORE.REFERENCED.PLATFORM/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.CORE.REFERENCED.PLATFORM/value=${JANTJE.SELECTED.PLATFORM} -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.USED.BOARDS_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.USED.BOARDS_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.USED.BOARDS_FILE/value=${JANTJE.BOARDS_FILE} -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.VARIANT.REFERENCED.PLATFORM/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.VARIANT.REFERENCED.PLATFORM/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.JANTJE.VARIANT.REFERENCED.PLATFORM/value=${JANTJE.SELECTED.PLATFORM} -environment/project/io.sloeber.core.toolChain.release.34549407/A.NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.NAME/value=esp8266 network upload -environment/project/io.sloeber.core.toolChain.release.34549407/A.NETWORK.PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.NETWORK.PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.NETWORK.PORT/value=8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.PACKAGES/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.PACKAGES/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.PACKAGES/value=${eclipse_home}/arduinoPlugin/packages -environment/project/io.sloeber.core.toolChain.release.34549407/A.PROGRAM.TOOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.PROGRAM.TOOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.PROGRAM.TOOL/value=esp8266OTA -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-ar" cru "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/arduino.ar" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN.2/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.AR.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} ${A.COMPILER.AR.EXTRA_FLAGS} "${A.BUILD.PATH}/arduino.ar" "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc" -g -Wall -Wextra -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-LC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lib" "-LC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/ld" "-Teagle.flash.4m1m.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,register_chipv6_phy -o "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.elf" -Wl,--start-group -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN.2/value=\ "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/arduino.ar" -lm -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lcrypto -lmain -lwps -laxtls -lsmartconfig -lmesh -lwpa2 -llwip_gcc -lstdc++ -Wl,--end-group "-LC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} ${A.COMPILER.C.ELF.EXTRA_FLAGS} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -Wl,--start-group ${A.OBJECT_FILES} "${A.BUILD.PATH}/arduino.ar" ${A.COMPILER.C.ELF.LIBS} -Wl,--end-group "-L${A.BUILD.PATH}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/include" "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lwip/include" "-IC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/core" -c -Wall -Wextra -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions\=4 -std\=gnu99 -ffunction-sections -fdata-sections -DF_CPU\=80000000L -DLWIP_OPEN_SRC -DARDUINO\=10802 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD\=\\"ESP8266_WEMOS_D1MINI\\"" -DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.2/value=\ -o -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.3/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.3/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN.3/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.C.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.LWIP_FLAGS} ${A.BUILD.DEBUG_PORT} ${A.BUILD.DEBUG_LEVEL} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} "-DARDUINO_BOARD\=\\"${A.BUILD.BOARD}\\"" ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/include" "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lwip/include" "-IC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/core" -c -Wall -Wextra -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions\=4 -std\=c++11 -ffunction-sections -fdata-sections -DF_CPU\=80000000L -DLWIP_OPEN_SRC -DARDUINO\=10802 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD\=\\"ESP8266_WEMOS_D1MINI\\"" -DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.2/value=\ -o -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.3/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.3/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN.3/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.CPP.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.LWIP_FLAGS} ${A.BUILD.DEBUG_PORT} ${A.BUILD.DEBUG_LEVEL} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} "-DARDUINO_BOARD\=\\"${A.BUILD.BOARD}\\"" ${A.COMPILER.CPP.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.EEP.PATTERN/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13/esptool.exe" -eo "C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/bootloaders/eboot/eboot.elf" -bo "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.bin" -bm dio -bf 40 -bz 4M -bs .text -bp 4096 -ec -eo "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.RUNTIME.TOOLS.ESPTOOL.PATH}/${A.COMPILER.ESPTOOL.CMD}" -eo "${A.RUNTIME.PLATFORM.PATH}/bootloaders/eboot/eboot.elf" -bo "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" -bm ${A.BUILD.FLASH_MODE} -bf ${A.BUILD.FLASH_FREQ} -bz ${A.BUILD.FLASH_SIZE} -bs .text -bp 4096 -ec -eo "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.SAVE_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.SAVE_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.SAVE_FILE/value=${A.BUILD.PROJECT_NAME}.${A.BUILD.VARIANT}.bin -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.TMP_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.TMP_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.OUTPUT.TMP_FILE/value=${A.BUILD.PROJECT_NAME}.bin -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/include" "-IC\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/lwip/include" "-IC\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/core" -c -g -x assembler-with-cpp -mlongcalls -DF_CPU\=80000000L -DLWIP_OPEN_SRC -DARDUINO\=10802 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD\=\\"ESP8266_WEMOS_D1MINI\\"" -DESP8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.2/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.2/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.2/value=\ -o -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.3/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.3/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN.3/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.S.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.S.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} ${A.BUILD.LWIP_FLAGS} ${A.BUILD.DEBUG_PORT} ${A.BUILD.DEBUG_LEVEL} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} "-DARDUINO_BOARD\=\\"${A.BUILD.BOARD}\\"" ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN.1/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN.1/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN.1/value="C\:\\Users\\mpand\\eclipse\\/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-size" -A "C\:\\Users\\mpand\\eclipse-workspace\\ITS1A/Release/ITS1A.elf" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX.DATA/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX.DATA/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX.DATA/value=^(?\:\\.data|\\.rodata|\\.bss)\\s+([0-9]+).* -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RECIPE.SIZE.REGEX/value=^(?\:\\.irom0\\.text|\\.text|\\.data|\\.rodata|)\\s+([0-9]+).* -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.HARDWARE.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.HARDWARE.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.HARDWARE.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.IDE.VERSION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.IDE.VERSION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.IDE.VERSION/value=10802 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.PLATFORM.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.PLATFORM.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.PLATFORM.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.REFERENCED.PLATFORM.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.REFERENCED.PLATFORM.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.REFERENCED.PLATFORM.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA-1.1.1.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA-1.1.1.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA-1.1.1.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/arduinoOTA/1.1.1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/arduinoOTA/1.1.1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA1.1.1.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA1.1.1.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ARDUINOOTA1.1.1.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/arduinoOTA/1.1.1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC-4.9.2-ATMEL3.5.4-ARDUINO2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC-4.9.2-ATMEL3.5.4-ARDUINO2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC-4.9.2-ATMEL3.5.4-ARDUINO2.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC4.9.2-ATMEL3.5.4-ARDUINO2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC4.9.2-ATMEL3.5.4-ARDUINO2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVR-GCC4.9.2-ATMEL3.5.4-ARDUINO2.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO9.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO9.PATH/value=${eclipse_home}/arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.13.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.13.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.13.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL-0.4.9.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.13.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.13.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.13.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.13 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.9.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.9.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.ESPTOOL0.4.9.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/esptool/0.4.9 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.1.2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.1.2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.1.2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.1.2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.2.0.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.2.0.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS-0.2.0.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.1.2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.1.2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.1.2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.1.2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.2.0.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.2.0.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.MKSPIFFS0.2.0.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/mkspiffs/0.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-1.20.0-26-GB404FB9-2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-1.20.0-26-GB404FB9-2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-1.20.0-26-GB404FB9-2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC1.20.0-26-GB404FB9-2.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC1.20.0-26-GB404FB9-2.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC1.20.0-26-GB404FB9-2.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2 -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLEDTR/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLEDTR/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLEDTR/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLERTS/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLERTS/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.DISABLERTS/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT.FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT.FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT.FILE/value=${A.SERIAL.PORT} -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SERIAL.PORT/value=${JANTJE.COM_PORT} -environment/project/io.sloeber.core.toolChain.release.34549407/A.SOFTWARE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.SOFTWARE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.SOFTWARE/value=ARDUINO -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/value=-v -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.PROGRAM.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.PROGRAM.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.PROGRAM.PATTERN/value=${A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/value=${A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESP8266OTA/value=${A.TOOLS.ESPTOOL.NETWORK_CMD} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.CMD/value=esptool.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/value=${A.TOOLS.ESPTOOL.NETWORK.AUTH} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK_CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK_CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.NETWORK_CMD/value=python.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.PATH/value=${A.RUNTIME.TOOLS.ESPTOOL.PATH} -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN/value="${A.TOOLS.ESPTOOL.NETWORK_CMD}" "${A.RUNTIME.PLATFORM.PATH}/tools/espota.py" -i "${A.SERIAL.PORT}" -p "${A.NETWORK.PORT}" "--auth\=${A.TOOLS.ESPTOOL.NETWORK.PASSWORD}" -f "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.QUIET/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.QUIET/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.QUIET/value= -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.VERBOSE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.VERBOSE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PARAMS.VERBOSE/value=-vv -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PATTERN/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PATTERN/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PATTERN/value="${A.TOOLS.ESPTOOL.PATH}/${A.TOOLS.ESPTOOL.CMD}" ${A.TOOLS.ESPTOOL.UPLOAD.VERBOSE} -cd ${A.UPLOAD.RESETMETHOD} -cb ${A.UPLOAD.SPEED} -cp "${A.SERIAL.PORT}" -ca 0x00000 -cf "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PROTOCOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PROTOCOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.ESPTOOL.UPLOAD.PROTOCOL/value=esp -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.CMD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.CMD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.CMD/value=mkspiffs.exe -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.TOOLS.MKSPIFFS.PATH/value=${A.RUNTIME.TOOLS.MKSPIFFS.PATH} -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.ALTID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.ALTID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.ALTID/value=no_altID -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_DATA_SIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_DATA_SIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_DATA_SIZE/value=81920 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_SIZE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_SIZE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.MAXIMUM_SIZE/value=1044464 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.PROTOCOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.PROTOCOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.PROTOCOL/value=stk500v1 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.RESETMETHOD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.RESETMETHOD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.RESETMETHOD/value=nodemcu -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.SPEED/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.SPEED/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.SPEED/value=921600 -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.TOOL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.TOOL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.TOOL/value=esptool -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.USBID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.USBID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.USBID/value=no_altID -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/A.VERSION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/A.VERSION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/A.VERSION/value=2.2.0 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ARCHITECTURE_ID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ARCHITECTURE_ID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ARCHITECTURE_ID/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARDS_FILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARDS_FILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARDS_FILE/value=C\:\\Users\\mpand\\eclipse\\arduinoPlugin\\packages\\esp8266\\hardware\\esp8266\\2.3.0\\boards.txt -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_ID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_ID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_ID/value=d1_mini -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.BOARD_NAME/value=WeMos D1 R2 & mini -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.COM_PORT/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.COM_PORT/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.COM_PORT/value=192.168.1.203 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ECLIPSE_LOCATION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ECLIPSE_LOCATION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.ECLIPSE_LOCATION/value=C\:\\Users\\mpand\\eclipse\\ -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ALL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ALL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ALL/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ARCHIVE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ARCHIVE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ARCHIVE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ASSEMBLY/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ASSEMBLY/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.ASSEMBLY/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.C.COMPILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.C.COMPILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.C.COMPILE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.COMPILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.COMPILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.COMPILE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.CPP.COMPILE/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.CPP.COMPILE/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.CPP.COMPILE/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.LINK/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.LINK/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.EXTRA.LINK/value= -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MAKE_LOCATION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MAKE_LOCATION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MAKE_LOCATION/value=${eclipse_home}/arduinoPlugin/tools/make/ -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MENU/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MENU/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.MENU/value=CpuFrequency\=80\nFlashSize\=4M1M\nUploadSpeed\=921600 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OBJCOPY/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OBJCOPY/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OBJCOPY/value=${A.RECIPE.OBJCOPY.HEX.PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OS_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OS_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.OS_NAME/value=win32 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PACKAGE_ID/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PACKAGE_ID/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PACKAGE_ID/value=esp8266 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PROJECT_NAME/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PROJECT_NAME/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.PROJECT_NAME/value=ITS1A -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SELECTED.PLATFORM/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SELECTED.PLATFORM/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SELECTED.PLATFORM/value=${eclipse_home}/arduinoPlugin/packages/esp8266/hardware/esp8266/2.3.0 -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SIZE.SWITCH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SIZE.SWITCH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.SIZE.SWITCH/value=${A.RECIPE.SIZE.PATTERN} -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.UPLOAD/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.UPLOAD/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.UPLOAD/value=esp8266 network upload -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WARNING_LEVEL/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WARNING_LEVEL/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WARNING_LEVEL/value=true -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WORKSPACE_LOCATION/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WORKSPACE_LOCATION/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/JANTJE.WORKSPACE_LOCATION/value=C\:\\Users\\mpand\\eclipse-workspace -environment/project/io.sloeber.core.toolChain.release.34549407/PATH/delimiter=; -environment/project/io.sloeber.core.toolChain.release.34549407/PATH/operation=replace -environment/project/io.sloeber.core.toolChain.release.34549407/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${SystemRoot}\\system32${PathDelimiter}${SystemRoot}${PathDelimiter}${SystemRoot}\\system32\\Wbem${PathDelimiter}${sloeber_path_extension} -environment/project/io.sloeber.core.toolChain.release.34549407/append=true -environment/project/io.sloeber.core.toolChain.release.34549407/appendContributed=true diff --git a/.svn/pristine/3a/3a91f13cef93e86b359dec164cd7d9852e8fb1c0.svn-base b/.svn/pristine/3a/3a91f13cef93e86b359dec164cd7d9852e8fb1c0.svn-base deleted file mode 100644 index a2d39e2..0000000 --- a/.svn/pristine/3a/3a91f13cef93e86b359dec164cd7d9852e8fb1c0.svn-base +++ /dev/null @@ -1,814 +0,0 @@ -//#define DEBUG(...) { Serial.println(__VA_ARGS__); } -#define DEBUG(...) { } -#define ALEXA -//#define OTA - -#include "Arduino.h" -#include -#include -#ifdef OTA -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#ifdef ALEXA -#include -#endif -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -unsigned long nowMs = 0; - -String chipId = String(ESP.getChipId(), HEX); -String ssid = "STC-"; - -StringConfigItem hostName("hostname", 63, "ITS1A"); - -AsyncWebServer server(80); -AsyncWebSocket ws("/ws"); // access at ws://[esp ip]/ws -AsyncHTTPClient httpClient; -DNSServer dns; -AsyncWiFiManager wifiManager(&server,&dns); -#ifdef ALEXA -fauxmoESP fauxmo; -#endif -ITS1ANixieDriver nixieDriver(6); -NixieDriver *pDriver = &nixieDriver; -SixNixieClock sixNixieClock(pDriver); -NixieClock *pNixieClock = &sixNixieClock; -bool timeInitialized = false; - -class Configurator { -public: - virtual void configure() = 0; -}; - -namespace ConfigSet1 { -#include -} - -namespace ConfigSet2 { -#include -} // End namespace - -namespace ConfigSet3 { -#include -} // End namespace - -namespace ConfigSet4 { -#include -} // End namespace - -namespace ConfigSet5 { -#include -} // End namespace - -StringConfigItem set1Name("set1_name", 12, "24 Hour"); -StringConfigItem set2Name("set2_name", 12, "12 Hour"); -StringConfigItem set3Name("set3_name", 12, "Fast Clock"); -StringConfigItem set4Name("set4_name", 12, "Test"); -StringConfigItem set5Name("set5_name", 12, "Manual"); -BaseConfigItem *configSetPresetNames[] = { - &set1Name, - &set2Name, - &set3Name, - &set4Name, - &set5Name, - 0 -}; - -CompositeConfigItem presetNamesConfig("preset_names", 0, configSetPresetNames); - -StringConfigItem currentSet("current_set", 4, "set1"); - -// Alexa config values -StringConfigItem date_name("date_name", 20, String("date")); -StringConfigItem backlight_name("backlight_name", 20, String("backlight")); -StringConfigItem clock_name("clock_name", 20, String("clock")); -StringConfigItem test_name("test_name", 20, String("test")); -StringConfigItem cycling_name("cycling_name", 20, String("hue cycling")); -StringConfigItem twelve_hour_name("twelve_hour_name", 20, String("12 hour")); -StringConfigItem zero_name("zero_name", 20, String("leading zero")); - -BaseConfigItem *alexaSet[] = { - // Alexa - &date_name, - &backlight_name, - &clock_name, - &test_name, - &cycling_name, - &twelve_hour_name, - &zero_name, - 0 -}; - -CompositeConfigItem alexaConfig("alexa", 0, alexaSet); - -BaseConfigItem *configSetGlobal[] = { - &hostName, - ¤tSet, - &alexaConfig, - 0 -}; - -CompositeConfigItem globalConfig("global", 0, configSetGlobal); - -BaseConfigItem *configSetRoot[] = { - &globalConfig, - &presetNamesConfig, - &ConfigSet1::config, - &ConfigSet2::config, - &ConfigSet3::config, - &ConfigSet4::config, - &ConfigSet5::config, - 0 -}; - -CompositeConfigItem rootConfig("root", 0, configSetRoot); - -EEPROMConfig config(rootConfig); - -namespace CurrentConfig { - String name("set1"); - CompositeConfigItem *config = &ConfigSet1::config; - - // Clock config values - BooleanConfigItem *time_or_date = &ConfigSet1::time_or_date; - ByteConfigItem *date_format = &ConfigSet1::date_format; - BooleanConfigItem *hour_format = &ConfigSet1::hour_format; - BooleanConfigItem *leading_zero = &ConfigSet1::leading_zero; - ByteConfigItem *fading = &ConfigSet1::fading; - ByteConfigItem *colons = &ConfigSet1::colons; - ByteConfigItem *display_on = &ConfigSet1::display_on; - ByteConfigItem *display_off = &ConfigSet1::display_off; - StringConfigItem *time_url = &ConfigSet1::time_url; - - // LED config values - ByteConfigItem *hue = &ConfigSet1::hue; - ByteConfigItem *saturation = &ConfigSet1::saturation; - BooleanConfigItem *backlight = &ConfigSet1::backlight; - BooleanConfigItem *hue_cycling = &ConfigSet1::hue_cycling; - ByteConfigItem *led_scale = &ConfigSet1::led_scale; - IntConfigItem *cycle_time = &ConfigSet1::cycle_time; - - // Extra config values - ByteConfigItem *show_date = &ConfigSet1::show_date; - ByteConfigItem *out_effect = &ConfigSet1::out_effect; - ByteConfigItem *in_effect = &ConfigSet1::in_effect; - BooleanConfigItem *display = &ConfigSet1::display; - ByteConfigItem *test_speed = &ConfigSet1::test_speed; - IntConfigItem *reset_time = &ConfigSet1::reset_time; - IntConfigItem *set_time = &ConfigSet1::set_time; - BooleanConfigItem *hv = &ConfigSet1::hv; - - // Alexa config values - StringConfigItem *date_name = &::date_name; - StringConfigItem *backlight_name = &::backlight_name; - StringConfigItem *clock_name = &::clock_name; - StringConfigItem *test_name = &::test_name; - StringConfigItem *cycling_name = &::cycling_name; - StringConfigItem *twelve_hour_name = &::twelve_hour_name; - StringConfigItem *zero_name = &::zero_name; - - void setCurrent(const String &name) { - if (CurrentConfig::name == name) { - return; // Already set to this - } - - BaseConfigItem *newConfig = rootConfig.get(name.c_str()); - - if (newConfig) { - DEBUG("Changing preset to:"); - DEBUG(name); - CurrentConfig::name = name; - config = static_cast(newConfig); - - /* - * I hate doing this. - */ - - // Clock config values - time_or_date = static_cast(config->get("time_or_date")); - date_format = static_cast(config->get("date_format")); - hour_format = static_cast(config->get("hour_format")); - leading_zero = static_cast(config->get("leading_zero")); - fading = static_cast(config->get("fading")); - colons = static_cast(config->get("colons")); - display_on = static_cast(config->get("display_on")); - display_off = static_cast(config->get("display_off")); - time_url = static_cast(config->get("time_url")); - - // LED config values - hue = static_cast(config->get("hue")); - saturation = static_cast(config->get("saturation")); - backlight = static_cast(config->get("backlight")); - hue_cycling = static_cast(config->get("hue_cycling")); - led_scale = static_cast(config->get("led_scale")); - cycle_time = static_cast(config->get("cycle_time")); - - // Extra config values - show_date = static_cast(config->get("show_date")); - out_effect = static_cast(config->get("out_effect")); - in_effect = static_cast(config->get("in_effect")); - display = static_cast(config->get("display")); - test_speed = static_cast(config->get("test_speed")); - reset_time = static_cast(config->get("reset_time")); - set_time = static_cast(config->get("set_time")); - hv = static_cast(config->get("hv")); - - BaseConfigItem *currentSetName = rootConfig.get("current_set"); - currentSetName->fromString(name); - currentSetName->put(); - } - } -} - -class ITS1ANixieDriverConfigurator : Configurator { -public: - ITS1ANixieDriverConfigurator(ITS1ANixieDriver &driver) : driver(driver) { - - } - - virtual void configure() { - driver.setIndicator(*CurrentConfig::colons); - driver.setResetTime(*CurrentConfig::reset_time); - driver.setSetTime(*CurrentConfig::set_time); - } - -private: - ITS1ANixieDriver &driver; -}; - -class SixNixieClockConfigurator : Configurator { -public: - SixNixieClockConfigurator(SixNixieClock &clock) : clock(clock) { - } - - virtual void configure() { - if (timeInitialized || !*CurrentConfig::display) { - clock.setClockMode(*CurrentConfig::display); - clock.setCountSpeed(*CurrentConfig::test_speed); - } else { - clock.setClockMode(false); - clock.setCountSpeed(60); - } - - clock.setHV(*CurrentConfig::hv); - clock.setFadeMode(*CurrentConfig::fading); - clock.setTimeMode(*CurrentConfig::time_or_date); - clock.setDateFormat(*CurrentConfig::date_format); - clock.set12hour(*CurrentConfig::hour_format); - clock.setLeadingZero(*CurrentConfig::leading_zero); - clock.setOnOff(*CurrentConfig::display_on, *CurrentConfig::display_off); - clock.setAlternateInterval(*CurrentConfig::show_date); - clock.setOutEffect(*CurrentConfig::out_effect); - clock.setInEffect(*CurrentConfig::in_effect); - } - -private: - SixNixieClock &clock; -}; - -ITS1ANixieDriverConfigurator driverConfigurator(nixieDriver); -SixNixieClockConfigurator clockConfigurator(sixNixieClock); - -void initClock() { - pDriver->init(); - pNixieClock->setNixieDriver(pDriver); - pNixieClock->init(); -} - -void grabInts(String s, int *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void grabBytes(String s, byte *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void readTimeFailed(String msg) { - DEBUG(msg); -} - -#define SYNC_HOURS 3 -#define SYNC_MINS 4 -#define SYNC_SECS 5 -#define SYNC_DAY 2 -#define SYNC_MONTH 1 -#define SYNC_YEAR 0 - -void setTimeFromInternet() { - String body = httpClient.getBody(); - DEBUG(String("Got response") + body); - int intValues[6]; - grabInts(body, &intValues[0], ","); - - timeInitialized = true; - setTime(intValues[SYNC_HOURS], intValues[SYNC_MINS], intValues[SYNC_SECS], intValues[SYNC_DAY], intValues[SYNC_MONTH], intValues[SYNC_YEAR]); -} - -void setTimeFromWifiManager() { - static String oldWifiTime = ""; - - const String &wifiTime = wifiManager.getWifiTime(); - if (wifiTime != oldWifiTime) { - DEBUG(String("Setting time from wifi manager") + wifiTime); - int intValues[6]; - grabInts(wifiTime, &intValues[0], ","); - - timeInitialized = true; - oldWifiTime = wifiTime; - setTime(intValues[SYNC_HOURS], intValues[SYNC_MINS], intValues[SYNC_SECS], intValues[SYNC_DAY], intValues[SYNC_MONTH], intValues[SYNC_YEAR]); - } -} - -const byte numLEDs = 8; - -LEDRGB leds(numLEDs, 1); - -void ledDisplay(bool on=true) { - // Scale normalized brightness to range 0..255 - byte brightness = *CurrentConfig::led_scale; - leds.ledDisplay(*CurrentConfig::hue, *CurrentConfig::saturation, brightness); -} - -void ledTimerHandler() { - ledDisplay(); - if (*CurrentConfig::hue_cycling) { - broadcastUpdate(*CurrentConfig::hue); - *CurrentConfig::hue = (*CurrentConfig::hue + 1) % 256; - } -} - -AsyncWiFiManagerParameter *hostnameParam; - -void initFromEEPROM() { -// config.setDebugPrint(debugPrint); - config.init(); -// rootConfig.debug(debugPrint); - DEBUG(hostName); - rootConfig.get(); // Read all of the config values from EEPROM - String currentSetName = currentSet; - CurrentConfig::setCurrent(currentSetName); - DEBUG(hostName); - - hostnameParam = new AsyncWiFiManagerParameter("Hostname", "clock host name", hostName.value.c_str(), 63); -} - -void createSSID() { - // Create a unique SSID that includes the hostname. Max SSID length is 32! - ssid = (chipId + hostName).substring(0, 31); -} - -void getTime() { - if (WiFi.status() == WL_CONNECTED) { - httpClient.makeRequest(setTimeFromInternet, readTimeFailed); - } -} - -void StartOTA() { -#ifdef OTA - // Port defaults to 8266 - ArduinoOTA.setPort(8266); - - // Hostname defaults to esp8266-[ChipID] - ArduinoOTA.setHostname(((String)hostName).c_str()); - - // No authentication by default -// ArduinoOTA.setPassword("in14"); - - ArduinoOTA.onStart([]() {DEBUG("OTA Start");}); - ArduinoOTA.onEnd([]() {DEBUG("\nOTA End");}); - ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - DEBUG("OTA Progress: ");DEBUG(progress / (total / 100));DEBUG("\r"); - }); - ArduinoOTA.onError([](ota_error_t error) { - DEBUG("OTA Error:") - switch (error) { - case OTA_AUTH_ERROR: DEBUG("Auth Failed"); break; - case OTA_BEGIN_ERROR: DEBUG("Begin Failed"); break; - case OTA_CONNECT_ERROR: DEBUG("Connect Failed"); break; - case OTA_RECEIVE_ERROR: DEBUG("Receive Failed"); break; - case OTA_END_ERROR: DEBUG("End Failed"); break; - } - }); - - ArduinoOTA.begin(); -#endif //OTA -} - -void mainHandler(AsyncWebServerRequest *request) { - DEBUG("Got request") - request->send(SPIFFS, "/index.html"); -} - -void sendFavicon(AsyncWebServerRequest *request) { - DEBUG("Got favicon request") - request->send(SPIFFS, "/assets/favicon-32x32.png", "image/png"); -} - -void broadcastUpdate(const BaseConfigItem& item) { - const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1); - DynamicJsonBuffer jsonBuffer(bufferSize); - - JsonObject& root = jsonBuffer.createObject(); - root["type"] = "sv.update"; - - JsonObject& value = root.createNestedObject("value"); - String rawJSON = item.toJSON(); // This object needs to hang around until we are done serializing. - value[item.name] = ArduinoJson::RawJson(rawJSON.c_str()); - -// root.printTo(*debugPrint); - - size_t len = root.measureLength(); - AsyncWebSocketMessageBuffer * buffer = ws.makeBuffer(len); // creates a buffer (len + 1) for you. - if (buffer) { - root.printTo((char *)buffer->get(), len + 1); - ws.textAll(buffer); - } -} - -WSConfigHandler wsClockHandler(rootConfig, "clock"); -WSConfigHandler wsLEDHandler(rootConfig, "leds"); -WSConfigHandler wsExtraHandler(rootConfig, "extra"); -WSGlobalConfigHandler wsAlexaHandler(rootConfig, "alexa"); -WSPresetValuesHandler wsPresetValuesHandler(rootConfig); -WSInfoHandler wsInfoHandler(ssid); -WSPresetNamesHandler wsPresetNamesHandler(rootConfig); - -String *items[] = { - &WSMenuHandler::clockMenu, - &WSMenuHandler::ledsMenu, - &WSMenuHandler::extraMenu, - &WSMenuHandler::alexaMenu, - &WSMenuHandler::presetsMenu, - &WSMenuHandler::infoMenu, - &WSMenuHandler::presetNamesMenu, - 0 -}; - -WSMenuHandler wsMenuHandler(items); - -WSHandler *wsHandlers[] = { - &wsMenuHandler, - &wsClockHandler, - &wsLEDHandler, - &wsExtraHandler, - &wsPresetValuesHandler, - &wsInfoHandler, - &wsPresetNamesHandler, - &wsAlexaHandler -}; - -void updateValue(int screen, String pair) { - int index = pair.indexOf(':'); - DEBUG(pair) - // _key has to hang around because key points to an internal data structure - String _key = pair.substring(0, index); - const char* key = _key.c_str(); - String value = pair.substring(index+1); - if (screen == 4) { // Presets - CurrentConfig::setCurrent(value); - StringConfigItem temp(key, 10, value); - broadcastUpdate(temp); - } else if (screen == 6) { // Preset names - BaseConfigItem *item = rootConfig.get(key); - if (item != 0) { - item->fromString(value); - item->put(); - broadcastUpdate(*item); - } - } else if (screen == 7) { // Alexa switch names - BaseConfigItem *item = rootConfig.get(key); - if (item != 0) { -#ifdef ALEXA - StringConfigItem *sItem = static_cast(item); - int deviceId = fauxmo.getDeviceId(sItem->value.c_str()); - if (deviceId > 0) { - fauxmo.renameDevice(deviceId, value.c_str()); - } - item->fromString(value); - item->put(); - broadcastUpdate(*item); -#endif - } - } else { - BaseConfigItem *item = CurrentConfig::config->get(key); - if (item != 0) { - item->fromString(value); - item->put(); - // Shouldn't special case this stuff. Should attach listeners to the config value! - // TODO: This won't work if we just switch change sets instead! -#ifndef USE_NTP - if (strcmp(key, CurrentConfig::time_url->name) == 0) { - httpClient.initialize(value); - getTime(); - } -#endif - broadcastUpdate(*item); - } - } -} - -/* - * Handle application protocol - */ -void handleWSMsg(AsyncWebSocketClient *client, char *data) { - String wholeMsg(data); - int code = wholeMsg.substring(0, wholeMsg.indexOf(':')).toInt(); - - if (code < 9) { - wsHandlers[code]->handle(client, data); - } else { - String message = wholeMsg.substring(wholeMsg.indexOf(':')+1); - int screen = message.substring(0, message.indexOf(':')).toInt(); - String pair = message.substring(message.indexOf(':')+1); - updateValue(screen, pair); - } -} - -/* - * Handle transport protocol - */ -void wsHandler(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) { - //Handle WebSocket event - switch (type) { - case WS_EVT_CONNECT: - DEBUG("WS connected") - ; - break; - case WS_EVT_DISCONNECT: - DEBUG("WS disconnected") - ; - break; - case WS_EVT_ERROR: - DEBUG("WS error") - ; - DEBUG((char* )data) - ; - break; - case WS_EVT_PONG: - DEBUG("WS pong") - ; - break; - case WS_EVT_DATA: // Yay we got something! - DEBUG("WS data") - ; - AwsFrameInfo * info = (AwsFrameInfo*) arg; - if (info->final && info->index == 0 && info->len == len) { - //the whole message is in a single frame and we got all of it's data - if (info->opcode == WS_TEXT) { - DEBUG("WS text data"); - data[len] = 0; - handleWSMsg(client, (char *) data); - } else { - DEBUG("WS binary data"); - } - } else { - DEBUG("WS data was split up!"); - } - break; - } -} - -void eepromUpdate() { - config.commit(); -} - -void snoozeUpdate(); - -void startFauxMo() { - fauxmo.enable(true); - fauxmo.addDevice(CurrentConfig::date_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::backlight_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::clock_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::test_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::cycling_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::twelve_hour_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::zero_name->value.c_str()); - - fauxmo.onSetState([](unsigned char device_id, const char *device_name, bool state) { - BooleanConfigItem *item = 0; - switch (device_id) { - case 0: - item = &(*CurrentConfig::time_or_date = !state); - break; - case 1: - item = &(*CurrentConfig::backlight = state); - break; - case 2: - item = &(*CurrentConfig::hv = state); - break; - case 3: - item = &(*CurrentConfig::display = !state); - break; - case 4: - item = &(*CurrentConfig::hue_cycling = state); - break; - case 5: - item = &(*CurrentConfig::hour_format = state); - break; - case 6: - item = &(*CurrentConfig::leading_zero = state); - break; - } - - if (item != 0) { - item->put(); - } - broadcastUpdate(*item); - }); - fauxmo.onGetState([](unsigned char device_id, const char * device_name) { - bool ret = false; - switch (device_id) { - case 0: - ret = *CurrentConfig::time_or_date; - ret = !ret; - break; - case 1: - ret = *CurrentConfig::backlight; - break; - case 2: - ret = *CurrentConfig::hv; - break; - case 3: - ret = *CurrentConfig::display; - ret = !ret; - break; - case 4: - ret = *CurrentConfig::hue_cycling; - break; - case 5: - ret = *CurrentConfig::hour_format; - break; - case 6: - ret = *CurrentConfig::leading_zero; - break; - } - - return ret; - }); -} - -void SetupServer() { - DEBUG("SetupServer()"); - hostName = String(hostnameParam->getValue()); - hostName.put(); - config.commit(); - DEBUG(hostName.value); - MDNS.begin(hostName.value.c_str()); - MDNS.addService("http", "tcp", 80); - StartOTA(); - - server.serveStatic("/", SPIFFS, "/"); - server.on("/", HTTP_GET, mainHandler).setFilter(ON_STA_FILTER); - server.on("/assets/favicon-32x32.png", HTTP_GET, sendFavicon); - server.serveStatic("/assets", SPIFFS, "/assets"); - - // attach AsyncWebSocket - ws.onEvent(wsHandler); - server.addHandler(&ws); - server.begin(); - ws.enable(true); - - getTime(); - - startFauxMo(); -} - -SoftMSTimer::TimerInfo syncTimeTimer = { - 3600000, // 1 hour between syncs - 0, - true, - getTime -}; - -SoftMSTimer::TimerInfo ledTimer = { - 60000, - 0, - true, - ledTimerHandler -}; - -SoftMSTimer::TimerInfo eepromUpdateTimer = { - 60000, - 0, - true, - eepromUpdate -}; - -SoftMSTimer::TimerInfo *infos[] = { - &syncTimeTimer, - &ledTimer, - &eepromUpdateTimer, - 0 -}; - -SoftMSTimer timedFunctions(infos); - -void setup() -{ - chipId.toUpperCase(); -// Serial.begin(921600); -// Serial.begin(115200); - - EEPROM.begin(1024); - SPIFFS.begin(); - - initFromEEPROM(); - - initClock(); - - createSSID(); - - DEBUG("Set wifiManager") - wifiManager.setDebugOutput(true); - wifiManager.setConnectTimeout(10); - wifiManager.addParameter(hostnameParam); - wifiManager.setSaveConfigCallback(SetupServer); - wifiManager.startConfigPortalModeless(ssid.c_str(), "secretsauce"); - - httpClient.initialize("http://time.nixies.us/getTime/America/New_York"); - getTime(); - - nowMs = millis(); - - DEBUG("Exit setup") -} - -int r = 256; -unsigned long nextMs = 0; - -void loop() -{ -#ifdef OTA - ArduinoOTA.handle(); -#endif - wifiManager.loop(); - setTimeFromWifiManager(); -#ifdef ALEXA - fauxmo.handle(); -#endif - - nowMs = millis(); - - driverConfigurator.configure(); - clockConfigurator.configure(); - - bool clockOn = pNixieClock->isOn(); - - pNixieClock->loop(nowMs); - - if (*CurrentConfig::backlight && clockOn) { - ledTimer.interval = *CurrentConfig::cycle_time * 1000L / 256; - ledTimer.enabled = true; - } else { - if (ledTimer.enabled) { - ledTimer.enabled = false; - ledDisplay(false); - } - } - - timedFunctions.loop(); -} diff --git a/.svn/pristine/3a/3af3234db2fe3a5916008e48a565a6a32a3c32f0.svn-base b/.svn/pristine/3a/3af3234db2fe3a5916008e48a565a6a32a3c32f0.svn-base deleted file mode 100644 index 8c7d7db..0000000 --- a/.svn/pristine/3a/3af3234db2fe3a5916008e48a565a6a32a3c32f0.svn-base +++ /dev/null @@ -1,482 +0,0 @@ - - - - - - STC - - - - - - - - - - - - - - - - - - - - - Navigation - - - - - nixies.us - STC - - - - - - \ No newline at end of file diff --git a/.svn/pristine/3e/3e3cd767f28fde9604491af9d27bfadf6c3f3e2f.svn-base b/.svn/pristine/3e/3e3cd767f28fde9604491af9d27bfadf6c3f3e2f.svn-base deleted file mode 100644 index 0a3be7a..0000000 --- a/.svn/pristine/3e/3e3cd767f28fde9604491af9d27bfadf6c3f3e2f.svn-base +++ /dev/null @@ -1,22 +0,0 @@ -Exception (28): -epc1=0x40203acb epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 - -ctx: cont -sp: 3fff0ec0 end: 3fff10b0 offset: 01a0 - ->>>stack>>> -3fff1060: 00000000 00000000 3ffefbac 40203ac8 -3fff1070: 3fffdad0 3ffeffc8 3ffefbac 40202342 -3fff1080: feefeffe feefeffe feefeffe feefeffe -3fff1090: feefeffe 00000000 3fff007d 4020dc60 -3fff10a0: feefeffe feefeffe 3fff0090 40100718 -<< { - console.log(`stdout: ${data}`); - }); - - proc.stderr.on('data', (data) => { - console.log(`stderr: ${data}`); - }); - - proc.on('exit', function (code) { - cb(); - }); -}); - -gulp.task('mkspiffs', ['buildfs_inline', 'load_properties'], function(cb) { - var args = [ - "-d", - "5", - "-c", - props["project_loc"] + "/" + web_dist, - "-p", - props["A.BUILD.SPIFFS_PAGESIZE"], - "-b", - props["A.BUILD.SPIFFS_BLOCKSIZE"], - "-s", - props["A.BUILD.SPIFFS_SIZE"], - spiffs_file - ]; - - var cmd = props["A.TOOLS.MKSPIFFS.PATH"] + "/" + props["A.TOOLS.MKSPIFFS.CMD"]; - log("Spawning task: ", cmd); - var proc = spawn(cmd, args); - - proc.stdout.on('data', (data) => { - console.log(`stdout: ${data}`); - }); - - proc.stderr.on('data', (data) => { - console.log(`stderr: ${data}`); - }); - - proc.on('exit', function (code) { - cb(); - }); -}); - -/* Clean destination folder */ -gulp.task('clean', function() { - return del([web_dist + '/*']); -}); - -/* Copy static files */ -gulp.task('files', function() { - return gulp.src([ - web_src + '/**/*.{jpg,jpeg,png,ico,gif}', - web_src + '/fsversion' - ]) - .pipe(gulp.dest(web_dist)); -}); - -/* Process HTML, CSS, JS --- INLINE --- */ -gulp.task('inline', function() { - return gulp.src(web_src + '/*.html') - .pipe(inline({ - base: web_src, - js: uglify, - css: cleancss, - disabledTypes: ['svg', 'img'] - })) - .pipe(htmlmin({ - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true - })) - .pipe(gzip()) - .pipe(gulp.dest(web_dist)); -}) - -gulp.task('buildfs_inline', ['clean'], function() { - return gulp.src(web_src + '/*.html') - .pipe(inline({ - base: web_src, - js: uglify, - css: [cleancss], - disabledTypes: ['svg', 'img'] - })) - .pipe(inlineImages({ - webRoot: web_src - })) - .pipe(htmlmin({ - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true - })) - .pipe(gzip()) - .pipe(gulp.dest(web_dist)); -}); - -/* Process HTML, CSS, JS */ -gulp.task('html', function() { - return gulp.src(web_src + '/*.html') - .pipe(useref()) - .pipe(plumber()) - .pipe(gulpif('*.css', cleancss())) - .pipe(gulpif('*.js', uglify())) - .pipe(gulpif('*.html', htmlmin({ - collapseWhitespace: true, - removeComments: true, - minifyCSS: true, - minifyJS: true - }))) - .pipe(gzip()) - .pipe(gulp.dest(web_dist)); -}); - -/* Build file system */ -gulp.task('buildfs', ['clean', 'files', 'html']); -gulp.task('buildfs2', ['clean', 'files', 'inline']); -gulp.task('default', ['clean', 'buildfs_inline']); - \ No newline at end of file diff --git a/.svn/pristine/42/423cd571d1cf4ce7ab00f1af5ce421adf9eb781e.svn-base b/.svn/pristine/42/423cd571d1cf4ce7ab00f1af5ce421adf9eb781e.svn-base deleted file mode 100644 index 40cc8b4..0000000 --- a/.svn/pristine/42/423cd571d1cf4ce7ab00f1af5ce421adf9eb781e.svn-base +++ /dev/null @@ -1,76 +0,0 @@ - - - Extra - - - - - - - Minutes between showing date (0 is never) - - - - Show Date Effect - - - - Bubble - Slide Left - Scroll Left - Slide Right - Scroll Right - Random - - - - - Hide Date Effect - - - - Bubble - Slide Left - Scroll Left - Slide Right - Scroll Right - Random - - - - - - - Display - - - - - - Ticks/min - - - - Reset Pulse Length (uS) - - Set Pulse Length (uS) - - - - - HV - - - - - - - diff --git a/.svn/pristine/44/44e96bb2359ffbafdb07fe8d60e7f95775e6d5ec.svn-base b/.svn/pristine/44/44e96bb2359ffbafdb07fe8d60e7f95775e6d5ec.svn-base deleted file mode 100644 index c39fba5..0000000 --- a/.svn/pristine/44/44e96bb2359ffbafdb07fe8d60e7f95775e6d5ec.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -/*! roundSlider v1.3 | (c) 2015-2016, Soundar | MIT license | http://roundsliderui.com/licence.html */ -;(function($,window,undefined){"use strict";function $proxy(n,t){return typeof $.proxy=="function"?$.proxy(n,t):function(i){n.call(t,i)}}function $data(n,t,i){return typeof $.data=="function"?$.data(n,t,i):i?void 0:$(n).hasClass("rs-control")}function $isPlainObject(n){if(typeof $.isPlainObject=="function")return $.isPlainObject(n);var t=JSON.stringify(n);return typeof n=="object"&&n.length===undefined&&t.length>2&&t.substr(0,1)==="{"&&t.substr(t.length-1)==="}"}function isNumber(n){return n=parseFloat(n),typeof n=="number"&&!isNaN(n)}function createElement(n){var t=n.split(".");return $(document.createElement(t[0])).addClass(t[1]||"")}function getdistance(n,t){return Math.sqrt((n.x-t.x)*(n.x-t.x)+(n.y-t.y)*(n.y-t.y))}function setTransform(n,t){return n.css("-webkit-transform","rotate("+t+"deg)"),n.css("-moz-transform","rotate("+t+"deg)"),n.css("-ms-transform","rotate("+t+"deg)"),n.css("-o-transform","rotate("+t+"deg)"),n.css("transform","rotate("+t+"deg)"),n}function RoundSlider(n,t){n.id&&(window[n.id]=this),this.control=$(n),this.options=$.extend({},this.defaults,t),this._raise("beforeCreate")!==!1?(this._init(),this._raise("create")):this._removeData()}function CreateRoundSlider(n,t){for(var i,r,u=0;u=c&&s<=h&&(n.preventDefault(),r=this.control.find(".rs-handle.rs-focus"),this.control.attr("tabindex","0").focus().removeAttr("tabindex"),i.hasClass("rs-seperator")?(t=i.parent().hasClass("rs-start")?this.options.min:this.options.max,u=this._valueToAngle(t)):(f=this._getAngleValue(e,o),u=f.angle,t=f.value),this._rangeSlider&&(r=this.control.find(".rs-handle.rs-focus"),this._active=r.length==1?parseFloat(r.attr("index")):this._handle2.value-t=35&&t<=40)&&(t>=37&&t<=40&&this._removeAnimation(),r=this["_handle"+this._active],n.preventDefault(),t==38||t==37?i=this._round(this._limitValue(r.value+this.options.step)):t==39||t==40?i=this._round(this._limitValue(r.value-this._getMinusStep(r.value))):t==36?i=this._getKeyValue("Home"):t==35&&(i=this._getKeyValue("End")),u=this._valueToAngle(i),this._changeSliderValue(i,u),this._raiseEvent("change"))},_handleKeyUp:function(){this._addAnimation()},_getMinusStep:function(n){if(n==this.options.max){var t=(this.options.max-this.options.min)%this.options.step;return t==0?this.options.step:t}return this.options.step},_getKeyValue:function(n){return this._rangeSlider?n=="Home"?this._active==1?this.options.min:this._handle1.value:this._active==1?this._handle2.value:this.options.max:n=="Home"?this.options.min:this.options.max},_elementScroll:function(n){if(!this._isReadOnly){n.preventDefault();var i=n.originalEvent||n,r,t,f,u;(u=i.wheelDelta?i.wheelDelta/60:i.detail?-i.detail/2:0,u!=0)&&(this._updateActiveHandle(n),r=this["_handle"+this._active],t=r.value+(u>0?this.options.step:-this._getMinusStep(r.value)),t=this._limitValue(t),f=this._valueToAngle(t),this._removeAnimation(),this._changeSliderValue(t,f),this._raiseEvent("change"),this._addAnimation())}},_updateActiveHandle:function(n){var t=$(n.target);t.hasClass("rs-handle")&&t.parent().parent()[0]==this.control[0]&&(this.bar=t.parent(),this._active=parseFloat(t.attr("index"))),this.bar.find(".rs-handle").hasClass("rs-focus")||this.bar.find(".rs-handle").focus()},_bindControlEvents:function(n){this[n](this.control,"mousedown",this._elementDown),this[n](this.control,"touchstart",this._elementDown)},_bindScrollEvents:function(n){this[n](this.control,"mousewheel",this._elementScroll),this[n](this.control,"DOMMouseScroll",this._elementScroll)},_bindMouseEvents:function(n){this[n]($(document),"mousemove",this._handleMove),this[n]($(document),"mouseup",this._handleUp),this[n]($(document),"mouseleave",this._handleUp),this[n]($(document),"touchmove",this._handleMove),this[n]($(document),"touchend",this._handleUp),this[n]($(document),"touchcancel",this._handleUp)},_bindKeyboardEvents:function(n){this[n]($(document),"keydown",this._handleKeyDown),this[n]($(document),"keyup",this._handleKeyUp)},_changeSliderValue:function(n,t){var u=this._oriAngle(t),i=this._limitAngle(t);if(this._rangeSlider||this._showRange){if(this._active==1&&u<=this._oriAngle(this._handle2.angle)||this._active==2&&u>=this._oriAngle(this._handle1.angle)||this._invertRange){this["_handle"+this._active]={angle:t,value:n},this.options.value=this._rangeSlider?this._handle1.value+","+this._handle2.value:n,this.bar.rsRotate(i),this._updateARIA(n);var r=this._oriAngle(this._handle2.angle)-this._oriAngle(this._handle1.angle),f="1",e="0";r<=180&&!(r<0&&r>-180)&&(f="0",e="1"),this.block2.css("opacity",f),this.block3.css("opacity",e),(this._active==1?this.block4:this.block2).rsRotate(i-180),(this._active==1?this.block1:this.block3).rsRotate(i)}}else this["_handle"+this._active]={angle:t,value:n},this.options.value=n,this.bar.rsRotate(i),this._updateARIA(n)},_updateARIA:function(n){var i=this.options.min,r=this.options.max,t;this.bar.children().attr({"aria-valuenow":n}),this.options.sliderType=="range"?(t=this._handles(),t.eq(0).attr({"aria-valuemin":i}),t.eq(1).attr({"aria-valuemax":r}),this._active==1?t.eq(1).attr({"aria-valuemin":n}):t.eq(0).attr({"aria-valuemax":n})):this.bar.children().attr({"aria-valuemin":i,"aria-valuemax":r})},_checkKO:function(){var f=this._dataElement().data("bind"),t,i,r,n,u;if(typeof f=="string"&&typeof ko=="object"){if(t=ko.dataFor(this._dataElement()[0]),typeof t=="undefined")return!0;for(i=f.split(","),n=0;nthis._end){if(!t)return i;n=this._start+(r<=this._end-r?0:this._end)}else if(t&&(u=this._handleDragDistance,isNumber(u)&&Math.abs(f-r)>u))return i;return n},_processStepByAngle:function(n){var t=this._angleToValue(n);return this._processStepByValue(t)},_processStepByValue:function(n){var r=this.options.step,e,t,u,f,i,o;return e=(n-this.options.min)%r,t=n-e,u=this._limitValue(t+r),f=this._limitValue(t-r),i=n>=t?n-tn-f?t:f,i=this._round(i),o=this._valueToAngle(i),{value:i,angle:o}},_round:function(n){var t=this.options.step.toString().split(".");return t[1]?parseFloat(n.toFixed(t[1].length)):Math.round(n)},_oriAngle:function(n){var t=n-this._start;return t<0&&(t+=360),t},_limitAngle:function(n){return n>360+this._start&&(n-=360),nthis.options.max&&(n=this.options.max),n},_angleToValue:function(n){var t=this.options;return this._oriAngle(n)/this._end*(t.max-t.min)+t.min},_valueToAngle:function(n){var t=this.options;return(n-t.min)/(t.max-t.min)*this._end+this._start},_appendHiddenField:function(){this._hiddenField=this._hiddenField||createElement("input"),this._hiddenField.attr({type:"hidden",name:this._dataElement()[0].id||""}),this.control.append(this._hiddenField),this._updateHidden()},_updateHidden:function(){var n=this.options.value;this._hiddenField.val(n),(this._isKO||this._isAngular)&&this._hiddenField.trigger("change"),this._isAngular&&(this._scope()[this._ngName]=n)},_updateTooltip:function(){this.tooltip&&!this.tooltip.hasClass("hover")&&this.tooltip.html(this._getTooltipValue()),this._updateTooltipPos()},_updateTooltipPos:function(){this.tooltip&&this.tooltip.css(this._getTooltipPos())},_getTooltipPos:function(){var n=this.options.circleShape,t;if(n=="full"||n=="pie"||n.indexOf("custom")===0)return{"margin-top":-this.tooltip.outerHeight()/2,"margin-left":-this.tooltip.outerWidth()/2};if(n.indexOf("half")!=-1){switch(n){case"half-top":case"half-bottom":t={"margin-left":-this.tooltip.outerWidth()/2};break;case"half-left":case"half-right":t={"margin-top":-this.tooltip.outerHeight()/2}}return t}return{}},_getTooltipValue:function(n){if(this._rangeSlider){var t=this.options.value.split(",");return n?t[0]+" - "+t[1]:this._tooltipValue(t[0],1)+" - "+this._tooltipValue(t[1],2)}return n?this.options.value:this._tooltipValue(this.options.value)},_tooltipValue:function(n,t){var i=this._raise("tooltipFormat",{value:n,handle:this._handleArgs(t)});return i!=null&&typeof i!="boolean"?i:n},_validateStartAngle:function(){var n=this.options.startAngle;return n=(isNumber(n)?parseFloat(n):0)%360,n<0&&(n+=360),this.options.startAngle=n,n},_validateEndAngle:function(){var end=this.options.endAngle;if(typeof end=="string"&&isNumber(end)&&(end.charAt(0)==="+"||end.charAt(0)==="-"))try{end=eval(this.options.startAngle+end.charAt(0)+Math.abs(parseFloat(end)))}catch(e){console.warn(e)}return end=(isNumber(end)?parseFloat(end):360)%360,end<=this.options.startAngle&&(end+=360),end},_refreshCircleShape:function(){var n=this.options.circleShape,i=["half-top","half-bottom","half-left","half-right","quarter-top-left","quarter-top-right","quarter-bottom-right","quarter-bottom-left","pie","custom-half","custom-quarter"],t;i.indexOf(n)==-1&&(t=["h1","h2","h3","h4","q1","q2","q3","q4","3/4","ch","cq"].indexOf(n),n=t!=-1?i[t]:n=="half"?"half-top":n=="quarter"?"quarter-top-left":"full"),this.options.circleShape=n},_appendOverlay:function(){var n=this.options.circleShape;n=="pie"?this._checkOverlay(".rs-overlay",270):(n=="custom-half"||n=="custom-quarter")&&(this._checkOverlay(".rs-overlay1",180),n=="custom-quarter"&&this._checkOverlay(".rs-overlay2",this._end))},_checkOverlay:function(n,t){var i=this.container.children(n);i.length==0&&(i=createElement("div"+n+" rs-transition rs-bg-color"),this.container.append(i)),i.rsRotate(this._start+t)},_checkDataType:function(){var i=this.options,r,n,t,u=this._props();for(r in u.numberType)n=u.numberType[r],t=i[n],i[n]=isNumber(t)?parseFloat(t):this.defaults[n];for(r in u.booleanType)n=u.booleanType[r],t=i[n],i[n]=t=="false"?!1:!!t;for(r in u.stringType)n=u.stringType[r],t=i[n],i[n]=(""+t).toLowerCase()},_validateSliderType:function(){var n=this.options.sliderType.toLowerCase();this._rangeSlider=this._showRange=!1,n=="range"?this._rangeSlider=this._showRange=!0:n.indexOf("min")!=-1?(this._showRange=!0,n="min-range"):n="default",this.options.sliderType=n},_updateStartEnd:function(){var n=this.options.circleShape;n!="full"&&(n.indexOf("quarter")!=-1?this.options.endAngle="+90":n.indexOf("half")!=-1?this.options.endAngle="+180":n=="pie"&&(this.options.endAngle="+270"),n=="quarter-top-left"||n=="half-top"?this.options.startAngle=0:n=="quarter-top-right"||n=="half-right"?this.options.startAngle=90:n=="quarter-bottom-right"||n=="half-bottom"?this.options.startAngle=180:(n=="quarter-bottom-left"||n=="half-left")&&(this.options.startAngle=270))},_validateStartEnd:function(){this._start=this._validateStartAngle(),this._end=this._validateEndAngle();var n=this._start=2?(isNumber(i[0])?i[0]:t)+","+(isNumber(i[1])?i[1]:f):isNumber(i[0])?t+","+i[0]:t+","+t:isNumber(n)?t+","+n:t+","+t:typeof n=="string"?(u=i.pop(),r=isNumber(u)?parseFloat(u):t):r=isNumber(n)?parseFloat(n):t,this.options.value=r},_validateModelValue:function(){var r=this.options.value,i;if(this._rangeSlider){var u=r.split(","),n=parseFloat(u[0]),t=parseFloat(u[1]);n=this._limitValue(n),t=this._limitValue(t),this._invertRange||n>t&&(t=n),this._handle1=this._processStepByValue(n),this._handle2=this._processStepByValue(t),this.options.value=this._handle1.value+","+this._handle2.value}else i=this._showRange?2:this._active||1,this["_handle"+i]=this._processStepByValue(this._limitValue(r)),this._showRange&&(this._handle1=this._handleDefaults()),this.options.value=this["_handle"+i].value},_isBrowserSupported:function(){for(var t=["borderRadius","WebkitBorderRadius","MozBorderRadius","OBorderRadius","msBorderRadius","KhtmlBorderRadius"],n=0;n=0||n.indexOf("Trident/")>=0)&&this.control.css({"-ms-touch-action":"none","touch-action":"none"})},_raise:function(n,t){var u=this.options,i=u[n],r=!0;return t=t||{value:u.value},t.options=u,i&&(t.type=n,typeof i=="string"&&(i=window[i]),$.isFunction(i)&&(r=i.call(this,t),r=r===!1?!1:r)),this.control.trigger($.Event?$.Event(n,t):n),r},_bind:function(n,t,i){$(n).bind(t,$proxy(i,this))},_unbind:function(n,t,i){$.proxy?$(n).unbind(t,$.proxy(i,this)):$(n).unbind(t)},_getInstance:function(){return $data(this._dataElement()[0],pluginName)},_removeData:function(){var n=this._dataElement()[0];$.removeData&&$.removeData(n,pluginName),n.id&&delete window[n.id]},_destroyControl:function(){this._isInputType&&this._dataElement().insertAfter(this.control).attr("type","text"),this.control.empty().removeClass("rs-control").height("").width(""),this._removeAnimation(),this._bindControlEvents("_unbind")},_updateWidth:function(){this.lastBlock.css("padding",this.options.width),this._refreshHandle()},_readOnly:function(n){this._isReadOnly=n,this.container.removeClass("rs-readonly"),n&&this.container.addClass("rs-readonly")},_get:function(n){return this.options[n]},_set:function(n,t){var i=this._props();if($.inArray(n,i.numberType)!=-1){if(!isNumber(t))return;t=parseFloat(t)}else $.inArray(n,i.booleanType)!=-1?t=t=="false"?!1:!!t:$.inArray(n,i.stringType)!=-1&&(t=t.toLowerCase());if(this.options[n]!=t){this.options[n]=t;switch(n){case"startAngle":case"endAngle":this._validateStartEnd(),this._updateSeperator(),this._appendOverlay();case"min":case"max":case"step":case"value":this._analyzeModelValue(),this._validateModelValue(),this._setValue(),this._updatePre(),this._updateHidden(),this._updateTooltip();break;case"radius":this._setRadius(),this._updateTooltipPos();break;case"width":this._removeAnimation(),this._updateWidth(),this._updateTooltipPos(),this._addAnimation(),this._refreshSeperator();break;case"handleSize":this._refreshHandle();break;case"handleShape":this._setHandleShape();break;case"animation":this._setAnimation();break;case"showTooltip":this.options.showTooltip?this._appendTooltip():this._removeTooltip();break;case"editableTooltip":this._tooltipEditable(),this._updateTooltipPos();break;case"disabled":this.options.disabled?this.disable():this.enable();break;case"readOnly":this.options.readOnly?this._readOnly(!0):!this.options.disabled&&this._readOnly(!1);break;case"mouseScrollAction":this._bindScrollEvents(this.options.mouseScrollAction?"_bind":"_unbind");break;case"lineCap":this._refreshSeperator();break;case"circleShape":this._refreshCircleShape(),this.options.circleShape=="full"&&(this.options.startAngle=0,this.options.endAngle="+360");case"sliderType":this._destroyControl(),this._onInit()}return this}},option:function(n,t){if(this._getInstance()&&this._isBrowserSupport){if($isPlainObject(n)){(n.min!==undefined||n.max!==undefined)&&(n.min!==undefined&&(this.options.min=n.min,delete n.min),n.max!==undefined&&(this.options.max=n.max,delete n.max),n.value==undefined&&this._set("value",this.options.value));for(var i in n)this._set(i,n[i])}else if(n&&typeof n=="string"){if(t===undefined)return this._get(n);this._set(n,t)}return this}},getValue:function(n){if(this.options.sliderType=="range"&&isNumber(n)){var t=parseFloat(n);if(t==1||t==2)return this["_handle"+t].value}return this._get("value")},setValue:function(n,t){if(isNumber(n)){if(isNumber(t))if(this.options.sliderType=="range"){var i=parseFloat(t),r=parseFloat(n);i==1?n=r+","+this._handle2.value:i==2&&(n=this._handle1.value+","+r)}else this.options.sliderType=="default"&&(this._active=t);this._set("value",n)}},disable:function(){this.options.disabled=!0,this.container.addClass("rs-disabled"),this._readOnly(!0)},enable:function(){this.options.disabled=!1,this.container.removeClass("rs-disabled"),this.options.readOnly||this._readOnly(!1)},destroy:function(){this._getInstance()&&(this._destroyControl(),this._removeData(),this._isInputType&&this.control.remove())}},$.fn.rsRotate=function(n){return setTransform(this,n)},typeof $.fn.outerHeight=="undefined"&&($.fn.outerHeight=function(){return this[0].offsetHeight},$.fn.outerWidth=function(){return this[0].offsetWidth}),typeof $.fn.hasClass=="undefined"&&($.fn.hasClass=function(n){return this[0].className.split(" ").indexOf(n)!==-1}),typeof $.fn.offset=="undefined"&&($.fn.offset=function(){return{left:this[0].offsetLeft,top:this[0].offsetTop}}),$.fn[pluginName].prototype=RoundSlider.prototype})(jQuery,window); \ No newline at end of file diff --git a/.svn/pristine/45/454e0f77b952d7dba6ee01f6b9da274f983a8004.svn-base b/.svn/pristine/45/454e0f77b952d7dba6ee01f6b9da274f983a8004.svn-base deleted file mode 100644 index 7822d3c..0000000 --- a/.svn/pristine/45/454e0f77b952d7dba6ee01f6b9da274f983a8004.svn-base +++ /dev/null @@ -1,230 +0,0 @@ -#!/usr/bin/env node - -/* - * A test server - */ -'use strict'; - -var express = require('express'); -var http = require('http'); -var ws = require('ws'); - -var app = new express(); - -var server = http.createServer(app); - -var wss = new ws.Server({ server }); - -app.use(function(req, res, next) { - console.log(req.originalUrl); - next(); -}); - -app.use(express.static('web')); - -var pages = { - "type":"sv.init.menu", - "value": [ - {"1": { "url" : "clock.html", "title" : "Clock" }}, - {"2": { "url" : "leds.html", "title" : "LEDs" }}, - {"3": { "url" : "extra.html", "title" : "Extra" }}, - {"4": { "url" : "presets.html", "title" : "Presets" }}, - {"5": { "url" : "info.html", "title" : "Info" }}, - {"6": { "url" : "preset_names.html", "title" : "Preset Names", "noNav" : true}} - ] - } - - -var sendValues = function(conn, screen) { -} - -var sendPages = function(conn) { - var json = JSON.stringify(pages); - conn.send(json); - console.log(json); -} - -var sendClockValues = function(conn) { - var json = '{"type":"sv.init.clock","value":'; - json += JSON.stringify(state[1]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendLEDValues = function(conn) { - var json = '{"type":"sv.init.leds","value":'; - json += JSON.stringify(state[2]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendExtraValues = function(conn) { - var json = '{"type":"sv.init.extra","value":'; - json += JSON.stringify(state[3]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendPresetValues = function(conn) { - var json = '{"type":"sv.init.presets","value":'; - json += JSON.stringify(state[4]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendInfoValues = function(conn) { - var json = '{"type":"sv.init.info","value":'; - json += JSON.stringify(state[5]); - json += '}'; - console.log(json); - conn.send(json); -} - -var sendPresetNames = function(conn) { - var json = '{"type":"sv.init.preset_names","value":'; - json += JSON.stringify(state[6]); - json += '}'; - console.log(json); - conn.send(json); -} - -var state = { - "1": { - 'time_or_date': true, - 'date_format': 1, - 'hour_format': true, - 'fading': 2, - 'colons': 1, - 'leading_zero': true, - 'display_on': 10, - 'display_off': 20, - 'time_server': 'http://niobo.us/blah' - }, - "2": { - 'backlight': true, - 'hue_cycling': false, - 'cycle_time': 100, - 'hue': 180, - 'saturation': 190, - 'brightness': 200 - }, - "3": { - 'show_date': true, - 'display': true, - 'test': 60 - }, - "4": { - 'preset' : 'set3' - }, - "5": { - 'esp_boot_version' : "1234", - 'esp_free_heap' : "5678", - 'esp_sketch_size' : "90123", - 'esp_sketch_space' : "4567", - 'esp_flash_size' : "8901", - 'esp_chip_id' : "chip id", - 'wifi_ip_address' : "192.168.1.1", - 'wifi_mac_address' : "0E:12:34:56:78", - 'wifi_ssid' : "STC-Wonderful" - }, - "6": { - 'set1_name' : 'Clock 1', - 'set2_name' : 'Clock 2', - 'set3_name' : 'Clock 3', - 'set4_name' : 'Conditioner', - 'set5_name' : 'Manual' - } -} - -var broadcastUpdate = function(conn, field, value) { - var json = '{"type":"sv.update","value":{' + '"' + field + '":' + value + '}}'; - console.log(json); - try { - conn.send(json); - } catch (e) { - - } -} - -var updateValue = function(conn, screen, pair) { - console.log(pair); - var index = pair.indexOf(':'); - - var key = pair.substring(0, index); - var value = pair.substring(index+1); - try { - value = JSON.parse(value); - } catch (e) { - - } - - if (screen == 4 || screen == 6) { - state[screen][key] = '"' + value + '"'; - } else { - state[screen][key] = value; - } - broadcastUpdate(conn, key, state[screen][key]); -} - -var updateHue = function(conn) { - var hue = state['2']['hue']; - hue = (hue + 1) % 256; -// updateValue(conn, 2, "hue:" + hue); -} - -wss.on('connection', function(conn) { - console.log('connected'); - var hueTimer = setInterval(updateHue, 500, conn); - - //connection is up, let's add a simple simple event - conn.on('message', function(message) { - - //log the received message and send it back to the client - console.log('received: %s', message); - var code = parseInt(message.substring(0, message.indexOf(':'))); - - switch (code) { - case 0: - sendPages(conn); - break; - case 1: - sendClockValues(conn); - break; - case 2: - sendLEDValues(conn); - break; - case 3: - sendExtraValues(conn); - break; - case 4: - sendPresetValues(conn); - break; - case 5: - sendInfoValues(conn); - break; - case 6: - sendPresetNames(conn); - break; - case 9: - message = message.substring(message.indexOf(':')+1); - var screen = message.substring(0, message.indexOf(':')); - var pair = message.substring(message.indexOf(':')+1); - updateValue(conn, screen, pair); - break; - } - }); - - conn.on('close', function() { - clearInterval(hueTimer); - }); -}); - -//start our server -server.listen(process.env.PORT || 8080, function() { - console.log('Server started on port' + server.address().port + ':)'); -}); - diff --git a/.svn/pristine/46/46bbadabd33c26beb7decb3ba16ff95662af5518.svn-base b/.svn/pristine/46/46bbadabd33c26beb7decb3ba16ff95662af5518.svn-base deleted file mode 100644 index d3285a6..0000000 --- a/.svn/pristine/46/46bbadabd33c26beb7decb3ba16ff95662af5518.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "its1a", - "version": "0.1.0", - "description": "nixies.us its1a clock web assets", - "main": "index.js", - "scripts": { - "test": "echo blah" - }, - "author": "Paul Andrews", - "license": "ISC", - "devDependencies": { - "grunt": "~0.4.5", - "grunt-contrib-concat": "^0.5.1", - "grunt-contrib-jshint": "~0.10.0", - "grunt-contrib-nodeunit": "~0.4.1", - "grunt-contrib-uglify": "~0.5.0", - "grunt-contrib-watch": "*", - "gulp": "*", - "gulp-beautify": "*", - "del": "^2.2.1", - "gulp-clean-css": "*", - "gulp-gzip": "*", - "gulp-htmlmin": "*", - "gulp-if": "*", - "gulp-inline": "*", - "gulp-plumber": "*", - "gulp-uglify": "*", - "gulp-useref": "*", - "gulp-css-inline-images": "*", - "gulp-base64-favicon": "*", - "yargs": "^5.0.0" - } -} diff --git a/.svn/pristine/53/535dbfe1c30de3cbd1bb77fd1a6c7cc93358d8ed.svn-base b/.svn/pristine/53/535dbfe1c30de3cbd1bb77fd1a6c7cc93358d8ed.svn-base deleted file mode 100644 index 4663006..0000000 --- a/.svn/pristine/53/535dbfe1c30de3cbd1bb77fd1a6c7cc93358d8ed.svn-base +++ /dev/null @@ -1,869 +0,0 @@ -//#define DEBUG(...) { Serial.println(__VA_ARGS__); } -#define DEBUG(...) { } -#define ALEXA -//#define OTA - -#include "Arduino.h" -#include -#include -#ifdef OTA -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#ifdef ALEXA -#include -#endif -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -unsigned long nowMs = 0; - -String chipId = String(ESP.getChipId(), HEX); -String ssid = "STC-"; - -StringConfigItem hostName("hostname", 63, "ITS1A"); - -AsyncWebServer server(80); -AsyncWebSocket ws("/ws"); // access at ws://[esp ip]/ws -AsyncHTTPClient httpClient; -DNSServer dns; -AsyncWiFiManager wifiManager(&server,&dns); -#ifdef ALEXA -fauxmoESP fauxmo; -#endif -ITS1ANixieDriver nixieDriver(6); -NixieDriver *pDriver = &nixieDriver; -SixNixieClock sixNixieClock(pDriver); -NixieClock *pNixieClock = &sixNixieClock; -bool timeInitialized = false; - -class Configurator { -public: - virtual void configure() = 0; -}; - -namespace ConfigSet1 { -#include -} - -namespace ConfigSet2 { -#include -} // End namespace - -namespace ConfigSet3 { -#include -} // End namespace - -namespace ConfigSet4 { -#include -} // End namespace - -namespace ConfigSet5 { -#include -} // End namespace - -StringConfigItem set1Name("set1_name", 12, "24 Hour"); -StringConfigItem set2Name("set2_name", 12, "12 Hour"); -StringConfigItem set3Name("set3_name", 12, "Fast Clock"); -StringConfigItem set4Name("set4_name", 12, "Test"); -StringConfigItem set5Name("set5_name", 12, "Manual"); -BaseConfigItem *configSetPresetNames[] = { - &set1Name, - &set2Name, - &set3Name, - &set4Name, - &set5Name, - 0 -}; - -CompositeConfigItem presetNamesConfig("preset_names", 0, configSetPresetNames); - -StringConfigItem currentSet("current_set", 4, "set1"); - -// Alexa config values -StringConfigItem date_name("date_name", 20, String("date")); -StringConfigItem backlight_name("backlight_name", 20, String("backlight")); -StringConfigItem underlight_name("underlight_name", 20, String("underlight")); -StringConfigItem clock_name("clock_name", 20, String("clock")); -StringConfigItem test_name("test_name", 20, String("test")); -StringConfigItem cycling_name("cycling_name", 20, String("hue cycling")); -StringConfigItem twelve_hour_name("twelve_hour_name", 20, String("12 hour")); -StringConfigItem zero_name("zero_name", 20, String("leading zero")); - -BaseConfigItem *alexaSet[] = { - // Alexa - &date_name, - &backlight_name, - &underlight_name, - &clock_name, - &test_name, - &cycling_name, - &twelve_hour_name, - &zero_name, - 0 -}; - -CompositeConfigItem alexaConfig("alexa", 0, alexaSet); - -BaseConfigItem *configSetGlobal[] = { - &hostName, - ¤tSet, - &alexaConfig, - 0 -}; - -CompositeConfigItem globalConfig("global", 0, configSetGlobal); - -BaseConfigItem *configSetRoot[] = { - &globalConfig, - &presetNamesConfig, - &ConfigSet1::config, - &ConfigSet2::config, - &ConfigSet3::config, - &ConfigSet4::config, - &ConfigSet5::config, - 0 -}; - -CompositeConfigItem rootConfig("root", 0, configSetRoot); - -EEPROMConfig config(rootConfig); - -namespace CurrentConfig { - String name("set1"); - CompositeConfigItem *config = &ConfigSet1::config; - - // Clock config values - BooleanConfigItem *time_or_date = &ConfigSet1::time_or_date; - ByteConfigItem *date_format = &ConfigSet1::date_format; - BooleanConfigItem *hour_format = &ConfigSet1::hour_format; - BooleanConfigItem *leading_zero = &ConfigSet1::leading_zero; - ByteConfigItem *fading = &ConfigSet1::fading; - ByteConfigItem *colons = &ConfigSet1::colons; - ByteConfigItem *display_on = &ConfigSet1::display_on; - ByteConfigItem *display_off = &ConfigSet1::display_off; - StringConfigItem *time_url = &ConfigSet1::time_url; - - // LED config values - ByteConfigItem *hue = &ConfigSet1::hue; - ByteConfigItem *saturation = &ConfigSet1::saturation; - BooleanConfigItem *backlight = &ConfigSet1::backlight; - BooleanConfigItem *underlight = &ConfigSet1::underlight; - BooleanConfigItem *hue_cycling = &ConfigSet1::hue_cycling; - ByteConfigItem *led_scale = &ConfigSet1::led_scale; - IntConfigItem *cycle_time = &ConfigSet1::cycle_time; - - // Extra config values - ByteConfigItem *show_date = &ConfigSet1::show_date; - ByteConfigItem *out_effect = &ConfigSet1::out_effect; - ByteConfigItem *in_effect = &ConfigSet1::in_effect; - BooleanConfigItem *display = &ConfigSet1::display; - ByteConfigItem *test_speed = &ConfigSet1::test_speed; - IntConfigItem *reset_time = &ConfigSet1::reset_time; - IntConfigItem *set_time = &ConfigSet1::set_time; - BooleanConfigItem *hv = &ConfigSet1::hv; - - // Alexa config values - StringConfigItem *date_name = &::date_name; - StringConfigItem *backlight_name = &::backlight_name; - StringConfigItem *underlight_name = &::underlight_name; - StringConfigItem *clock_name = &::clock_name; - StringConfigItem *test_name = &::test_name; - StringConfigItem *cycling_name = &::cycling_name; - StringConfigItem *twelve_hour_name = &::twelve_hour_name; - StringConfigItem *zero_name = &::zero_name; - - void setCurrent(const String &name) { - if (CurrentConfig::name == name) { - return; // Already set to this - } - - BaseConfigItem *newConfig = rootConfig.get(name.c_str()); - - if (newConfig) { - DEBUG("Changing preset to:"); - DEBUG(name); - CurrentConfig::name = name; - config = static_cast(newConfig); - - /* - * I hate doing this. - */ - - // Clock config values - time_or_date = static_cast(config->get("time_or_date")); - date_format = static_cast(config->get("date_format")); - hour_format = static_cast(config->get("hour_format")); - leading_zero = static_cast(config->get("leading_zero")); - fading = static_cast(config->get("fading")); - colons = static_cast(config->get("colons")); - display_on = static_cast(config->get("display_on")); - display_off = static_cast(config->get("display_off")); - time_url = static_cast(config->get("time_url")); - - // LED config values - hue = static_cast(config->get("hue")); - saturation = static_cast(config->get("saturation")); - backlight = static_cast(config->get("backlight")); - underlight = static_cast(config->get("underlight")); - hue_cycling = static_cast(config->get("hue_cycling")); - led_scale = static_cast(config->get("led_scale")); - cycle_time = static_cast(config->get("cycle_time")); - - // Extra config values - show_date = static_cast(config->get("show_date")); - out_effect = static_cast(config->get("out_effect")); - in_effect = static_cast(config->get("in_effect")); - display = static_cast(config->get("display")); - test_speed = static_cast(config->get("test_speed")); - reset_time = static_cast(config->get("reset_time")); - set_time = static_cast(config->get("set_time")); - hv = static_cast(config->get("hv")); - - BaseConfigItem *currentSetName = rootConfig.get("current_set"); - currentSetName->fromString(name); - currentSetName->put(); - } - } -} - -class ITS1ANixieDriverConfigurator : Configurator { -public: - ITS1ANixieDriverConfigurator(ITS1ANixieDriver &driver) : driver(driver) { - - } - - virtual void configure() { - driver.setIndicator(*CurrentConfig::colons); - driver.setResetTime(*CurrentConfig::reset_time); - driver.setSetTime(*CurrentConfig::set_time); - } - -private: - ITS1ANixieDriver &driver; -}; - -class SixNixieClockConfigurator : Configurator { -public: - SixNixieClockConfigurator(SixNixieClock &clock) : clock(clock) { - } - - virtual void configure() { - if (timeInitialized || !*CurrentConfig::display) { - clock.setClockMode(*CurrentConfig::display); - clock.setCountSpeed(*CurrentConfig::test_speed); - } else { - clock.setClockMode(false); - clock.setCountSpeed(60); - } - - clock.setHV(*CurrentConfig::hv); - clock.setFadeMode(*CurrentConfig::fading); - clock.setTimeMode(*CurrentConfig::time_or_date); - clock.setDateFormat(*CurrentConfig::date_format); - clock.set12hour(*CurrentConfig::hour_format); - clock.setLeadingZero(*CurrentConfig::leading_zero); - clock.setOnOff(*CurrentConfig::display_on, *CurrentConfig::display_off); - clock.setAlternateInterval(*CurrentConfig::show_date); - clock.setOutEffect(*CurrentConfig::out_effect); - clock.setInEffect(*CurrentConfig::in_effect); - } - -private: - SixNixieClock &clock; -}; - -ITS1ANixieDriverConfigurator driverConfigurator(nixieDriver); -SixNixieClockConfigurator clockConfigurator(sixNixieClock); - -void initClock() { - pDriver->init(); - pNixieClock->setNixieDriver(pDriver); - pNixieClock->init(); -} - -void grabInts(String s, int *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void grabBytes(String s, byte *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void readTimeFailed(String msg) { - DEBUG(msg); -} - -#define SYNC_HOURS 3 -#define SYNC_MINS 4 -#define SYNC_SECS 5 -#define SYNC_DAY 2 -#define SYNC_MONTH 1 -#define SYNC_YEAR 0 - -void setTimeFromInternet() { - String body = httpClient.getBody(); - DEBUG(String("Got response") + body); - int intValues[6]; - grabInts(body, &intValues[0], ","); - - timeInitialized = true; - setTime(intValues[SYNC_HOURS], intValues[SYNC_MINS], intValues[SYNC_SECS], intValues[SYNC_DAY], intValues[SYNC_MONTH], intValues[SYNC_YEAR]); -} - -void setTimeFromWifiManager() { - static String oldWifiTime = ""; - - const String &wifiTime = wifiManager.getWifiTime(); - if (wifiTime != oldWifiTime) { - DEBUG(String("Setting time from wifi manager") + wifiTime); - int intValues[6]; - grabInts(wifiTime, &intValues[0], ","); - - timeInitialized = true; - oldWifiTime = wifiTime; - setTime(intValues[SYNC_HOURS], intValues[SYNC_MINS], intValues[SYNC_SECS], intValues[SYNC_DAY], intValues[SYNC_MONTH], intValues[SYNC_YEAR]); - } -} - -const byte numLEDs = 10; -#define LED_PIN 1 -LEDRGB leds(numLEDs, LED_PIN); - -void ledDisplay(bool backLight=true, bool underLight=true) { - // Scale normalized brightness to range 0..255 - static byte brightness = 255; - if (!backLight && !underLight) { - if (brightness == 0) { - return; - } else { - brightness = 0; - } - } else { - if (brightness == 0) { - pinMode(LED_PIN, OUTPUT); - digitalWrite(LED_PIN, LOW); - } - brightness = *CurrentConfig::led_scale; - } - - if (!backLight) { - leds.setLedColorHSV(*CurrentConfig::hue, *CurrentConfig::saturation, 0); - } else { - leds.setLedColorHSV(*CurrentConfig::hue, *CurrentConfig::saturation, brightness); - } - - for (int i=0; i<6; i++) { - leds.ledDisplay(i); - } - - if (!underLight) { - leds.setLedColorHSV(*CurrentConfig::hue, *CurrentConfig::saturation, 0); - } else { - leds.setLedColorHSV(*CurrentConfig::hue, *CurrentConfig::saturation, brightness); - } - - for (int i=6; i<10; i++) { - leds.ledDisplay(i); - } - - leds.show(); - - if (brightness == 0) { - pinMode(LED_PIN, INPUT); -// digitalWrite(LED_PIN, HIGH); - } -} - -void ledTimerHandler() { - ledDisplay(*CurrentConfig::backlight, *CurrentConfig::underlight); - if (*CurrentConfig::hue_cycling) { - broadcastUpdate(*CurrentConfig::hue); - *CurrentConfig::hue = (*CurrentConfig::hue + 1) % 256; - } -} - -AsyncWiFiManagerParameter *hostnameParam; - -void initFromEEPROM() { -// config.setDebugPrint(debugPrint); - config.init(); -// rootConfig.debug(debugPrint); - DEBUG(hostName); - rootConfig.get(); // Read all of the config values from EEPROM - String currentSetName = currentSet; - CurrentConfig::setCurrent(currentSetName); - DEBUG(hostName); - - hostnameParam = new AsyncWiFiManagerParameter("Hostname", "clock host name", hostName.value.c_str(), 63); -} - -void createSSID() { - // Create a unique SSID that includes the hostname. Max SSID length is 32! - ssid = (chipId + hostName).substring(0, 31); -} - -void getTime() { - if (WiFi.status() == WL_CONNECTED) { - httpClient.makeRequest(setTimeFromInternet, readTimeFailed); - } -} - -void StartOTA() { -#ifdef OTA - // Port defaults to 8266 - ArduinoOTA.setPort(8266); - - // Hostname defaults to esp8266-[ChipID] - ArduinoOTA.setHostname(((String)hostName).c_str()); - - // No authentication by default -// ArduinoOTA.setPassword("in14"); - - ArduinoOTA.onStart([]() {DEBUG("OTA Start");}); - ArduinoOTA.onEnd([]() {DEBUG("\nOTA End");}); - ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - DEBUG("OTA Progress: ");DEBUG(progress / (total / 100));DEBUG("\r"); - }); - ArduinoOTA.onError([](ota_error_t error) { - DEBUG("OTA Error:") - switch (error) { - case OTA_AUTH_ERROR: DEBUG("Auth Failed"); break; - case OTA_BEGIN_ERROR: DEBUG("Begin Failed"); break; - case OTA_CONNECT_ERROR: DEBUG("Connect Failed"); break; - case OTA_RECEIVE_ERROR: DEBUG("Receive Failed"); break; - case OTA_END_ERROR: DEBUG("End Failed"); break; - } - }); - - ArduinoOTA.begin(); -#endif //OTA -} - -void mainHandler(AsyncWebServerRequest *request) { - DEBUG("Got request") - request->send(SPIFFS, "/index.html"); -} - -void sendFavicon(AsyncWebServerRequest *request) { - DEBUG("Got favicon request") - request->send(SPIFFS, "/assets/favicon-32x32.png", "image/png"); -} - -void broadcastUpdate(const BaseConfigItem& item) { - const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1); - DynamicJsonBuffer jsonBuffer(bufferSize); - - JsonObject& root = jsonBuffer.createObject(); - root["type"] = "sv.update"; - - JsonObject& value = root.createNestedObject("value"); - String rawJSON = item.toJSON(); // This object needs to hang around until we are done serializing. - value[item.name] = ArduinoJson::RawJson(rawJSON.c_str()); - -// root.printTo(*debugPrint); - - size_t len = root.measureLength(); - AsyncWebSocketMessageBuffer * buffer = ws.makeBuffer(len); // creates a buffer (len + 1) for you. - if (buffer) { - root.printTo((char *)buffer->get(), len + 1); - ws.textAll(buffer); - } -} - -WSConfigHandler wsClockHandler(rootConfig, "clock"); -WSConfigHandler wsLEDHandler(rootConfig, "leds"); -WSConfigHandler wsExtraHandler(rootConfig, "extra"); -WSGlobalConfigHandler wsAlexaHandler(rootConfig, "alexa"); -WSPresetValuesHandler wsPresetValuesHandler(rootConfig); -WSInfoHandler wsInfoHandler(ssid); -WSPresetNamesHandler wsPresetNamesHandler(rootConfig); - -String *items[] = { - &WSMenuHandler::clockMenu, - &WSMenuHandler::ledsMenu, - &WSMenuHandler::extraMenu, - &WSMenuHandler::alexaMenu, - &WSMenuHandler::presetsMenu, - &WSMenuHandler::infoMenu, - &WSMenuHandler::presetNamesMenu, - 0 -}; - -WSMenuHandler wsMenuHandler(items); - -WSHandler *wsHandlers[] = { - &wsMenuHandler, - &wsClockHandler, - &wsLEDHandler, - &wsExtraHandler, - &wsPresetValuesHandler, - &wsInfoHandler, - &wsPresetNamesHandler, - &wsAlexaHandler -}; - -void updateValue(int screen, String pair) { - int index = pair.indexOf(':'); - DEBUG(pair) - // _key has to hang around because key points to an internal data structure - String _key = pair.substring(0, index); - const char* key = _key.c_str(); - String value = pair.substring(index+1); - if (screen == 4) { // Presets - CurrentConfig::setCurrent(value); - StringConfigItem temp(key, 10, value); - broadcastUpdate(temp); - } else if (screen == 6) { // Preset names - BaseConfigItem *item = rootConfig.get(key); - if (item != 0) { - item->fromString(value); - item->put(); - broadcastUpdate(*item); - } - } else if (screen == 7) { // Alexa switch names - BaseConfigItem *item = rootConfig.get(key); - if (item != 0) { -#ifdef ALEXA - StringConfigItem *sItem = static_cast(item); - int deviceId = fauxmo.getDeviceId(sItem->value.c_str()); - if (deviceId > 0) { - fauxmo.renameDevice(deviceId, value.c_str()); - } - item->fromString(value); - item->put(); - broadcastUpdate(*item); -#endif - } - } else { - BaseConfigItem *item = CurrentConfig::config->get(key); - if (item != 0) { - item->fromString(value); - item->put(); - // Shouldn't special case this stuff. Should attach listeners to the config value! - // TODO: This won't work if we just switch change sets instead! -#ifndef USE_NTP - if (strcmp(key, CurrentConfig::time_url->name) == 0) { - httpClient.initialize(value); - getTime(); - } -#endif - broadcastUpdate(*item); - } - } -} - -/* - * Handle application protocol - */ -void handleWSMsg(AsyncWebSocketClient *client, char *data) { - String wholeMsg(data); - int code = wholeMsg.substring(0, wholeMsg.indexOf(':')).toInt(); - - if (code < 9) { - wsHandlers[code]->handle(client, data); - } else { - String message = wholeMsg.substring(wholeMsg.indexOf(':')+1); - int screen = message.substring(0, message.indexOf(':')).toInt(); - String pair = message.substring(message.indexOf(':')+1); - updateValue(screen, pair); - } -} - -/* - * Handle transport protocol - */ -void wsHandler(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) { - //Handle WebSocket event - switch (type) { - case WS_EVT_CONNECT: - DEBUG("WS connected") - ; - break; - case WS_EVT_DISCONNECT: - DEBUG("WS disconnected") - ; - break; - case WS_EVT_ERROR: - DEBUG("WS error") - ; - DEBUG((char* )data) - ; - break; - case WS_EVT_PONG: - DEBUG("WS pong") - ; - break; - case WS_EVT_DATA: // Yay we got something! - DEBUG("WS data") - ; - AwsFrameInfo * info = (AwsFrameInfo*) arg; - if (info->final && info->index == 0 && info->len == len) { - //the whole message is in a single frame and we got all of it's data - if (info->opcode == WS_TEXT) { - DEBUG("WS text data"); - data[len] = 0; - handleWSMsg(client, (char *) data); - } else { - DEBUG("WS binary data"); - } - } else { - DEBUG("WS data was split up!"); - } - break; - } -} - -void eepromUpdate() { - config.commit(); -} - -void snoozeUpdate(); - -void startFauxMo() { - fauxmo.enable(true); - fauxmo.addDevice(CurrentConfig::date_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::backlight_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::underlight_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::clock_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::test_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::cycling_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::twelve_hour_name->value.c_str()); - fauxmo.addDevice(CurrentConfig::zero_name->value.c_str()); - - fauxmo.onSetState([](unsigned char device_id, const char *device_name, bool state) { - BooleanConfigItem *item = 0; - switch (device_id) { - case 0: - item = &(*CurrentConfig::time_or_date = !state); - break; - case 1: - item = &(*CurrentConfig::backlight = state); - break; - case 2: - item = &(*CurrentConfig::underlight = state); - break; - case 3: - item = &(*CurrentConfig::hv = state); - break; - case 4: - item = &(*CurrentConfig::display = !state); - break; - case 5: - item = &(*CurrentConfig::hue_cycling = state); - break; - case 6: - item = &(*CurrentConfig::hour_format = state); - break; - case 7: - item = &(*CurrentConfig::leading_zero = state); - break; - } - - if (item != 0) { - item->put(); - } - broadcastUpdate(*item); - }); - fauxmo.onGetState([](unsigned char device_id, const char * device_name) { - bool ret = false; - switch (device_id) { - case 0: - ret = *CurrentConfig::time_or_date; - ret = !ret; - break; - case 1: - ret = *CurrentConfig::backlight; - break; - case 2: - ret = *CurrentConfig::underlight; - break; - case 3: - ret = *CurrentConfig::hv; - break; - case 4: - ret = *CurrentConfig::display; - ret = !ret; - break; - case 5: - ret = *CurrentConfig::hue_cycling; - break; - case 6: - ret = *CurrentConfig::hour_format; - break; - case 7: - ret = *CurrentConfig::leading_zero; - break; - } - - return ret; - }); -} - -void SetupServer() { - DEBUG("SetupServer()"); - hostName = String(hostnameParam->getValue()); - hostName.put(); - config.commit(); - DEBUG(hostName.value); - MDNS.begin(hostName.value.c_str()); - MDNS.addService("http", "tcp", 80); - StartOTA(); - - getTime(); - - startFauxMo(); -} - -SoftMSTimer::TimerInfo syncTimeTimer = { - 3600000, // 1 hour between syncs - 0, - true, - getTime -}; - -SoftMSTimer::TimerInfo ledTimer = { - 60000, - 0, - true, - ledTimerHandler -}; - -SoftMSTimer::TimerInfo eepromUpdateTimer = { - 60000, - 0, - true, - eepromUpdate -}; - -SoftMSTimer::TimerInfo *infos[] = { - &syncTimeTimer, - &ledTimer, - &eepromUpdateTimer, - 0 -}; - -SoftMSTimer timedFunctions(infos); - -void setup() -{ - chipId.toUpperCase(); -// Serial.begin(921600); -// Serial.begin(115200); - - EEPROM.begin(1024); - SPIFFS.begin(); - - initFromEEPROM(); - - // Enable LEDs - leds.begin(); - ledDisplay(*CurrentConfig::backlight, *CurrentConfig::underlight); - - initClock(); - - createSSID(); - - server.serveStatic("/", SPIFFS, "/"); - server.on("/", HTTP_GET, mainHandler).setFilter(ON_STA_FILTER); - server.on("/assets/favicon-32x32.png", HTTP_GET, sendFavicon); - server.serveStatic("/assets", SPIFFS, "/assets"); - - // attach AsyncWebSocket - ws.onEvent(wsHandler); - server.addHandler(&ws); - server.begin(); - ws.enable(true); - - DEBUG("Set wifiManager") - wifiManager.setDebugOutput(true); - wifiManager.setConnectTimeout(10); - wifiManager.addParameter(hostnameParam); - wifiManager.setSaveConfigCallback(SetupServer); - wifiManager.startConfigPortalModeless(ssid.c_str(), "secretsauce"); - - httpClient.initialize("http://time.nixies.us/getTime/America/New_York"); - getTime(); - - nowMs = millis(); - - DEBUG("Exit setup") -} - -int r = 256; -unsigned long nextMs = 0; - -void loop() -{ -#ifdef OTA - ArduinoOTA.handle(); -#endif - wifiManager.loop(); - setTimeFromWifiManager(); -#ifdef ALEXA - fauxmo.handle(); -#endif - - nowMs = millis(); - - driverConfigurator.configure(); - clockConfigurator.configure(); - - bool clockOn = pNixieClock->isOn(); - - pNixieClock->loop(nowMs); - - if ((*CurrentConfig::backlight || *CurrentConfig::underlight) && clockOn) { - ledTimer.interval = *CurrentConfig::cycle_time * 1000L / 256; - ledTimer.enabled = true; - } else { - if (ledTimer.enabled) { - ledTimer.enabled = false; - ledDisplay(false, false); - } - } - - timedFunctions.loop(); -} diff --git a/.svn/pristine/54/5404a7c12335b679086d2a131bc1a8dd006832f2.svn-base b/.svn/pristine/54/5404a7c12335b679086d2a131bc1a8dd006832f2.svn-base deleted file mode 100644 index a99701f..0000000 --- a/.svn/pristine/54/5404a7c12335b679086d2a131bc1a8dd006832f2.svn-base +++ /dev/null @@ -1,219 +0,0 @@ -#define ONE_TUBE - -//#define DEBUG_ESP_WIFI -//#define DEBUG_ESP_PORT Serial - -#define DEBUG(...) { Serial.println(__VA_ARGS__); } -//#define DEBUG(...) { } - -#include "Arduino.h" -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -unsigned long nowMs = 0; - -String chipId = String(ESP.getChipId(), HEX); -String ssid = "STC-"; - -String hostName("ITS1A"); - -AsyncWebServer server(80); -AsyncWebSocket ws("/ws"); // access at ws://[esp ip]/ws -AsyncHTTPClient httpClient; -DNSServer dns; -AsyncWiFiManager wifiManager(&server,&dns); - -ITS1ANixieDriver nixieDriver(6); -NixieDriver *pDriver = &nixieDriver; -//OneNixieClock oneNixieClock(pDriver, 60); -//TwoNixieClock oneNixieClock(pDriver); -//FourNixieClock oneNixieClock(pDriver); -SixNixieClock oneNixieClock(pDriver); -NixieClock *pNixieClock = &oneNixieClock; - -void initClock() { - pDriver->init(); - pNixieClock->setNixieDriver(pDriver); - pNixieClock->init(); -} - -void grabInts(String s, int *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void grabBytes(String s, byte *dest, String sep) { - int end = 0; - for (int start = 0; end != -1; start = end + 1) { - end = s.indexOf(sep, start); - if (end > 0) { - *dest++ = s.substring(start, end).toInt(); - } else { - *dest++ = s.substring(start).toInt(); - } - } -} - -void readTimeFailed(String msg) { - DEBUG(msg); -} - -#define SYNC_HOURS 3 -#define SYNC_MINS 4 -#define SYNC_SECS 5 -#define SYNC_DAY 2 -#define SYNC_MONTH 1 -#define SYNC_YEAR 0 - -bool timeInitialized = false; - -void setTimeFromInternet() { - String body = httpClient.getBody(); - DEBUG(String("Got response") + body); - int intValues[6]; - grabInts(body, &intValues[0], ","); - - timeInitialized = true; - setTime(intValues[SYNC_HOURS], intValues[SYNC_MINS], intValues[SYNC_SECS], intValues[SYNC_DAY], intValues[SYNC_MONTH], intValues[SYNC_YEAR]); -} - -void createSSID() { - // Create a unique SSID that includes the hostname. Max SSID length is 32! - ssid = (chipId + hostName).substring(0, 31); -} - -void getTime() { - if (WiFi.status() == WL_CONNECTED) { - httpClient.makeRequest(setTimeFromInternet, readTimeFailed); - } -} - -void StartOTA() { - // Port defaults to 8266 - ArduinoOTA.setPort(8266); - - // Hostname defaults to esp8266-[ChipID] - ArduinoOTA.setHostname(((String)hostName).c_str()); - - // No authentication by default -// ArduinoOTA.setPassword("in14"); - - ArduinoOTA.onStart([]() {DEBUG("OTA Start");}); - ArduinoOTA.onEnd([]() {DEBUG("\nOTA End");}); - ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - DEBUG("OTA Progress: ");DEBUG(progress / (total / 100));DEBUG("\r"); - }); - ArduinoOTA.onError([](ota_error_t error) { - DEBUG("OTA Error:") - switch (error) { - case OTA_AUTH_ERROR: DEBUG("Auth Failed"); break; - case OTA_BEGIN_ERROR: DEBUG("Begin Failed"); break; - case OTA_CONNECT_ERROR: DEBUG("Connect Failed"); break; - case OTA_RECEIVE_ERROR: DEBUG("Receive Failed"); break; - case OTA_END_ERROR: DEBUG("End Failed"); break; - } - }); - - ArduinoOTA.begin(); -} - -void SetupServer() { - DEBUG("SetupServer()"); - - StartOTA(); - - MDNS.begin(hostName.c_str()); - MDNS.addService("http", "tcp", 80); - - getTime(); -} - -SoftMSTimer::TimerInfo syncTimeTimer = { - 3600000, // 1 hour between syncs - 0, - true, - getTime -}; - -SoftMSTimer::TimerInfo *infos[] = { - &syncTimeTimer, - 0 -}; - -SoftMSTimer timedFunctions(infos); - -void setup() -{ - chipId.toUpperCase(); -// Serial.begin(921600); - Serial.begin(115200); - - initClock(); - - createSSID(); - - DEBUG("Set wifiManager") - wifiManager.setDebugOutput(false); - wifiManager.setConnectTimeout(10); - wifiManager.setSaveConfigCallback(SetupServer); - wifiManager.startConfigPortalModeless(ssid.c_str(), "secretsauce"); - - httpClient.initialize("http://time.nixies.us/getTime/America/New_York"); - getTime(); - - nowMs = millis(); - - DEBUG("Exit setup") -} - -void loop() -{ - ArduinoOTA.handle(); - wifiManager.loop(); - - nowMs = millis(); - - if (timeInitialized) { - pNixieClock->setClockMode(true); - pNixieClock->setCountSpeed(60); - } else { - pNixieClock->setClockMode(false); - pNixieClock->setCountSpeed(60); - } - - pNixieClock->setFadeMode(0); - pNixieClock->setTimeMode(true); - pNixieClock->setDateFormat(1); - pNixieClock->setShowSeconds(false); - pNixieClock->set12hour(false); - pNixieClock->setOnOff(6, 0); - pNixieClock->setDigitsOn(1500); - pNixieClock->setScrollback(true); - - pNixieClock->loop(nowMs); - timedFunctions.loop(); -} diff --git a/.svn/pristine/54/548de897f4e48e6c7fd159024e8f4e22214e9968.svn-base b/.svn/pristine/54/548de897f4e48e6c7fd159024e8f4e22214e9968.svn-base deleted file mode 100644 index e85513e..0000000 --- a/.svn/pristine/54/548de897f4e48e6c7fd159024e8f4e22214e9968.svn-base +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Edit the preset names - - - - - - - - Close - - diff --git a/.svn/pristine/5d/5d7ae195ef2a5f02c01621db4b773573a15b430f.svn-base b/.svn/pristine/5d/5d7ae195ef2a5f02c01621db4b773573a15b430f.svn-base deleted file mode 100644 index d89470b..0000000 --- a/.svn/pristine/5d/5d7ae195ef2a5f02c01621db4b773573a15b430f.svn-base +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.svn/pristine/61/616387cd94885b9422add5e366bf300d7a6f91ac.svn-base b/.svn/pristine/61/616387cd94885b9422add5e366bf300d7a6f91ac.svn-base deleted file mode 100644 index 19c51d5..0000000 --- a/.svn/pristine/61/616387cd94885b9422add5e366bf300d7a6f91ac.svn-base +++ /dev/null @@ -1,53 +0,0 @@ - - - Extra - - - - - - - Minutes between showing date (0 is never) - - - - - Show Date Effect - - - - Bubble - Slide Left - Scroll Left - Slide Right - Scroll Right - Random - - - - - Display - - - - - - - Ticks/min - - - - Reset Pulse Length (uS) - - - - Set Pulse Length (uS) - - - - - diff --git a/.svn/pristine/69/695e2a0111a3c96ae76d3a9168b7a5706c678088.svn-base b/.svn/pristine/69/695e2a0111a3c96ae76d3a9168b7a5706c678088.svn-base deleted file mode 100644 index d1d15d2..0000000 --- a/.svn/pristine/69/695e2a0111a3c96ae76d3a9168b7a5706c678088.svn-base +++ /dev/null @@ -1,603 +0,0 @@ -#define ONE_TUBE - -//#define DEBUG_ESP_WIFI -//#define DEBUG_ESP_PORT Serial - -//#define DEBUG(...) { Serial.println(__VA_ARGS__); } -#define DEBUG(...) { } - -#include "Arduino.h" -#include -#include -#define OTA -#ifdef OTA -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -unsigned long nowMs = 0; - -String chipId = String(ESP.getChipId(), HEX); -String ssid = "STC-"; - -StringConfigItem hostName("hostname", 63, "ITS1A"); - -AsyncWebServer server(80); -AsyncWebSocket ws("/ws"); // access at ws://[esp ip]/ws -AsyncHTTPClient httpClient; -DNSServer dns; -AsyncWiFiManager wifiManager(&server,&dns); - -ITS1ANixieDriver nixieDriver(6); -NixieDriver *pDriver = &nixieDriver; -SixNixieClock oneNixieClock(pDriver); -NixieClock *pNixieClock = &oneNixieClock; - -namespace ConfigSet1 { -#include -} - -namespace ConfigSet2 { -#include -} // End namespace - -namespace ConfigSet3 { -#include -} // End namespace - -namespace ConfigSet4 { -#include -} // End namespace - -namespace ConfigSet5 { -#include -} // End namespace - -StringConfigItem set1Name("set1_name", 12, "24 Hour"); -StringConfigItem set2Name("set2_name", 12, "12 Hour"); -StringConfigItem set3Name("set3_name", 12, "Fast Clock"); -StringConfigItem set4Name("set4_name", 12, "Test"); -StringConfigItem set5Name("set5_name", 12, "Test"); -BaseConfigItem *configSetPresetNames[] = { - &set1Name, - &set2Name, - &set3Name, - &set4Name, - &set5Name, - 0 -}; - -CompositeConfigItem presetNamesConfig("preset_names", 0, configSetPresetNames); - -StringConfigItem currentSet("current_set", 4, "set1"); - -BaseConfigItem *configSetGlobal[] = { - &hostName, - ¤tSet, - 0 -}; - -CompositeConfigItem globalConfig("global", 0, configSetGlobal); - -BaseConfigItem *configSetRoot[] = { - &globalConfig, - &presetNamesConfig, - &ConfigSet1::config, - &ConfigSet2::config, - &ConfigSet3::config, - &ConfigSet4::config, - &ConfigSet5::config, - 0 -}; - -CompositeConfigItem rootConfig("root", 0, configSetRoot); - -EEPROMConfig config(rootConfig); - -namespace CurrentConfig { - String name("set1"); - CompositeConfigItem *config = &ConfigSet1::config; - - // Clock config values - BooleanConfigItem *time_or_date = &ConfigSet1::time_or_date; - ByteConfigItem *date_format = &ConfigSet1::date_format; - BooleanConfigItem *hour_format = &ConfigSet1::hour_format; - BooleanConfigItem *leading_zero = &ConfigSet1::leading_zero; - ByteConfigItem *fading = &ConfigSet1::fading; - ByteConfigItem *colons = &ConfigSet1::colons; - ByteConfigItem *display_on = &ConfigSet1::display_on; - ByteConfigItem *display_off = &ConfigSet1::display_off; - StringConfigItem *time_url = &ConfigSet1::time_url; - - // LED config values - ByteConfigItem *hue = &ConfigSet1::hue; - ByteConfigItem *saturation = &ConfigSet1::saturation; - BooleanConfigItem *backlight = &ConfigSet1::backlight; - BooleanConfigItem *hue_cycling = &ConfigSet1::hue_cycling; - ByteConfigItem *led_scale = &ConfigSet1::led_scale; - IntConfigItem *cycle_time = &ConfigSet1::cycle_time; - - // Extra config values - BooleanConfigItem *show_date = &ConfigSet1::show_date; - BooleanConfigItem *display = &ConfigSet1::display; - ByteConfigItem *test_speed = &ConfigSet1::test_speed; - - void setCurrent(const String &name) { - if (CurrentConfig::name == name) { - return; // Already set to this - } - - BaseConfigItem *newConfig = rootConfig.get(name.c_str()); - - if (newConfig) { - DEBUG("Changing preset to:"); - DEBUG(name); - CurrentConfig::name = name; - config = static_cast(newConfig); - - /* - * I hate doing this. - */ - - // Clock config values - time_or_date = static_cast(config->get("time_or_date")); - date_format = static_cast(config->get("date_format")); - hour_format = static_cast(config->get("hour_format")); - leading_zero = static_cast(config->get("leading_zero")); - fading = static_cast(config->get("fading")); - colons = static_cast(config->get("colons")); - display_on = static_cast(config->get("display_on")); - display_off = static_cast(config->get("display_off")); - time_url = static_cast(config->get("time_url")); - - // LED config values - hue = static_cast(config->get("hue")); - saturation = static_cast(config->get("saturation")); - backlight = static_cast(config->get("backlight")); - hue_cycling = static_cast(config->get("hue_cycling")); - led_scale = static_cast(config->get("led_scale")); - cycle_time = static_cast(config->get("cycle_time")); - - // Extra config values - show_date = static_cast(config->get("show_date")); - display = static_cast