|
@@ -8,6 +8,7 @@
|
|
|
#include "abc800_func.h"
|
|
|
#include "abc800_webcontent.h"
|
|
|
#include "abc800_hidboot.h"
|
|
|
+#include "abc800_gpio.h"
|
|
|
#include <WebSerial.h>
|
|
|
#include "ESPAsyncWiFiManager.h"
|
|
|
static const char TAG[] = __FILE__;
|
|
@@ -23,8 +24,26 @@ extern AsyncElegantOtaClass AsyncElegantOTA;
|
|
|
extern DNSServer dns;
|
|
|
extern AsyncWiFiManager wifiManager;
|
|
|
extern AsyncWebSocket ws("/ws");
|
|
|
-
|
|
|
-
|
|
|
+bool connected2=false;
|
|
|
+bool ledState;
|
|
|
+ static void web_onEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type,void *arg, uint8_t *data, size_t len) {
|
|
|
+ switch (type) {
|
|
|
+ case WS_EVT_CONNECT:
|
|
|
+ ESP_LOGI(TAG,"WebSocket client #%u connected from %s\n", client->id(), client->remoteIP().toString().c_str());
|
|
|
+ connected2 = true;
|
|
|
+ break;
|
|
|
+ case WS_EVT_DISCONNECT:
|
|
|
+ ESP_LOGI(TAG,"WebSocket client #%u disconnected\n", client->id());
|
|
|
+ connected2 = false;
|
|
|
+ break;
|
|
|
+ case WS_EVT_DATA:
|
|
|
+ abc800_web.handleWebSocketMessage(arg, data, len);
|
|
|
+ break;
|
|
|
+ case WS_EVT_PONG:
|
|
|
+ case WS_EVT_ERROR:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
namespace abc800
|
|
|
{
|
|
|
void OTAtask(void * parameter){
|
|
@@ -61,27 +80,41 @@ namespace abc800
|
|
|
|
|
|
|
|
|
void web::notifyClients() {
|
|
|
- //ws.textAll(String(ledState));
|
|
|
+ ws.textAll(String(ledState));
|
|
|
}
|
|
|
|
|
|
void web::handleWebSocketMessage(void *arg, uint8_t *data, size_t len) {
|
|
|
AwsFrameInfo *info = (AwsFrameInfo*)arg;
|
|
|
if (info->final && info->index == 0 && info->len == len && info->opcode == WS_TEXT) {
|
|
|
data[len] = 0;
|
|
|
- if (strcmp((char*)data, "toggle") == 0) {
|
|
|
- //ledState = !ledState;
|
|
|
- notifyClients();
|
|
|
+ if (strcmp((char*)data, "button_up") == 0) {
|
|
|
+ pinMode(KEY800_UP_BUTTON,OUTPUT);
|
|
|
+ digitalWrite(KEY800_UP_BUTTON,LOW);
|
|
|
+ delay(100);
|
|
|
+ pinMode(KEY800_UP_BUTTON,INPUT);
|
|
|
+ }
|
|
|
+ if (strcmp((char*)data, "button_down") == 0) {
|
|
|
+ pinMode(KEY800_DOWN_BUTTON,OUTPUT);
|
|
|
+ digitalWrite(KEY800_DOWN_BUTTON,LOW);
|
|
|
+ delay(100);
|
|
|
+ pinMode(KEY800_DOWN_BUTTON,INPUT);
|
|
|
+ }
|
|
|
+ if (strcmp((char*)data, "button_menu") == 0) {
|
|
|
+ pinMode(KEY800_MENU_BUTTON,OUTPUT);
|
|
|
+ digitalWrite(KEY800_MENU_BUTTON,LOW);
|
|
|
+ delay(100);
|
|
|
+ pinMode(KEY800_MENU_BUTTON,INPUT);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
void web::onEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type,void *arg, uint8_t *data, size_t len) {
|
|
|
switch (type) {
|
|
|
case WS_EVT_CONNECT:
|
|
|
- Serial.printf("WebSocket client #%u connected from %s\n", client->id(), client->remoteIP().toString().c_str());
|
|
|
+ ESP_LOGI(TAG,"WebSocket client #%u connected from %s\n", client->id(), client->remoteIP().toString().c_str());
|
|
|
connected = true;
|
|
|
break;
|
|
|
case WS_EVT_DISCONNECT:
|
|
|
- Serial.printf("WebSocket client #%u disconnected\n", client->id());
|
|
|
+ ESP_LOGI(TAG,"WebSocket client #%u disconnected\n", client->id());
|
|
|
connected = false;
|
|
|
break;
|
|
|
case WS_EVT_DATA:
|
|
@@ -94,7 +127,7 @@ namespace abc800
|
|
|
}
|
|
|
|
|
|
void web::initWebSocket() {
|
|
|
- //ws.onEvent(abc800_web.onEvent);
|
|
|
+ ws.onEvent(web_onEvent);
|
|
|
server.addHandler(&ws);
|
|
|
}
|
|
|
String web::processor(const String& var){
|
|
@@ -143,8 +176,8 @@ namespace abc800
|
|
|
initWebSocket();
|
|
|
|
|
|
// Route for root / web page
|
|
|
- server.on("/command", HTTP_GET, [](AsyncWebServerRequest *request){
|
|
|
- request->send_P(200, "text/html", index_html);//, processor);
|
|
|
+ server.on("/rgbtohdmi", HTTP_GET, [](AsyncWebServerRequest *request){
|
|
|
+ request->send_P(200, "text/html", rgbtohdmi);//, processor);
|
|
|
});
|
|
|
|
|
|
// Start ElegantOTA
|