1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-07 16:23:38 +03:00

examples: format all .ino files

This formats all the example source files using Arduino style rules.
This commit is contained in:
Ivan Grokhotkov 2018-02-19 18:30:59 +03:00 committed by Ivan Grokhotkov
parent e226251b27
commit 61cd8d8385
88 changed files with 2730 additions and 2801 deletions

View File

@ -32,10 +32,11 @@ void setup() {
ArduinoOTA.onStart([]() { ArduinoOTA.onStart([]() {
String type; String type;
if (ArduinoOTA.getCommand() == U_FLASH) if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch"; type = "sketch";
else // U_SPIFFS } else { // U_SPIFFS
type = "filesystem"; type = "filesystem";
}
// NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
Serial.println("Start updating " + type); Serial.println("Start updating " + type);
@ -48,11 +49,17 @@ void setup() {
}); });
ArduinoOTA.onError([](ota_error_t error) { ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error); Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); if (error == OTA_AUTH_ERROR) {
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); Serial.println("Auth Failed");
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); } else if (error == OTA_BEGIN_ERROR) {
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); Serial.println("Begin Failed");
else if (error == OTA_END_ERROR) Serial.println("End Failed"); } else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
}); });
ArduinoOTA.begin(); ArduinoOTA.begin();
Serial.println("Ready"); Serial.println("Ready");

View File

@ -34,28 +34,30 @@ void setup() {
analogWriteRange(1000); analogWriteRange(1000);
analogWrite(led_pin, 990); analogWrite(led_pin, 990);
for (int i=0; i<N_DIMMERS; i++) for (int i = 0; i < N_DIMMERS; i++) {
{
pinMode(dimmer_pin[i], OUTPUT); pinMode(dimmer_pin[i], OUTPUT);
analogWrite(dimmer_pin[i], 50); analogWrite(dimmer_pin[i], 50);
} }
ArduinoOTA.setHostname(host); ArduinoOTA.setHostname(host);
ArduinoOTA.onStart([]() { // switch off all the PWMs during upgrade ArduinoOTA.onStart([]() { // switch off all the PWMs during upgrade
for(int i=0; i<N_DIMMERS;i++) for (int i = 0; i < N_DIMMERS; i++) {
analogWrite(dimmer_pin[i], 0); analogWrite(dimmer_pin[i], 0);
}
analogWrite(led_pin, 0); analogWrite(led_pin, 0);
}); });
ArduinoOTA.onEnd([]() { // do a fancy thing with our board led at end ArduinoOTA.onEnd([]() { // do a fancy thing with our board led at end
for (int i=0;i<30;i++) for (int i = 0; i < 30; i++) {
{
analogWrite(led_pin, (i * 100) % 1001); analogWrite(led_pin, (i * 100) % 1001);
delay(50); delay(50);
} }
}); });
ArduinoOTA.onError([](ota_error_t error) { (void)error; ESP.restart(); }); ArduinoOTA.onError([](ota_error_t error) {
(void)error;
ESP.restart();
});
/* setup the OTA server */ /* setup the OTA server */
ArduinoOTA.begin(); ArduinoOTA.begin();

View File

@ -6,15 +6,15 @@
#include <EEPROM.h> #include <EEPROM.h>
/* /*
* This example serves a "hello world" on a WLAN and a SoftAP at the same time. This example serves a "hello world" on a WLAN and a SoftAP at the same time.
* The SoftAP allow you to configure WLAN parameters at run time. They are not setup in the sketch but saved on EEPROM. The SoftAP allow you to configure WLAN parameters at run time. They are not setup in the sketch but saved on EEPROM.
*
* Connect your computer or cell phone to wifi network ESP_ap with password 12345678. A popup may appear and it allow you to go to WLAN config. If it does not then navigate to http://192.168.4.1/wifi and config it there. Connect your computer or cell phone to wifi network ESP_ap with password 12345678. A popup may appear and it allow you to go to WLAN config. If it does not then navigate to http://192.168.4.1/wifi and config it there.
* Then wait for the module to connect to your wifi and take note of the WLAN IP it got. Then you can disconnect from ESP_ap and return to your regular WLAN. Then wait for the module to connect to your wifi and take note of the WLAN IP it got. Then you can disconnect from ESP_ap and return to your regular WLAN.
*
* Now the ESP8266 is in your network. You can reach it through http://192.168.x.x/ (the IP you took note of) or maybe at http://esp8266.local too. Now the ESP8266 is in your network. You can reach it through http://192.168.x.x/ (the IP you took note of) or maybe at http://esp8266.local too.
*
* This is a captive portal because through the softAP it will redirect any http request to http://192.168.4.1/ This is a captive portal because through the softAP it will redirect any http request to http://192.168.4.1/
*/ */
/* Set these to your desired softAP credentials. They are not configurable at runtime */ /* Set these to your desired softAP credentials. They are not configurable at runtime */

View File

@ -1,19 +1,19 @@
/* /*
* EEPROM Clear EEPROM Clear
*
* Sets all of the bytes of the EEPROM to 0. Sets all of the bytes of the EEPROM to 0.
* This example code is in the public domain. This example code is in the public domain.
*/ */
#include <EEPROM.h> #include <EEPROM.h>
void setup() void setup() {
{
EEPROM.begin(512); EEPROM.begin(512);
// write a 0 to all 512 bytes of the EEPROM // write a 0 to all 512 bytes of the EEPROM
for (int i = 0; i < 512; i++) for (int i = 0; i < 512; i++) {
EEPROM.write(i, 0); EEPROM.write(i, 0);
}
// turn the LED on when we're done // turn the LED on when we're done
pinMode(13, OUTPUT); pinMode(13, OUTPUT);
@ -21,6 +21,5 @@ void setup()
EEPROM.end(); EEPROM.end();
} }
void loop() void loop() {
{
} }

View File

@ -1,9 +1,9 @@
/* /*
* EEPROM Read EEPROM Read
*
* Reads the value of each byte of the EEPROM and prints it Reads the value of each byte of the EEPROM and prints it
* to the computer. to the computer.
* This example code is in the public domain. This example code is in the public domain.
*/ */
#include <EEPROM.h> #include <EEPROM.h>
@ -12,8 +12,7 @@
int address = 0; int address = 0;
byte value; byte value;
void setup() void setup() {
{
// initialize serial and wait for port to open: // initialize serial and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -22,8 +21,7 @@ void setup()
EEPROM.begin(512); EEPROM.begin(512);
} }
void loop() void loop() {
{
// read a byte from the current address of the EEPROM // read a byte from the current address of the EEPROM
value = EEPROM.read(address); value = EEPROM.read(address);
@ -37,8 +35,9 @@ void loop()
// there are only 512 bytes of EEPROM, from 0 to 511, so if we're // there are only 512 bytes of EEPROM, from 0 to 511, so if we're
// on address 512, wrap around to address 0 // on address 512, wrap around to address 0
if (address == 512) if (address == 512) {
address = 0; address = 0;
}
delay(500); delay(500);
} }

View File

@ -1,9 +1,9 @@
/* /*
* EEPROM Write EEPROM Write
*
* Stores values read from analog input 0 into the EEPROM. Stores values read from analog input 0 into the EEPROM.
* These values will stay in the EEPROM when the board is These values will stay in the EEPROM when the board is
* turned off and may be retrieved later by another sketch. turned off and may be retrieved later by another sketch.
*/ */
#include <EEPROM.h> #include <EEPROM.h>
@ -12,13 +12,11 @@
// we're going to write to next) // we're going to write to next)
int addr = 0; int addr = 0;
void setup() void setup() {
{
EEPROM.begin(512); EEPROM.begin(512);
} }
void loop() void loop() {
{
// need to divide by 4 because analog inputs range from // need to divide by 4 because analog inputs range from
// 0 to 1023 and each byte of the EEPROM can only hold a // 0 to 1023 and each byte of the EEPROM can only hold a
// value from 0 to 255. // value from 0 to 255.
@ -33,8 +31,7 @@ void loop()
// the EEPROM, so go back to 0 when we hit 512. // the EEPROM, so go back to 0 when we hit 512.
// save all changes to the flash. // save all changes to the flash.
addr = addr + 1; addr = addr + 1;
if (addr == 512) if (addr == 512) {
{
addr = 0; addr = 0;
EEPROM.commit(); EEPROM.commit();
} }

View File

@ -1,8 +1,8 @@
/** /**
* Authorization.ino Authorization.ino
*
* Created on: 09.12.2015 Created on: 09.12.2015
*
*/ */
#include <Arduino.h> #include <Arduino.h>

View File

@ -1,8 +1,8 @@
/** /**
* BasicHTTPClient.ino BasicHTTPClient.ino
*
* Created on: 24.05.2015 Created on: 24.05.2015
*
*/ */
#include <Arduino.h> #include <Arduino.h>

View File

@ -22,7 +22,9 @@ const char *uri = "/digest-auth/auth/admin/admin/MD5";
String exractParam(String& authReq, const String& param, const char delimit) { String exractParam(String& authReq, const String& param, const char delimit) {
int _begin = authReq.indexOf(param); int _begin = authReq.indexOf(param);
if (_begin==-1) return ""; if (_begin == -1) {
return "";
}
return authReq.substring(_begin + param.length(), authReq.indexOf(delimit, _begin + param.length())); return authReq.substring(_begin + param.length(), authReq.indexOf(delimit, _begin + param.length()));
} }

View File

@ -1,8 +1,8 @@
/** /**
* reuseConnection.ino reuseConnection.ino
*
* Created on: 22.11.2015 Created on: 22.11.2015
*
*/ */

View File

@ -1,8 +1,8 @@
/** /**
* StreamHTTPClient.ino StreamHTTPClient.ino
*
* Created on: 24.05.2015 Created on: 24.05.2015
*
*/ */
#include <Arduino.h> #include <Arduino.h>

View File

@ -156,8 +156,7 @@ static const uint8_t rsakey[] PROGMEM = {
0xe1, 0x40, 0x2b, 0xe3, 0xbd, 0x98, 0x44, 0xad 0xe1, 0x40, 0x2b, 0xe3, 0xbd, 0x98, 0x44, 0xad
}; };
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
Serial.println(); Serial.println();
@ -182,7 +181,6 @@ void setup()
"'%s'\n", host, update_path, update_username, update_password); "'%s'\n", host, update_path, update_username, update_password);
} }
void loop() void loop() {
{
httpServer.handleClient(); httpServer.handleClient();
} }

View File

