custom Print handler implementation added

This commit is contained in:
Bogdan Pilyugin 2022-08-18 10:34:17 +02:00
parent 4487cde1b7
commit 3e9e6289b6
6 changed files with 133 additions and 65 deletions

@ -1 +1 @@
Subproject commit 13a0cdbe4cc438d59e88f2ac863cf8133d020a79
Subproject commit 7038b80d4f1438d1fbd5be286718edf5d4e65cea

View File

@ -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
)

102
main/HTTPPrintCustom.c Normal file
View File

@ -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;
}

View File

@ -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");

View File

@ -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
#

View File

@ -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