mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	add WifiManger to examples, remove states for wps configuration
This commit is contained in:
		
							parent
							
								
									5903651cfa
								
							
						
					
					
						commit
						f2b97ecd09
					
				| @ -5,14 +5,7 @@ The necessary knxprod-files can be generated with my [CreateKnxProd](https://git | ||||
| The visual studio files use the [VisualGdb](https://visualgdb.com/). But you can use the lib in Arduino as usual.  | ||||
| The linux Version can be build with cmake. | ||||
| 
 | ||||
| For esp8266 WPS is used. Current esp8266 arduino core disables WPS. I forgot how to reenable it. But google should be able to help. ;) | ||||
| The stack does the following on esp8266: | ||||
| 1. Boot. If Wifi is configured goto 3. Led is on. On short button press goto 2 | ||||
| 2. Try to connecto to wifi with WPS. If successful goto 3 else goto 1 (Led blinks) | ||||
| 3. App running. (Led off) On short button press goto 4. On long button press goto 2 | ||||
| 4. Programming mod. (Led blinks fast). On short button press goto 3. | ||||
| 
 | ||||
| This behavior can be disabled in arch_config.h (remove the #define USE_STATES) | ||||
| For esp8266 [WifiManager](https://github.com/tzapu/WiFiManager) is used to configure wifi. | ||||
| 
 | ||||
| Don't forget to reset ESP8266 manually (disconnect power) after flashing. The reboot doen't work during configuration with ETS otherwise. | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| #include <bsec.h> | ||||
| #include <knx.h> | ||||
| #include <WiFiManager.h> | ||||
| 
 | ||||
| // declare array of all groupobjects with their sizes in byte
 | ||||
| GroupObject groupObjects[] | ||||
| @ -41,7 +42,7 @@ void updateState(); | ||||
| 
 | ||||
| // from generic_33v_3s_28d
 | ||||
| const uint8_t bsec_config_iaq[454] =  | ||||
|      {1,7,4,1,61,0,0,0,0,0,0,0,174,1,0,0,48,0,1,0,137,65,0,63,205,204,204,62,0,0,64,63,205,204,204,62,0,0,225,68,0,168,19,73,64,49,119,76,0,0,0,0,0,80,5,95,0,0,0,0,0,0,0,0,28,0,2,0,0,244,1,225,0,25,0,0,128,64,0,0,32,65,144,1,0,0,112,65,0,0,0,63,16,0,3,0,10,215,163,60,10,215,35,59,10,215,35,59,9,0,5,0,0,0,0,0,1,88,0,9,0,229,208,34,62,0,0,0,0,0,0,0,0,218,27,156,62,225,11,67,64,0,0,160,64,0,0,0,0,0,0,0,0,94,75,72,189,93,254,159,64,66,62,160,191,0,0,0,0,0,0,0,0,33,31,180,190,138,176,97,64,65,241,99,190,0,0,0,0,0,0,0,0,167,121,71,61,165,189,41,192,184,30,189,64,12,0,10,0,0,0,0,0,0,0,0,0,229,0,254,0,2,1,5,48,117,100,0,44,1,112,23,151,7,132,3,197,0,92,4,144,1,64,1,64,1,144,1,48,117,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,48,117,48,117,100,0,100,0,100,0,100,0,48,117,48,117,48,117,100,0,100,0,100,0,48,117,48,117,100,0,100,0,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,8,7,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,112,23,255,255,255,255,255,255,255,255,220,5,220,5,220,5,255,255,255,255,255,255,220,5,220,5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,44,1,0,0,0,0,50,91,0,0}; | ||||
|      { 1, 7, 4, 1, 61, 0, 0, 0, 0, 0, 0, 0, 174, 1, 0, 0, 48, 0, 1, 0, 137, 65, 0, 63, 205, 204, 204, 62, 0, 0, 64, 63, 205, 204, 204, 62, 0, 0, 225, 68, 0, 168, 19, 73, 64, 49, 119, 76, 0, 0, 0, 0, 0, 80, 5, 95, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 2, 0, 0, 244, 1, 225, 0, 25, 0, 0, 128, 64, 0, 0, 32, 65, 144, 1, 0, 0, 112, 65, 0, 0, 0, 63, 16, 0, 3, 0, 10, 215, 163, 60, 10, 215, 35, 59, 10, 215, 35, 59, 9, 0, 5, 0, 0, 0, 0, 0, 1, 88, 0, 9, 0, 229, 208, 34, 62, 0, 0, 0, 0, 0, 0, 0, 0, 218, 27, 156, 62, 225, 11, 67, 64, 0, 0, 160, 64, 0, 0, 0, 0, 0, 0, 0, 0, 94, 75, 72, 189, 93, 254, 159, 64, 66, 62, 160, 191, 0, 0, 0, 0, 0, 0, 0, 0, 33, 31, 180, 190, 138, 176, 97, 64, 65, 241, 99, 190, 0, 0, 0, 0, 0, 0, 0, 0, 167, 121, 71, 61, 165, 189, 41, 192, 184, 30, 189, 64, 12, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 254, 0, 2, 1, 5, 48, 117, 100, 0, 44, 1, 112, 23, 151, 7, 132, 3, 197, 0, 92, 4, 144, 1, 64, 1, 64, 1, 144, 1, 48, 117, 48, 117, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117, 48, 117, 100, 0, 100, 0, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117, 100, 0, 100, 0, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 255, 255, 255, 255, 255, 255, 255, 255, 220, 5, 220, 5, 220, 5, 255, 255, 255, 255, 255, 255, 220, 5, 220, 5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 1, 0, 0, 0, 0, 50, 91, 0, 0 }; | ||||
| 
 | ||||
| 
 | ||||
| // Create an object of the class Bsec
 | ||||
| @ -57,6 +58,10 @@ void setup(void) | ||||
|     Serial.begin(115200); | ||||
|     delay(5000); | ||||
|     Serial.println("start"); | ||||
| 
 | ||||
|     WiFiManager wifiManager;     | ||||
|     wifiManager.autoConnect("knx-bme680"); | ||||
| 
 | ||||
|     // register group objects
 | ||||
|     knx.registerGroupObjects(groupObjects, 10); | ||||
| 
 | ||||
| @ -99,7 +104,7 @@ void setup(void) | ||||
|      | ||||
|     iaqSensor.updateSubscription(sensorList, 7, BSEC_SAMPLE_RATE_LP); | ||||
|     checkIaqSensorStatus(); | ||||
|     String output = "Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%], CO2"; | ||||
|     String output = "Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%], CO2"; | ||||
|     Serial.println(output); | ||||
| } | ||||
| 
 | ||||
| @ -115,17 +120,17 @@ void loop(void) | ||||
|      | ||||
|     if (iaqSensor.run())  | ||||
|     { | ||||
|         String output = String(millis()); | ||||
|         output += ", " + String(iaqSensor.rawTemperature); | ||||
|         output += ", " + String(iaqSensor.pressure); | ||||
|         output += ", " + String(iaqSensor.rawHumidity); | ||||
|         output += ", " + String(iaqSensor.gasResistance); | ||||
|         output += ", " + String(iaqSensor.iaqEstimate); | ||||
|         output += ", " + String(iaqSensor.iaqAccuracy); | ||||
|         output += ", " + String(iaqSensor.temperature); | ||||
|         output += ", " + String(iaqSensor.humidity); | ||||
|         output += ", " + String(iaqSensor.co2Equivalent); | ||||
|         output += ", " + String(iaqSensor.co2Accuracy); | ||||
|         String output = String(millis()); | ||||
|         output += ", " + String(iaqSensor.rawTemperature); | ||||
|         output += ", " + String(iaqSensor.pressure); | ||||
|         output += ", " + String(iaqSensor.rawHumidity); | ||||
|         output += ", " + String(iaqSensor.gasResistance); | ||||
|         output += ", " + String(iaqSensor.iaqEstimate); | ||||
|         output += ", " + String(iaqSensor.iaqAccuracy); | ||||
|         output += ", " + String(iaqSensor.temperature); | ||||
|         output += ", " + String(iaqSensor.humidity); | ||||
|         output += ", " + String(iaqSensor.co2Equivalent); | ||||
|         output += ", " + String(iaqSensor.co2Accuracy); | ||||
|         Serial.println(output); | ||||
|         updateState(); | ||||
|          | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| #include <HDC100X.h> | ||||
| #include <knx.h> | ||||
| #include <WiFiManager.h> | ||||
| 
 | ||||
| #define SerialDBG SerialUSB | ||||
| 
 | ||||
| @ -30,6 +31,9 @@ void setup(void) | ||||
|     SerialDBG.begin(115200); | ||||
|     delay(5000); | ||||
|     SerialDBG.println("start"); | ||||
| 	 | ||||
| 	WiFiManager wifiManager;     | ||||
|     wifiManager.autoConnect("knx-hdc1008"); | ||||
| 
 | ||||
|     // Programming LED on digital pin D5
 | ||||
|     knx.ledPin(5); | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #include <knx.h> | ||||
| #include <WiFiManager.h> | ||||
| 
 | ||||
| #define RELAYPIN 12 | ||||
| 
 | ||||
| @ -32,6 +33,9 @@ void setup() | ||||
| { | ||||
|     SerialDBG.begin(115200); | ||||
| 
 | ||||
| 	WiFiManager wifiManager;     | ||||
|     wifiManager.autoConnect("knx-sonoffS20"); | ||||
| 	 | ||||
|     // register group objects
 | ||||
|     knx.registerGroupObjects(groupObjects, 3); | ||||
|     // read adress table, association table, groupobject table and parameters from eeprom
 | ||||
|  | ||||
| @ -1,7 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #ifdef ARDUINO_ARCH_ESP8266 | ||||
| #ifndef USE_STATES | ||||
| #define USE_STATES | ||||
| #endif | ||||
| #endif | ||||
| @ -1,40 +0,0 @@ | ||||
| #include "button.h" | ||||
| #include "state.h" | ||||
| #include "knx_facade.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| unsigned long buttonTimestamp = 0; | ||||
| 
 | ||||
| void buttonDown() | ||||
| { | ||||
|     buttonTimestamp = millis(); | ||||
|     attachInterrupt(knx.buttonPin(), buttonUp, RISING); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| void buttonUp() | ||||
| { | ||||
| #ifdef USE_STATES | ||||
|     if (millis() - buttonTimestamp > 1000) | ||||
|     { | ||||
|         Serial.println("long button press"); | ||||
|         currentState->longButtonPress(); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         Serial.println("short button press"); | ||||
|         currentState->shortButtonPress(); | ||||
|     } | ||||
|     attachInterrupt(knx.buttonPin(), buttonDown, FALLING); | ||||
| #else
    if (knx.progMode()) | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), LOW); | ||||
|         knx.progMode(false); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), HIGH); | ||||
|         knx.progMode(true); | ||||
|     } | ||||
| #endif | ||||
| } | ||||
| @ -1,8 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "arch_config.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| void buttonDown(); | ||||
| #endif | ||||
| void buttonUp(); | ||||
| @ -1,8 +1,4 @@ | ||||
| #include "knx_facade.h" | ||||
| #include "state.h" | ||||
| #include "button.h" | ||||
| #include "led.h" | ||||
| #include "nowifistate.h" | ||||
| 
 | ||||