@ -1,58 +1,58 @@
/* /*
* ESP8266 LLMNR responder sample ESP8266 LLMNR responder sample
* Copyright (C) 2017 Stephen Warren <swarren@wwwdotorg.org> Copyright (C) 2017 Stephen Warren <swarren@wwwdotorg.org>
*
* Based on: Based on:
* ESP8266 Multicast DNS (port of CC3000 Multicast DNS library) ESP8266 Multicast DNS (port of CC3000 Multicast DNS library)
* Version 1.1 Version 1.1
* Copyright (c) 2013 Tony DiCola (tony@tonydicola.com) Copyright (c) 2013 Tony DiCola (tony@tonydicola.com)
* ESP8266 port (c) 2015 Ivan Grokhotkov (ivan@esp8266.com) ESP8266 port (c) 2015 Ivan Grokhotkov (ivan@esp8266.com)
* MDNS-SD Suport 2015 Hristo Gochkov MDNS-SD Suport 2015 Hristo Gochkov
* Extended MDNS-SD support 2016 Lars Englund (lars.englund@gmail.com) Extended MDNS-SD support 2016 Lars Englund (lars.englund@gmail.com)
*
* License (MIT license): License (MIT license):
*
* Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions: furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software. all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE. THE SOFTWARE.
*
*/ */
/* /*
* This is an example of an HTTP server that is accessible via http://esp8266/ This is an example of an HTTP server that is accessible via http://esp8266/
* (or perhaps http://esp8266.local/) thanks to the LLMNR responder. (or perhaps http://esp8266.local/) thanks to the LLMNR responder.
*
* Instructions: Instructions:
* - Update WiFi SSID and password as necessary. - Update WiFi SSID and password as necessary.
* - Flash the sketch to the ESP8266 board. - Flash the sketch to the ESP8266 board.
* - Windows: - Windows:
* - No additional software is necessary. - No additional software is necessary.
* - Point your browser to http://esp8266/, you should see a response. In most - Point your browser to http://esp8266/, you should see a response. In most
* cases, it is important that you manually type the "http://" to force the cases, it is important that you manually type the "http://" to force the
* browser to search for a hostname to connect to, rather than perform a web browser to search for a hostname to connect to, rather than perform a web
* search. search.
* - Alternatively, run the following command from the command prompt: - Alternatively, run the following command from the command prompt:
* ping esp8266 ping esp8266
* - Linux: - Linux:
* - To validate LLMNR, install the systemd-resolve utility. - To validate LLMNR, install the systemd-resolve utility.
* - Execute the following command: - Execute the following command:
* systemd-resolve -4 -p llmnr esp8266 systemd-resolve -4 -p llmnr esp8266
* - It may be possible to configure your system to use LLMNR for all name - It may be possible to configure your system to use LLMNR for all name
* lookups. However, that is beyond the scope of this description. lookups. However, that is beyond the scope of this description.
*
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>

View File

@ -8,8 +8,7 @@ const char* password = "..............";
ESP8266WebServer wwwserver(80); ESP8266WebServer wwwserver(80);
String content; String content;
static void handleRoot(void) static void handleRoot(void) {
{
content = F("<!DOCTYPE HTML>\n<html>Hello world from ESP8266"); content = F("<!DOCTYPE HTML>\n<html>Hello world from ESP8266");
content += F("<p>"); content += F("<p>");
content += F("</html>"); content += F("</html>");
@ -17,8 +16,7 @@ static void handleRoot(void)
wwwserver.send(200, F("text/html"), content); wwwserver.send(200, F("text/html"), content);
} }
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
// Connect to WiFi network // Connect to WiFi network
@ -44,7 +42,6 @@ void setup()
NBNS.begin("ESP"); NBNS.begin("ESP");
} }
void loop() void loop() {
{
wwwserver.handleClient(); wwwserver.handleClient();
} }

View File

@ -41,7 +41,9 @@ void setup() {
Serial.printf("Ready!\n"); Serial.printf("Ready!\n");
} else { } else {
Serial.printf("WiFi Failed\n"); Serial.printf("WiFi Failed\n");
while(1) delay(100); while (1) {
delay(100);
}
} }
} }

View File

@ -1,31 +1,31 @@
/* /*
* Copyright (c) 2015, Majenko Technologies Copyright (c) 2015, Majenko Technologies
* All rights reserved. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this * * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice, this * * Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution. other materials provided with the distribution.
*
* * Neither the name of Majenko Technologies nor the names of its * * Neither the name of Majenko Technologies nor the names of its
* contributors may be used to endorse or promote products derived from contributors may be used to endorse or promote products derived from
* this software without specific prior written permission. this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>

View File

@ -52,30 +52,47 @@ String formatBytes(size_t bytes){
} }
String getContentType(String filename) { String getContentType(String filename) {
if(server.hasArg("download")) return "application/octet-stream"; if (server.hasArg("download")) {
else if(filename.endsWith(".htm")) return "text/html"; return "application/octet-stream";
else if(filename.endsWith(".html")) return "text/html"; } else if (filename.endsWith(".htm")) {
else if(filename.endsWith(".css")) return "text/css"; return "text/html";
else if(filename.endsWith(".js")) return "application/javascript"; } else if (filename.endsWith(".html")) {
else if(filename.endsWith(".png")) return "image/png"; return "text/html";
else if(filename.endsWith(".gif")) return "image/gif"; } else if (filename.endsWith(".css")) {
else if(filename.endsWith(".jpg")) return "image/jpeg"; return "text/css";
else if(filename.endsWith(".ico")) return "image/x-icon"; } else if (filename.endsWith(".js")) {
else if(filename.endsWith(".xml")) return "text/xml"; return "application/javascript";
else if(filename.endsWith(".pdf")) return "application/x-pdf"; } else if (filename.endsWith(".png")) {
else if(filename.endsWith(".zip")) return "application/x-zip"; return "image/png";
else if(filename.endsWith(".gz")) return "application/x-gzip"; } else if (filename.endsWith(".gif")) {
return "image/gif";
} else if (filename.endsWith(".jpg")) {
return "image/jpeg";
} else if (filename.endsWith(".ico")) {
return "image/x-icon";
} else if (filename.endsWith(".xml")) {
return "text/xml";
} else if (filename.endsWith(".pdf")) {
return "application/x-pdf";
} else if (filename.endsWith(".zip")) {
return "application/x-zip";
} else if (filename.endsWith(".gz")) {
return "application/x-gzip";
}
return "text/plain"; return "text/plain";
} }
bool handleFileRead(String path) { bool handleFileRead(String path) {
DBG_OUTPUT_PORT.println("handleFileRead: " + path); DBG_OUTPUT_PORT.println("handleFileRead: " + path);
if(path.endsWith("/")) path += "index.htm"; if (path.endsWith("/")) {
path += "index.htm";
}
String contentType = getContentType(path); String contentType = getContentType(path);
String pathWithGz = path + ".gz"; String pathWithGz = path + ".gz";
if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)) { if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)) {
if(SPIFFS.exists(pathWithGz)) if (SPIFFS.exists(pathWithGz)) {
path += ".gz"; path += ".gz";
}
File file = SPIFFS.open(path, "r"); File file = SPIFFS.open(path, "r");
server.streamFile(file, contentType); server.streamFile(file, contentType);
file.close(); file.close();
@ -85,58 +102,75 @@ bool handleFileRead(String path){
} }
void handleFileUpload() { void handleFileUpload() {
if(server.uri() != "/edit") return; if (server.uri() != "/edit") {
return;
}
HTTPUpload& upload = server.upload(); HTTPUpload& upload = server.upload();
if (upload.status == UPLOAD_FILE_START) { if (upload.status == UPLOAD_FILE_START) {
String filename = upload.filename; String filename = upload.filename;
if(!filename.startsWith("/")) filename = "/"+filename; if (!filename.startsWith("/")) {
filename = "/" + filename;
}
DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename); DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename);
fsUploadFile = SPIFFS.open(filename, "w"); fsUploadFile = SPIFFS.open(filename, "w");
filename = String(); filename = String();
} else if (upload.status == UPLOAD_FILE_WRITE) { } else if (upload.status == UPLOAD_FILE_WRITE) {
//DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize); //DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);
if(fsUploadFile) if (fsUploadFile) {
fsUploadFile.write(upload.buf, upload.currentSize); fsUploadFile.write(upload.buf, upload.currentSize);
}
} else if (upload.status == UPLOAD_FILE_END) { } else if (upload.status == UPLOAD_FILE_END) {
if(fsUploadFile) if (fsUploadFile) {
fsUploadFile.close(); fsUploadFile.close();
}
DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize); DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
} }
} }
void handleFileDelete() { void handleFileDelete() {
if(server.args() == 0) return server.send(500, "text/plain", "BAD ARGS"); if (server.args() == 0) {
return server.send(500, "text/plain", "BAD ARGS");
}
String path = server.arg(0); String path = server.arg(0);
DBG_OUTPUT_PORT.println("handleFileDelete: " + path); DBG_OUTPUT_PORT.println("handleFileDelete: " + path);
if(path == "/") if (path == "/") {
return server.send(500, "text/plain", "BAD PATH"); return server.send(500, "text/plain", "BAD PATH");
if(!SPIFFS.exists(path)) }
if (!SPIFFS.exists(path)) {
return server.send(404, "text/plain", "FileNotFound"); return server.send(404, "text/plain", "FileNotFound");
}
SPIFFS.remove(path); SPIFFS.remove(path);
server.send(200, "text/plain", ""); server.send(200, "text/plain", "");
path = String(); path = String();
} }
void handleFileCreate() { void handleFileCreate() {
if(server.args() == 0) if (server.args() == 0) {
return server.send(500, "text/plain", "BAD ARGS"); return server.send(500, "text/plain", "BAD ARGS");
}
String path = server.arg(0); String path = server.arg(0);
DBG_OUTPUT_PORT.println("handleFileCreate: " + path); DBG_OUTPUT_PORT.println("handleFileCreate: " + path);
if(path == "/") if (path == "/") {
return server.send(500, "text/plain", "BAD PATH"); return server.send(500, "text/plain", "BAD PATH");
if(SPIFFS.exists(path)) }
if (SPIFFS.exists(path)) {
return server.send(500, "text/plain", "FILE EXISTS"); return server.send(500, "text/plain", "FILE EXISTS");
}
File file = SPIFFS.open(path, "w"); File file = SPIFFS.open(path, "w");
if(file) if (file) {
file.close(); file.close();
else } else {
return server.send(500, "text/plain", "CREATE FAILED"); return server.send(500, "text/plain", "CREATE FAILED");
}
server.send(200, "text/plain", ""); server.send(200, "text/plain", "");
path = String(); path = String();
} }
void handleFileList() { void handleFileList() {
if(!server.hasArg("dir")) {server.send(500, "text/plain", "BAD ARGS"); return;} if (!server.hasArg("dir")) {
server.send(500, "text/plain", "BAD ARGS");
return;
}
String path = server.arg("dir"); String path = server.arg("dir");
DBG_OUTPUT_PORT.println("handleFileList: " + path); DBG_OUTPUT_PORT.println("handleFileList: " + path);
@ -146,7 +180,9 @@ void handleFileList() {
String output = "["; String output = "[";
while (dir.next()) { while (dir.next()) {
File entry = dir.openFile("r"); File entry = dir.openFile("r");
if (output != "[") output += ','; if (output != "[") {
output += ',';
}
bool isDir = false; bool isDir = false;
output += "{\"type\":\""; output += "{\"type\":\"";
output += (isDir) ? "dir" : "file"; output += (isDir) ? "dir" : "file";
@ -202,7 +238,9 @@ void setup(void){
server.on("/list", HTTP_GET, handleFileList); server.on("/list", HTTP_GET, handleFileList);
//load editor //load editor
server.on("/edit", HTTP_GET, []() { server.on("/edit", HTTP_GET, []() {
if(!handleFileRead("/edit.htm")) server.send(404, "text/plain", "FileNotFound"); if (!handleFileRead("/edit.htm")) {
server.send(404, "text/plain", "FileNotFound");
}
}); });
//create file //create file
server.on("/edit", HTTP_PUT, handleFileCreate); server.on("/edit", HTTP_PUT, handleFileCreate);
@ -210,13 +248,16 @@ void setup(void){
server.on("/edit", HTTP_DELETE, handleFileDelete); server.on("/edit", HTTP_DELETE, handleFileDelete);
//first callback is called after the request has ended with all parsed arguments //first callback is called after the request has ended with all parsed arguments
//second callback handles file uploads at that location //second callback handles file uploads at that location
server.on("/edit", HTTP_POST, [](){ server.send(200, "text/plain", ""); }, handleFileUpload); server.on("/edit", HTTP_POST, []() {
server.send(200, "text/plain", "");
}, handleFileUpload);
//called when the url is not defined here //called when the url is not defined here
//use it to load content from SPIFFS //use it to load content from SPIFFS
server.onNotFound([]() { server.onNotFound([]() {
if(!handleFileRead(server.uri())) if (!handleFileRead(server.uri())) {
server.send(404, "text/plain", "FileNotFound"); server.send(404, "text/plain", "FileNotFound");
}
}); });
//get heap status, analog input value and all GPIO statuses in one json call //get heap status, analog input value and all GPIO statuses in one json call

View File

@ -41,7 +41,9 @@ void setup() {
//Digest Auth Method with Custom realm and empty Failure Response //Digest Auth Method with Custom realm and empty Failure Response
//return server.requestAuthentication(DIGEST_AUTH, www_realm); //return server.requestAuthentication(DIGEST_AUTH, www_realm);
//Digest Auth Method with Custom realm and Failure Response //Digest Auth Method with Custom realm and Failure Response
{
return server.requestAuthentication(DIGEST_AUTH, www_realm, authFailResponse); return server.requestAuthentication(DIGEST_AUTH, www_realm, authFailResponse);
}
server.send(200, "text/plain", "Login OK"); server.send(200, "text/plain", "Login OK");
}); });
server.begin(); server.begin();

View File

@ -23,8 +23,9 @@ void setup() {
ArduinoOTA.begin(); ArduinoOTA.begin();
server.on("/", []() { server.on("/", []() {
if(!server.authenticate(www_username, www_password)) if (!server.authenticate(www_username, www_password)) {
return server.requestAuthentication(); return server.requestAuthentication();
}
server.send(200, "text/plain", "Login OK"); server.send(200, "text/plain", "Login OK");
}); });
server.begin(); server.begin();

View File

@ -56,19 +56,33 @@ void returnFail(String msg) {
bool loadFromSdCard(String path) { bool loadFromSdCard(String path) {
String dataType = "text/plain"; String dataType = "text/plain";
if(path.endsWith("/")) path += "index.htm"; if (path.endsWith("/")) {
path += "index.htm";
}
if(path.endsWith(".src")) path = path.substring(0, path.lastIndexOf(".")); if (path.endsWith(".src")) {
else if(path.endsWith(".htm")) dataType = "text/html"; path = path.substring(0, path.lastIndexOf("."));
else if(path.endsWith(".css")) dataType = "text/css"; } else if (path.endsWith(".htm")) {
else if(path.endsWith(".js")) dataType = "application/javascript"; dataType = "text/html";
else if(path.endsWith(".png")) dataType = "image/png"; } else if (path.endsWith(".css")) {
else if(path.endsWith(".gif")) dataType = "image/gif"; dataType = "text/css";
else if(path.endsWith(".jpg")) dataType = "image/jpeg"; } else if (path.endsWith(".js")) {
else if(path.endsWith(".ico")) dataType = "image/x-icon"; dataType = "application/javascript";
else if(path.endsWith(".xml")) dataType = "text/xml"; } else if (path.endsWith(".png")) {
else if(path.endsWith(".pdf")) dataType = "application/pdf"; dataType = "image/png";
else if(path.endsWith(".zip")) dataType = "application/zip"; } else if (path.endsWith(".gif")) {
dataType = "image/gif";
} else if (path.endsWith(".jpg")) {
dataType = "image/jpeg";
} else if (path.endsWith(".ico")) {
dataType = "image/x-icon";
} else if (path.endsWith(".xml")) {
dataType = "text/xml";
} else if (path.endsWith(".pdf")) {
dataType = "application/pdf";
} else if (path.endsWith(".zip")) {
dataType = "application/zip";
}
File dataFile = SD.open(path.c_str()); File dataFile = SD.open(path.c_str());
if (dataFile.isDirectory()) { if (dataFile.isDirectory()) {
@ -77,10 +91,13 @@ bool loadFromSdCard(String path){
dataFile = SD.open(path.c_str()); dataFile = SD.open(path.c_str());
} }
if (!dataFile) if (!dataFile) {
return false; return false;
}
if (server.hasArg("download")) dataType = "application/octet-stream"; if (server.hasArg("download")) {
dataType = "application/octet-stream";
}
if (server.streamFile(dataFile, dataType) != dataFile.size()) { if (server.streamFile(dataFile, dataType) != dataFile.size()) {
DBG_OUTPUT_PORT.println("Sent less data than expected!"); DBG_OUTPUT_PORT.println("Sent less data than expected!");
@ -91,17 +108,25 @@ bool loadFromSdCard(String path){
} }
void handleFileUpload() { void handleFileUpload() {
if(server.uri() != "/edit") return; if (server.uri() != "/edit") {
return;
}
HTTPUpload& upload = server.upload(); HTTPUpload& upload = server.upload();
if (upload.status == UPLOAD_FILE_START) { if (upload.status == UPLOAD_FILE_START) {
if(SD.exists((char *)upload.filename.c_str())) SD.remove((char *)upload.filename.c_str()); if (SD.exists((char *)upload.filename.c_str())) {
SD.remove((char *)upload.filename.c_str());
}
uploadFile = SD.open(upload.filename.c_str(), FILE_WRITE); uploadFile = SD.open(upload.filename.c_str(), FILE_WRITE);
DBG_OUTPUT_PORT.print("Upload: START, filename: "); DBG_OUTPUT_PORT.println(upload.filename); DBG_OUTPUT_PORT.print("Upload: START, filename: "); DBG_OUTPUT_PORT.println(upload.filename);
} else if (upload.status == UPLOAD_FILE_WRITE) { } else if (upload.status == UPLOAD_FILE_WRITE) {
if(uploadFile) uploadFile.write(upload.buf, upload.currentSize); if (uploadFile) {
uploadFile.write(upload.buf, upload.currentSize);
}
DBG_OUTPUT_PORT.print("Upload: WRITE, Bytes: "); DBG_OUTPUT_PORT.println(upload.currentSize); DBG_OUTPUT_PORT.print("Upload: WRITE, Bytes: "); DBG_OUTPUT_PORT.println(upload.currentSize);
} else if (upload.status == UPLOAD_FILE_END) { } else if (upload.status == UPLOAD_FILE_END) {
if(uploadFile) uploadFile.close(); if (uploadFile) {
uploadFile.close();
}
DBG_OUTPUT_PORT.print("Upload: END, Size: "); DBG_OUTPUT_PORT.println(upload.totalSize); DBG_OUTPUT_PORT.print("Upload: END, Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
} }
} }
@ -117,7 +142,9 @@ void deleteRecursive(String path){
file.rewindDirectory(); file.rewindDirectory();
while (true) { while (true) {
File entry = file.openNextFile(); File entry = file.openNextFile();
if (!entry) break; if (!entry) {
break;
}
String entryPath = path + "/" + entry.name(); String entryPath = path + "/" + entry.name();
if (entry.isDirectory()) { if (entry.isDirectory()) {
entry.close(); entry.close();
@ -134,7 +161,9 @@ void deleteRecursive(String path){
} }
void handleDelete() { void handleDelete() {
if(server.args() == 0) return returnFail("BAD ARGS"); if (server.args() == 0) {
return returnFail("BAD ARGS");
}
String path = server.arg(0); String path = server.arg(0);
if (path == "/" || !SD.exists((char *)path.c_str())) { if (path == "/" || !SD.exists((char *)path.c_str())) {
returnFail("BAD PATH"); returnFail("BAD PATH");
@ -145,7 +174,9 @@ void handleDelete(){
} }
void handleCreate() { void handleCreate() {
if(server.args() == 0) return returnFail("BAD ARGS"); if (server.args() == 0) {
return returnFail("BAD ARGS");
}
String path = server.arg(0); String path = server.arg(0);
if (path == "/" || SD.exists((char *)path.c_str())) { if (path == "/" || SD.exists((char *)path.c_str())) {
returnFail("BAD PATH"); returnFail("BAD PATH");
@ -165,9 +196,13 @@ void handleCreate(){
} }
void printDirectory() { void printDirectory() {
if(!server.hasArg("dir")) return returnFail("BAD ARGS"); if (!server.hasArg("dir")) {
return returnFail("BAD ARGS");
}
String path = server.arg("dir"); String path = server.arg("dir");
if(path != "/" && !SD.exists((char *)path.c_str())) return returnFail("BAD PATH"); if (path != "/" && !SD.exists((char *)path.c_str())) {
return returnFail("BAD PATH");
}
File dir = SD.open((char *)path.c_str()); File dir = SD.open((char *)path.c_str());
path = String(); path = String();
if (!dir.isDirectory()) { if (!dir.isDirectory()) {
@ -182,12 +217,14 @@ void printDirectory() {
server.sendContent("["); server.sendContent("[");
for (int cnt = 0; true; ++cnt) { for (int cnt = 0; true; ++cnt) {
File entry = dir.openNextFile(); File entry = dir.openNextFile();
if (!entry) if (!entry) {
break; break;
}
String output; String output;
if (cnt > 0) if (cnt > 0) {
output = ','; output = ',';
}
output += "{\"type\":\""; output += "{\"type\":\"";
output += (entry.isDirectory()) ? "dir" : "file"; output += (entry.isDirectory()) ? "dir" : "file";
@ -203,7 +240,9 @@ void printDirectory() {
} }
void handleNotFound() { void handleNotFound() {
if(hasSD && loadFromSdCard(server.uri())) return; if (hasSD && loadFromSdCard(server.uri())) {
return;
}
String message = "SDCARD Not Detected\n\n"; String message = "SDCARD Not Detected\n\n";
message += "URI: "; message += "URI: ";
message += server.uri(); message += server.uri();
@ -236,7 +275,9 @@ void setup(void){
if (i == 21) { if (i == 21) {
DBG_OUTPUT_PORT.print("Could not connect to"); DBG_OUTPUT_PORT.print("Could not connect to");
DBG_OUTPUT_PORT.println(ssid); DBG_OUTPUT_PORT.println(ssid);
while(1) delay(500); while (1) {
delay(500);
}
} }
DBG_OUTPUT_PORT.print("Connected! IP address: "); DBG_OUTPUT_PORT.print("Connected! IP address: ");
DBG_OUTPUT_PORT.println(WiFi.localIP()); DBG_OUTPUT_PORT.println(WiFi.localIP());
@ -253,7 +294,9 @@ void setup(void){
server.on("/list", HTTP_GET, printDirectory); server.on("/list", HTTP_GET, printDirectory);
server.on("/edit", HTTP_DELETE, handleDelete); server.on("/edit", HTTP_DELETE, handleDelete);
server.on("/edit", HTTP_PUT, handleCreate); server.on("/edit", HTTP_PUT, handleCreate);
server.on("/edit", HTTP_POST, [](){ returnOK(); }, handleFileUpload); server.on("/edit", HTTP_POST, []() {
returnOK();
}, handleFileUpload);
server.onNotFound(handleNotFound); server.onNotFound(handleNotFound);
server.begin(); server.begin();

View File

@ -1,19 +1,19 @@
/* /*
* HTTP over TLS (HTTPS) example sketch HTTP over TLS (HTTPS) example sketch
*
* This example demonstrates how to use This example demonstrates how to use
* WiFiClientSecure class to access HTTPS API. WiFiClientSecure class to access HTTPS API.
* We fetch and display the status of We fetch and display the status of
* esp8266/Arduino project continuous integration esp8266/Arduino project continuous integration
* build. build.
*
* Limitations: Limitations:
* only RSA certificates only RSA certificates
* no support of Perfect Forward Secrecy (PFS) no support of Perfect Forward Secrecy (PFS)
* TLSv1.2 is supported since version 2.4.0-rc1 TLSv1.2 is supported since version 2.4.0-rc1
*
* Created by Ivan Grokhotkov, 2015. Created by Ivan Grokhotkov, 2015.
* This example is in public domain. This example is in public domain.
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>

View File

@ -28,7 +28,7 @@ char pass[] = "********"; // your network password
unsigned int localPort = 2390; // local port to listen for UDP packets unsigned int localPort = 2390; // local port to listen for UDP packets
/* Don't hardwire the IP address or we won't get the benefits of the pool. /* Don't hardwire the IP address or we won't get the benefits of the pool.
* Lookup the IP address for the host name instead */ Lookup the IP address for the host name instead */
//IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server //IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server
IPAddress timeServerIP; // time.nist.gov NTP server address IPAddress timeServerIP; // time.nist.gov NTP server address
const char* ntpServerName = "time.nist.gov"; const char* ntpServerName = "time.nist.gov";
@ -40,8 +40,7 @@ byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing pack
// A UDP instance to let us send and receive packets over UDP // A UDP instance to let us send and receive packets over UDP
WiFiUDP udp; WiFiUDP udp;
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
Serial.println(); Serial.println();
Serial.println(); Serial.println();
@ -68,8 +67,7 @@ void setup()
Serial.println(udp.localPort()); Serial.println(udp.localPort());
} }
void loop() void loop() {
{
//get a random server from the pool //get a random server from the pool
WiFi.hostByName(ntpServerName, timeServerIP); WiFi.hostByName(ntpServerName, timeServerIP);
@ -80,8 +78,7 @@ void loop()
int cb = udp.parsePacket(); int cb = udp.parsePacket();
if (!cb) { if (!cb) {
Serial.println("no packet yet"); Serial.println("no packet yet");
} } else {
else {
Serial.print("packet received, length="); Serial.print("packet received, length=");
Serial.println(cb); Serial.println(cb);
// We've received a packet, read the data from it // We've received a packet, read the data from it
@ -129,8 +126,7 @@ void loop()
} }
// send an NTP request to the time server at the given address // send an NTP request to the time server at the given address
void sendNTPpacket(IPAddress& address) void sendNTPpacket(IPAddress& address) {
{
Serial.println("sending NTP packet..."); Serial.println("sending NTP packet...");
// set all bytes in the buffer to 0 // set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE); memset(packetBuffer, 0, NTP_PACKET_SIZE);

View File

@ -1,31 +1,31 @@
/* /*
* Copyright (c) 2015, Majenko Technologies Copyright (c) 2015, Majenko Technologies
* All rights reserved. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this * * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice, this * * Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution. other materials provided with the distribution.
*
* * Neither the name of Majenko Technologies nor the names of its * * Neither the name of Majenko Technologies nor the names of its
* contributors may be used to endorse or promote products derived from contributors may be used to endorse or promote products derived from
* this software without specific prior written permission. this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
/* Create a WiFi access point and provide a web server on it. */ /* Create a WiFi access point and provide a web server on it. */
@ -41,7 +41,7 @@ const char *password = "thereisnospoon";
ESP8266WebServer server(80); ESP8266WebServer server(80);
/* Just a little test message. Go to http://192.168.4.1 in a web browser /* Just a little test message. Go to http://192.168.4.1 in a web browser
* connected to this access point to see it. connected to this access point to see it.
*/ */
void handleRoot() { void handleRoot() {
server.send(200, "text/html", "<h1>You are connected</h1>"); server.send(200, "text/html", "<h1>You are connected</h1>");

View File

@ -1,9 +1,9 @@
/* /*
* This sketch sends data via HTTP GET requests to data.sparkfun.com service. This sketch sends data via HTTP GET requests to data.sparkfun.com service.
*
* You need to get streamId and privateKey at data.sparkfun.com and paste them You need to get streamId and privateKey at data.sparkfun.com and paste them
* below. Or just customize this script to talk to other HTTP servers. below. Or just customize this script to talk to other HTTP servers.
*
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>

View File

@ -1,6 +1,6 @@
/* /*
* This sketch sends a message to a TCP server This sketch sends a message to a TCP server
*
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>

View File

@ -173,11 +173,11 @@ void loop() {
// Match the request // Match the request
int val; int val;
if (req.indexOf("/gpio/0") != -1) if (req.indexOf("/gpio/0") != -1) {
val = 0; val = 0;
else if (req.indexOf("/gpio/1") != -1) } else if (req.indexOf("/gpio/1") != -1) {
val = 1; val = 1;
else { } else {
Serial.println("invalid request"); Serial.println("invalid request");
client.print("HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html><body>Not found</body></html>"); client.print("HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html><body>Not found</body></html>");
return; return;

View File

@ -1,6 +1,6 @@
/* /*
* This sketch trys to Connect to the best AP based on a given list This sketch trys to Connect to the best AP based on a given list
*
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>

View File

@ -1,7 +1,7 @@
/* /*
* This sketch demonstrates how to scan WiFi networks. This sketch demonstrates how to scan WiFi networks.
* The API is almost the same as with the WiFi Shield library, The API is almost the same as with the WiFi Shield library,
* the most obvious difference being the different file you need to include: the most obvious difference being the different file you need to include:
*/ */
#include "ESP8266WiFi.h" #include "ESP8266WiFi.h"
@ -22,14 +22,12 @@ void loop() {
// WiFi.scanNetworks will return the number of networks found // WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks(); int n = WiFi.scanNetworks();
Serial.println("scan done"); Serial.println("scan done");
if (n == 0) if (n == 0) {
Serial.println("no networks found"); Serial.println("no networks found");
else } else {
{
Serial.print(n); Serial.print(n);
Serial.println(" networks found"); Serial.println(" networks found");
for (int i = 0; i < n; ++i) for (int i = 0; i < n; ++i) {
{
// Print SSID and RSSI for each network found // Print SSID and RSSI for each network found
Serial.print(i + 1); Serial.print(i + 1);
Serial.print(": "); Serial.print(": ");

View File

@ -34,10 +34,14 @@ void setup() {
WiFi.begin(ssid, password); WiFi.begin(ssid, password);
Serial1.print("\nConnecting to "); Serial1.println(ssid); Serial1.print("\nConnecting to "); Serial1.println(ssid);
uint8_t i = 0; uint8_t i = 0;
while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500); while (WiFi.status() != WL_CONNECTED && i++ < 20) {
delay(500);
}
if (i == 21) { if (i == 21) {
Serial1.print("Could not connect to"); Serial1.println(ssid); Serial1.print("Could not connect to"); Serial1.println(ssid);
while(1) delay(500); while (1) {
delay(500);
}
} }
//start UART and the server //start UART and the server
Serial.begin(115200); Serial.begin(115200);
@ -56,7 +60,9 @@ void loop() {
for (i = 0; i < MAX_SRV_CLIENTS; i++) { for (i = 0; i < MAX_SRV_CLIENTS; i++) {
//find free/disconnected spot //find free/disconnected spot
if (!serverClients[i] || !serverClients[i].connected()) { if (!serverClients[i] || !serverClients[i].connected()) {
if(serverClients[i]) serverClients[i].stop(); if (serverClients[i]) {
serverClients[i].stop();
}
serverClients[i] = server.available(); serverClients[i] = server.available();
Serial1.print("New client: "); Serial1.print(i); Serial1.print("New client: "); Serial1.print(i);
break; break;
@ -74,7 +80,9 @@ void loop() {
if (serverClients[i] && serverClients[i].connected()) { if (serverClients[i] && serverClients[i].connected()) {
if (serverClients[i].available()) { if (serverClients[i].available()) {
//get data from the telnet client and push it to the UART //get data from the telnet client and push it to the UART
while(serverClients[i].available()) Serial.write(serverClients[i].read()); while (serverClients[i].available()) {
Serial.write(serverClients[i].read());
}
} }
} }
} }

View File

@ -1,10 +1,10 @@
/* /*
* This sketch demonstrates how to set up a simple HTTP-like server. This sketch demonstrates how to set up a simple HTTP-like server.
* The server will set a GPIO pin depending on the request The server will set a GPIO pin depending on the request
* http://server_ip/gpio/0 will set the GPIO2 low, http://server_ip/gpio/0 will set the GPIO2 low,
* http://server_ip/gpio/1 will set the GPIO2 high http://server_ip/gpio/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 module, will be server_ip is the IP address of the ESP8266 module, will be
* printed to Serial when the module is connected. printed to Serial when the module is connected.
*/ */
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
@ -68,11 +68,11 @@ void loop() {
// Match the request // Match the request
int val; int val;
if (req.indexOf("/gpio/0") != -1) if (req.indexOf("/gpio/0") != -1) {
val = 0; val = 0;
else if (req.indexOf("/gpio/1") != -1) } else if (req.indexOf("/gpio/1") != -1) {
val = 1; val = 1;
else { } else {
Serial.println("invalid request"); Serial.println("invalid request");
client.stop(); client.stop();
return; return;

View File

@ -10,13 +10,12 @@ String manageRequest(String request);
ESP8266WiFiMesh mesh_node = ESP8266WiFiMesh(ESP.getChipId(), manageRequest); ESP8266WiFiMesh mesh_node = ESP8266WiFiMesh(ESP.getChipId(), manageRequest);
/** /**
* Callback for when other nodes send you data Callback for when other nodes send you data
*
* @request The string received from another node in the mesh @request The string received from another node in the mesh
* @returns The string to send back to the other node @returns The string to send back to the other node
*/ */
String manageRequest(String request) String manageRequest(String request) {
{
/* Print out received message */ /* Print out received message */
Serial.print("received: "); Serial.print("received: ");
Serial.println(request); Serial.println(request);
@ -27,8 +26,7 @@ String manageRequest(String request)
return response; return response;
} }
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
delay(10); delay(10);
@ -40,8 +38,7 @@ void setup()
mesh_node.begin(); mesh_node.begin();
} }
void loop() void loop() {
{
/* Accept any incoming connections */ /* Accept any incoming connections */
mesh_node.acceptRequest(); mesh_node.acceptRequest();

View File

@ -1,8 +1,8 @@
/** /**
* httpUpdate.ino httpUpdate.ino
*
* Created on: 27.11.2015 Created on: 27.11.2015
*
*/ */
#include <Arduino.h> #include <Arduino.h>

View File

@ -1,8 +1,8 @@
/** /**
* httpUpdateSPIFFS.ino httpUpdateSPIFFS.ino
*
* Created on: 05.12.2015 Created on: 05.12.2015
*
*/ */
#include <Arduino.h> #include <Arduino.h>

View File

@ -1,15 +1,15 @@
/** /**
* @file OTA-mDNS-SPIFFS.ino @file OTA-mDNS-SPIFFS.ino
*
* @author Pascal Gollor (http://www.pgollor.de/cms/) @author Pascal Gollor (http://www.pgollor.de/cms/)
* @date 2015-09-18 @date 2015-09-18
*
* changelog: changelog:
* 2015-10-22: 2015-10-22:
* - Use new ArduinoOTA library. - Use new ArduinoOTA library.
* - loadConfig function can handle different line endings - loadConfig function can handle different line endings
* - remove mDNS studd. ArduinoOTA handle it. - remove mDNS studd. ArduinoOTA handle it.
*
*/ */
// includes // includes
@ -21,15 +21,15 @@
/** /**
* @brief mDNS and OTA Constants @brief mDNS and OTA Constants
* @{ @{
*/ */
#define HOSTNAME "ESP8266-OTA-" ///< Hostename. The setup function adds the Chip ID at the end. #define HOSTNAME "ESP8266-OTA-" ///< Hostename. The setup function adds the Chip ID at the end.
/// @} /// @}
/** /**
* @brief Default WiFi connection information. @brief Default WiFi connection information.
* @{ @{
*/ */
const char* ap_default_ssid = "esp8266"; ///< Default SSID. const char* ap_default_ssid = "esp8266"; ///< Default SSID.
const char* ap_default_psk = "esp8266esp8266"; ///< Default PSK. const char* ap_default_psk = "esp8266esp8266"; ///< Default PSK.
@ -39,21 +39,19 @@ const char* ap_default_psk = "esp8266esp8266"; ///< Default PSK.
//#define SERIAL_VERBOSE //#define SERIAL_VERBOSE
/** /**
* @brief Read WiFi connection information from file system. @brief Read WiFi connection information from file system.
* @param ssid String pointer for storing SSID. @param ssid String pointer for storing SSID.
* @param pass String pointer for storing PSK. @param pass String pointer for storing PSK.
* @return True or False. @return True or False.
*
* The config file have to containt the WiFi SSID in the first line The config file have to containt the WiFi SSID in the first line
* and the WiFi PSK in the second line. and the WiFi PSK in the second line.
* Line seperator can be \r\n (CR LF) \r or \n. Line seperator can be \r\n (CR LF) \r or \n.
*/ */
bool loadConfig(String *ssid, String *pass) bool loadConfig(String *ssid, String *pass) {
{
// open file for reading. // open file for reading.
File configFile = SPIFFS.open("/cl_conf.txt", "r"); File configFile = SPIFFS.open("/cl_conf.txt", "r");
if (!configFile) if (!configFile) {
{
Serial.println("Failed to open cl_conf.txt."); Serial.println("Failed to open cl_conf.txt.");
return false; return false;
@ -69,19 +67,16 @@ bool loadConfig(String *ssid, String *pass)
int8_t pos = content.indexOf("\r\n"); int8_t pos = content.indexOf("\r\n");
uint8_t le = 2; uint8_t le = 2;
// check for linux and mac line ending. // check for linux and mac line ending.
if (pos == -1) if (pos == -1) {
{
le = 1; le = 1;
pos = content.indexOf("\n"); pos = content.indexOf("\n");
if (pos == -1) if (pos == -1) {
{
pos = content.indexOf("\r"); pos = content.indexOf("\r");
} }
} }
// If there is no second line: Some information is missing. // If there is no second line: Some information is missing.
if (pos == -1) if (pos == -1) {
{
Serial.println("Infvalid content."); Serial.println("Infvalid content.");
Serial.println(content); Serial.println(content);
@ -108,17 +103,15 @@ bool loadConfig(String *ssid, String *pass)
/** /**
* @brief Save WiFi SSID and PSK to configuration file. @brief Save WiFi SSID and PSK to configuration file.
* @param ssid SSID as string pointer. @param ssid SSID as string pointer.
* @param pass PSK as string pointer, @param pass PSK as string pointer,
* @return True or False. @return True or False.
*/ */
bool saveConfig(String *ssid, String *pass) bool saveConfig(String *ssid, String *pass) {
{
// Open config file for writing. // Open config file for writing.
File configFile = SPIFFS.open("/cl_conf.txt", "w"); File configFile = SPIFFS.open("/cl_conf.txt", "w");
if (!configFile) if (!configFile) {
{
Serial.println("Failed to open cl_conf.txt for writing"); Serial.println("Failed to open cl_conf.txt for writing");
return false; return false;
@ -135,10 +128,9 @@ bool saveConfig(String *ssid, String *pass)
/** /**
* @brief Arduino setup function. @brief Arduino setup function.
*/ */
void setup() void setup() {
{
String station_ssid = ""; String station_ssid = "";
String station_psk = ""; String station_psk = "";
@ -161,15 +153,13 @@ void setup()
// Initialize file system. // Initialize file system.
if (!SPIFFS.begin()) if (!SPIFFS.begin()) {
{
Serial.println("Failed to mount file system"); Serial.println("Failed to mount file system");
return; return;
} }
// Load wifi connection information. // Load wifi connection information.
if (! loadConfig(&station_ssid, &station_psk)) if (! loadConfig(&station_ssid, &station_psk)) {
{
station_ssid = ""; station_ssid = "";
station_psk = ""; station_psk = "";
@ -178,15 +168,13 @@ void setup()
// Check WiFi connection // Check WiFi connection
// ... check mode // ... check mode
if (WiFi.getMode() != WIFI_STA) if (WiFi.getMode() != WIFI_STA) {
{
WiFi.mode(WIFI_STA); WiFi.mode(WIFI_STA);
delay(10); delay(10);
} }
// ... Compare file config with sdk config. // ... Compare file config with sdk config.
if (WiFi.SSID() != station_ssid || WiFi.psk() != station_psk) if (WiFi.SSID() != station_ssid || WiFi.psk() != station_psk) {
{
Serial.println("WiFi config changed."); Serial.println("WiFi config changed.");
// ... Try to connect to WiFi station. // ... Try to connect to WiFi station.
@ -198,9 +186,7 @@ void setup()
// ... Uncomment this for debugging output. // ... Uncomment this for debugging output.
//WiFi.printDiag(Serial); //WiFi.printDiag(Serial);
} } else {
else
{
// ... Begin with sdk config. // ... Begin with sdk config.
WiFi.begin(); WiFi.begin();
} }
@ -209,8 +195,7 @@ void setup()
// ... Give ESP 10 seconds to connect to station. // ... Give ESP 10 seconds to connect to station.
unsigned long startTime = millis(); unsigned long startTime = millis();
while (WiFi.status() != WL_CONNECTED && millis() - startTime < 10000) while (WiFi.status() != WL_CONNECTED && millis() - startTime < 10000) {
{
Serial.write('.'); Serial.write('.');
//Serial.print(WiFi.status()); //Serial.print(WiFi.status());
delay(500); delay(500);
@ -218,14 +203,11 @@ void setup()
Serial.println(); Serial.println();
// Check connection // Check connection
if(WiFi.status() == WL_CONNECTED) if (WiFi.status() == WL_CONNECTED) {
{
// ... print IP Address // ... print IP Address
Serial.print("IP address: "); Serial.print("IP address: ");
Serial.println(WiFi.localIP()); Serial.println(WiFi.localIP());
} } else {
else
{
Serial.println("Can not connect to WiFi station. Go into AP mode."); Serial.println("Can not connect to WiFi station. Go into AP mode.");
// Go into software AP mode. // Go into software AP mode.
@ -246,10 +228,9 @@ void setup()
/** /**
* @brief Arduino loop function. @brief Arduino loop function.
*/ */
void loop() void loop() {
{
// Handle OTA server. // Handle OTA server.
ArduinoOTA.handle(); ArduinoOTA.handle();
yield(); yield();

View File

@ -49,8 +49,7 @@ void setup() {
Serial.println("mDNS query done"); Serial.println("mDNS query done");
if (n == 0) { if (n == 0) {
Serial.println("no services found"); Serial.println("no services found");
} } else {
else {
Serial.print(n); Serial.print(n);
Serial.println(" service(s) found"); Serial.println(" service(s) found");
for (int i = 0; i < n; ++i) { for (int i = 0; i < n; ++i) {

View File

@ -26,8 +26,7 @@ const char* password = "..............";
// TCP server at port 80 will respond to HTTP requests // TCP server at port 80 will respond to HTTP requests
WiFiServer server(80); WiFiServer server(80);
void setup(void) void setup(void) {
{
Serial.begin(115200); Serial.begin(115200);
// Connect to WiFi network // Connect to WiFi network
@ -67,8 +66,7 @@ void setup(void)
MDNS.addService("http", "tcp", 80); MDNS.addService("http", "tcp", 80);
} }
void loop(void) void loop(void) {
{
// Check if a client has connected // Check if a client has connected
WiFiClient client = server.available(); WiFiClient client = server.available();
if (!client) { if (!client) {
@ -100,17 +98,14 @@ void loop(void)
client.flush(); client.flush();
String s; String s;
if (req == "/") if (req == "/") {
{
IPAddress ip = WiFi.localIP(); IPAddress ip = WiFi.localIP();
String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]); String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at "; s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at ";
s += ipStr; s += ipStr;
s += "</html>\r\n\r\n"; s += "</html>\r\n\r\n";
Serial.println("Sending 200"); Serial.println("Sending 200");
} } else {
else
{
s = "HTTP/1.1 404 Not Found\r\n\r\n"; s = "HTTP/1.1 404 Not Found\r\n\r\n";
Serial.println("Sending 404"); Serial.println("Sending 404");
} }

View File

@ -8,8 +8,8 @@
Using an Arduino Wiznet Ethernet shield. Using an Arduino Wiznet Ethernet shield.
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional) Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009 created 18 Dec 2009
by David A. Mellis by David A. Mellis
@ -27,7 +27,8 @@
// The IP address will be dependent on your local network. // The IP address will be dependent on your local network.
// gateway and subnet are optional: // gateway and subnet are optional:
byte mac[] = { byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177); IPAddress ip(192, 168, 1, 177);
IPAddress gateway(192, 168, 1, 1); IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0); IPAddress subnet(255, 255, 0, 0);

View File

@ -156,8 +156,7 @@ void listenForEthernetClients() {
if (c == '\n') { if (c == '\n') {
// you're starting a new line // you're starting a new line
currentLineIsBlank = true; currentLineIsBlank = true;
} } else if (c != '\r') {
else if (c != '\r') {
// you've gotten a character on the current line // you've gotten a character on the current line
currentLineIsBlank = false; currentLineIsBlank = false;
} }

View File

@ -7,8 +7,8 @@
Using an Arduino Wiznet Ethernet shield. Using an Arduino Wiznet Ethernet shield.
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional) Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009 created 18 Dec 2009
by David A. Mellis by David A. Mellis

View File

@ -6,7 +6,7 @@
using an Arduino Wiznet Ethernet shield. using an Arduino Wiznet Ethernet shield.
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
created 12 April 2011 created 12 April 2011
modified 9 Apr 2012 modified 9 Apr 2012

View File

@ -9,7 +9,7 @@
THis version attempts to get an IP address using DHCP THis version attempts to get an IP address using DHCP
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
created 21 May 2011 created 21 May 2011
modified 9 Apr 2012 modified 9 Apr 2012

View File

@ -10,7 +10,7 @@
http://processing.org/ http://processing.org/
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
created 14 Sep 2010 created 14 Sep 2010
modified 9 Apr 2012 modified 9 Apr 2012
@ -54,15 +54,13 @@ void setup() {
// if you get a connection, report back via serial: // if you get a connection, report back via serial:
if (client.connect(server, 10002)) { if (client.connect(server, 10002)) {
Serial.println("connected"); Serial.println("connected");
} } else {
else {
// if you didn't get a connection to the server: // if you didn't get a connection to the server:
Serial.println("connection failed"); Serial.println("connection failed");
} }
} }
void loop() void loop() {
{
// if there are incoming bytes available // if there are incoming bytes available
// from the server, read them and print them: // from the server, read them and print them:
if (client.available()) { if (client.available()) {

View File

@ -45,17 +45,14 @@ void setup() {
void loop() { void loop() {
// if there's data available, read a packet // if there's data available, read a packet
int packetSize = Udp.parsePacket(); int packetSize = Udp.parsePacket();
if (packetSize) if (packetSize) {
{
Serial.print("Received packet of size "); Serial.print("Received packet of size ");
Serial.println(packetSize); Serial.println(packetSize);
Serial.print("From "); Serial.print("From ");
IPAddress remote = Udp.remoteIP(); IPAddress remote = Udp.remoteIP();
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++) {
{
Serial.print(remote[i], DEC); Serial.print(remote[i], DEC);
if (i < 3) if (i < 3) {
{
Serial.print("."); Serial.print(".");
} }
} }

View File

@ -37,8 +37,7 @@ byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing pack
// A UDP instance to let us send and receive packets over UDP // A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp; EthernetUDP Udp;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -56,8 +55,7 @@ void setup()
Udp.begin(localPort); Udp.begin(localPort);
} }
void loop() void loop() {
{
sendNTPpacket(timeServer); // send an NTP packet to a time server sendNTPpacket(timeServer); // send an NTP packet to a time server
// wait to see if a reply is available // wait to see if a reply is available
@ -108,8 +106,7 @@ void loop()
} }
// send an NTP request to the time server at the given address // send an NTP request to the time server at the given address
void sendNTPpacket(char* address) void sendNTPpacket(char* address) {
{
// set all bytes in the buffer to 0 // set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE); memset(packetBuffer, 0, NTP_PACKET_SIZE);
// Initialize values needed to form NTP request // Initialize values needed to form NTP request

View File

@ -5,7 +5,7 @@
using an Arduino Wiznet Ethernet shield. using an Arduino Wiznet Ethernet shield.
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
created 18 Dec 2009 created 18 Dec 2009
by David A. Mellis by David A. Mellis
@ -59,15 +59,13 @@ void setup() {
client.println("Host: www.google.com"); client.println("Host: www.google.com");
client.println("Connection: close"); client.println("Connection: close");
client.println(); client.println();
} } else {
else {
// kf you didn't get a connection to the server: // kf you didn't get a connection to the server:
Serial.println("connection failed"); Serial.println("connection failed");
} }
} }
void loop() void loop() {
{
// if there are incoming bytes available // if there are incoming bytes available
// from the server, read them and print them: // from the server, read them and print them:
if (client.available()) { if (client.available()) {

View File

@ -10,7 +10,7 @@
IP address, and DNS address. IP address, and DNS address.
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
created 19 Apr 2012 created 19 Apr 2012
by Tom Igoe by Tom Igoe
@ -98,8 +98,7 @@ void httpRequest() {
// note the time that the connection was made: // note the time that the connection was made:
lastConnectionTime = millis(); lastConnectionTime = millis();
} } else {
else {
// if you couldn't make a connection: // if you couldn't make a connection:
Serial.println("connection failed"); Serial.println("connection failed");
} }

View File

@ -5,8 +5,8 @@
using an Arduino Wiznet Ethernet shield. using an Arduino Wiznet Ethernet shield.
Circuit: Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13 Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional) Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009 created 18 Dec 2009
by David A. Mellis by David A. Mellis
@ -84,8 +84,7 @@ void loop() {
if (c == '\n') { if (c == '\n') {
// you're starting a new line // you're starting a new line
currentLineIsBlank = true; currentLineIsBlank = true;
} } else if (c != '\r') {
else if (c != '\r') {
// you've gotten a character on the current line // you've gotten a character on the current line
currentLineIsBlank = false; currentLineIsBlank = false;
} }

View File

@ -42,8 +42,7 @@ struct sRFC1305 packetBuffer; //buffer to hold incoming and outgoing packets
// A UDP instance to let us send and receive packets over UDP // A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp; EthernetUDP Udp;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -62,8 +61,7 @@ void setup()
Udp.begin(localPort); Udp.begin(localPort);
} }
void loop() void loop() {
{
sendNTPpacket(timeServer); // send an NTP packet to a time server sendNTPpacket(timeServer); // send an NTP packet to a time server
// wait to see if a reply is available // wait to see if a reply is available
@ -125,8 +123,7 @@ void loop()
} }
// send an NTP request to the time server at the given address // send an NTP request to the time server at the given address
unsigned long sendNTPpacket(char* address) unsigned long sendNTPpacket(char* address) {
{
// set all bytes in the buffer to 0 // set all bytes in the buffer to 0
memset((char *)&packetBuffer, 0, NTP_PACKET_SIZE); memset((char *)&packetBuffer, 0, NTP_PACKET_SIZE);
// Initialize values needed to form NTP request // Initialize values needed to form NTP request

View File

@ -1,5 +1,5 @@
/** /**
* simple demo to show sha1 calculation simple demo to show sha1 calculation
*/ */
#include <Arduino.h> #include <Arduino.h>
#include <Hash.h> #include <Hash.h>

View File

@ -6,7 +6,7 @@
Very useful for testing a card when you're not sure whether its working or not. Very useful for testing a card when you're not sure whether its working or not.
The circuit: The circuit:
* SD card attached to SPI bus as follows: SD card attached to SPI bus as follows:
** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
@ -34,8 +34,7 @@ SdFile root;
// Sparkfun SD shield: pin 8 // Sparkfun SD shield: pin 8
const int chipSelect = 4; const int chipSelect = 4;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {

View File

@ -5,8 +5,8 @@
to an SD card using the SD library. to an SD card using the SD library.
The circuit: The circuit:
* analog sensors on analog ins 0, 1, and 2 analog sensors on analog ins 0, 1, and 2
* SD card attached to SPI bus as follows: SD card attached to SPI bus as follows:
** MOSI - pin 11 ** MOSI - pin 11
** MISO - pin 12 ** MISO - pin 12
** CLK - pin 13 ** CLK - pin 13
@ -25,8 +25,7 @@
const int chipSelect = 4; const int chipSelect = 4;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -45,8 +44,7 @@ void setup()
Serial.println("card initialized."); Serial.println("card initialized.");
} }
void loop() void loop() {
{
// make a string for assembling the data to log: // make a string for assembling the data to log:
String dataString = ""; String dataString = "";

View File

@ -5,7 +5,7 @@
SD library and send it over the serial port. SD library and send it over the serial port.
The circuit: The circuit:
* SD card attached to SPI bus as follows: SD card attached to SPI bus as follows:
** MOSI - pin 11 ** MOSI - pin 11
** MISO - pin 12 ** MISO - pin 12
** CLK - pin 13 ** CLK - pin 13
@ -25,8 +25,7 @@
const int chipSelect = 4; const int chipSelect = 4;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -61,7 +60,6 @@ void setup()
} }
} }
void loop() void loop() {
{
} }

View File

@ -3,7 +3,7 @@
This example shows how to create and destroy an SD card file This example shows how to create and destroy an SD card file
The circuit: The circuit:
* SD card attached to SPI bus as follows: SD card attached to SPI bus as follows:
** MOSI - pin 11 ** MOSI - pin 11
** MISO - pin 12 ** MISO - pin 12
** CLK - pin 13 ** CLK - pin 13
@ -22,8 +22,7 @@
File myFile; File myFile;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -41,8 +40,7 @@ void setup()
if (SD.exists("example.txt")) { if (SD.exists("example.txt")) {
Serial.println("example.txt exists."); Serial.println("example.txt exists.");
} } else {
else {
Serial.println("example.txt doesn't exist."); Serial.println("example.txt doesn't exist.");
} }
@ -54,8 +52,7 @@ void setup()
// Check to see if the file exists: // Check to see if the file exists:
if (SD.exists("example.txt")) { if (SD.exists("example.txt")) {
Serial.println("example.txt exists."); Serial.println("example.txt exists.");
} } else {
else {
Serial.println("example.txt doesn't exist."); Serial.println("example.txt doesn't exist.");
} }
@ -65,14 +62,12 @@ void setup()
if (SD.exists("example.txt")) { if (SD.exists("example.txt")) {
Serial.println("example.txt exists."); Serial.println("example.txt exists.");
} } else {
else {
Serial.println("example.txt doesn't exist."); Serial.println("example.txt doesn't exist.");
} }
} }
void loop() void loop() {
{
// nothing happens after setup finishes. // nothing happens after setup finishes.
} }

View File

@ -3,7 +3,7 @@
This example shows how to read and write data to and from an SD card file This example shows how to read and write data to and from an SD card file
The circuit: The circuit:
* SD card attached to SPI bus as follows: SD card attached to SPI bus as follows:
** MOSI - pin 11 ** MOSI - pin 11
** MISO - pin 12 ** MISO - pin 12
** CLK - pin 13 ** CLK - pin 13
@ -23,8 +23,7 @@
File myFile; File myFile;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -73,8 +72,7 @@ void setup()
} }
} }
void loop() void loop() {
{
// nothing happens after setup // nothing happens after setup
} }

View File

@ -5,7 +5,7 @@
directory on a SD card directory on a SD card
The circuit: The circuit:
* SD card attached to SPI bus as follows: SD card attached to SPI bus as follows:
** MOSI - pin 11 ** MOSI - pin 11
** MISO - pin 12 ** MISO - pin 12
** CLK - pin 13 ** CLK - pin 13
@ -26,8 +26,7 @@
File root; File root;
void setup() void setup() {
{
// Open serial communications and wait for port to open: // Open serial communications and wait for port to open:
Serial.begin(9600); Serial.begin(9600);
while (!Serial) { while (!Serial) {
@ -49,8 +48,7 @@ void setup()
Serial.println("done!"); Serial.println("done!");
} }
void loop() void loop() {
{
// nothing happens after setup finishes. // nothing happens after setup finishes.
} }

View File

@ -16,21 +16,18 @@
*/ */
#include <SPI.h> #include <SPI.h>
class ESPMaster class ESPMaster {
{
private: private:
uint8_t _ss_pin; uint8_t _ss_pin;
public: public:
ESPMaster(uint8_t pin): _ss_pin(pin) {} ESPMaster(uint8_t pin): _ss_pin(pin) {}
void begin() void begin() {
{
pinMode(_ss_pin, OUTPUT); pinMode(_ss_pin, OUTPUT);
digitalWrite(_ss_pin, HIGH); digitalWrite(_ss_pin, HIGH);
} }
uint32_t readStatus() uint32_t readStatus() {
{
digitalWrite(_ss_pin, LOW); digitalWrite(_ss_pin, LOW);
SPI.transfer(0x04); SPI.transfer(0x04);
uint32_t status = (SPI.transfer(0) | ((uint32_t)(SPI.transfer(0)) << 8) | ((uint32_t)(SPI.transfer(0)) << 16) | ((uint32_t)(SPI.transfer(0)) << 24)); uint32_t status = (SPI.transfer(0) | ((uint32_t)(SPI.transfer(0)) << 8) | ((uint32_t)(SPI.transfer(0)) << 16) | ((uint32_t)(SPI.transfer(0)) << 24));
@ -38,8 +35,7 @@ public:
return status; return status;
} }
void writeStatus(uint32_t status) void writeStatus(uint32_t status) {
{
digitalWrite(_ss_pin, LOW); digitalWrite(_ss_pin, LOW);
SPI.transfer(0x01); SPI.transfer(0x01);
SPI.transfer(status & 0xFF); SPI.transfer(status & 0xFF);
@ -49,8 +45,7 @@ public:
digitalWrite(_ss_pin, HIGH); digitalWrite(_ss_pin, HIGH);
} }
void readData(uint8_t * data) void readData(uint8_t * data) {
{
digitalWrite(_ss_pin, LOW); digitalWrite(_ss_pin, LOW);
SPI.transfer(0x03); SPI.transfer(0x03);
SPI.transfer(0x00); SPI.transfer(0x00);
@ -60,8 +55,7 @@ public:
digitalWrite(_ss_pin, HIGH); digitalWrite(_ss_pin, HIGH);
} }
void writeData(uint8_t * data, size_t len) void writeData(uint8_t * data, size_t len) {
{
uint8_t i = 0; uint8_t i = 0;
digitalWrite(_ss_pin, LOW); digitalWrite(_ss_pin, LOW);
SPI.transfer(0x02); SPI.transfer(0x02);
@ -75,24 +69,21 @@ public:
digitalWrite(_ss_pin, HIGH); digitalWrite(_ss_pin, HIGH);
} }
String readData() String readData() {
{
char data[33]; char data[33];
data[32] = 0; data[32] = 0;
readData((uint8_t *)data); readData((uint8_t *)data);
return String(data); return String(data);
} }
void writeData(const char * data) void writeData(const char * data) {
{
writeData((uint8_t *)data, strlen(data)); writeData((uint8_t *)data, strlen(data));
} }
}; };
ESPMaster esp(SS); ESPMaster esp(SS);
void send(const char * message) void send(const char * message) {
{
Serial.print("Master: "); Serial.print("Master: ");
Serial.println(message); Serial.println(message);
esp.writeData(message); esp.writeData(message);
@ -102,8 +93,7 @@ void send(const char * message)
Serial.println(); Serial.println();
} }
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
SPI.begin(); SPI.begin();
esp.begin(); esp.begin();
@ -111,8 +101,7 @@ void setup()
send("Hello Slave!"); send("Hello Slave!");
} }
void loop() void loop() {
{
delay(1000); delay(1000);
send("Are you alive?"); send("Are you alive?");
} }

View File

@ -17,26 +17,22 @@
*/ */
#include <SPI.h> #include <SPI.h>
class ESPSafeMaster class ESPSafeMaster {
{
private: private:
uint8_t _ss_pin; uint8_t _ss_pin;
void _pulseSS() void _pulseSS() {
{
digitalWrite(_ss_pin, HIGH); digitalWrite(_ss_pin, HIGH);
delayMicroseconds(5); delayMicroseconds(5);
digitalWrite(_ss_pin, LOW); digitalWrite(_ss_pin, LOW);
} }
public: public:
ESPSafeMaster(uint8_t pin): _ss_pin(pin) {} ESPSafeMaster(uint8_t pin): _ss_pin(pin) {}
void begin() void begin() {
{
pinMode(_ss_pin, OUTPUT); pinMode(_ss_pin, OUTPUT);
_pulseSS(); _pulseSS();
} }
uint32_t readStatus() uint32_t readStatus() {
{
_pulseSS(); _pulseSS();
SPI.transfer(0x04); SPI.transfer(0x04);
uint32_t status = (SPI.transfer(0) | ((uint32_t)(SPI.transfer(0)) << 8) | ((uint32_t)(SPI.transfer(0)) << 16) | ((uint32_t)(SPI.transfer(0)) << 24)); uint32_t status = (SPI.transfer(0) | ((uint32_t)(SPI.transfer(0)) << 8) | ((uint32_t)(SPI.transfer(0)) << 16) | ((uint32_t)(SPI.transfer(0)) << 24));
@ -44,8 +40,7 @@ public:
return status; return status;
} }
void writeStatus(uint32_t status) void writeStatus(uint32_t status) {
{
_pulseSS(); _pulseSS();
SPI.transfer(0x01); SPI.transfer(0x01);
SPI.transfer(status & 0xFF); SPI.transfer(status & 0xFF);
@ -55,8 +50,7 @@ public:
_pulseSS(); _pulseSS();
} }
void readData(uint8_t * data) void readData(uint8_t * data) {
{
_pulseSS(); _pulseSS();
SPI.transfer(0x03); SPI.transfer(0x03);
SPI.transfer(0x00); SPI.transfer(0x00);
@ -66,8 +60,7 @@ public:
_pulseSS(); _pulseSS();
} }
void writeData(uint8_t * data, size_t len) void writeData(uint8_t * data, size_t len) {
{
uint8_t i = 0; uint8_t i = 0;
_pulseSS(); _pulseSS();
SPI.transfer(0x02); SPI.transfer(0x02);
@ -81,24 +74,21 @@ public:
_pulseSS(); _pulseSS();
} }
String readData() String readData() {
{
char data[33]; char data[33];
data[32] = 0; data[32] = 0;
readData((uint8_t *)data); readData((uint8_t *)data);
return String(data); return String(data);
} }
void writeData(const char * data) void writeData(const char * data) {
{
writeData((uint8_t *)data, strlen(data)); writeData((uint8_t *)data, strlen(data));
} }
}; };
ESPSafeMaster esp(SS); ESPSafeMaster esp(SS);
void send(const char * message) void send(const char * message) {
{
Serial.print("Master: "); Serial.print("Master: ");
Serial.println(message); Serial.println(message);
esp.writeData(message); esp.writeData(message);
@ -108,8 +98,7 @@ void send(const char * message)
Serial.println(); Serial.println();
} }
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
SPI.begin(); SPI.begin();
esp.begin(); esp.begin();
@ -117,8 +106,7 @@ void setup()
send("Hello Slave!"); send("Hello Slave!");
} }
void loop() void loop() {
{
delay(1000); delay(1000);
send("Are you alive?"); send("Are you alive?");
} }

View File

@ -17,8 +17,7 @@
#include "SPISlave.h" #include "SPISlave.h"
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
Serial.setDebugOutput(true); Serial.setDebugOutput(true);

View File

@ -16,22 +16,19 @@ Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards // twelve servo objects can be created on most boards
void setup() void setup() {
{
myservo.attach(2); // attaches the servo on GIO2 to the servo object myservo.attach(2); // attaches the servo on GIO2 to the servo object
} }
void loop() void loop() {
{
int pos; int pos;
for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos' myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position delay(15); // waits 15ms for the servo to reach the position
} }
for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos' myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position delay(15); // waits 15ms for the servo to reach the position
} }

View File

@ -7,8 +7,7 @@
#include <TFTv2.h> #include <TFTv2.h>
#include <SPI.h> #include <SPI.h>
void setup() void setup() {
{
TFT_BL_ON; //turn on the background light TFT_BL_ON; //turn on the background light
Tft.TFTinit(); //init TFT library Tft.TFTinit(); //init TFT library
@ -22,8 +21,7 @@ void setup()
Tft.fillCircle(200, 200, 30, BLUE); //center: (200, 200), r = 30 ,color : BLUE Tft.fillCircle(200, 200, 30, BLUE); //center: (200, 200), r = 30 ,color : BLUE
} }
void loop() void loop() {
{
} }

View File

@ -7,8 +7,7 @@
#include <stdint.h> #include <stdint.h>
#include <TFTv2.h> #include <TFTv2.h>
#include <SPI.h> #include <SPI.h>
void setup() void setup() {
{
TFT_BL_ON; // turn on the background light TFT_BL_ON; // turn on the background light
Tft.TFTinit(); //init TFT library Tft.TFTinit(); //init TFT library
@ -21,8 +20,7 @@ void setup()
//start: (30, 60), high: 150, color: blue //start: (30, 60), high: 150, color: blue
} }
void loop() void loop() {
{
} }

View File

@ -8,8 +8,7 @@
#include <TFTv2.h> #include <TFTv2.h>
#include <SPI.h> #include <SPI.h>
void setup() void setup() {
{
TFT_BL_ON; // turn on the background light TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library Tft.TFTinit(); // init TFT library
@ -30,8 +29,7 @@ void setup()
} }
void loop() void loop() {
{
} }

View File

@ -7,8 +7,7 @@
#include <TFTv2.h> #include <TFTv2.h>
#include <SPI.h> #include <SPI.h>
void setup() void setup() {
{
TFT_BL_ON; // turn on the background light TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library Tft.TFTinit(); // init TFT library
@ -17,8 +16,7 @@ void setup()
Tft.drawRectangle(100, 170, 120, 60, BLUE); Tft.drawRectangle(100, 170, 120, 60, BLUE);
} }
void loop() void loop() {
{
} }
/********************************************************************************************************* /*********************************************************************************************************

View File

@ -14,19 +14,16 @@ unsigned int colors[8] = {BLACK, RED, GREEN, BLUE, CYAN, YELLOW, WHITE, GRAY1};
TouchScreen ts = TouchScreen(XP, YP, XM, YM); //init TouchScreen port pins TouchScreen ts = TouchScreen(XP, YP, XM, YM); //init TouchScreen port pins
void setup() void setup() {
{
Tft.TFTinit(); //init TFT library Tft.TFTinit(); //init TFT library
Serial.begin(115200); Serial.begin(115200);
//Draw the pallet //Draw the pallet
for(int i = 0; i<8; i++) for (int i = 0; i < 8; i++) {
{
Tft.fillRectangle(i * 30, 0, 30, ColorPaletteHigh, colors[i]); Tft.fillRectangle(i * 30, 0, 30, ColorPaletteHigh, colors[i]);
} }
} }
void loop() void loop() {
{
// a point object holds x y and z coordinates. // a point object holds x y and z coordinates.
Point p = ts.getPoint(); Point p = ts.getPoint();
@ -40,12 +37,9 @@ void loop()
if (p.z > __PRESURE) { if (p.z > __PRESURE) {
// Detect paint brush color change // Detect paint brush color change
if(p.y < ColorPaletteHigh+2) if (p.y < ColorPaletteHigh + 2) {
{
color = colors[p.x / 30]; color = colors[p.x / 30];
} } else {
else
{
Tft.fillCircle(p.x, p.y, 2, color); Tft.fillCircle(p.x, p.y, 2, color);
} }
} }

View File

@ -4,16 +4,13 @@
#include <TFTv2.h> #include <TFTv2.h>
#include <SPI.h> #include <SPI.h>
void setup() void setup() {
{
TFT_BL_ON; // turn on the background light TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library Tft.TFTinit(); // init TFT library
} }
void loop() void loop() {
{ for (int r = 0; r < 115; r = r + 2) { //set r : 0--115
for(int r=0;r<115;r=r+2) //set r : 0--115
{
Tft.drawCircle(119, 160, r, random(0xFFFF)); //draw circle, center:(119, 160), color: random Tft.drawCircle(119, 160, r, random(0xFFFF)); //draw circle, center:(119, 160), color: random
} }
delay(10); delay(10);

View File

@ -7,8 +7,7 @@
#include <TFTv2.h> #include <TFTv2.h>
#include <SPI.h> #include <SPI.h>
void setup() void setup() {
{
TFT_BL_ON; // turn on the background light TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library Tft.TFTinit(); // init TFT library
@ -29,7 +28,6 @@ void setup()
} }
void loop() void loop() {
{
} }

View File

@ -30,8 +30,7 @@ unsigned char __Gnbmp_image_offset = 0; // offset
int __Gnfile_num = 3; // num of file int __Gnfile_num = 3; // num of file
char __Gsbmp_files[3][FILENAME_LEN] = // add file name here char __Gsbmp_files[3][FILENAME_LEN] = { // add file name here
{
"flower.BMP", "flower.BMP",
"hibiscus.bmp", "hibiscus.bmp",
"test.bmp", "test.bmp",
@ -41,8 +40,7 @@ char __Gsbmp_files[3][FILENAME_LEN] = // add file name here
File bmpFile; File bmpFile;
void setup() void setup() {
{
Serial.begin(9600); Serial.begin(9600);
@ -54,8 +52,7 @@ void setup()
Sd2Card card; Sd2Card card;
card.init(SPI_FULL_SPEED, PIN_SD_CS); card.init(SPI_FULL_SPEED, PIN_SD_CS);
if(!SD.begin(PIN_SD_CS)) if (!SD.begin(PIN_SD_CS)) {
{
Serial.println("failed!"); Serial.println("failed!");
while (1); // init fail, die here while (1); // init fail, die here
} }
@ -65,19 +62,15 @@ void setup()
TFT_BL_ON; TFT_BL_ON;
} }
void loop() void loop() {
{ for (unsigned char i = 0; i < __Gnfile_num; i++) {
for(unsigned char i=0; i<__Gnfile_num; i++)
{
bmpFile = SD.open(__Gsbmp_files[i]); bmpFile = SD.open(__Gsbmp_files[i]);
if (! bmpFile) if (! bmpFile) {
{
Serial.println("didnt find image"); Serial.println("didnt find image");
while (1); while (1);
} }
if(! bmpReadHeader(bmpFile)) if (! bmpReadHeader(bmpFile)) {
{
Serial.println("bad bmp"); Serial.println("bad bmp");
return; return;
} }
@ -100,27 +93,23 @@ void loop()
#define BUFFPIXEL 60 // must be a divisor of 240 #define BUFFPIXEL 60 // must be a divisor of 240
#define BUFFPIXEL_X3 180 // BUFFPIXELx3 #define BUFFPIXEL_X3 180 // BUFFPIXELx3
void bmpdraw(File f, int x, int y) void bmpdraw(File f, int x, int y) {
{
bmpFile.seek(__Gnbmp_image_offset); bmpFile.seek(__Gnbmp_image_offset);
uint32_t time = millis(); uint32_t time = millis();
uint8_t sdbuffer[BUFFPIXEL_X3]; // 3 * pixels to buffer uint8_t sdbuffer[BUFFPIXEL_X3]; // 3 * pixels to buffer
for (int i=0; i< __Gnbmp_height; i++) for (int i = 0; i < __Gnbmp_height; i++) {
{
for(int j=0; j<(240/BUFFPIXEL); j++) for (int j = 0; j < (240 / BUFFPIXEL); j++) {
{
bmpFile.read(sdbuffer, BUFFPIXEL_X3); bmpFile.read(sdbuffer, BUFFPIXEL_X3);
uint8_t buffidx = 0; uint8_t buffidx = 0;
int offset_x = j * BUFFPIXEL; int offset_x = j * BUFFPIXEL;
unsigned int __color[BUFFPIXEL]; unsigned int __color[BUFFPIXEL];
for(int k=0; k<BUFFPIXEL; k++) for (int k = 0; k < BUFFPIXEL; k++) {
{
__color[k] = sdbuffer[buffidx + 2] >> 3; // read __color[k] = sdbuffer[buffidx + 2] >> 3; // read
__color[k] = __color[k] << 6 | (sdbuffer[buffidx + 1] >> 2); // green __color[k] = __color[k] << 6 | (sdbuffer[buffidx + 1] >> 2); // green
__color[k] = __color[k] << 5 | (sdbuffer[buffidx + 0] >> 3); // blue __color[k] = __color[k] << 5 | (sdbuffer[buffidx + 0] >> 3); // blue
@ -135,8 +124,7 @@ void bmpdraw(File f, int x, int y)
TFT_DC_HIGH; TFT_DC_HIGH;
TFT_CS_LOW; TFT_CS_LOW;
for(int m=0; m < BUFFPIXEL; m++) for (int m = 0; m < BUFFPIXEL; m++) {
{
SPI.transfer(__color[m] >> 8); SPI.transfer(__color[m] >> 8);
SPI.transfer(__color[m]); SPI.transfer(__color[m]);
} }
@ -150,8 +138,7 @@ void bmpdraw(File f, int x, int y)
Serial.println(" ms"); Serial.println(" ms");
} }
boolean bmpReadHeader(File f) boolean bmpReadHeader(File f) {
{
// read header // read header
uint32_t tmp; uint32_t tmp;
uint8_t bmpDepth; uint8_t bmpDepth;
@ -182,13 +169,13 @@ boolean bmpReadHeader(File f)
int bmp_width = read32(f); int bmp_width = read32(f);
int bmp_height = read32(f); int bmp_height = read32(f);
if(bmp_width != __Gnbmp_width || bmp_height != __Gnbmp_height) // if image is not 320x240, return false if (bmp_width != __Gnbmp_width || bmp_height != __Gnbmp_height) { // if image is not 320x240, return false
{
return false; return false;
} }
if (read16(f) != 1) if (read16(f) != 1) {
return false; return false;
}
bmpDepth = read16(f); bmpDepth = read16(f);
Serial.print("bitdepth "); Serial.print("bitdepth ");
@ -210,8 +197,7 @@ boolean bmpReadHeader(File f)
// (the data is stored in little endian format!) // (the data is stored in little endian format!)
// LITTLE ENDIAN! // LITTLE ENDIAN!
uint16_t read16(File f) uint16_t read16(File f) {
{
uint16_t d; uint16_t d;
uint8_t b; uint8_t b;
b = f.read(); b = f.read();
@ -222,8 +208,7 @@ uint16_t read16(File f)
} }
// LITTLE ENDIAN! // LITTLE ENDIAN!
uint32_t read32(File f) uint32_t read32(File f) {
{
uint32_t d; uint32_t d;
uint16_t b; uint16_t b;

View File

@ -34,28 +34,31 @@ char __Gsbmp_files[MAX_BMP][FILENAME_LEN]; // file name
File bmpFile; File bmpFile;
// if bmp file return 1, else return 0 // if bmp file return 1, else return 0
bool checkBMP(char *_name, char r_name[]) bool checkBMP(char *_name, char r_name[]) {
{
int len = 0; int len = 0;
if(NULL == _name)return false; if (NULL == _name) {
return false;
}
while(*_name) while (*_name) {
{
r_name[len++] = *(_name++); r_name[len++] = *(_name++);
if(len>FILENAME_LEN)return false; if (len > FILENAME_LEN) {
return false;
}
} }
r_name[len] = '\0'; r_name[len] = '\0';
if(len < 5)return false; if (len < 5) {
return false;
}
// if xxx.bmp or xxx.BMP // if xxx.bmp or xxx.BMP
if (r_name[len - 4] == '.' \ if (r_name[len - 4] == '.' \
&& (r_name[len - 3] == 'b' || (r_name[len - 3] == 'B')) \ && (r_name[len - 3] == 'b' || (r_name[len - 3] == 'B')) \
&& (r_name[len - 2] == 'm' || (r_name[len - 2] == 'M')) \ && (r_name[len - 2] == 'm' || (r_name[len - 2] == 'M')) \
&& (r_name[len-1] == 'p' || (r_name[len-1] == 'P')) ) && (r_name[len - 1] == 'p' || (r_name[len - 1] == 'P'))) {
{
return true; return true;
} }
@ -64,26 +67,21 @@ bool checkBMP(char *_name, char r_name[])
} }
// search root to find bmp file // search root to find bmp file
void searchDirectory() void searchDirectory() {
{
File root = SD.open("/"); // root File root = SD.open("/"); // root
while(true) while (true) {
{
File entry = root.openNextFile(); File entry = root.openNextFile();
if (! entry) if (! entry) {
{
break; break;
} }
if(!entry.isDirectory()) if (!entry.isDirectory()) {
{
char *ptmp = entry.name(); char *ptmp = entry.name();
char __Name[20]; char __Name[20];
if(checkBMP(ptmp, __Name)) if (checkBMP(ptmp, __Name)) {
{
Serial.println(__Name); Serial.println(__Name);
strcpy(__Gsbmp_files[__Gnfile_num++], __Name); strcpy(__Gsbmp_files[__Gnfile_num++], __Name);
@ -96,15 +94,13 @@ void searchDirectory()
Serial.print(__Gnfile_num); Serial.print(__Gnfile_num);
Serial.println(" file: "); Serial.println(" file: ");
for(int i=0; i<__Gnfile_num; i++) for (int i = 0; i < __Gnfile_num; i++) {
{
Serial.println(__Gsbmp_files[i]); Serial.println(__Gsbmp_files[i]);
} }
} }
void setup() void setup() {
{
Serial.begin(115200); Serial.begin(115200);
@ -116,8 +112,7 @@ void setup()
Sd2Card card; Sd2Card card;
card.init(SPI_FULL_SPEED, PIN_SD_CS); card.init(SPI_FULL_SPEED, PIN_SD_CS);
if(!SD.begin(PIN_SD_CS)) if (!SD.begin(PIN_SD_CS)) {
{
Serial.println("failed!"); Serial.println("failed!");
while (1); // init fail, die here while (1); // init fail, die here
} }
@ -129,8 +124,7 @@ void setup()
TFT_BL_ON; TFT_BL_ON;
} }
void loop() void loop() {
{
/* /*
static int dirCtrl = 0; static int dirCtrl = 0;
for(unsigned char i=0; i<__Gnfile_num; i++) for(unsigned char i=0; i<__Gnfile_num; i++)
@ -159,14 +153,12 @@ void loop()
bmpFile = SD.open("pfvm_1.bmp"); bmpFile = SD.open("pfvm_1.bmp");
if (! bmpFile) if (! bmpFile) {
{
Serial.println("didnt find image"); Serial.println("didnt find image");
while (1); while (1);
} }
if(! bmpReadHeader(bmpFile)) if (! bmpReadHeader(bmpFile)) {
{
Serial.println("bad bmp"); Serial.println("bad bmp");
return; return;
} }
@ -193,11 +185,9 @@ void loop()
// dir - 1: up to down // dir - 1: up to down
// dir - 2: down to up // dir - 2: down to up
void bmpdraw(File f, int x, int y, int dir) void bmpdraw(File f, int x, int y, int dir) {
{
if(bmpFile.seek(__Gnbmp_image_offset)) if (bmpFile.seek(__Gnbmp_image_offset)) {
{
Serial.print("pos = "); Serial.print("pos = ");
Serial.println(bmpFile.position()); Serial.println(bmpFile.position());
} }
@ -206,15 +196,12 @@ void bmpdraw(File f, int x, int y, int dir)
uint8_t sdbuffer[BUFFPIXEL_X3]; // 3 * pixels to buffer uint8_t sdbuffer[BUFFPIXEL_X3]; // 3 * pixels to buffer
for (int i=0; i< __Gnbmp_height; i++) for (int i = 0; i < __Gnbmp_height; i++) {
{ if (dir) {
if(dir)
{
bmpFile.seek(__Gnbmp_image_offset + (__Gnbmp_height - 1 - i) * 240 * 3); bmpFile.seek(__Gnbmp_image_offset + (__Gnbmp_height - 1 - i) * 240 * 3);
} }
for(int j=0; j<(240/BUFFPIXEL); j++) for (int j = 0; j < (240 / BUFFPIXEL); j++) {
{
bmpFile.read(sdbuffer, BUFFPIXEL_X3); bmpFile.read(sdbuffer, BUFFPIXEL_X3);
uint8_t buffidx = 0; uint8_t buffidx = 0;
@ -222,8 +209,7 @@ void bmpdraw(File f, int x, int y, int dir)
unsigned int __color[BUFFPIXEL]; unsigned int __color[BUFFPIXEL];
for(int k=0; k<BUFFPIXEL; k++) for (int k = 0; k < BUFFPIXEL; k++) {
{
__color[k] = sdbuffer[buffidx + 2] >> 3; // read __color[k] = sdbuffer[buffidx + 2] >> 3; // read
__color[k] = __color[k] << 6 | (sdbuffer[buffidx + 1] >> 2); // green __color[k] = __color[k] << 6 | (sdbuffer[buffidx + 1] >> 2); // green
__color[k] = __color[k] << 5 | (sdbuffer[buffidx + 0] >> 3); // blue __color[k] = __color[k] << 5 | (sdbuffer[buffidx + 0] >> 3); // blue
@ -233,12 +219,9 @@ void bmpdraw(File f, int x, int y, int dir)
Tft.setCol(offset_x, offset_x + BUFFPIXEL); Tft.setCol(offset_x, offset_x + BUFFPIXEL);
if(dir) if (dir) {
{
Tft.setPage(i, i); Tft.setPage(i, i);
} } else {
else
{
Tft.setPage(__Gnbmp_height - i - 1, __Gnbmp_height - i - 1); Tft.setPage(__Gnbmp_height - i - 1, __Gnbmp_height - i - 1);
} }
@ -247,8 +230,7 @@ void bmpdraw(File f, int x, int y, int dir)
TFT_DC_HIGH; TFT_DC_HIGH;
TFT_CS_LOW; TFT_CS_LOW;
for(int m=0; m < BUFFPIXEL; m++) for (int m = 0; m < BUFFPIXEL; m++) {
{
SPI.transfer(__color[m] >> 8); SPI.transfer(__color[m] >> 8);
SPI.transfer(__color[m]); SPI.transfer(__color[m]);
@ -264,8 +246,7 @@ void bmpdraw(File f, int x, int y, int dir)
Serial.println(" ms"); Serial.println(" ms");
} }
boolean bmpReadHeader(File f) boolean bmpReadHeader(File f) {
{
// read header // read header
uint32_t tmp; uint32_t tmp;
uint8_t bmpDepth; uint8_t bmpDepth;
@ -295,13 +276,13 @@ boolean bmpReadHeader(File f)
int bmp_width = read32(f); int bmp_width = read32(f);
int bmp_height = read32(f); int bmp_height = read32(f);
if(bmp_width != __Gnbmp_width || bmp_height != __Gnbmp_height) // if image is not 320x240, return false if (bmp_width != __Gnbmp_width || bmp_height != __Gnbmp_height) { // if image is not 320x240, return false
{
return false; return false;
} }
if (read16(f) != 1) if (read16(f) != 1) {
return false; return false;
}
bmpDepth = read16(f); bmpDepth = read16(f);
Serial.print("bitdepth "); Serial.print("bitdepth ");
@ -323,8 +304,7 @@ boolean bmpReadHeader(File f)
// (the data is stored in little endian format!) // (the data is stored in little endian format!)
// LITTLE ENDIAN! // LITTLE ENDIAN!
uint16_t read16(File f) uint16_t read16(File f) {
{
uint16_t d; uint16_t d;
uint8_t b; uint8_t b;
b = f.read(); b = f.read();
@ -335,8 +315,7 @@ uint16_t read16(File f)
} }
// LITTLE ENDIAN! // LITTLE ENDIAN!
uint32_t read32(File f) uint32_t read32(File f) {
{
uint32_t d; uint32_t d;
uint16_t b; uint16_t b;

View File

@ -18,20 +18,17 @@ Ticker flipper;
int count = 0; int count = 0;
void flip() void flip() {
{
int state = digitalRead(LED_BUILTIN); // get the current state of GPIO1 pin int state = digitalRead(LED_BUILTIN); // get the current state of GPIO1 pin
digitalWrite(LED_BUILTIN, !state); // set pin to the opposite state digitalWrite(LED_BUILTIN, !state); // set pin to the opposite state
++count; ++count;
// when the counter reaches a certain value, start blinking like crazy // when the counter reaches a certain value, start blinking like crazy
if (count == 20) if (count == 20) {
{
flipper.attach(0.1, flip); flipper.attach(0.1, flip);
} }
// when the counter reaches yet another value, stop blinking // when the counter reaches yet another value, stop blinking
else if (count == 120) else if (count == 120) {
{
flipper.detach(); flipper.detach();
} }
} }

View File

@ -19,15 +19,15 @@ void setup() {
pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
} }
void loop() void loop() {
{
unsigned long currentMillis = millis(); unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) { if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; previousMillis = currentMillis;
if (ledState == LOW) if (ledState == LOW) {
ledState = HIGH; // Note that this switches the LED *off* ledState = HIGH; // Note that this switches the LED *off*
else } else {
ledState = LOW; // Note that this switches the LED *on* ledState = LOW; // Note that this switches the LED *on*
}
digitalWrite(LED_BUILTIN, ledState); digitalWrite(LED_BUILTIN, ledState);
} }
} }

View File

@ -1,13 +1,13 @@
/* /*
* NativeSdk by Simon Peter NativeSdk by Simon Peter
* Access functionality from the Espressif ESP8266 SDK Access functionality from the Espressif ESP8266 SDK
* This example code is in the public domain This example code is in the public domain
*
* This is for advanced users. This is for advanced users.
* Note that this makes your code dependent on the ESP8266, which is generally Note that this makes your code dependent on the ESP8266, which is generally
* a bad idea. So you should try to use esp8266/Arduino functionality a bad idea. So you should try to use esp8266/Arduino functionality
* where possible instead, in order to abstract away the hardware dependency. where possible instead, in order to abstract away the hardware dependency.
*/ */
// Expose Espressif SDK functionality - wrapped in ifdef so that it still // Expose Espressif SDK functionality - wrapped in ifdef so that it still

View File

@ -36,8 +36,7 @@
timeval cbtime; // time set in callback timeval cbtime; // time set in callback
bool cbtime_set = false; bool cbtime_set = false;
void time_is_set (void) void time_is_set(void) {
{
gettimeofday(&cbtime, NULL); gettimeofday(&cbtime, NULL);
cbtime_set = true; cbtime_set = true;
Serial.println("------------------ settimeofday() was called ------------------"); Serial.println("------------------ settimeofday() was called ------------------");

View File

@ -45,8 +45,7 @@ void setup() {
Serial.println(rtcData.crc32, HEX); Serial.println(rtcData.crc32, HEX);
if (crcOfData != rtcData.crc32) { if (crcOfData != rtcData.crc32) {
Serial.println("CRC32 in RTC memory doesn't match CRC32 of data. Data is probably invalid!"); Serial.println("CRC32 in RTC memory doesn't match CRC32 of data. Data is probably invalid!");
} } else {
else {
Serial.println("CRC32 check ok, data is probably valid."); Serial.println("CRC32 check ok, data is probably valid.");
} }
} }
@ -71,8 +70,7 @@ void setup() {
void loop() { void loop() {
} }
uint32_t calculateCRC32(const uint8_t *data, size_t length) uint32_t calculateCRC32(const uint8_t *data, size_t length) {
{
uint32_t crc = 0xffffffff; uint32_t crc = 0xffffffff;
while (length--) { while (length--) {
uint8_t c = *data++; uint8_t c = *data++;
@ -99,8 +97,7 @@ void printMemory() {
Serial.print(buf); Serial.print(buf);
if ((i + 1) % 32 == 0) { if ((i + 1) % 32 == 0) {
Serial.println(); Serial.println();
} } else {
else {
Serial.print(" "); Serial.print(" ");
} }
} }

View File

@ -1,12 +1,12 @@
/** /**
* TestEspApi by Max Vilimpoc TestEspApi by Max Vilimpoc
* This code is released to the public domain. This code is released to the public domain.
*
* Test out the Expressif ESP8266 Non-OS API, exhaustively trying out Test out the Expressif ESP8266 Non-OS API, exhaustively trying out
* as many of the built-in functions as possible. as many of the built-in functions as possible.
*
* Some of the code is based on examples in: Some of the code is based on examples in:
* "20A-ESP8266__RTOS_SDK__Programming Guide__EN_v1.3.0.pdf" "20A-ESP8266__RTOS_SDK__Programming Guide__EN_v1.3.0.pdf"
*/ */
#ifdef ESP8266 #ifdef ESP8266
@ -28,8 +28,7 @@ Stream& ehConsolePort(Serial);
// UNLESS: You swap the TX pin using the alternate pinout. // UNLESS: You swap the TX pin using the alternate pinout.
const uint8_t LED_PIN = 1; const uint8_t LED_PIN = 1;
const char * const RST_REASONS[] = const char * const RST_REASONS[] = {
{
"REASON_DEFAULT_RST", "REASON_DEFAULT_RST",
"REASON_WDT_RST", "REASON_WDT_RST",
"REASON_EXCEPTION_RST", "REASON_EXCEPTION_RST",
@ -39,8 +38,7 @@ const char * const RST_REASONS[] =
"REASON_EXT_SYS_RST" "REASON_EXT_SYS_RST"
}; };
const char * const FLASH_SIZE_MAP_NAMES[] = const char * const FLASH_SIZE_MAP_NAMES[] = {
{
"FLASH_SIZE_4M_MAP_256_256", "FLASH_SIZE_4M_MAP_256_256",
"FLASH_SIZE_2M", "FLASH_SIZE_2M",
"FLASH_SIZE_8M_MAP_512_512", "FLASH_SIZE_8M_MAP_512_512",
@ -50,16 +48,14 @@ const char * const FLASH_SIZE_MAP_NAMES[] =
"FLASH_SIZE_32M_MAP_1024_1024" "FLASH_SIZE_32M_MAP_1024_1024"
}; };
const char * const OP_MODE_NAMES[] const char * const OP_MODE_NAMES[] {
{
"NULL_MODE", "NULL_MODE",
"STATION_MODE", "STATION_MODE",
"SOFTAP_MODE", "SOFTAP_MODE",
"STATIONAP_MODE" "STATIONAP_MODE"
}; };
const char * const AUTH_MODE_NAMES[] const char * const AUTH_MODE_NAMES[] {
{
"AUTH_OPEN", "AUTH_OPEN",
"AUTH_WEP", "AUTH_WEP",
"AUTH_WPA_PSK", "AUTH_WPA_PSK",
@ -68,16 +64,14 @@ const char * const AUTH_MODE_NAMES[]
"AUTH_MAX" "AUTH_MAX"
}; };
const char * const PHY_MODE_NAMES[] const char * const PHY_MODE_NAMES[] {
{
"", "",
"PHY_MODE_11B", "PHY_MODE_11B",
"PHY_MODE_11G", "PHY_MODE_11G",
"PHY_MODE_11N" "PHY_MODE_11N"
}; };
const char * const EVENT_NAMES[] const char * const EVENT_NAMES[] {
{
"EVENT_STAMODE_CONNECTED", "EVENT_STAMODE_CONNECTED",
"EVENT_STAMODE_DISCONNECTED", "EVENT_STAMODE_DISCONNECTED",
"EVENT_STAMODE_AUTHMODE_CHANGE", "EVENT_STAMODE_AUTHMODE_CHANGE",
@ -87,8 +81,7 @@ const char * const EVENT_NAMES[]
"EVENT_MAX" "EVENT_MAX"
}; };
const char * const EVENT_REASONS[] const char * const EVENT_REASONS[] {
{
"", "",
"REASON_UNSPECIFIED", "REASON_UNSPECIFIED",
"REASON_AUTH_EXPIRE", "REASON_AUTH_EXPIRE",
@ -115,19 +108,16 @@ const char * const EVENT_REASONS[]
"REASON_CIPHER_SUITE_REJECTED", "REASON_CIPHER_SUITE_REJECTED",
}; };
const char * const EVENT_REASONS_200[] const char * const EVENT_REASONS_200[] {
{
"REASON_BEACON_TIMEOUT", "REASON_BEACON_TIMEOUT",
"REASON_NO_AP_FOUND" "REASON_NO_AP_FOUND"
}; };
void wifi_event_handler_cb(System_Event_t * event) void wifi_event_handler_cb(System_Event_t * event) {
{
ehConsolePort.print(EVENT_NAMES[event->event]); ehConsolePort.print(EVENT_NAMES[event->event]);
ehConsolePort.print(" ("); ehConsolePort.print(" (");
switch (event->event) switch (event->event) {
{
case EVENT_STAMODE_CONNECTED: case EVENT_STAMODE_CONNECTED:
break; break;
case EVENT_STAMODE_DISCONNECTED: case EVENT_STAMODE_DISCONNECTED:
@ -137,8 +127,7 @@ void wifi_event_handler_cb(System_Event_t * event)
case EVENT_STAMODE_GOT_IP: case EVENT_STAMODE_GOT_IP:
break; break;
case EVENT_SOFTAPMODE_STACONNECTED: case EVENT_SOFTAPMODE_STACONNECTED:
case EVENT_SOFTAPMODE_STADISCONNECTED: case EVENT_SOFTAPMODE_STADISCONNECTED: {
{
char mac[32] = {0}; char mac[32] = {0};
snprintf(mac, 32, MACSTR ", aid: %d", MAC2STR(event->event_info.sta_connected.mac), event->event_info.sta_connected.aid); snprintf(mac, 32, MACSTR ", aid: %d", MAC2STR(event->event_info.sta_connected.mac), event->event_info.sta_connected.aid);
@ -150,8 +139,7 @@ void wifi_event_handler_cb(System_Event_t * event)
ehConsolePort.println(")"); ehConsolePort.println(")");
} }
void print_softap_config(Stream & consolePort, softap_config const& config) void print_softap_config(Stream & consolePort, softap_config const& config) {
{
consolePort.println(); consolePort.println();
consolePort.println(F("SoftAP Configuration")); consolePort.println(F("SoftAP Configuration"));
consolePort.println(F("--------------------")); consolePort.println(F("--------------------"));
@ -185,8 +173,7 @@ void print_softap_config(Stream & consolePort, softap_config const& config)
consolePort.println(); consolePort.println();
} }
void print_system_info(Stream & consolePort) void print_system_info(Stream & consolePort) {
{
const rst_info * resetInfo = system_get_rst_info(); const rst_info * resetInfo = system_get_rst_info();
consolePort.print(F("system_get_rst_info() reset reason: ")); consolePort.print(F("system_get_rst_info() reset reason: "));
consolePort.println(RST_REASONS[resetInfo->reason]); consolePort.println(RST_REASONS[resetInfo->reason]);
@ -224,8 +211,7 @@ void print_system_info(Stream & consolePort)
consolePort.println(FLASH_SIZE_MAP_NAMES[system_get_flash_size_map()]); consolePort.println(FLASH_SIZE_MAP_NAMES[system_get_flash_size_map()]);
} }
void print_wifi_general(Stream & consolePort) void print_wifi_general(Stream & consolePort) {
{
consolePort.print(F("wifi_get_channel(): ")); consolePort.print(F("wifi_get_channel(): "));
consolePort.println(wifi_get_channel()); consolePort.println(wifi_get_channel());
@ -233,8 +219,7 @@ void print_wifi_general(Stream & consolePort)
consolePort.println(PHY_MODE_NAMES[wifi_get_phy_mode()]); consolePort.println(PHY_MODE_NAMES[wifi_get_phy_mode()]);
} }
void secure_softap_config(softap_config * config, const char * ssid, const char * password) void secure_softap_config(softap_config * config, const char * ssid, const char * password) {
{
size_t ssidLen = strlen(ssid) < sizeof(config->ssid) ? strlen(ssid) : sizeof(config->ssid); size_t ssidLen = strlen(ssid) < sizeof(config->ssid) ? strlen(ssid) : sizeof(config->ssid);
size_t passwordLen = strlen(password) < sizeof(config->password) ? strlen(password) : sizeof(config->password); size_t passwordLen = strlen(password) < sizeof(config->password) ? strlen(password) : sizeof(config->password);
@ -252,8 +237,7 @@ void secure_softap_config(softap_config * config, const char * ssid, const char
// config->beacon_interval = 1000; // config->beacon_interval = 1000;
} }
void setup() void setup() {
{
// Reuse default Serial port rate, so the bootloader // Reuse default Serial port rate, so the bootloader
// messages are also readable. // messages are also readable.
@ -304,8 +288,7 @@ void setup()
// ESP.deepSleep(15000); // ESP.deepSleep(15000);
} }
void loop() void loop() {
{
Serial.print(F("system_get_time(): ")); Serial.print(F("system_get_time(): "));
Serial.println(system_get_time()); Serial.println(system_get_time());
delay(1000); delay(1000);