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([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH)
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
else // U_SPIFFS
} else { // U_SPIFFS
type = "filesystem";
}
// NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
Serial.println("Start updating " + type);
@ -48,11 +49,17 @@ void setup() {
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin 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");
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin 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();
Serial.println("Ready");

View File

@ -34,28 +34,30 @@ void setup() {
analogWriteRange(1000);
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);
analogWrite(dimmer_pin[i], 50);
}
ArduinoOTA.setHostname(host);
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(led_pin, 0);
});
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);
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 */
ArduinoOTA.begin();

View File

@ -6,15 +6,15 @@
#include <EEPROM.h>
/*
* 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.
*
* 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.
*
* 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 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.
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.
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/
*/
/* Set these to your desired softAP credentials. They are not configurable at runtime */

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,8 @@
/**
* BasicHTTPClient.ino
*
* Created on: 24.05.2015
*
BasicHTTPClient.ino
Created on: 24.05.2015
*/
#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) {
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()));
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,31 +1,31 @@
/*
* Copyright (c) 2015, Majenko Technologies
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
Copyright (c) 2015, Majenko Technologies
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* * 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
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* * Neither the name of Majenko Technologies nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* 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
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* 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
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
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
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
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
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <ESP8266WiFi.h>

View File

@ -52,30 +52,47 @@ String formatBytes(size_t bytes){
}
String getContentType(String filename) {
if(server.hasArg("download")) return "application/octet-stream";
else if(filename.endsWith(".htm")) return "text/html";
else if(filename.endsWith(".html")) return "text/html";
else if(filename.endsWith(".css")) return "text/css";
else if(filename.endsWith(".js")) return "application/javascript";
else if(filename.endsWith(".png")) return "image/png";
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";
if (server.hasArg("download")) {
return "application/octet-stream";
} else if (filename.endsWith(".htm")) {
return "text/html";
} else if (filename.endsWith(".html")) {
return "text/html";
} else if (filename.endsWith(".css")) {
return "text/css";
} else if (filename.endsWith(".js")) {
return "application/javascript";
} else if (filename.endsWith(".png")) {
return "image/png";
} 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";
}
bool handleFileRead(String path) {
DBG_OUTPUT_PORT.println("handleFileRead: " + path);
if(path.endsWith("/")) path += "index.htm";
if (path.endsWith("/")) {
path += "index.htm";
}
String contentType = getContentType(path);
String pathWithGz = path + ".gz";
if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)) {
if(SPIFFS.exists(pathWithGz))
if (SPIFFS.exists(pathWithGz)) {
path += ".gz";
}
File file = SPIFFS.open(path, "r");
server.streamFile(file, contentType);
file.close();
@ -85,58 +102,75 @@ bool handleFileRead(String path){
}
void handleFileUpload() {
if(server.uri() != "/edit") return;
if (server.uri() != "/edit") {
return;
}
HTTPUpload& upload = server.upload();
if (upload.status == UPLOAD_FILE_START) {
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);
fsUploadFile = SPIFFS.open(filename, "w");
filename = String();
} else if (upload.status == UPLOAD_FILE_WRITE) {
//DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);
if(fsUploadFile)
if (fsUploadFile) {
fsUploadFile.write(upload.buf, upload.currentSize);
}
} else if (upload.status == UPLOAD_FILE_END) {
if(fsUploadFile)
if (fsUploadFile) {
fsUploadFile.close();
}
DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
}
}
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);
DBG_OUTPUT_PORT.println("handleFileDelete: " + path);
if(path == "/")
if (path == "/") {
return server.send(500, "text/plain", "BAD PATH");
if(!SPIFFS.exists(path))
}
if (!SPIFFS.exists(path)) {
return server.send(404, "text/plain", "FileNotFound");
}
SPIFFS.remove(path);
server.send(200, "text/plain", "");
path = String();
}
void handleFileCreate() {
if(server.args() == 0)
if (server.args() == 0) {
return server.send(500, "text/plain", "BAD ARGS");
}
String path = server.arg(0);
DBG_OUTPUT_PORT.println("handleFileCreate: " + path);
if(path == "/")
if (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");
}
File file = SPIFFS.open(path, "w");
if(file)
if (file) {
file.close();
else
} else {
return server.send(500, "text/plain", "CREATE FAILED");
}
server.send(200, "text/plain", "");
path = String();
}
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");
DBG_OUTPUT_PORT.println("handleFileList: " + path);
@ -146,7 +180,9 @@ void handleFileList() {
String output = "[";
while (dir.next()) {
File entry = dir.openFile("r");
if (output != "[") output += ',';
if (output != "[") {
output += ',';
}
bool isDir = false;
output += "{\"type\":\"";
output += (isDir) ? "dir" : "file";
@ -202,7 +238,9 @@ void setup(void){
server.on("/list", HTTP_GET, handleFileList);
//load editor
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
server.on("/edit", HTTP_PUT, handleFileCreate);
@ -210,13 +248,16 @@ void setup(void){
server.on("/edit", HTTP_DELETE, handleFileDelete);
//first callback is called after the request has ended with all parsed arguments
//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
//use it to load content from SPIFFS
server.onNotFound([]() {
if(!handleFileRead(server.uri()))
if (!handleFileRead(server.uri())) {
server.send(404, "text/plain", "FileNotFound");
}
});
//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
//return server.requestAuthentication(DIGEST_AUTH, www_realm);
//Digest Auth Method with Custom realm and Failure Response
{
return server.requestAuthentication(DIGEST_AUTH, www_realm, authFailResponse);
}
server.send(200, "text/plain", "Login OK");
});
server.begin();

View File

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

View File

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

View File

@ -1,19 +1,19 @@
/*
* HTTP over TLS (HTTPS) example sketch
*
* This example demonstrates how to use
* WiFiClientSecure class to access HTTPS API.
* We fetch and display the status of
* esp8266/Arduino project continuous integration
* build.
*
* Limitations:
* only RSA certificates
* no support of Perfect Forward Secrecy (PFS)
* TLSv1.2 is supported since version 2.4.0-rc1
*
* Created by Ivan Grokhotkov, 2015.
* This example is in public domain.
HTTP over TLS (HTTPS) example sketch
This example demonstrates how to use
WiFiClientSecure class to access HTTPS API.
We fetch and display the status of
esp8266/Arduino project continuous integration
build.
Limitations:
only RSA certificates
no support of Perfect Forward Secrecy (PFS)
TLSv1.2 is supported since version 2.4.0-rc1
Created by Ivan Grokhotkov, 2015.
This example is in public domain.
*/
#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
/* 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 timeServerIP; // time.nist.gov NTP server address
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
WiFiUDP udp;
void setup()
{
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
@ -68,8 +67,7 @@ void setup()
Serial.println(udp.localPort());
}
void loop()
{
void loop() {
//get a random server from the pool
WiFi.hostByName(ntpServerName, timeServerIP);
@ -80,8 +78,7 @@ void loop()
int cb = udp.parsePacket();
if (!cb) {
Serial.println("no packet yet");
}
else {
} else {
Serial.print("packet received, length=");
Serial.println(cb);
// 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
void sendNTPpacket(IPAddress& address)
{
void sendNTPpacket(IPAddress& address) {
Serial.println("sending NTP packet...");
// set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE);

View File

@ -1,31 +1,31 @@
/*
* Copyright (c) 2015, Majenko Technologies
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
Copyright (c) 2015, Majenko Technologies
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* * 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
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* * Neither the name of Majenko Technologies nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* 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
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* 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
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
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
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
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
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* Create a WiFi access point and provide a web server on it. */
@ -41,7 +41,7 @@ const char *password = "thereisnospoon";
ESP8266WebServer server(80);
/* 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() {
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.
*
* 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.
*
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
below. Or just customize this script to talk to other HTTP servers.
*/
#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>