| #ifdef ARDUINO_ARCH_SAMD | ||||
| SamdPlatform platform; | ||||
| @ -13,7 +9,20 @@ Bau57B0 bau(platform); | ||||
| #endif | ||||
| KnxFacade knx(bau); | ||||
| 
 | ||||
| 
 | ||||
| void buttonUp() | ||||
| { | ||||
|     if (knx.progMode()) | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), LOW); | ||||
|         knx.progMode(false); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), HIGH); | ||||
|         knx.progMode(true); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| KnxFacade::KnxFacade(BauSystemB& bau) : _bau(bau) | ||||
| { | ||||
|     manufacturerId(0xfa); | ||||
| @ -76,16 +85,6 @@ void KnxFacade::writeMemory() | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::loop() | ||||
| { | ||||
| #ifdef USE_STATES | ||||
|     if (currentState) | ||||
|         currentState->loop(); | ||||
| #else | ||||
|     knxLoop(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::knxLoop() | ||||
| { | ||||
|     _bau.loop(); | ||||
| } | ||||
| @ -126,15 +125,8 @@ void KnxFacade::start() | ||||
| 
 | ||||
|     pinMode(_buttonPin, INPUT_PULLUP); | ||||
|      | ||||
| #ifdef USE_STATES | ||||
|     attachInterrupt(_buttonPin, buttonDown, FALLING); | ||||
|     switchToSate(noWifiState); | ||||
|     checkStates(); | ||||
|     _ticker.attach_ms(100, doLed); | ||||
| #else | ||||
|     attachInterrupt(knx.buttonPin(), buttonUp, RISING); | ||||
|     attachInterrupt(_buttonPin, buttonUp, RISING); | ||||
|     enabled(true); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| uint8_t* KnxFacade::paramData(uint32_t addr) | ||||
|  | ||||
| @ -1,7 +1,5 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "arch_config.h" | ||||
| 
 | ||||
| #ifdef ARDUINO_ARCH_SAMD | ||||
| #include "samd_platform.h" | ||||
| #include "knx/bau07B0.h" | ||||
| @ -13,9 +11,6 @@ | ||||
| #include "knx/bau57B0.h" | ||||
| #endif | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| class RunningState; | ||||
| #endif | ||||
| 
 | ||||
| typedef uint8_t* (*saveRestoreCallback)(uint8_t* buffer); | ||||
| 
 | ||||
| @ -35,7 +30,6 @@ public: | ||||
|     void readMemory(); | ||||
|     void writeMemory(); | ||||
|     void loop(); | ||||
|     void knxLoop(); | ||||
|     void registerGroupObjects(GroupObject* groupObjects, uint16_t count); | ||||
|     void manufacturerId(uint16_t value); | ||||
|     void bauNumber(uint32_t value); | ||||
|  | ||||
| @ -1,174 +0,0 @@ | ||||
| #include "knx_facade.h" | ||||
| #if 0 | ||||
| KnxFacade knx; | ||||
| 
 | ||||
| 
 | ||||
| #define SerialDBG SerialUSB | ||||
| 
 | ||||
| void buttonUp(); | ||||
| long buttonTimestamp = 0; | ||||
| void buttonDown() | ||||
| { | ||||
|     buttonTimestamp = millis(); | ||||
|     attachInterrupt(knx.buttonPin(), buttonUp, RISING); | ||||
| } | ||||
| 
 | ||||
| void buttonUp() | ||||
| { | ||||
|     // keep short/long for now 
 | ||||
|     if (millis() - buttonTimestamp > 1000) | ||||
|     { | ||||
|         SerialDBG.println("long button press"); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         SerialDBG.println("short button press"); | ||||
|     } | ||||
| 
 | ||||
|     if (knx.progMode()) | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), LOW); | ||||
|         knx.progMode(false); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), HIGH); | ||||
|         knx.progMode(true); | ||||
|     } | ||||
| 
 | ||||
