+
+ Camera Details
+ ESP32 cam webserver on GitHub
+)=====";
+
+size_t portal_html_len = sizeof(portal_html)-1;
diff --git a/index_ov2640.h b/index_ov2640.h
index 36affd5..c7f3e23 100644
--- a/index_ov2640.h
+++ b/index_ov2640.h
@@ -2,8 +2,7 @@
* primary HTML for the OV2640 camera module
*/
-const uint8_t index_ov2640_html[] = R"=====(
-
+const uint8_t index_ov2640_html[] = R"=====(
@@ -265,7 +264,7 @@ const uint8_t index_ov2640_html[] = R"=====(
-
+
Unknown
@@ -589,7 +588,7 @@ const uint8_t index_ov2640_html[] = R"=====(
}
swapButton.onclick = () => {
- window.open('/view','_self');
+ window.open('/?view=simple','_self');
}
// saveFaceButton.onclick = () => {
@@ -626,7 +625,6 @@ const uint8_t index_ov2640_html[] = R"=====(
})
-
-)=====";
+)=====";
-size_t index_ov2640_html_len = sizeof(index_ov2640_html);
+size_t index_ov2640_html_len = sizeof(index_ov2640_html)-1;
diff --git a/index_ov3660.h b/index_ov3660.h
index ce8c9a9..efbe8c0 100644
--- a/index_ov3660.h
+++ b/index_ov3660.h
@@ -636,4 +636,4 @@ const uint8_t index_ov3660_html[] = R"=====(
)=====";
-size_t index_ov3660_html_len = sizeof(index_ov3660_html);
+size_t index_ov3660_html_len = sizeof(index_ov3660_html)-1;
diff --git a/myconfig.sample.h b/myconfig.sample.h
index a4e29d8..61b778c 100644
--- a/myconfig.sample.h
+++ b/myconfig.sample.h
@@ -14,29 +14,30 @@
* WiFi Settings
*
* Note the the use of commas as seperators in IP addresses!
- */
-
-// WiFi Credentials
-// A structure for each WiFi network entry
-struct station
-{
- const char ssid[64]; // ssid (max 64 chars)
- const char password[64]; // password (max 64 chars)
- const bool dhcp; // dhcp
-};
-/*
- * Extend the list below with additional SSID+Password pairs like this:
+ * Extend the stationList[] below with additional SSID+Password pairs.
+ * The first block defines /what/ the structure holds
+ * The second block is where our list of ssid/passwords live
-struct station stationList[] = {{"ssid1", "pass1", true},
- {"ssid2", "pass2", true},
- {"ssid3", "pass3", false}};
+struct station {
+ const char ssid[64]; // - ssid (max 64 chars)
+ const char password[64]; // - password (max 64 chars)
+ const bool dhcp; // - dhcp
+} station stationList[] = {{"ssid1", "pass1", true},
+ {"ssid2", "pass2", true},
+ {"ssid3", "pass3", false}};
- * The first entry will be used for the AccessPoint ssid and password when it is enabled
+ * The first entry in the stationList[] is special, if WIFI_AP_ENABLE has been uncommented (below)
+ * it will be used for the AccessPoint ssid and password.
+ *
* The 'dhcp' setting controls wether the station uses static IP settings (if in doubt leave 'true')
* Note the use of nested braces '{' and '}' to group each entry, and commas ',' to seperate them.
*/
-struct station stationList[] = {{"my_ssid","my_password", false}};
+struct station {
+ const char ssid[64]; // ssid (max 64 chars)
+ const char password[64]; // password (max 64 chars)
+ const bool dhcp; // dhcp
+} stationList[] = {{"my_ssid","my_password", true}};
/*
@@ -45,7 +46,7 @@ struct station stationList[] = {{"my_ssid","my_password", false}};
* Note: The same settings will be applied to all client connections where the dhcp setting is 'false'
* You must define all three: IP, Gateway and NetMask
*/
-// warning - IP addresses must be seperated with commas (,) and not decimals (.)
+// warning - IP addresses must be seperated with commas (,) and not decimals (.) here
// #define ST_IP 192,168,0,16
// #define ST_GATEWAY 192,168,0,2
// #define ST_NETMASK 255,255,255,0
@@ -59,28 +60,24 @@ struct station stationList[] = {{"my_ssid","my_password", false}};
* Uncomment to enable AP mode;
*
*/
-#define WIFI_AP_ENABLE
+// #define WIFI_AP_ENABLE
/* AP Mode Notes:
*
* Once enabled the AP ssid and password will be taken from the 1st entry in the stationList[] above.
*
- * If there are further entries listed they will be scanned at startup and connected to if they are found.
- * Making the AP a fallback mode that happens only when there are no 'real' networks available
+ * If there are more entries listed they will be scanned at startup in the normal way and connected to
+ * if they are found. AP then works as a fallback mode for when there are no 'real' networks available.
*
- * Setting the dhcp field to true for the AP enables a captive portal and attempts to send
- * all incoming pages to the webcam page, with varying degrees of success depending on the visitors
+ * Setting the 'dhcp' field to true for the AP enables a captive portal and attempts to send
+ * all visitors to the webcam page, with varying degrees of success depending on the visitors
* browser and other settings.
- * - The Captive Portal really needs a seperate landing page instead of using the 'main' page.
- * Browsers and OS's restrict landing page functions, since they have been abused by marketing types
- * and other low quality people. Video/Audio playback and Javascript are commonly disabled as a result.
*/
-
-// AccessPoint; optionally change the ip address (default = 192.168.4.1)
-// warning - IP addresses must be seperated with commas (,) and not decimals (.)
+// Optionally change the AccessPoint ip address (default = 192.168.4.1)
+// warning - IP addresses must be seperated with commas (,) and not decimals (.) here
// #define AP_ADDRESS 192,168,4,1
-// AccessPoint; Uncomment this to force the channel number, default = 1
+// Uncomment this to force the AccessPoint channel number, default = 1
// #define AP_CHAN 1
/*
@@ -98,21 +95,9 @@ struct station stationList[] = {{"my_ssid","my_password", false}};
//#define WIFI_WATCHDOG 5000
/*
- * Camera Hardware Settings
+ * Camera Defaults
*
- * You must uncomment one, and only one, of the lines below to select your board model.
- * Remember to also select the board in the Boards Manager
- * This is not optional
*/
-#define CAMERA_MODEL_AI_THINKER // default
-// #define CAMERA_MODEL_WROVER_KIT
-// #define CAMERA_MODEL_ESP_EYE
-// #define CAMERA_MODEL_M5STACK_PSRAM
-// #define CAMERA_MODEL_M5STACK_V2_PSRAM
-// #define CAMERA_MODEL_M5STACK_WIDE
-// #define CAMERA_MODEL_M5STACK_ESP32CAM // Originally: CAMERA_MODEL_M5STACK_NO_PSRAM
-// #define CAMERA_MODEL_TTGO_T_JOURNAL
-
// Initial Reslolution, default SVGA
// available values are: FRAMESIZE_[QQVGA|HQVGA|QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA|QXGA(ov3660)]
// #define DEFAULT_RESOLUTION FRAMESIZE_SVGA
@@ -129,7 +114,10 @@ struct station stationList[] = {{"my_ssid","my_password", false}};
/*
* Additional Features
+ *
*/
+// Default Page: uncomment to make the full control page the default, otherwise show simple viewer
+// #define DEFAULT_INDEX_FULL
// Uncomment to disable the illumination lamp features
// #define LAMP_DISABLE
@@ -137,11 +125,29 @@ struct station stationList[] = {{"my_ssid","my_password", false}};
// Define a initial lamp setting as a percentage, defaults to 0%
// #define LAMP_DEFAULT 0
-// Assume we have SPIFFS/LittleFS partition, uncomment if not
+// Assume we have SPIFFS/LittleFS partition, uncomment to disable this.
+// Controls will still be shown in the UI but are inoperative.
// #define NO_FS
// Uncomment to enable Face Detection (+ Recognition if desired) by default
-// Notes: You must set DEFAULT_RESOLUTION, above, to FRAMESIZE_CIF or lower
-// Face recognition enrolements will be lost between reboots.
+// Notes: You must set DEFAULT_RESOLUTION (above) to FRAMESIZE_CIF or lower before enabling this
+// Face recognition enrolements are currently lost between reboots.
// #define FACE_DETECTION
// #define FACE_RECOGNITION
+
+
+/*
+ * Camera Hardware Selectiom
+ *
+ * You must uncomment one, and only one, of the lines below to select your board model.
+ * Remember to also select the board in the Boards Manager
+ * This is not optional
+ */
+#define CAMERA_MODEL_AI_THINKER // default
+// #define CAMERA_MODEL_WROVER_KIT
+// #define CAMERA_MODEL_ESP_EYE
+// #define CAMERA_MODEL_M5STACK_PSRAM
+// #define CAMERA_MODEL_M5STACK_V2_PSRAM
+// #define CAMERA_MODEL_M5STACK_WIDE
+// #define CAMERA_MODEL_M5STACK_ESP32CAM // Originally: CAMERA_MODEL_M5STACK_NO_PSRAM
+// #define CAMERA_MODEL_TTGO_T_JOURNAL
diff --git a/src/logo.h b/src/logo.h
new file mode 100644
index 0000000..754388e
--- /dev/null
+++ b/src/logo.h
@@ -0,0 +1,137 @@
+/*
+ * Logo (svg format)
+ */
+
+const uint8_t logo_svg[] = R"=====(
+)=====";
+
+size_t logo_svg_len = sizeof(logo_svg)-1;