diff --git a/src/meshwifi/meshhttp.cpp b/src/meshwifi/meshhttp.cpp index 6b377673..b8915df3 100644 --- a/src/meshwifi/meshhttp.cpp +++ b/src/meshwifi/meshhttp.cpp @@ -8,6 +8,8 @@ WebServer webserver(80); +// Maximum number of messages for chat history. Don't make this too big -- it'll use a +// lot of memory! const uint16_t maxMessages = 50; struct message_t { @@ -19,9 +21,8 @@ struct message_t { bool fromMe; }; -struct messages_t -{ - message_t history[maxMessages]; // 900 positions to save up to 1200 seconds (15 minutes). uInt for each temerature sensor, Input and Setpoint. +struct messages_t { + message_t history[maxMessages]; }; messages_t messages_history; @@ -51,6 +52,7 @@ void initWebServer() webserver.on("/json/chat/history/user", handleJSONChatHistory); webserver.on("/json/stats", handleJSONChatHistory); webserver.on("/hotspot-detect.html", handleHotspot); + webserver.on("/css/style.css", handleStyleCSS); webserver.on("/", handleRoot); webserver.begin(); } @@ -123,61 +125,6 @@ void handleHotspot() return; } -void handleRoot() -{ - DEBUG_MSG("Hotspot Request\n"); - - /* - If we don't do a redirect, be sure to return a "Success" message - otherwise iOS will have trouble detecting that the connection to the SoftAP worked. - */ - - String out = ""; - // out += "Success\n"; - out += "\n" - "\n" - "\n" - "\n" - "Meshtastic - WebUI\n" - "\n" - "\n" - "\n" - "
\n" - "
\n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - "
Meshtastic - WebUI (Pre-Alpha)
\n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - "
Channels:
\n" - "
\n" - " #general
\n" - " #stuff
\n" - " #things
\n" - "
Everything is awesome!
\n" - "
\n" - "
\n" - "
\n" - "\n" - "\n"; - webserver.send(200, "text/html", out); - return; -} - void notifyWebUI() { DEBUG_MSG("************ Got a message! ************\n"); @@ -190,4 +137,374 @@ void notifyWebUI() snprintf(tempBuf, sizeof(tempBuf), "%s", mp.decoded.data.payload.bytes); something = tempBuf; +} + +//---------------------------------------- + +void handleRoot() +{ + + String out = ""; + out += " < !DOCTYPE html >\n" + "\n" + "\n" + " \n" + " Meshtastic - Chat\n" + " \n" + "\n" + "\n" + "\n" + "
\n" + "\t
\n" + "\t\t
Meshtastic - Chat
\n" + "\t
\n" + "\n" + "\t
\n" + "
\n" + "\t
\n" + "\t\t
Channels
\n" + "\t
\n" + "
    \n" + "
  • \n" + "
    HotChannel
    \n" + "
    \n" + "\t\t 28 messages\n" + "
    \n" + "
  • \n" + "\t\t
  • \n" + "
    AnotherChannel
    \n" + "
    \n" + "\t\t 12 messages\n" + "
    \n" + "
  • \n" + "\t\t
  • \n" + "
    Lost
    \n" + "
    \n" + "\t\t 6 messages\n" + "
    \n" + "
  • \n" + "
\n" + "
\n" + "
\n" + "
\n" + "
\n" + "\n" + "
Chat from: \n" + "\t\t HotChannel\n" + "\t\t
\n" + "\n" + "
\n" + " \n" + "
\n" + "
    \n" + "
  • \n" + "
    \n" + " 10:10 AM, Today    \n" + " Olia \n" + " \n" + "
    \n" + "
    \n" + " Hi Vincent, how are you? How is the project coming along?\n" + "
    \n" + "
  • \n" + " \n" + "
  • \n" + "
    \n" + " Vincent\n" + " 10:12 AM, Today\n" + "
    \n" + "
    \n" + " Are we meeting today? Project has been already finished and I have results to show you.\n" + "
    \n" + "
  • \n" + " \n" + "
  • \n" + "
    \n" + " 10:14 AM, Today    \n" + " Olia \n" + " \n" + "
    \n" + "
    \n" + " Well I am not sure. The rest of the team is not here yet. Maybe in an hour or so? Have you faced any " + "problems at the last phase of the project?\n" + "
    \n" + "
  • \n" + " \n" + "
  • \n" + "
    \n" + " Vincent\n" + " 10:20 AM, Today\n" + "
    \n" + "
    \n" + " Actually everything was fine. I'm very excited to show this to our team.\n" + "
    \n" + "
  • \n" + " \n" + " \n" + "