|     attachInterrupt(knx.buttonPin(), buttonDown, FALLING); | ||||
| } | ||||
| 
 | ||||
| KnxFacade::KnxFacade() : _bau(_platform) | ||||
| { | ||||
|     manufacturerId(0xfa); | ||||
| } | ||||
| 
 | ||||
| bool KnxFacade::enabled() | ||||
| { | ||||
|     return _bau.enabled(); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::enabled(bool value) | ||||
| { | ||||
|     _bau.enabled(true); | ||||
| } | ||||
| 
 | ||||
| bool KnxFacade::progMode() | ||||
| { | ||||
|     return _bau.deviceObject().progMode(); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::progMode(bool value) | ||||
| { | ||||
|     _bau.deviceObject().progMode(value); | ||||
| } | ||||
| 
 | ||||
| bool KnxFacade::configured() | ||||
| { | ||||
|     return _bau.configured(); | ||||
| } | ||||
| 
 | ||||
| uint32_t KnxFacade::ledPin() | ||||
| { | ||||
|     return _ledPin; | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::ledPin(uint32_t value) | ||||
| { | ||||
|     _ledPin = value; | ||||
| } | ||||
| 
 | ||||
| uint32_t KnxFacade::buttonPin() | ||||
| { | ||||
|     return _buttonPin; | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::buttonPin(uint32_t value) | ||||
| { | ||||
|     _buttonPin = value; | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::readMemory() | ||||
| { | ||||
|     _bau.readMemory(); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::loop() | ||||
| { | ||||
|     _bau.loop(); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::registerGroupObjects(GroupObject* groupObjects, uint16_t count) | ||||
| { | ||||
|     _bau.groupObjectTable().groupObjects(groupObjects, count); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::manufacturerId(uint16_t value) | ||||
| { | ||||
|     _bau.deviceObject().manufacturerId(value); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::bauNumber(uint32_t value) | ||||
| { | ||||
|     _bau.deviceObject().bauNumber(value); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::orderNumber(const char* value) | ||||
| { | ||||
|     _bau.deviceObject().orderNumber(value); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::hardwareType(uint8_t* value) | ||||
| { | ||||
|     _bau.deviceObject().hardwareType(value); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::version(uint16_t value) | ||||
| { | ||||
|     _bau.deviceObject().version(value); | ||||
| } | ||||
| 
 | ||||
| void KnxFacade::start() | ||||
| { | ||||
|     pinMode(_ledPin, OUTPUT); | ||||
| 
 | ||||
|     pinMode(_buttonPin, INPUT_PULLUP); | ||||
|     attachInterrupt(_buttonPin, buttonDown, FALLING); | ||||
|     enabled(true); | ||||
| } | ||||
| 
 | ||||
| uint8_t* KnxFacade::paramData(uint32_t addr) | ||||
| { | ||||
|     if (!_bau.configured()) | ||||
|         return nullptr; | ||||
|      | ||||
|     return _bau.parameters().data(addr); | ||||
| } | ||||
| 
 | ||||
| uint8_t KnxFacade::paramByte(uint32_t addr) | ||||
| { | ||||
|     if (!_bau.configured()) | ||||
|         return 0; | ||||
| 
 | ||||
|     return _bau.parameters().getByte(addr); | ||||
| } | ||||
| 
 | ||||
| uint16_t KnxFacade::paramWord(uint32_t addr) | ||||
| { | ||||
|     if (!_bau.configured()) | ||||
|         return 0; | ||||
| 
 | ||||
|     return _bau.parameters().getWord(addr); | ||||
| } | ||||
| 
 | ||||
| uint32_t KnxFacade::paramInt(uint32_t addr) | ||||
| { | ||||
|     if (!_bau.configured()) | ||||
|         return 0; | ||||
| 
 | ||||
|     return _bau.parameters().getInt(addr); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										30
									
								
								src/led.cpp
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								src/led.cpp
									
									
									
									
									
								
							| @ -1,30 +0,0 @@ | ||||
| #include "led.h" | ||||
| #include "knx_facade.h" | ||||
| #include "state.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| void doLed() | ||||
| { | ||||
|     if (!currentState) | ||||
|         return; | ||||
| 
 | ||||
|     if (!currentState->ledOn()) | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), HIGH); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     unsigned int period = currentState->blinkPeriod(); | ||||
| 
 | ||||
|     if (!currentState->ledBlink() || period == 0) | ||||
|     { | ||||
|         digitalWrite(knx.ledPin(), LOW); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     if ((millis() % period) > (period / 2)) | ||||
|         digitalWrite(knx.ledPin(), HIGH); | ||||
|     else | ||||
|         digitalWrite(knx.ledPin(), LOW); | ||||
| } | ||||
| #endif | ||||
| @ -1,7 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "arch_config.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| void doLed(); | ||||
| #endif | ||||
| @ -1,39 +0,0 @@ | ||||
| #include "nowifistate.h" | ||||
| #include "wpsstate.h" | ||||
| #include "runningstate.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| 
 | ||||
| #include <ESP8266WiFi.h> | ||||
| 
 | ||||
| NoWifiState noWifiState = NoWifiState(); | ||||
| 
 | ||||
| void NoWifiState::shortButtonPress() | ||||
| { | ||||
|     switchToSate(wpsState); | ||||
| } | ||||
| 
 | ||||
| void NoWifiState::longButtonPress() | ||||
| { | ||||
|     switchToSate(wpsState); | ||||
| } | ||||
| 
 | ||||
| void NoWifiState::enterState() | ||||
| { | ||||
|     WiFi.mode(WIFI_STA); | ||||
|     WiFi.begin("", ""); | ||||
|     while (WiFi.status() == WL_DISCONNECTED) | ||||
|     { | ||||
|         delay(500); | ||||
|         Serial.print("."); | ||||
|     } | ||||
| 
 | ||||
|     wl_status_t status = WiFi.status(); | ||||
|     if (status == WL_CONNECTED) | ||||
|     { | ||||
|         Serial.printf("\nConnected successful to SSID '%s'\n", WiFi.SSID().c_str()); | ||||
|         switchToSate(runningState); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,20 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "state.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| 
 | ||||
| class NoWifiState : public State | ||||
| { | ||||
| public: | ||||
|     NoWifiState() : State(true, false, 0) | ||||
|     {} | ||||
|     virtual void shortButtonPress(); | ||||
|     virtual void longButtonPress(); | ||||
|     virtual void enterState(); | ||||
|     virtual const char* name() { return "NoWifi"; } | ||||
| }; | ||||
| 
 | ||||
| extern NoWifiState noWifiState; | ||||
| 
 | ||||
| #endif | ||||
| @ -1,28 +0,0 @@ | ||||
| #include "programmingmodestate.h" | ||||
| #include "runningstate.h" | ||||
| #include "knx_facade.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| ProgramModeState programModeState = ProgramModeState(); | ||||
| 
 | ||||
| void ProgramModeState::enterState() | ||||
| { | ||||
|     knx.progMode(true); | ||||
| } | ||||
| 
 | ||||
| void ProgramModeState::leaveState() | ||||
| { | ||||
|     knx.progMode(false); | ||||
| } | ||||
| 
 | ||||
| void ProgramModeState::shortButtonPress() | ||||
| { | ||||
|     switchToSate(runningState); | ||||
| } | ||||
| 
 | ||||
| void ProgramModeState::loop() | ||||
| { | ||||
|     State::loop(); | ||||
|     knx.knxLoop(); | ||||
| } | ||||
| #endif | ||||
| @ -1,21 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "state.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| 
 | ||||
| class ProgramModeState : public State | ||||
| { | ||||
| public: | ||||
|     ProgramModeState() : State(true, true, 200) | ||||
|     {} | ||||
|     virtual void enterState(); | ||||
|     virtual void leaveState(); | ||||
|     virtual void shortButtonPress(); | ||||
|     virtual void loop(); | ||||
|     virtual const char* name() { return "ProgramMode"; } | ||||
| }; | ||||
| 
 | ||||
| extern ProgramModeState programModeState; | ||||
| 
 | ||||
| #endif | ||||
| @ -1,43 +0,0 @@ | ||||
| #include "runningstate.h" | ||||
| #include "programmingmodestate.h" | ||||
| #include "wpsstate.h" | ||||
| #include "knx_facade.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| 
 | ||||
| RunningState runningState = RunningState(); | ||||
| 
 | ||||
| void RunningState::shortButtonPress() | ||||
| { | ||||
|     switchToSate(programModeState); | ||||
| } | ||||
| 
 | ||||
| void RunningState::longButtonPress() | ||||
| { | ||||
|     switchToSate(wpsState); | ||||
| } | ||||
| 
 | ||||
| void RunningState::enterState() | ||||
| { | ||||
|     if (_initialized) | ||||
|         return; | ||||
| 
 | ||||
|     knx.enabled(true); | ||||
|     _initialized = true; | ||||
| } | ||||
| 
 | ||||
| void RunningState::leaveState() | ||||
| { | ||||
|     if (nextState != &programModeState) | ||||
|     { | ||||
|         _initialized = false; | ||||
|         knx.enabled(false); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void RunningState::loop() | ||||
| { | ||||
|     State::loop(); | ||||
|     knx.knxLoop(); | ||||
| } | ||||
| #endif | ||||
| @ -1,21 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "state.h" | ||||
| #ifdef USE_STATES | ||||
| class RunningState : public State | ||||
| { | ||||
| public: | ||||
|     RunningState() : State(false, false, 0) | ||||
|     {} | ||||
|     virtual void shortButtonPress(); | ||||
|     virtual void longButtonPress(); | ||||
|     virtual void enterState(); | ||||
|     virtual void leaveState(); | ||||
|     virtual void loop(); | ||||
|     virtual const char* name() { return "Running"; } | ||||
| private: | ||||
|     bool _initialized = false; | ||||
| }; | ||||
| 
 | ||||
| extern RunningState runningState; | ||||
| #endif | ||||
| @ -1,57 +0,0 @@ | ||||
| #include "state.h" | ||||
| #include "Arduino.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| 
 | ||||
| State* volatile currentState = 0; | ||||
| State* volatile nextState = 0; | ||||
| 
 | ||||
| void switchToSate(State& state) | ||||
| { | ||||
|     nextState = &state; | ||||
| } | ||||
| 
 | ||||
| void checkStates() | ||||
| { | ||||
|     if (!nextState) | ||||
|         return; | ||||
| 
 | ||||
|     if (nextState == currentState) | ||||
|         return; | ||||
| 
 | ||||
|     if (currentState) | ||||
|     { | ||||
|         printf("Leave %s\n", currentState->name()); | ||||
|         currentState->leaveState(); | ||||
|     } | ||||
| 
 | ||||
|     currentState = nextState; | ||||
| 
 | ||||
|     if (currentState) | ||||
|     { | ||||
|         printf("Enter %s\n", currentState->name()); | ||||
|         currentState->enterState(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| bool State::ledOn() | ||||
| { | ||||
|     return _ledOn; | ||||
| } | ||||
| 
 | ||||
| bool State::ledBlink() | ||||
| { | ||||
|     return _ledBlink; | ||||
| } | ||||
| 
 | ||||
| unsigned int State::blinkPeriod() | ||||
| { | ||||
|     return _blinkPeriod; | ||||
| } | ||||
| 
 | ||||
| void State::loop() | ||||
| { | ||||
|     checkStates(); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										34
									
								
								src/state.h
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								src/state.h
									
									
									
									
									
								
							| @ -1,34 +0,0 @@ | ||||
| #pragma once | ||||
| #include "arch_config.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| 
 | ||||
| class State | ||||
| { | ||||
| public: | ||||
|     State(bool led, bool blink, int period) : | ||||
|         _ledOn(led), _ledBlink(blink), _blinkPeriod(period) | ||||
|     {} | ||||
|     virtual ~State() {} | ||||
|     bool ledOn(); | ||||
|     bool ledBlink(); | ||||
|     unsigned int blinkPeriod(); | ||||
|     virtual void shortButtonPress() {} | ||||
|     virtual void longButtonPress() {} | ||||
|     virtual void enterState() {} | ||||
|     virtual void leaveState() {} | ||||
|     virtual void loop(); | ||||
|     virtual const char* name() = 0; | ||||
| private: | ||||
|     bool _ledOn; | ||||
|     bool _ledBlink; | ||||
|     int _blinkPeriod; | ||||
| }; | ||||
| 
 | ||||
| void switchToSate(State& state); | ||||
| void checkStates(); | ||||
| 
 | ||||
| extern State* volatile currentState; | ||||
| extern State* volatile nextState; | ||||
| 
 | ||||
| #endif | ||||
| @ -1,33 +0,0 @@ | ||||
| #include "arch_config.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| #include <ESP8266WiFi.h> | ||||
| 
 | ||||
| #include "wpsstate.h" | ||||
| #include "runningstate.h" | ||||
| #include "nowifistate.h" | ||||
| 
 | ||||
| WpsState wpsState = WpsState(); | ||||
| 
 | ||||
| void WpsState::enterState() | ||||
| { | ||||
|     //invalidate old wifi settings first
 | ||||
|     WiFi.begin("fobar", "a12"); | ||||
|     Serial.println("WPS config start"); | ||||
|     bool wpsSuccess = WiFi.beginWPSConfig(); | ||||
|     if (wpsSuccess) { | ||||
|         String newSSID = WiFi.SSID(); | ||||
|         if (newSSID.length() > 0) | ||||
|         { | ||||
|             Serial.printf("WPS finished. Connected successfull to SSID '%s'\n", newSSID.c_str()); | ||||
|             switchToSate(runningState); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             Serial.printf("WPS failed."); | ||||
|             switchToSate(noWifiState); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -1,17 +0,0 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include "state.h" | ||||
| 
 | ||||
| #ifdef USE_STATES | ||||
| class WpsState : public State | ||||
| { | ||||
| public: | ||||
|     WpsState() : State(true, true, 400) | ||||
|     {} | ||||
|     virtual void enterState(); | ||||
|     virtual const char* name() { return "Wps"; } | ||||
| }; | ||||
| 
 | ||||
| extern WpsState wpsState; | ||||
| 
 | ||||
| #endif | ||||
| @ -235,7 +235,7 @@ | ||||
|       </BuildSettingsExtension> | ||||
|     </VisualGDBConfiguration> | ||||
|     <VisualGDBConfiguration> | ||||
|       <PlatformName>NodeMCU 1 0 (ESP-12E Module)</PlatformName> | ||||
|       <PlatformName>NodeMCU_1 0_(ESP-12E_Module)</PlatformName> | ||||
|       <DebugSettingsOverride xsi:type="com.visualgdb.debug.embedded"> | ||||
|         <AdditionalStartupCommands /> | ||||
|         <AdditionalGDBSettings> | ||||
| @ -297,7 +297,7 @@ | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>exception</Key> | ||||
|               <Value>enabled</Value> | ||||
|               <Value>disabled</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>eesz</Key> | ||||
| @ -328,121 +328,6 @@ | ||||
|         <DebugUnoptimizedComponentTypes>Sketch</DebugUnoptimizedComponentTypes> | ||||
|       </BuildSettingsExtension> | ||||
|     </VisualGDBConfiguration> | ||||
|     <VisualGDBConfiguration> | ||||
|       <PlatformName>Generic ESP8266 Module</PlatformName> | ||||
|       <DebugSettingsOverride xsi:type="com.visualgdb.debug.embedded"> | ||||
|         <AdditionalStartupCommands /> | ||||
|         <AdditionalGDBSettings> | ||||
|           <Features> | ||||
|             <DisableAutoDetection>false</DisableAutoDetection> | ||||
|             <UseFrameParameter>false</UseFrameParameter> | ||||
|             <SimpleValuesFlagSupported>false</SimpleValuesFlagSupported> | ||||
|             <ListLocalsSupported>false</ListLocalsSupported> | ||||
|             <ByteLevelMemoryCommandsAvailable>false</ByteLevelMemoryCommandsAvailable> | ||||
|             <ThreadInfoSupported>false</ThreadInfoSupported> | ||||
|             <PendingBreakpointsSupported>false</PendingBreakpointsSupported> | ||||
|             <SupportTargetCommand>false</SupportTargetCommand> | ||||
|             <ReliableBreakpointNotifications>false</ReliableBreakpointNotifications> | ||||
|           </Features> | ||||
|           <EnableSmartStepping>false</EnableSmartStepping> | ||||
|           <FilterSpuriousStoppedNotifications>false</FilterSpuriousStoppedNotifications> | ||||
|           <ForceSingleThreadedMode>false</ForceSingleThreadedMode> | ||||
|           <UseAppleExtensions>false</UseAppleExtensions> | ||||
|           <CanAcceptCommandsWhileRunning>false</CanAcceptCommandsWhileRunning> | ||||
|           <MakeLogFile>false</MakeLogFile> | ||||
|           <IgnoreModuleEventsWhileStepping>true</IgnoreModuleEventsWhileStepping> | ||||
|           <UseRelativePathsOnly>false</UseRelativePathsOnly> | ||||
|           <ExitAction>None</ExitAction> | ||||
|           <DisableDisassembly>false</DisableDisassembly> | ||||
|           <ExamineMemoryWithXCommand>false</ExamineMemoryWithXCommand> | ||||
|           <StepIntoNewInstanceEntry>main</StepIntoNewInstanceEntry> | ||||
|           <ExamineRegistersInRawFormat>true</ExamineRegistersInRawFormat> | ||||
|           <DisableSignals>false</DisableSignals> | ||||
|           <EnableAsyncExecutionMode>false</EnableAsyncExecutionMode> | ||||
|           <EnableNonStopMode>false</EnableNonStopMode> | ||||
|           <MaxBreakpointLimit>0</MaxBreakpointLimit> | ||||
|         </AdditionalGDBSettings> | ||||
|         <DebugMethod> | ||||
|           <ID>gdbsim</ID> | ||||
|           <Configuration> | ||||
|             <Entries /> | ||||
|           </Configuration> | ||||
|         </DebugMethod> | ||||
|         <AutoDetectRTOS>true</AutoDetectRTOS> | ||||
|         <SemihostingSupport>Auto</SemihostingSupport> | ||||
|         <SemihostingPollingDelay>0</SemihostingPollingDelay> | ||||
|         <StepIntoEntryPoint>false</StepIntoEntryPoint> | ||||
|         <ReloadFirmwareOnReset>false</ReloadFirmwareOnReset> | ||||
|         <ValidateEndOfStackAddress>true</ValidateEndOfStackAddress> | ||||
|         <StopAtEntryPoint>false</StopAtEntryPoint> | ||||
|         <EnableVirtualHalts>false</EnableVirtualHalts> | ||||
|         <DynamicAnalysisSettings /> | ||||
|         <EndOfStackSymbol>_estack</EndOfStackSymbol> | ||||
|         <TimestampProviderTicksPerSecond>0</TimestampProviderTicksPerSecond> | ||||
|         <KeepConsoleAfterExit>false</KeepConsoleAfterExit> | ||||
|         <CheckInterfaceDrivers>true</CheckInterfaceDrivers> | ||||
|       </DebugSettingsOverride> | ||||
|       <BuildSettingsExtension xsi:type="com.visualgdb.build.external.arduino.extension"> | ||||
|         <BoardID>esp8266:esp8266:generic</BoardID> | ||||
|         <Properties> | ||||
|           <Entries> | ||||
|             <KeyValue> | ||||
|               <Key>CpuFrequency</Key> | ||||
|               <Value>80</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>VTable</Key> | ||||
|               <Value>flash</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>ResetMethod</Key> | ||||
|               <Value>none</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>CrystalFreq</Key> | ||||
|               <Value>26</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>FlashFreq</Key> | ||||
|               <Value>40</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>FlashMode</Key> | ||||
|               <Value>dout</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>FlashSize</Key> | ||||
|               <Value>1M0</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>led</Key> | ||||
|               <Value>13</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>LwIPVariant</Key> | ||||
|               <Value>v2mss1460</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>Debug</Key> | ||||
|               <Value>Disabled</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>DebugLevel</Key> | ||||
|               <Value>None____</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>FlashErase</Key> | ||||
|               <Value>none</Value> | ||||
|             </KeyValue> | ||||
|             <KeyValue> | ||||
|               <Key>UploadSpeed</Key> | ||||
|               <Value>115200</Value> | ||||
|             </KeyValue> | ||||
|           </Entries> | ||||
|         </Properties> | ||||
|         <DebugUnoptimizedComponentTypes>Sketch</DebugUnoptimizedComponentTypes> | ||||
|       </BuildSettingsExtension> | ||||
|     </VisualGDBConfiguration> | ||||
|   </Configurations> | ||||
|   <ProgramArgumentsSuggestions /> | ||||
| </VisualGDBProjectSettings2> | ||||
| @ -17,44 +17,37 @@ EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|Arduino Genuino Zero (Native USB Port) = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		Debug|Generic ESP8266 Module = Debug|Generic ESP8266 Module | ||||
| 		Debug|NodeMCU 1 0 (ESP-12E Module) = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		Debug|NodeMCU_1 0_(ESP-12E_Module) = Debug|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		Debug|VisualGDB = Debug|VisualGDB | ||||
| 		Debug|x64 = Debug|x64 | ||||
| 		Debug|x86 = Debug|x86 | ||||
| 		MinSizeRel|Arduino Genuino Zero (Native USB Port) = MinSizeRel|Arduino Genuino Zero (Native USB Port) | ||||
| 		MinSizeRel|Generic ESP8266 Module = MinSizeRel|Generic ESP8266 Module | ||||
| 		MinSizeRel|NodeMCU 1 0 (ESP-12E Module) = MinSizeRel|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		MinSizeRel|NodeMCU_1 0_(ESP-12E_Module) = MinSizeRel|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		MinSizeRel|VisualGDB = MinSizeRel|VisualGDB | ||||
| 		MinSizeRel|x64 = MinSizeRel|x64 | ||||
| 		MinSizeRel|x86 = MinSizeRel|x86 | ||||
| 		Release|Arduino Genuino Zero (Native USB Port) = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		Release|Generic ESP8266 Module = Release|Generic ESP8266 Module | ||||
| 		Release|NodeMCU 1 0 (ESP-12E Module) = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		Release|NodeMCU_1 0_(ESP-12E_Module) = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		Release|VisualGDB = Release|VisualGDB | ||||
| 		Release|x64 = Release|x64 | ||||
| 		Release|x86 = Release|x86 | ||||
| 		RelWithDebInfo|Arduino Genuino Zero (Native USB Port) = RelWithDebInfo|Arduino Genuino Zero (Native USB Port) | ||||
| 		RelWithDebInfo|Generic ESP8266 Module = RelWithDebInfo|Generic ESP8266 Module | ||||
| 		RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module) = RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module) = RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		RelWithDebInfo|VisualGDB = RelWithDebInfo|VisualGDB | ||||
| 		RelWithDebInfo|x64 = RelWithDebInfo|x64 | ||||
| 		RelWithDebInfo|x86 = RelWithDebInfo|x86 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|Generic ESP8266 Module.ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|VisualGDB.Build.0 = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|x64.ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Debug|x86.ActiveCfg = Debug|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|Generic ESP8266 Module.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|Generic ESP8266 Module.Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|VisualGDB.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|VisualGDB.Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|x64.ActiveCfg = Release|VisualGDB | ||||
| @ -62,18 +55,15 @@ Global | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|x86.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.MinSizeRel|x86.Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|Generic ESP8266 Module.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|VisualGDB.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|VisualGDB.Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|x64.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.Release|x86.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|Generic ESP8266 Module.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|Generic ESP8266 Module.Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|VisualGDB.Build.0 = Release|VisualGDB | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|x64.ActiveCfg = Release|VisualGDB | ||||
| @ -82,18 +72,14 @@ Global | ||||
| 		{819E55F9-05A8-454D-B771-4A99F775DD87}.RelWithDebInfo|x86.Build.0 = Release|VisualGDB | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|Arduino Genuino Zero (Native USB Port).Build.0 = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|Generic ESP8266 Module.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|NodeMCU 1 0 (ESP-12E Module).Build.0 = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|VisualGDB.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|x64.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Debug|x86.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|Generic ESP8266 Module.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|Generic ESP8266 Module.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|VisualGDB.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|VisualGDB.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|x64.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| @ -102,18 +88,14 @@ Global | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.MinSizeRel|x86.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|Generic ESP8266 Module.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|x64.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.Release|x86.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|Generic ESP8266 Module.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|Generic ESP8266 Module.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|VisualGDB.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|x64.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| @ -121,19 +103,15 @@ Global | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|x86.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{58AFEECD-06E2-4BB7-A13F-E1D5DBAED13F}.RelWithDebInfo|x86.Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|Generic ESP8266 Module.ActiveCfg = Debug|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|Generic ESP8266 Module.Build.0 = Debug|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|NodeMCU 1 0 (ESP-12E Module).Build.0 = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Debug|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Debug|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|VisualGDB.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|x64.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Debug|x86.ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|Generic ESP8266 Module.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|Generic ESP8266 Module.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|VisualGDB.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| @ -142,19 +120,15 @@ Global | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.MinSizeRel|x86.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|Generic ESP8266 Module.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|Generic ESP8266 Module.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.Release|x86.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|Generic ESP8266 Module.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|Generic ESP8266 Module.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU_1 0_(ESP-12E_Module) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|VisualGDB.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| @ -163,18 +137,14 @@ Global | ||||
| 		{6165CD6A-91A4-49FA-977A-48F22086CA8E}.RelWithDebInfo|x86.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|Arduino Genuino Zero (Native USB Port).Build.0 = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|Generic ESP8266 Module.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|NodeMCU 1 0 (ESP-12E Module).Build.0 = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|VisualGDB.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|x64.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Debug|x86.ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|Generic ESP8266 Module.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|Generic ESP8266 Module.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|VisualGDB.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| @ -183,18 +153,14 @@ Global | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.MinSizeRel|x86.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|Generic ESP8266 Module.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|VisualGDB.ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.Release|x86.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|Generic ESP8266 Module.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|Generic ESP8266 Module.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|VisualGDB.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|x64.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| @ -202,18 +168,15 @@ Global | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|x86.ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{527A0D25-BC8E-47B8-AA56-BD991BE6CC67}.RelWithDebInfo|x86.Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|Generic ESP8266 Module.ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|VisualGDB.ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|x64.ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|x86.ActiveCfg = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Debug|x86.Build.0 = Debug|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|Generic ESP8266 Module.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|Generic ESP8266 Module.Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|VisualGDB.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|VisualGDB.Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|x64.ActiveCfg = Release|Win32 | ||||
| @ -221,18 +184,15 @@ Global | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|x86.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.MinSizeRel|x86.Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|Generic ESP8266 Module.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|VisualGDB.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|x64.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|x86.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.Release|x86.Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|Generic ESP8266 Module.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|Generic ESP8266 Module.Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|VisualGDB.Build.0 = Release|Win32 | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|x64.ActiveCfg = Release|Win32 | ||||
| @ -241,19 +201,14 @@ Global | ||||
| 		{68FCB2F7-7A74-43A0-8CBE-36CB25020584}.RelWithDebInfo|x86.Build.0 = Release|Win32 | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|Arduino Genuino Zero (Native USB Port).ActiveCfg = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|Arduino Genuino Zero (Native USB Port).Build.0 = Debug|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|Generic ESP8266 Module.ActiveCfg = Debug|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|Generic ESP8266 Module.Build.0 = Debug|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|NodeMCU 1 0 (ESP-12E Module).Build.0 = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Debug|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|VisualGDB.ActiveCfg = Debug|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|x64.ActiveCfg = Debug|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Debug|x86.ActiveCfg = Debug|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|Generic ESP8266 Module.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|Generic ESP8266 Module.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|VisualGDB.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|VisualGDB.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|x64.ActiveCfg = Release|Generic ESP8266 Module | ||||
| @ -262,19 +217,14 @@ Global | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.MinSizeRel|x86.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|Generic ESP8266 Module.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|Generic ESP8266 Module.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|VisualGDB.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|x64.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.Release|x86.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).ActiveCfg = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|Arduino Genuino Zero (Native USB Port).Build.0 = Release|Arduino Genuino Zero (Native USB Port) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|Generic ESP8266 Module.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|Generic ESP8266 Module.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|NodeMCU 1 0 (ESP-12E Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).ActiveCfg = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|NodeMCU_1 0_(ESP-12E_Module).Build.0 = Release|NodeMCU 1 0 (ESP-12E Module) | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|VisualGDB.ActiveCfg = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|VisualGDB.Build.0 = Release|Generic ESP8266 Module | ||||
| 		{3DB3061B-09A3-4C8B-A197-CBEEB3336437}.RelWithDebInfo|x64.ActiveCfg = Release|Generic ESP8266 Module | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user