-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
41 changed files
with
8,724 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
.pioenvs | ||
.piolibdeps | ||
.vscode/.browse.c_cpp.db* | ||
.vscode/c_cpp_properties.json | ||
.vscode/launch.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# Continuous Integration (CI) is the practice, in software | ||
# engineering, of merging all developer working copies with a shared mainline | ||
# several times a day < https://docs.platformio.org/page/ci/index.html > | ||
# | ||
# Documentation: | ||
# | ||
# * Travis CI Embedded Builds with PlatformIO | ||
# < https://docs.travis-ci.com/user/integration/platformio/ > | ||
# | ||
# * PlatformIO integration with Travis CI | ||
# < https://docs.platformio.org/page/ci/travis.html > | ||
# | ||
# * User Guide for `platformio ci` command | ||
# < https://docs.platformio.org/page/userguide/cmd_ci.html > | ||
# | ||
# | ||
# Please choose one of the following templates (proposed below) and uncomment | ||
# it (remove "# " before each line) or use own configuration according to the | ||
# Travis CI documentation (see above). | ||
# | ||
|
||
|
||
# | ||
# Template #1: General project. Test it using existing `platformio.ini`. | ||
# | ||
|
||
# language: python | ||
# python: | ||
# - "2.7" | ||
# | ||
# sudo: false | ||
# cache: | ||
# directories: | ||
# - "~/.platformio" | ||
# | ||
# install: | ||
# - pip install -U platformio | ||
# - platformio update | ||
# | ||
# script: | ||
# - platformio run | ||
|
||
|
||
# | ||
# Template #2: The project is intended to be used as a library with examples. | ||
# | ||
|
||
# language: python | ||
# python: | ||
# - "2.7" | ||
# | ||
# sudo: false | ||
# cache: | ||
# directories: | ||
# - "~/.platformio" | ||
# | ||
# env: | ||
# - PLATFORMIO_CI_SRC=path/to/test/file.c | ||
# - PLATFORMIO_CI_SRC=examples/file.ino | ||
# - PLATFORMIO_CI_SRC=path/to/test/directory | ||
# | ||
# install: | ||
# - pip install -U platformio | ||
# - platformio update | ||
# | ||
# script: | ||
# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
// See http://go.microsoft.com/fwlink/?LinkId=827846 | ||
// for the documentation about the extensions.json format | ||
"recommendations": [ | ||
"platformio.platformio-ide" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
sudo: false | ||
language: bash | ||
os: | ||
- linux | ||
|
||
script: | ||
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 | ||
- sleep 3 | ||
- export DISPLAY=:1.0 | ||
- wget http://downloads.arduino.cc/arduino-1.6.5-linux64.tar.xz | ||
- tar xf arduino-1.6.5-linux64.tar.xz | ||
- mv arduino-1.6.5 $HOME/arduino_ide | ||
- export PATH="$HOME/arduino_ide:$PATH" | ||
- which arduino | ||
- mkdir -p $HOME/Arduino/libraries | ||
- cp -r $TRAVIS_BUILD_DIR $HOME/Arduino/libraries/ESPAsyncWebServer | ||
- git clone https://github.com/bblanchon/ArduinoJson $HOME/Arduino/libraries/ArduinoJson | ||
- git clone https://github.com/me-no-dev/ESPAsyncTCP $HOME/Arduino/libraries/ESPAsyncTCP | ||
- cd $HOME/arduino_ide/hardware | ||
- mkdir esp8266com | ||
- cd esp8266com | ||
- git clone https://github.com/esp8266/Arduino.git esp8266 | ||
- cd esp8266/tools | ||
- python get.py | ||
- source $TRAVIS_BUILD_DIR/travis/common.sh | ||
- arduino --board esp8266com:esp8266:generic --save-prefs | ||
- arduino --get-pref sketchbook.path | ||
- build_sketches arduino $HOME/Arduino/libraries/ESPAsyncWebServer esp8266 | ||
|
||
notifications: | ||
email: | ||
on_success: change | ||
on_failure: change | ||
webhooks: | ||
urls: | ||
- https://webhooks.gitter.im/e/60e65d0c78ea0a920347 | ||
on_success: change # options: [always|never|change] default: always | ||
on_failure: always # options: [always|never|change] default: always | ||
on_start: false # default: false |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
COMPONENT_ADD_INCLUDEDIRS := src | ||
COMPONENT_SRCDIRS := src | ||
CXXFLAGS += -fno-rtti |
Empty file.
211 changes: 211 additions & 0 deletions
211
lib/ESPAsyncWebServer/examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,211 @@ | ||
#include <ESP8266WiFi.h> | ||
#include <ESP8266mDNS.h> | ||
#include <ArduinoOTA.h> | ||
#include <FS.h> | ||
#include <Hash.h> | ||
#include <ESPAsyncTCP.h> | ||
#include <ESPAsyncWebServer.h> | ||
#include <SPIFFSEditor.h> | ||
|
||
// SKETCH BEGIN | ||
AsyncWebServer server(80); | ||
AsyncWebSocket ws("/ws"); | ||
AsyncEventSource events("/events"); | ||
|
||
void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){ | ||
if(type == WS_EVT_CONNECT){ | ||
Serial.printf("ws[%s][%u] connect\n", server->url(), client->id()); | ||
client->printf("Hello Client %u :)", client->id()); | ||
client->ping(); | ||
} else if(type == WS_EVT_DISCONNECT){ | ||
Serial.printf("ws[%s][%u] disconnect: %u\n", server->url(), client->id()); | ||
} else if(type == WS_EVT_ERROR){ | ||
Serial.printf("ws[%s][%u] error(%u): %s\n", server->url(), client->id(), *((uint16_t*)arg), (char*)data); | ||
} else if(type == WS_EVT_PONG){ | ||
Serial.printf("ws[%s][%u] pong[%u]: %s\n", server->url(), client->id(), len, (len)?(char*)data:""); | ||
} else if(type == WS_EVT_DATA){ | ||
AwsFrameInfo * info = (AwsFrameInfo*)arg; | ||
String msg = ""; | ||
if(info->final && info->index == 0 && info->len == len){ | ||
//the whole message is in a single frame and we got all of it's data | ||
Serial.printf("ws[%s][%u] %s-message[%llu]: ", server->url(), client->id(), (info->opcode == WS_TEXT)?"text":"binary", info->len); | ||
|
||
if(info->opcode == WS_TEXT){ | ||
for(size_t i=0; i < info->len; i++) { | ||
msg += (char) data[i]; | ||
} | ||
} else { | ||
char buff[3]; | ||
for(size_t i=0; i < info->len; i++) { | ||
sprintf(buff, "%02x ", (uint8_t) data[i]); | ||
msg += buff ; | ||
} | ||
} | ||
Serial.printf("%s\n",msg.c_str()); | ||
|
||
if(info->opcode == WS_TEXT) | ||
client->text("I got your text message"); | ||
else | ||
client->binary("I got your binary message"); | ||
} else { | ||
//message is comprised of multiple frames or the frame is split into multiple packets | ||
if(info->index == 0){ | ||
if(info->num == 0) | ||
Serial.printf("ws[%s][%u] %s-message start\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary"); | ||
Serial.printf("ws[%s][%u] frame[%u] start[%llu]\n", server->url(), client->id(), info->num, info->len); | ||
} | ||
|
||
Serial.printf("ws[%s][%u] frame[%u] %s[%llu - %llu]: ", server->url(), client->id(), info->num, (info->message_opcode == WS_TEXT)?"text":"binary", info->index, info->index + len); | ||
|
||
if(info->opcode == WS_TEXT){ | ||
for(size_t i=0; i < info->len; i++) { | ||
msg += (char) data[i]; | ||
} | ||
} else { | ||
char buff[3]; | ||
for(size_t i=0; i < info->len; i++) { | ||
sprintf(buff, "%02x ", (uint8_t) data[i]); | ||
msg += buff ; | ||
} | ||
} | ||
Serial.printf("%s\n",msg.c_str()); | ||
|
||
if((info->index + len) == info->len){ | ||
Serial.printf("ws[%s][%u] frame[%u] end[%llu]\n", server->url(), client->id(), info->num, info->len); | ||
if(info->final){ | ||
Serial.printf("ws[%s][%u] %s-message end\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary"); | ||
if(info->message_opcode == WS_TEXT) | ||
client->text("I got your text message"); | ||
else | ||
client->binary("I got your binary message"); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
|
||
const char* ssid = "*******"; | ||
const char* password = "*******"; | ||
const char * hostName = "esp-async"; | ||
const char* http_username = "admin"; | ||
const char* http_password = "admin"; | ||
|
||
void setup(){ | ||
Serial.begin(115200); | ||
Serial.setDebugOutput(true); | ||
WiFi.hostname(hostName); | ||
WiFi.mode(WIFI_AP_STA); | ||
WiFi.softAP(hostName); | ||
WiFi.begin(ssid, password); | ||
if (WiFi.waitForConnectResult() != WL_CONNECTED) { | ||
Serial.printf("STA: Failed!\n"); | ||
WiFi.disconnect(false); | ||
delay(1000); | ||
WiFi.begin(ssid, password); | ||
} | ||
|
||
//Send OTA events to the browser | ||
ArduinoOTA.onStart([]() { events.send("Update Start", "ota"); }); | ||
ArduinoOTA.onEnd([]() { events.send("Update End", "ota"); }); | ||
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { | ||
char p[32]; | ||
sprintf(p, "Progress: %u%%\n", (progress/(total/100))); | ||
events.send(p, "ota"); | ||
}); | ||
ArduinoOTA.onError([](ota_error_t error) { | ||
if(error == OTA_AUTH_ERROR) events.send("Auth Failed", "ota"); | ||
else if(error == OTA_BEGIN_ERROR) events.send("Begin Failed", "ota"); | ||
else if(error == OTA_CONNECT_ERROR) events.send("Connect Failed", "ota"); | ||
else if(error == OTA_RECEIVE_ERROR) events.send("Recieve Failed", "ota"); | ||
else if(error == OTA_END_ERROR) events.send("End Failed", "ota"); | ||
}); | ||
ArduinoOTA.setHostname(hostName); | ||
ArduinoOTA.begin(); | ||
|
||
MDNS.addService("http","tcp",80); | ||
|
||
SPIFFS.begin(); | ||
|
||
ws.onEvent(onWsEvent); | ||
server.addHandler(&ws); | ||
|
||
events.onConnect([](AsyncEventSourceClient *client){ | ||
client->send("hello!",NULL,millis(),1000); | ||
}); | ||
server.addHandler(&events); | ||
|
||
server.addHandler(new SPIFFSEditor(http_username,http_password)); | ||
|
||
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest *request){ | ||
request->send(200, "text/plain", String(ESP.getFreeHeap())); | ||
}); | ||
|
||
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm"); | ||
|
||
server.onNotFound([](AsyncWebServerRequest *request){ | ||
Serial.printf("NOT_FOUND: "); | ||
if(request->method() == HTTP_GET) | ||
Serial.printf("GET"); | ||
else if(request->method() == HTTP_POST) | ||
Serial.printf("POST"); | ||
else if(request->method() == HTTP_DELETE) | ||
Serial.printf("DELETE"); | ||
else if(request->method() == HTTP_PUT) | ||
Serial.printf("PUT"); | ||
else if(request->method() == HTTP_PATCH) | ||
Serial.printf("PATCH"); | ||
else if(request->method() == HTTP_HEAD) | ||
Serial.printf("HEAD"); | ||
else if(request->method() == HTTP_OPTIONS) | ||
Serial.printf("OPTIONS"); | ||
else | ||
Serial.printf("UNKNOWN"); | ||
Serial.printf(" http://%s%s\n", request->host().c_str(), request->url().c_str()); | ||
|
||
if(request->contentLength()){ | ||
Serial.printf("_CONTENT_TYPE: %s\n", request->contentType().c_str()); | ||
Serial.printf("_CONTENT_LENGTH: %u\n", request->contentLength()); | ||
} | ||
|
||
int headers = request->headers(); | ||
int i; | ||
for(i=0;i<headers;i++){ | ||
AsyncWebHeader* h = request->getHeader(i); | ||
Serial.printf("_HEADER[%s]: %s\n", h->name().c_str(), h->value().c_str()); | ||
} | ||
|
||
int params = request->params(); | ||
for(i=0;i<params;i++){ | ||
AsyncWebParameter* p = request->getParam(i); | ||
if(p->isFile()){ | ||
Serial.printf("_FILE[%s]: %s, size: %u\n", p->name().c_str(), p->value().c_str(), p->size()); | ||
} else if(p->isPost()){ | ||
Serial.printf("_POST[%s]: %s\n", p->name().c_str(), p->value().c_str()); | ||
} else { | ||
Serial.printf("_GET[%s]: %s\n", p->name().c_str(), p->value().c_str()); | ||
} | ||
} | ||
|
||
request->send(404); | ||
}); | ||
server.onFileUpload([](AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final){ | ||
if(!index) | ||
Serial.printf("UploadStart: %s\n", filename.c_str()); | ||
Serial.printf("%s", (const char*)data); | ||
if(final) | ||
Serial.printf("UploadEnd: %s (%u)\n", filename.c_str(), index+len); | ||
}); | ||
server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total){ | ||
if(!index) | ||
Serial.printf("BodyStart: %u\n", total); | ||
Serial.printf("%s", (const char*)data); | ||
if(index + len == total) | ||
Serial.printf("BodyEnd: %u\n", total); | ||
}); | ||
server.begin(); | ||
} | ||
|
||
void loop(){ | ||
ArduinoOTA.handle(); | ||
} |
2 changes: 2 additions & 0 deletions
2
lib/ESPAsyncWebServer/examples/ESP_AsyncFSBrowser/data/.exclude.files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
/*.js.gz | ||
/.exclude.files |
Binary file not shown.
Binary file added
BIN
+3.06 KB
lib/ESPAsyncWebServer/examples/ESP_AsyncFSBrowser/data/ext-searchbox.js.gz
Binary file not shown.
Binary file not shown.
Oops, something went wrong.