diff --git a/components/WebGUIAppComponent b/components/WebGUIAppComponent index 13a0cdb..7038b80 160000 --- a/components/WebGUIAppComponent +++ b/components/WebGUIAppComponent @@ -1 +1 @@ -Subproject commit 13a0cdbe4cc438d59e88f2ac863cf8133d020a79 +Subproject commit 7038b80d4f1438d1fbd5be286718edf5d4e65cea diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index e8c04db..a8a1426 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -2,9 +2,7 @@ # for more information about component CMakeLists.txt files. idf_component_register( - SRCS main.c # list the source files of this component - INCLUDE_DIRS # optional, add here public include directories - PRIV_INCLUDE_DIRS # optional, add here private include directories - REQUIRES # optional, list the public requirements (component names) - PRIV_REQUIRES # optional, list the private requirements + SRCS main.c + HTTPPrintCustom.c + ) diff --git a/main/HTTPPrintCustom.c b/main/HTTPPrintCustom.c new file mode 100644 index 0000000..a46e117 --- /dev/null +++ b/main/HTTPPrintCustom.c @@ -0,0 +1,102 @@ +/*! Copyright 2022 Bogdan Pilyugin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \file HTTPPrintCustom.c + * \version 1.0 + * \date 2022-08-18 + * \author Bogdan Pilyugin + * \brief + * \details + * \copyright Apache License, Version 2.0 + */ +#include "HTTPServer.h" + +//Default string if not found handler +static void HTTPPrint_DEF(char *VarData, void *arg) +{ + snprintf(VarData, MAX_DYNVAR_LENGTH, "#DEF"); +} + +static void HTTPPrint_status_fail(char *VarData, void *arg) +{ + snprintf(VarData, MAX_DYNVAR_LENGTH, "none"); +} + +dyn_var_handler_t HANDLERS_ARRAY_CUST[] = { + + /*ERROR report*/ + { "status_fail", sizeof("status_fail") - 1, &HTTPPrint_status_fail }, + +}; + + +int HTTPPrintCustom(httpd_req_t *req, char *buf, char *var) +{ + char VarData[MAX_DYNVAR_LENGTH]; + const char incPat[] = "inc:"; + const int incPatLen = sizeof(incPat) - 1; + if (!memcmp(var, incPat, incPatLen)) + { + const char rootFS[] = "/"; + char filename[32]; + filename[0] = 0x00; + var += incPatLen; + strcat(filename, rootFS); + strcat(filename, var); + espfs_file_t *file = espfs_fopen(fs, filename); + struct espfs_stat_t stat; + if (file) + { + espfs_fstat(file, &stat); + int readBytes = espfs_fread(file, buf, stat.size); + espfs_fclose(file); + return readBytes; + } + } + + bool fnd = false; + char *p2 = var + strlen(var) - 1; //last var symbol + int arg = 0; + //searching for tag in handles array + for (int i = 0; i < (sizeof(HANDLERS_ARRAY_CUST) / sizeof(HANDLERS_ARRAY_CUST[0])); ++i) + { + if (*p2 == ')') + { //found close brace + char *p1 = p2; + while ((*p1 != '(') && (p1 > var)) + --p1; + if (*p1 == '(') + { //found open brace + *p1 = 0x00; //trim variable to name part + ++p1; //to begin of argument + *p2 = 0x00; //set end of argument + arg = atoi(p1); + } + } + if (strcmp(var, HANDLERS_ARRAY_CUST[i].tag) == 0 + && HANDLERS_ARRAY_CUST[i].HandlerRoutine != NULL) + { + HANDLERS_ARRAY_CUST[i].HandlerRoutine(VarData, (void*) &arg); + fnd = true; + break; + } + } + if (!fnd) + { + HTTPPrint_DEF(VarData, NULL); + } + int dLen = strlen(VarData); + memcpy(buf, VarData, dLen); + return dLen; +} diff --git a/main/main.c b/main/main.c index 505681e..e0a2c9a 100644 --- a/main/main.c +++ b/main/main.c @@ -16,6 +16,8 @@ #define MANUAL_RESET 0 +int HTTPPrintCustom(httpd_req_t *req, char *buf, char *var); + void app_main(void) { @@ -81,8 +83,11 @@ void app_main(void) if (CONFIG_WEBGUIAPP_GPRS_ENABLE || CONFIG_WEBGUIAPP_ETHERNET_ENABLE || CONFIG_WEBGUIAPP_WIFI_ENABLE) + { ESP_ERROR_CHECK(start_file_server()); + regHTTPPrintCustom(&HTTPPrintCustom); + } while (true) { printf("Hello from app_main!\n"); diff --git a/sdkconfig b/sdkconfig index 4d29c59..3f73864 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1264,7 +1264,7 @@ CONFIG_WEBGUIAPP_ETHERNET_ON=y CONFIG_WEBGUIAPP_ETH_IP_DEFAULT="192.168.1.150" CONFIG_WEBGUIAPP_ETH_MASK_DEFAULT="255.255.255.0" CONFIG_WEBGUIAPP_ETH_GATEWAY_DEFAULT="192.168.1.150" -CONFIG_WEBGUIAPP_ETHERNET_DHCP_DEFAULT=y +# CONFIG_WEBGUIAPP_ETHERNET_DHCP_DEFAULT is not set CONFIG_GPIO_RANGE_MIN=0 CONFIG_GPIO_RANGE_MAX=36 # CONFIG_USE_INTERNAL_ETHERNET is not set @@ -1323,6 +1323,14 @@ CONFIG_MQTT_ROOT_TOPIC="ROOTTOPIC" CONFIG_MQTT_USERNAME="username" CONFIG_MQTT_PASSWORD="password" # end of MQTT settings + +# +# DNS settings +# +CONFIG_WEBGUIAPP_DNS1_ADDRESS_DEFAULT="8.8.8.8" +CONFIG_WEBGUIAPP_DNS2_ADDRESS_DEFAULT="8.8.4.4" +CONFIG_WEBGUIAPP_DNS3_ADDRESS_DEFAULT="1.1.1.1" +# end of DNS settings # end of WebGuiApp configuration # diff --git a/sdkconfig.old b/sdkconfig.old index 9afbfd3..f2647f5 100644 --- a/sdkconfig.old +++ b/sdkconfig.old @@ -54,6 +54,7 @@ CONFIG_BOOTLOADER_LOG_LEVEL=3 CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y # CONFIG_BOOTLOADER_FACTORY_RESET is not set # CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y CONFIG_BOOTLOADER_WDT_ENABLE=y # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set CONFIG_BOOTLOADER_WDT_TIME_MS=9000 @@ -95,6 +96,9 @@ CONFIG_ESPTOOLPY_FLASHFREQ="40m" CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set CONFIG_ESPTOOLPY_FLASHSIZE="4MB" CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y CONFIG_ESPTOOLPY_BEFORE_RESET=y @@ -257,8 +261,8 @@ CONFIG_EFUSE_MAX_BLK_LEN=192 # CONFIG_ESP_TLS_USING_MBEDTLS=y # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set -# CONFIG_ESP_TLS_SERVER is not set # CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER is not set # CONFIG_ESP_TLS_PSK_VERIFICATION is not set # CONFIG_ESP_TLS_INSECURE is not set # end of ESP-TLS @@ -889,6 +893,7 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 # end of Certificate Bundle # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set @@ -1036,6 +1041,7 @@ CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y # # NVS # +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set # end of NVS # @@ -1173,7 +1179,6 @@ CONFIG_VFS_SUPPORT_TERMIOS=y # Host File System I/O (Semihosting) # CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 # end of Host File System I/O (Semihosting) # end of Virtual file system @@ -1190,6 +1195,7 @@ CONFIG_WL_SECTOR_SIZE=4096 # CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION=y # end of Wi-Fi Provisioning Manager # @@ -1202,6 +1208,8 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y # CONFIG_WPA_TESTING_OPTIONS is not set # CONFIG_WPA_WPS_STRICT is not set # CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set # end of Supplicant # @@ -1235,71 +1243,19 @@ CONFIG_I2C_CLOCK=400000 # # WiFi settings # -CONFIG_WEBGUIAPP_WIFI_ENABLE=y -CONFIG_WEBGUIAPP_WIFI_ON=y -CONFIG_WEBGUIAPP_WIFI_DHCP_ON=y -CONFIG_WEBGUIAPP_WIFI_SSID_AP="YourAP" -CONFIG_WEBGUIAPP_WIFI_KEY_AP="123456789" -CONFIG_WEBGUIAPP_WIFI_SSID_STA="YourSTA" -CONFIG_WEBGUIAPP_WIFI_KEY_STA="123456789" -CONFIG_WEBGUIAPP_WIFI_IP_AP="192.168.1.150" -CONFIG_WEBGUIAPP_WIFI_IP_STA="192.168.1.150" -CONFIG_WEBGUIAPP_WIFI_MASK_STA="255.255.255.0" -CONFIG_WEBGUIAPP_WIFI_GATEWAY_STA="192.168.1.150" +# CONFIG_WEBGUIAPP_WIFI_ENABLE is not set # end of WiFi settings # # Ethernet settings # -CONFIG_WEBGUIAPP_ETHERNET_ENABLE=y -CONFIG_WEBGUIAPP_ETHERNET_ON=y -CONFIG_WEBGUIAPP_ETH_IP_DEFAULT="192.168.1.150" -CONFIG_WEBGUIAPP_ETH_MASK_DEFAULT="255.255.255.0" -CONFIG_WEBGUIAPP_ETH_GATEWAY_DEFAULT="192.168.1.150" -# CONFIG_WEBGUIAPP_ETHERNET_DHCP_DEFAULT is not set -CONFIG_GPIO_RANGE_MIN=0 -CONFIG_GPIO_RANGE_MAX=36 -# CONFIG_USE_INTERNAL_ETHERNET is not set -CONFIG_USE_SPI_ETHERNET=y -CONFIG_SPI_ETHERNETS_NUM=1 -# CONFIG_DM9051 is not set -# CONFIG_KSZ8851SNL is not set -CONFIG_W5500=y -CONFIG_ETH_SPI_CLOCK_MHZ=12 -CONFIG_ETH_SPI_CS0_GPIO=15 -CONFIG_ETH_SPI_INT0_GPIO=4 -CONFIG_ETH_SPI_PHY_RST0_GPIO=-1 -CONFIG_ETH_SPI_PHY_ADDR0=1 +# CONFIG_WEBGUIAPP_ETHERNET_ENABLE is not set # end of Ethernet settings # # GPRS settings # -CONFIG_WEBGUIAPP_GPRS_ENABLE=y -# CONFIG_WEBGUIAPP_GPRS_ON is not set -CONFIG_MODEM_DEVICE_SIM800=y -# CONFIG_MODEM_DEVICE_BG96 is not set -# CONFIG_MODEM_DEVICE_SIM7600 is not set -CONFIG_MODEM_PPP_APN="internet" -CONFIG_MODEM_PPP_AUTH_USERNAME="gdata" -CONFIG_MODEM_PPP_AUTH_PASSWORD="gdata" -# CONFIG_MODEM_PPP_AUTH_NONE is not set -# CONFIG_MODEM_NEED_SIM_PIN is not set - -# -# UART Configuration -# -CONFIG_MODEM_UART_TX_PIN=17 -CONFIG_MODEM_UART_RX_PIN=16 -CONFIG_MODEM_UART_RTS_PIN=0 -CONFIG_MODEM_UART_CTS_PIN=0 -CONFIG_MODEM_UART_EVENT_TASK_STACK_SIZE=2048 -CONFIG_MODEM_UART_EVENT_TASK_PRIORITY=5 -CONFIG_MODEM_UART_EVENT_QUEUE_SIZE=30 -CONFIG_MODEM_UART_PATTERN_QUEUE_SIZE=20 -CONFIG_MODEM_UART_TX_BUFFER_SIZE=512 -CONFIG_MODEM_UART_RX_BUFFER_SIZE=1024 -# end of UART Configuration +# CONFIG_WEBGUIAPP_GPRS_ENABLE is not set # end of GPRS settings # @@ -1502,5 +1458,4 @@ CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y CONFIG_SUPPORT_TERMIOS=y CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 -CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 # End of deprecated options