\n" + " \n" + "
\n" + " \n" + "
\n" + " \n" + " \n" + " \n" + " \n" + "\n" + "
\n" + " \n" + "
\n" + " \n" + "
\n" + "\n" + "\n" + "\n" + ""; + webserver.send(200, "text/html", out); + return; +} + +void handleStyleCSS() +{ + + String out = ""; + out += + "/* latin-ext */\n" + "@font-face {\n" + " font-family: 'Lato';\n" + " font-style: normal;\n" + " font-weight: 400;\n" + " src: local('Lato Regular'), local('Lato-Regular'), url(./Google.woff2) format('woff2');\n" + " unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n" + "}\n" + "\n" + "*, *:before, *:after {\n" + " box-sizing: border-box;\n" + "}\n" + "\n" + "body {\n" + " background: #C5DDEB;\n" + " font: 14px/20px \"Lato\", Arial, sans-serif;\n" + " padding: 40px 0;\n" + " color: white;\n" + "}\n" + "\n" + "\n" + " \n" + ".grid {\n" + " display: grid;\n" + " grid-template-columns:\n" + "\t1fr 4fr;\n" + " grid-template-areas:\n" + "\t\"header header\"\n" + "\t\"sidebar content\";\n" + " margin: 0 auto;\n" + " width: 750px;\n" + " background: #444753;\n" + " border-radius: 5px;\n" + "}\n" + "\n" + ".top {grid-area: header;}\n" + ".side {grid-area: sidebar;}\n" + ".main {grid-area: content;}\n" + "\n" + ".top {\n" + " border-bottom: 2px solid white;\n" + "}\n" + ".top-text {\n" + " font-weight: bold;\n" + " font-size: 24px;\n" + " text-align: center;\n" + " padding: 20px;\n" + "}\n" + "\n" + ".side {\n" + " width: 260px;\n" + " float: left;\n" + "}\n" + ".side .side-header {\n" + " padding: 20px;\n" + " border-bottom: 2px solid white;\n" + "}\n" + "\n" + ".side .side-header .side-text {\n" + " padding-left: 10px;\n" + " margin-top: 6px;\n" + " font-size: 16px;\n" + " text-align: left;\n" + " font-weight: bold;\n" + " \n" + "}\n" + "\n" + ".channel-list ul {\n" + " padding: 20px;\n" + " height: 570px;\n" + " list-style-type: none;\n" + "}\n" + ".channel-list ul li {\n" + " padding-bottom: 20px;\n" + "}\n" + "\n" + ".channel-list .channel-name {\n" + " font-size: 20px;\n" + " margin-top: 8px;\n" + " padding-left: 8px;\n" + "}\n" + "\n" + ".channel-list .message-count {\n" + " padding-left: 16px;\n" + " color: #92959E;\n" + "}\n" + "\n" + ".content {\n" + " display: flex;\n" + " flex-direction: column;\n" + " flex-wrap: nowrap;\n" + "/* width: 490px; */\n" + " float: left;\n" + " background: #F2F5F8;\n" + "/* border-top-right-radius: 5px;\n" + " border-bottom-right-radius: 5px; */\n" + " color: #434651;\n" + "}\n" + ".content .content-header {\n" + " flex-grow: 0;\n" + " padding: 20px;\n" + " border-bottom: 2px solid white;\n" + "}\n" + "\n" + ".content .content-header .content-from {\n" + " padding-left: 10px;\n" + " margin-top: 6px;\n" + " font-size: 20px;\n" + " text-align: center;\n" + " font-size: 16px;\n" + "}\n" + ".content .content-header .content-from .selected-channel {\n" + " font-weight: bold;\n" + "}\n" + ".content .content-header .content-num-messages {\n" + " color: #92959E;\n" + "}\n" + "\n" + ".content .content-history {\n" + " flex-grow: 1;\n" + " padding: 20px 20px 20px;\n" + " border-bottom: 2px solid white;\n" + " overflow-y: scroll;\n" + " height: 375px;\n" + "}\n" + ".content .content-history ul {\n" + " list-style-type: none;\n" + " padding-inline-start: 10px;\n" + "}\n" + ".content .content-history .message-data {\n" + " margin-bottom: 10px;\n" + "}\n" + ".content .content-history .message-data-time {\n" + " color: #a8aab1;\n" + " padding-left: 6px;\n" + "}\n" + ".content .content-history .message {\n" + " color: white;\n" + " padding: 8px 10px;\n" + " line-height: 20px;\n" + " font-size: 14px;\n" + " border-radius: 7px;\n" + " margin-bottom: 30px;\n" + " width: 90%;\n" + " position: relative;\n" + "}\n" + ".content .content-history .message:after {\n" + " bottom: 100%;\n" + " left: 7%;\n" + " border: solid transparent;\n" + " content: \" \";\n" + " height: 0;\n" + " width: 0;\n" + " position: absolute;\n" + " pointer-events: none;\n" + " border-bottom-color: #86BB71;\n" + " border-width: 10px;\n" + " margin-left: -10px;\n" + "}\n" + ".content .content-history .my-message {\n" + " background: #86BB71;\n" + "}\n" + ".content .content-history .other-message {\n" + " background: #94C2ED;\n" + "}\n" + ".content .content-history .other-message:after {\n" + " border-bottom-color: #94C2ED;\n" + " left: 93%;\n" + "}\n" + ".content .content-message {\n" + " flex-grow: 0;\n" + " padding: 10px;\n" + "}\n" + ".content .content-message textarea {\n" + " width: 100%;\n" + " border: none;\n" + " padding: 10px 10px;\n" + " font: 14px/22px \"Lato\", Arial, sans-serif;\n" + " margin-bottom: 10px;\n" + " border-radius: 5px;\n" + " resize: none;\n" + "}\n" + "\n" + ".content .content-message button {\n" + " float: right;\n" + " color: #94C2ED;\n" + " font-size: 16px;\n" + " text-transform: uppercase;\n" + " border: none;\n" + " cursor: pointer;\n" + " font-weight: bold;\n" + " background: #F2F5F8;\n" + "}\n" + ".content .content-message button:hover {\n" + " color: #75b1e8;\n" + "}\n" + "\n" + ".online, .offline, .me {\n" + " margin-right: 3px;\n" + " font-size: 10px;\n" + "}\n" + "\n" + ".online {\n" + " color: #86BB71;\n" + "}\n" + "\n" + ".offline {\n" + " color: #E38968;\n" + "}\n" + "\n" + ".me {\n" + " color: #94C2ED;\n" + "}\n" + "\n" + ".align-left {\n" + " text-align: left;\n" + "}\n" + "\n" + ".align-right {\n" + " text-align: right;\n" + "}\n" + "\n" + ".float-right {\n" + " float: right;\n" + "}\n" + "\n" + ".clearfix:after {\n" + " visibility: hidden;\n" + " display: block;\n" + " font-size: 0;\n" + " content: \" \";\n" + " clear: both;\n" + " height: 0;\n" + "}"; + + webserver.send(200, "text/html", out); + return; } \ No newline at end of file diff --git a/src/meshwifi/meshhttp.h b/src/meshwifi/meshhttp.h index b1a5dbb9..d959fe11 100644 --- a/src/meshwifi/meshhttp.h +++ b/src/meshwifi/meshhttp.h @@ -15,4 +15,7 @@ void notifyWebUI(); void handleHotspot(); +// WebServer webserver(80); + +void handleStyleCSS(); void handleRoot(); \ No newline at end of file diff --git a/src/meshwifi/meshwifi.cpp b/src/meshwifi/meshwifi.cpp index ad8a88fa..84a9a5a5 100644 --- a/src/meshwifi/meshwifi.cpp +++ b/src/meshwifi/meshwifi.cpp @@ -91,7 +91,7 @@ void initWifi() WiFiEventId_t eventID = WiFi.onEvent( [](WiFiEvent_t event, WiFiEventInfo_t info) { - Serial.print("\n-------------- WiFi lost connection. Reason: "); + Serial.print("\nWiFi lost connection. Reason: "); Serial.println(info.disconnected.reason); // wifiDisconnectReason = info.disconnected.reason; }, diff --git a/src/nimble/BluetoothUtil.cpp b/src/nimble/BluetoothUtil.cpp index de9f0c61..f294802c 100644 --- a/src/nimble/BluetoothUtil.cpp +++ b/src/nimble/BluetoothUtil.cpp @@ -526,6 +526,14 @@ void setBluetoothEnable(bool on) initWifi(); } } else { + + /* + // If WiFi is in use, disable shutting down the radio. + if (isWifiAvailable()) { + return; + } + */ + // shutdown wifi deinitWifi();