View File

@ -173,11 +173,11 @@ void loop() {
// Match the request
int val;
if (req.indexOf("/gpio/0") != -1)
if (req.indexOf("/gpio/0") != -1) {
val = 0;
else if (req.indexOf("/gpio/1") != -1)
} else if (req.indexOf("/gpio/1") != -1) {
val = 1;
else {
} else {
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>");
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>

View File

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

View File

@ -34,10 +34,14 @@ void setup() {
WiFi.begin(ssid, password);
Serial1.print("\nConnecting to "); Serial1.println(ssid);
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) {
Serial1.print("Could not connect to"); Serial1.println(ssid);
while(1) delay(500);
while (1) {
delay(500);
}
}
//start UART and the server
Serial.begin(115200);
@ -56,7 +60,9 @@ void loop() {
for (i = 0; i < MAX_SRV_CLIENTS; i++) {
//find free/disconnected spot
if (!serverClients[i] || !serverClients[i].connected()) {
if(serverClients[i]) serverClients[i].stop();
if (serverClients[i]) {
serverClients[i].stop();
}
serverClients[i] = server.available();
Serial1.print("New client: "); Serial1.print(i);
break;
@ -74,7 +80,9 @@ void loop() {
if (serverClients[i] && serverClients[i].connected()) {
if (serverClients[i].available()) {
//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.
* 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/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 module, will be
* printed to Serial when the module is connected.
This sketch demonstrates how to set up a simple HTTP-like server.
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/1 will set the GPIO2 high
server_ip is the IP address of the ESP8266 module, will be
printed to Serial when the module is connected.
*/
#include <ESP8266WiFi.h>
@ -68,11 +68,11 @@ void loop() {
// Match the request
int val;
if (req.indexOf("/gpio/0") != -1)
if (req.indexOf("/gpio/0") != -1) {
val = 0;
else if (req.indexOf("/gpio/1") != -1)
} else if (req.indexOf("/gpio/1") != -1) {
val = 1;
else {
} else {
Serial.println("invalid request");
client.stop();
return;

View File

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

View File

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

View File

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

View File

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

View File

@ -49,8 +49,7 @@ void setup() {
Serial.println("mDNS query done");
if (n == 0) {
Serial.println("no services found");
}
else {
} else {
Serial.print(n);
Serial.println(" service(s) found");
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
WiFiServer server(80);
void setup(void)
{
void setup(void) {
Serial.begin(115200);
// Connect to WiFi network
@ -67,8 +66,7 @@ void setup(void)
MDNS.addService("http", "tcp", 80);
}
void loop(void)
{
void loop(void) {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
@ -100,17 +98,14 @@ void loop(void)
client.flush();
String s;
if (req == "/")
{
if (req == "/") {
IPAddress ip = WiFi.localIP();
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 += ipStr;
s += "</html>\r\n\r\n";
Serial.println("Sending 200");
}
else
{
} else {
s = "HTTP/1.1 404 Not Found\r\n\r\n";
Serial.println("Sending 404");
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -45,17 +45,14 @@ void setup() {
void loop() {
// if there's data available, read a packet
int packetSize = Udp.parsePacket();
if (packetSize)
{
if (packetSize) {
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remote = Udp.remoteIP();
for (int i = 0; i < 4; i++)
{
for (int i = 0; i < 4; i++) {
Serial.print(remote[i], DEC);
if (i < 3)
{
if (i < 3) {
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
EthernetUDP Udp;
void setup()
{
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
@ -56,8 +55,7 @@ void setup()
Udp.begin(localPort);
}
void loop()
{
void loop() {
sendNTPpacket(timeServer); // send an NTP packet to a time server
// 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
void sendNTPpacket(char* address)
{
void sendNTPpacket(char* address) {
// set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE);
// Initialize values needed to form NTP request

View File

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

View File

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

View File

@ -5,8 +5,8 @@
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
Ethernet shield attached to pins 10, 11, 12, 13
Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
@ -84,8 +84,7 @@ void loop() {
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
} else if (c != '\r') {
// you've gotten a character on the current line
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
EthernetUDP Udp;
void setup()
{
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
@ -62,8 +61,7 @@ void setup()
Udp.begin(localPort);
}
void loop()
{
void loop() {
sendNTPpacket(timeServer); // send an NTP packet to a time server
// 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
unsigned long sendNTPpacket(char* address)
{
unsigned long sendNTPpacket(char* address) {
// set all bytes in the buffer to 0
memset((char *)&packetBuffer, 0, NTP_PACKET_SIZE);
// 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 <Hash.h>

View File

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

View File

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

View File

@ -5,7 +5,7 @@
SD library and send it over the serial port.
The circuit:
* SD card attached to SPI bus as follows:
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
@ -25,8 +25,7 @@
const int chipSelect = 4;
void setup()
{
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
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
The circuit:
* SD card attached to SPI bus as follows:
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
@ -22,8 +22,7 @@
File myFile;
void setup()
{
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
@ -41,8 +40,7 @@ void setup()
if (SD.exists("example.txt")) {
Serial.println("example.txt exists.");
}
else {
} else {
Serial.println("example.txt doesn't exist.");
}
@ -54,8 +52,7 @@ void setup()
// Check to see if the file exists:
if (SD.exists("example.txt")) {
Serial.println("example.txt exists.");
}
else {
} else {
Serial.println("example.txt doesn't exist.");
}
@ -65,14 +62,12 @@ void setup()
if (SD.exists("example.txt")) {
Serial.println("example.txt exists.");
}
else {
} else {
Serial.println("example.txt doesn't exist.");
}
}
void loop()
{
void loop() {
// 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
The circuit:
* SD card attached to SPI bus as follows:
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
@ -23,8 +23,7 @@
File myFile;
void setup()
{
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
@ -73,8 +72,7 @@ void setup()
}
}
void loop()
{
void loop() {
// nothing happens after setup
}

View File

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

View File

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

View File

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

View File

@ -17,8 +17,7 @@
#include "SPISlave.h"
void setup()
{
void setup() {
Serial.begin(115200);
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
void setup()
{
void setup() {
myservo.attach(2); // attaches the servo on GIO2 to the servo object
}
void loop()
{
void loop() {
int pos;
for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
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'
delay(15); // waits 15ms for the servo to reach the position
}

View File

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

View File

@ -8,8 +8,7 @@
#include <TFTv2.h>
#include <SPI.h>
void setup()
{
void setup() {
TFT_BL_ON; // turn on the background light
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 <SPI.h>
void setup()
{
void setup() {
TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library
@ -17,8 +16,7 @@ void setup()
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
void setup()
{
void setup() {
Tft.TFTinit(); //init TFT library
Serial.begin(115200);
//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]);
}
}
void loop()
{
void loop() {
// a point object holds x y and z coordinates.
Point p = ts.getPoint();
@ -40,12 +37,9 @@ void loop()
if (p.z > __PRESURE) {
// Detect paint brush color change
if(p.y < ColorPaletteHigh+2)
{
if (p.y < ColorPaletteHigh + 2) {
color = colors[p.x / 30];
}
else
{
} else {
Tft.fillCircle(p.x, p.y, 2, color);
}
}

View File

@ -4,16 +4,13 @@
#include <TFTv2.h>
#include <SPI.h>
void setup()
{
void setup() {
TFT_BL_ON; // turn on the background light
Tft.TFTinit(); // init TFT library
}
void loop()
{
for(int r=0;r<115;r=r+2) //set r : 0--115
{
void loop() {
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
}
delay(10);

View File

@ -7,8 +7,7 @@
#include <TFTv2.h>
#include <SPI.h>
void setup()
{
void setup() {
TFT_BL_ON; // turn on the background light
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
char __Gsbmp_files[3][FILENAME_LEN] = // add file name here
{
char __Gsbmp_files[3][FILENAME_LEN] = { // add file name here
"flower.BMP",
"hibiscus.bmp",
"test.bmp",
@ -41,8 +40,7 @@ char __Gsbmp_files[3][FILENAME_LEN] = // add file name here
File bmpFile;
void setup()
{
void setup() {
Serial.begin(9600);
@ -54,8 +52,7 @@ void setup()
Sd2Card card;
card.init(SPI_FULL_SPEED, PIN_SD_CS);
if(!SD.begin(PIN_SD_CS))
{
if (!SD.begin(PIN_SD_CS)) {
Serial.println("failed!");
while (1); // init fail, die here
}
@ -65,19 +62,15 @@ void setup()
TFT_BL_ON;
}
void loop()
{
for(unsigned char i=0; i<__Gnfile_num; i++)
{
void loop() {
for (unsigned char i = 0; i < __Gnfile_num; i++) {
bmpFile = SD.open(__Gsbmp_files[i]);
if (! bmpFile)
{
if (! bmpFile) {
Serial.println("didnt find image");
while (1);
}
if(! bmpReadHeader(bmpFile))
{
if (! bmpReadHeader(bmpFile)) {
Serial.println("bad bmp");
return;
}
@ -100,27 +93,23 @@ void loop()
#define BUFFPIXEL 60 // must be a divisor of 240
#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);
uint32_t time = millis();
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);
uint8_t buffidx = 0;
int offset_x = j * 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] = __color[k] << 6 | (sdbuffer[buffidx + 1] >> 2); // green
__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_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]);
}
@ -150,8 +138,7 @@ void bmpdraw(File f, int x, int y)
Serial.println(" ms");
}
boolean bmpReadHeader(File f)
{
boolean bmpReadHeader(File f) {
// read header
uint32_t tmp;
uint8_t bmpDepth;
@ -182,13 +169,13 @@ boolean bmpReadHeader(File f)
int bmp_width = 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;
}
if (read16(f) != 1)
if (read16(f) != 1) {
return false;
}
bmpDepth = read16(f);
Serial.print("bitdepth ");
@ -210,8 +197,7 @@ boolean bmpReadHeader(File f)
// (the data is stored in little endian format!)
// LITTLE ENDIAN!
uint16_t read16(File f)
{
uint16_t read16(File f) {
uint16_t d;
uint8_t b;
b = f.read();
@ -222,8 +208,7 @@ uint16_t read16(File f)
}
// LITTLE ENDIAN!
uint32_t read32(File f)
{
uint32_t read32(File f) {
uint32_t d;
uint16_t b;

View File

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

View File

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

View File

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

View File

@ -1,13 +1,13 @@
/*
* NativeSdk by Simon Peter
* Access functionality from the Espressif ESP8266 SDK
* This example code is in the public domain
*
* This is for advanced users.
* 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
* where possible instead, in order to abstract away the hardware dependency.
NativeSdk by Simon Peter
Access functionality from the Espressif ESP8266 SDK
This example code is in the public domain
This is for advanced users.
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
where possible instead, in order to abstract away the hardware dependency.
*/
// Expose Espressif SDK functionality - wrapped in ifdef so that it still

View File

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

View File

@ -45,8 +45,7 @@ void setup() {
Serial.println(rtcData.crc32, HEX);
if (crcOfData != rtcData.crc32) {
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.");
}
}
@ -71,8 +70,7 @@ void setup() {
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;
while (length--) {
uint8_t c = *data++;
@ -99,8 +97,7 @@ void printMemory() {
Serial.print(buf);
if ((i + 1) % 32 == 0) {
Serial.println();
}
else {
} else {
Serial.print(" ");
}
}

View File

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