Compare commits
13 Commits
0244457d75
...
feature/ot
Author | SHA1 | Date | |
---|---|---|---|
4ac270475b | |||
0f38c893d9 | |||
f1fb982e21 | |||
1ff0de1f49 | |||
d8c9239ed7 | |||
c985ee6031 | |||
13cbb310b4 | |||
076c4b62fc | |||
91edfa0c63 | |||
d570ce8cc7 | |||
563a7b19a8 | |||
fb5924cff1 | |||
47f9d72aea |
5
.gitignore
vendored
5
.gitignore
vendored
@ -52,3 +52,8 @@ Module.symvers
|
|||||||
Mkfile.old
|
Mkfile.old
|
||||||
dkms.conf
|
dkms.conf
|
||||||
|
|
||||||
|
build/
|
||||||
|
|
||||||
|
test/build/
|
||||||
|
|
||||||
|
*.old
|
||||||
|
@ -3,4 +3,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(internal_communication)
|
project(mesh_ota)
|
||||||
|
2
Makefile
2
Makefile
@ -3,6 +3,6 @@
|
|||||||
# project subdirectory.
|
# project subdirectory.
|
||||||
#
|
#
|
||||||
|
|
||||||
PROJECT_NAME := internal_communication
|
PROJECT_NAME := mesh_ota
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
7
components/mesh_ota/CMakeLists.txt
Normal file
7
components/mesh_ota/CMakeLists.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
idf_component_register(SRCS "https_client.c" "mesh_ota.c"
|
||||||
|
INCLUDE_DIRS "include"
|
||||||
|
REQUIRES nvs_flash
|
||||||
|
esp_http_client
|
||||||
|
bootloader_support
|
||||||
|
app_update
|
||||||
|
log)
|
0
components/mesh_ota/component.mk
Normal file
0
components/mesh_ota/component.mk
Normal file
292
components/mesh_ota/https_client.c
Normal file
292
components/mesh_ota/https_client.c
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
#include "https_client.h"
|
||||||
|
|
||||||
|
static const char *TAG = "https_client";
|
||||||
|
|
||||||
|
static const char *REQUEST = "GET " CONFIG_OTA_HTTPS_URL " HTTP/1.1\r\n"
|
||||||
|
"Host: "CONFIG_OTA_HTTPS_SERVER_COMMON_NAME"\r\n"
|
||||||
|
"User-Agent: esp-idf/1.0 esp32\r\n"
|
||||||
|
"Authorization: Basic " CONFIG_OTA_HTTPS_AUTH "\r\n"
|
||||||
|
"\r\n";
|
||||||
|
|
||||||
|
|
||||||
|
static HTTPS_Client_t sHTTPS_ClientConfig;
|
||||||
|
|
||||||
|
https_client_ret_t https_clientInitEmbedTLS();
|
||||||
|
https_client_ret_t https_clientConnectToServer();
|
||||||
|
https_client_ret_t https_clientValidateServer();
|
||||||
|
https_client_ret_t https_clientSendRequest();
|
||||||
|
|
||||||
|
https_client_ret_t https_clientInitialize()
|
||||||
|
{
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
|
||||||
|
i32RetHTTPClient = https_clientInitEmbedTLS();
|
||||||
|
|
||||||
|
if(i32RetHTTPClient == HTTPS_CLIENT_OK)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = https_clientConnectToServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetHTTPClient == HTTPS_CLIENT_OK)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = https_clientValidateServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetHTTPClient == HTTPS_CLIENT_OK)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = https_clientSendRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (i32RetHTTPClient)
|
||||||
|
{
|
||||||
|
case HTTPS_CLIENT_ERROR_INIT_EMBEDTLS:
|
||||||
|
ESP_LOGE(TAG, "Unable to initialize EmbedTLS");
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR;
|
||||||
|
break;
|
||||||
|
case HTTPS_CLIENT_ERROR_INIT_CONNECT_TWO_SERVER:
|
||||||
|
ESP_LOGE(TAG, "Unable to connect to server");
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR;
|
||||||
|
break;
|
||||||
|
case HTTPS_CLIENT_ERROR_INIT_VALIDATE_SERVER:
|
||||||
|
ESP_LOGE(TAG, "Unable to validate the server");
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR;
|
||||||
|
break;
|
||||||
|
case HTTPS_CLIENT_ERROR_INIT_SEND_REQUEST:
|
||||||
|
ESP_LOGE(TAG, "Unable to send request to server");
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR;
|
||||||
|
break;
|
||||||
|
case HTTPS_CLIENT_OK:
|
||||||
|
ESP_LOGI(TAG, "HTTPS Client successfully initialized");
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR;
|
||||||
|
ESP_LOGE(TAG, "Unknown error while init https client");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
https_client_ret_t https_clientRetrieveData(char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32BytesRead)
|
||||||
|
{
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
int32_t i32RetRetrieveData = ESP_OK;
|
||||||
|
bool bRetriveData = true;
|
||||||
|
|
||||||
|
bzero(pu8Data, *pu32DataLenght);
|
||||||
|
*pu32BytesRead = 0U;
|
||||||
|
|
||||||
|
while (bRetriveData)
|
||||||
|
{
|
||||||
|
//Reading HTTP response
|
||||||
|
i32RetRetrieveData = mbedtls_ssl_read(&sHTTPS_ClientConfig.ssl, (unsigned char *)(pu8Data+(*pu32BytesRead)), ((*pu32DataLenght)-(*pu32BytesRead)));
|
||||||
|
|
||||||
|
if(i32RetRetrieveData > 0)
|
||||||
|
{
|
||||||
|
//Data received
|
||||||
|
*pu32BytesRead = *pu32BytesRead + i32RetRetrieveData;
|
||||||
|
|
||||||
|
if(*pu32DataLenght > 0)
|
||||||
|
{
|
||||||
|
//buffer not full yet --> read some more
|
||||||
|
bRetriveData = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//buffer full --> stop reading
|
||||||
|
bRetriveData = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetRetrieveData == 0)
|
||||||
|
{
|
||||||
|
//all data read --> stop reading
|
||||||
|
bRetriveData = false;
|
||||||
|
pu32BytesRead = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetRetrieveData == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY)
|
||||||
|
{
|
||||||
|
//connection is going to be closed
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR;
|
||||||
|
bRetriveData = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
https_client_ret_t https_clientDeinitialize()
|
||||||
|
{
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
|
||||||
|
i32RetHTTPClient = mbedtls_ssl_close_notify(&sHTTPS_ClientConfig.ssl); //close session
|
||||||
|
|
||||||
|
if(i32RetHTTPClient != ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ssl_close_notify returned 0x%x", i32RetHTTPClient);
|
||||||
|
}
|
||||||
|
|
||||||
|
mbedtls_ssl_session_reset(&sHTTPS_ClientConfig.ssl); //reset embedssl
|
||||||
|
mbedtls_net_free(&sHTTPS_ClientConfig.server_fd); //free ram
|
||||||
|
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
https_client_ret_t https_clientInitEmbedTLS() {
|
||||||
|
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
int32_t i32RetEmbedTLS = ESP_OK;
|
||||||
|
|
||||||
|
mbedtls_ssl_init(&sHTTPS_ClientConfig.ssl);
|
||||||
|
mbedtls_x509_crt_init(&sHTTPS_ClientConfig.cacert);
|
||||||
|
mbedtls_ctr_drbg_init(&sHTTPS_ClientConfig.ctr_drbg);
|
||||||
|
mbedtls_ssl_config_init(&sHTTPS_ClientConfig.conf);
|
||||||
|
mbedtls_entropy_init(&sHTTPS_ClientConfig.entropy);
|
||||||
|
|
||||||
|
i32RetEmbedTLS = mbedtls_ctr_drbg_seed(&sHTTPS_ClientConfig.ctr_drbg, mbedtls_entropy_func, &sHTTPS_ClientConfig.entropy, NULL, 0);
|
||||||
|
|
||||||
|
if(i32RetEmbedTLS!= ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ctr_drbg_seed returned %d", i32RetEmbedTLS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetEmbedTLS == ESP_OK)
|
||||||
|
{
|
||||||
|
//Attaching the certificate bundle
|
||||||
|
i32RetEmbedTLS = esp_crt_bundle_attach(&sHTTPS_ClientConfig.conf);
|
||||||
|
if(i32RetEmbedTLS != ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "esp_crt_bundle_attach returned 0x%x\n\n", i32RetEmbedTLS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetEmbedTLS == ESP_OK)
|
||||||
|
{
|
||||||
|
//Setting hostname for TLS session.
|
||||||
|
i32RetEmbedTLS = mbedtls_ssl_set_hostname(&sHTTPS_ClientConfig.ssl, CONFIG_OTA_HTTPS_SERVER_COMMON_NAME);
|
||||||
|
// Hostname set here should match CN in server certificate
|
||||||
|
if(i32RetEmbedTLS != ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ssl_set_hostname returned 0x%x", i32RetEmbedTLS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i32RetEmbedTLS == ESP_OK)
|
||||||
|
{
|
||||||
|
//Setting up the SSL/TLS structure
|
||||||
|
i32RetEmbedTLS = mbedtls_ssl_config_defaults(&sHTTPS_ClientConfig.conf,
|
||||||
|
MBEDTLS_SSL_IS_CLIENT,
|
||||||
|
MBEDTLS_SSL_TRANSPORT_STREAM,
|
||||||
|
MBEDTLS_SSL_PRESET_DEFAULT);
|
||||||
|
|
||||||
|
if(i32RetEmbedTLS != ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ssl_config_defaults returned %d", i32RetEmbedTLS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetEmbedTLS == ESP_OK)
|
||||||
|
{
|
||||||
|
mbedtls_ssl_conf_authmode(&sHTTPS_ClientConfig.conf, MBEDTLS_SSL_VERIFY_REQUIRED);
|
||||||
|
mbedtls_ssl_conf_ca_chain(&sHTTPS_ClientConfig.conf, &sHTTPS_ClientConfig.cacert, NULL);
|
||||||
|
mbedtls_ssl_conf_rng(&sHTTPS_ClientConfig.conf, mbedtls_ctr_drbg_random, &sHTTPS_ClientConfig.ctr_drbg);
|
||||||
|
|
||||||
|
i32RetEmbedTLS = mbedtls_ssl_setup(&sHTTPS_ClientConfig.ssl, &sHTTPS_ClientConfig.conf);
|
||||||
|
if(i32RetEmbedTLS != ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ssl_setup returned -0x%x\n\n", i32RetEmbedTLS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetEmbedTLS == ESP_OK)
|
||||||
|
{
|
||||||
|
mbedtls_net_init(&sHTTPS_ClientConfig.server_fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i32RetEmbedTLS != ESP_OK)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR_INIT_EMBEDTLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
https_client_ret_t https_clientConnectToServer()
|
||||||
|
{
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
int32_t i32RetServerConnect = ESP_OK;
|
||||||
|
|
||||||
|
//Connecting to server
|
||||||
|
i32RetServerConnect = mbedtls_net_connect(&sHTTPS_ClientConfig.server_fd, CONFIG_OTA_HTTPS_SERVER_COMMON_NAME, CONFIG_OTA_HTTPS_SERVER_PORT, MBEDTLS_NET_PROTO_TCP);
|
||||||
|
if (i32RetServerConnect != ESP_OK)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_net_connect returned %x", i32RetServerConnect);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetServerConnect == ESP_OK)
|
||||||
|
{
|
||||||
|
mbedtls_ssl_set_bio(&sHTTPS_ClientConfig.ssl, &sHTTPS_ClientConfig.server_fd, mbedtls_net_send, mbedtls_net_recv, NULL);
|
||||||
|
|
||||||
|
//Performing the SSL/TLS handshake
|
||||||
|
while ((i32RetServerConnect = mbedtls_ssl_handshake(&sHTTPS_ClientConfig.ssl)) != 0)
|
||||||
|
{
|
||||||
|
if ((i32RetServerConnect != MBEDTLS_ERR_SSL_WANT_READ) && (i32RetServerConnect != MBEDTLS_ERR_SSL_WANT_WRITE))
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ssl_handshake returned 0x%x", i32RetServerConnect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetServerConnect != ESP_OK)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR_INIT_CONNECT_TWO_SERVER;
|
||||||
|
}
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
https_client_ret_t https_clientValidateServer()
|
||||||
|
{
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
int32_t i32RetValidateServer = ESP_OK;
|
||||||
|
|
||||||
|
//Verifying peer X.509 certificate
|
||||||
|
if ((i32RetValidateServer = mbedtls_ssl_get_verify_result(&sHTTPS_ClientConfig.ssl)) != 0)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "Failed to verify peer certificate!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i32RetValidateServer != ESP_OK)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR_INIT_VALIDATE_SERVER;
|
||||||
|
}
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
https_client_ret_t https_clientSendRequest()
|
||||||
|
{
|
||||||
|
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||||
|
int32_t i32RetSendRequest = ESP_OK;
|
||||||
|
uint32_t u32WrittenBytes = 0;
|
||||||
|
bool bWrite = true; //flag to stop loop
|
||||||
|
|
||||||
|
//Writing HTTP request
|
||||||
|
while((u32WrittenBytes < strlen(REQUEST)) && bWrite)
|
||||||
|
{
|
||||||
|
i32RetSendRequest = mbedtls_ssl_write(&sHTTPS_ClientConfig.ssl,
|
||||||
|
(const unsigned char *)REQUEST + u32WrittenBytes,
|
||||||
|
strlen(REQUEST) - u32WrittenBytes);
|
||||||
|
if (i32RetSendRequest >= 0)
|
||||||
|
{
|
||||||
|
//bytes written
|
||||||
|
u32WrittenBytes += i32RetSendRequest;
|
||||||
|
} else if (i32RetSendRequest != MBEDTLS_ERR_SSL_WANT_WRITE && i32RetSendRequest != MBEDTLS_ERR_SSL_WANT_READ) {
|
||||||
|
ESP_LOGE(TAG, "mbedtls_ssl_write returned 0x%x", i32RetSendRequest);
|
||||||
|
bWrite = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bWrite == false)
|
||||||
|
{
|
||||||
|
i32RetHTTPClient = HTTPS_CLIENT_ERROR_INIT_SEND_REQUEST;
|
||||||
|
}
|
||||||
|
return i32RetHTTPClient;
|
||||||
|
}
|
75
components/mesh_ota/include/https_client.h
Normal file
75
components/mesh_ota/include/https_client.h
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#ifndef H_HTTPS_CLIENT
|
||||||
|
#define H_HTTPS_CLIENT
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "esp_wifi.h"
|
||||||
|
#include "esp_event.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "esp_system.h"
|
||||||
|
#include "nvs_flash.h"
|
||||||
|
#include "esp_netif.h"
|
||||||
|
|
||||||
|
#include "lwip/err.h"
|
||||||
|
#include "lwip/sockets.h"
|
||||||
|
#include "lwip/sys.h"
|
||||||
|
#include "lwip/netdb.h"
|
||||||
|
#include "lwip/dns.h"
|
||||||
|
|
||||||
|
#include "mbedtls/platform.h"
|
||||||
|
#include "mbedtls/net_sockets.h"
|
||||||
|
#include "mbedtls/esp_debug.h"
|
||||||
|
#include "mbedtls/ssl.h"
|
||||||
|
#include "mbedtls/entropy.h"
|
||||||
|
#include "mbedtls/ctr_drbg.h"
|
||||||
|
#include "mbedtls/error.h"
|
||||||
|
#include "mbedtls/certs.h"
|
||||||
|
#include "esp_crt_bundle.h"
|
||||||
|
|
||||||
|
#ifndef CONFIG_OTA_HTTPS_URL
|
||||||
|
#define CONFIG_OTA_HTTPS_URL "https://exmaple.com/theImage.bin"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_OTA_HTTPS_SERVER_PORT
|
||||||
|
#define CONFIG_OTA_HTTPS_SERVER_PORT "443"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_OTA_HTTPS_AUTH
|
||||||
|
#define CONFIG_OTA_HTTPS_AUTH "base64(user:password)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_OTA_HTTPS_SERVER_COMMON_NAME
|
||||||
|
#define CONFIG_OTA_HTTPS_SERVER_COMMON_NAME "exmaple.com"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define HTTPS_CLIENT_OK 0
|
||||||
|
#define HTTPS_CLIENT_ERROR -1
|
||||||
|
#define HTTPS_CLIENT_ERROR_INIT_EMBEDTLS -2
|
||||||
|
#define HTTPS_CLIENT_ERROR_INIT_CONNECT_TWO_SERVER -3
|
||||||
|
#define HTTPS_CLIENT_ERROR_INIT_VALIDATE_SERVER -4
|
||||||
|
#define HTTPS_CLIENT_ERROR_INIT_SEND_REQUEST -5
|
||||||
|
|
||||||
|
struct HTTPS_Client
|
||||||
|
{
|
||||||
|
mbedtls_entropy_context entropy;
|
||||||
|
mbedtls_ctr_drbg_context ctr_drbg;
|
||||||
|
mbedtls_ssl_context ssl;
|
||||||
|
mbedtls_x509_crt cacert;
|
||||||
|
mbedtls_ssl_config conf;
|
||||||
|
mbedtls_net_context server_fd;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef int32_t https_client_ret_t;
|
||||||
|
typedef struct HTTPS_Client HTTPS_Client_t;
|
||||||
|
|
||||||
|
https_client_ret_t https_clientInitialize();
|
||||||
|
https_client_ret_t https_clientRetrieveData(char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32BytesRead);
|
||||||
|
https_client_ret_t https_clientDeinitialize();
|
||||||
|
|
||||||
|
#endif /* H_HTTPS_CLIENT */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
22
components/mesh_ota/include/mesh_ota.h
Normal file
22
components/mesh_ota/include/mesh_ota.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef H_MESH_OTA
|
||||||
|
#define H_MESH_OTA
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include "esp_wifi.h"
|
||||||
|
#include "esp_system.h"
|
||||||
|
#include "esp_event.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "esp_mesh.h"
|
||||||
|
#include "esp_mesh_internal.h"
|
||||||
|
#include "nvs_flash.h"
|
||||||
|
#include "driver/gpio.h"
|
||||||
|
#include "esp_ota_ops.h"
|
||||||
|
#include "esp_partition.h"
|
||||||
|
|
||||||
|
#include "https_client.h"
|
||||||
|
|
||||||
|
bool bNewerVersion(const char* pu8Local, const char* pu8Remote);
|
||||||
|
esp_err_t errExtractVersionNumber(const char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber);
|
||||||
|
esp_err_t errFindImageStart(const char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset);
|
||||||
|
|
||||||
|
#endif /* H_MESH_OTA */
|
128
components/mesh_ota/mesh_ota.c
Normal file
128
components/mesh_ota/mesh_ota.c
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
#include "mesh_ota.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 999.999.999
|
||||||
|
* Return true if remote version is newer (higher) than local version
|
||||||
|
*/
|
||||||
|
bool bNewerVersion(const char* pu8Local, const char* pu8Remote)
|
||||||
|
{
|
||||||
|
char u8LocalTmp[12]; //local version
|
||||||
|
char u8RemoteTmp[12]; //remote version
|
||||||
|
char* pu8saveptrLocal; //context for strok_r
|
||||||
|
char* pu8saveptrRemote; //context for strok_r
|
||||||
|
bool bReturn = false; //flag to stop loop
|
||||||
|
uint8_t u8Index = 0; //numbers counter in version string
|
||||||
|
|
||||||
|
strcpy(u8LocalTmp, pu8Local); //copy in tmp
|
||||||
|
strcpy(u8RemoteTmp, pu8Remote); //copy in tmp
|
||||||
|
|
||||||
|
char* pu8TokenLocal = strtok_r(u8LocalTmp, ".", &pu8saveptrLocal); //split tokens
|
||||||
|
char* pu8TokenRemote = strtok_r(u8RemoteTmp, ".", &pu8saveptrRemote); //split tokens
|
||||||
|
|
||||||
|
while( (u8Index <= 2) && (bReturn == false)) //loop through tokens
|
||||||
|
{
|
||||||
|
u8Index++;
|
||||||
|
if(atoi(pu8TokenLocal) < atoi(pu8TokenRemote))
|
||||||
|
{
|
||||||
|
bReturn = true; //version number difference --> stop loop
|
||||||
|
}
|
||||||
|
pu8TokenLocal = strtok_r(NULL, ".", &pu8saveptrLocal); //split tokens
|
||||||
|
pu8TokenRemote = strtok_r(NULL, ".", &pu8saveptrRemote); //split tokens
|
||||||
|
}
|
||||||
|
return bReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t errFindImageStart(const char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Offset value
|
||||||
|
0 = 0xE9 (first byte in image --> magic byte)
|
||||||
|
48 = first digit of version number
|
||||||
|
*/
|
||||||
|
|
||||||
|
esp_err_t errReturn = ESP_OK;
|
||||||
|
bool bImageStartOffsetFound = false;
|
||||||
|
uint32_t u32DataIndex = 0;
|
||||||
|
uint32_t u32FirstDotOffset = 0;
|
||||||
|
uint32_t u32SecondDotOffset = 0;
|
||||||
|
uint8_t u8FirstDotIndex = 0;
|
||||||
|
uint8_t u8SecondDotIndex = 0;
|
||||||
|
|
||||||
|
*pu32StartOffset = 0U; //reset offset to zero
|
||||||
|
|
||||||
|
while((u32DataIndex < *pu32DataLenght) && (bImageStartOffsetFound == false))
|
||||||
|
{
|
||||||
|
//search for magic byte
|
||||||
|
if(pu8Data[u32DataIndex] == 0xe9)
|
||||||
|
{
|
||||||
|
//magic byte found
|
||||||
|
while ((u8FirstDotIndex < 3) && (u32FirstDotOffset == 0))
|
||||||
|
{
|
||||||
|
//search first dot in version number
|
||||||
|
if((u32DataIndex+49+u8FirstDotIndex) < *pu32DataLenght)
|
||||||
|
{
|
||||||
|
if((pu8Data[(u32DataIndex+49+u8FirstDotIndex)] == 0x2e))
|
||||||
|
{
|
||||||
|
//first dot found
|
||||||
|
u32FirstDotOffset = (u32DataIndex+49+u8FirstDotIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
u8FirstDotIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((u8SecondDotIndex < 3) && (u32SecondDotOffset == 0) && (u32FirstDotOffset != 0))
|
||||||
|
{
|
||||||
|
//search first dot in version number
|
||||||
|
if((u32FirstDotOffset+(u8SecondDotIndex+2)) < *pu32DataLenght)
|
||||||
|
{
|
||||||
|
if((pu8Data[(u32FirstDotOffset+(u8SecondDotIndex+2))] == 0x2e))
|
||||||
|
{
|
||||||
|
//second dot found
|
||||||
|
u32SecondDotOffset = (u32FirstDotOffset+(u8SecondDotIndex+2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
u8SecondDotIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((u32FirstDotOffset != 0) && (u32SecondDotOffset != 0))
|
||||||
|
{
|
||||||
|
//image start found based on magic byte and version number systax
|
||||||
|
*pu32StartOffset = u32DataIndex; //store image start offset
|
||||||
|
bImageStartOffsetFound = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// this is propably not the magic byte --> reset
|
||||||
|
u32FirstDotOffset = 0;
|
||||||
|
u32SecondDotOffset = 0;
|
||||||
|
u8FirstDotIndex = 0;
|
||||||
|
u8SecondDotIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
u32DataIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bImageStartOffsetFound == false)
|
||||||
|
{
|
||||||
|
errReturn = ESP_ERR_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
return errReturn;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t errExtractVersionNumber(const char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber)
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
esp_err_t err = ESP_OK;
|
||||||
|
|
||||||
|
strcpy(pc8RemoteVersionNumber, "999.999.999"); //init value
|
||||||
|
err = errFindImageStart(pu8Data, pu32DataLenght, &u32StartOffset); //get image start offset
|
||||||
|
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
//image found
|
||||||
|
strncpy(pc8RemoteVersionNumber, pu8Data+(u32StartOffset+48), 11); //copy version number
|
||||||
|
pc8RemoteVersionNumber[12] = '\0';
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
3
components/mesh_ota/test/CMakeLists.txt
Normal file
3
components/mesh_ota/test/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
idf_component_register(SRC_DIRS "."
|
||||||
|
INCLUDE_DIRS "."
|
||||||
|
REQUIRES cmock mesh_ota)
|
7
components/mesh_ota/test/component.mk
Normal file
7
components/mesh_ota/test/component.mk
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# This is the minimal test component makefile.
|
||||||
|
#
|
||||||
|
# The following line is needed to force the linker to include all the object
|
||||||
|
# files into the application, even if the functions in these object files
|
||||||
|
# are not referenced from outside (which is usually the case for unit tests).
|
||||||
|
#
|
||||||
|
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
171
components/mesh_ota/test/test_image_hex.h
Normal file
171
components/mesh_ota/test/test_image_hex.h
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
#ifndef H_TEST_IMAGE_HEX
|
||||||
|
#define H_TEST_IMAGE_HEX
|
||||||
|
|
||||||
|
//with http response + 0.0.1
|
||||||
|
char dataWithHttpRespone0_0_1[] =
|
||||||
|
{
|
||||||
|
0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44,
|
||||||
|
0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x33, 0x3a, 0x34, 0x38, 0x3a, 0x32, 0x36, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x31, 0x31, 0x34, 0x31, 0x30, 0x30, 0xd, 0xa, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x20, 0x53, 0x61, 0x74, 0x2c,
|
||||||
|
0x20, 0x30, 0x32, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x32, 0x30, 0x3a, 0x34, 0x31, 0x3a, 0x31, 0x31, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b,
|
||||||
|
0x65, 0x65, 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0xd, 0xa, 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x35, 0x66, 0x66, 0x30, 0x64, 0x61, 0x36, 0x37, 0x2d, 0x31, 0x30, 0x66, 0x66, 0x66, 0x34, 0x22, 0xd, 0xa, 0x53, 0x74, 0x72, 0x69,
|
||||||
|
0x63, 0x74, 0x2d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, 0x3d, 0x33, 0x31, 0x35, 0x33, 0x36, 0x30, 0x30, 0x30, 0xd,
|
||||||
|
0xa, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0xd, 0xa, 0xd, 0xa, 0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xe4, 0x55, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x6f, 0x74, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x31, 0x30, 0x3a, 0x32, 0x37, 0x3a, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x61, 0x6e, 0x20, 0x20, 0x32, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76, 0x34, 0x2e, 0x33, 0x2d, 0x64,
|
||||||
|
0x65, 0x76, 0x2d, 0x31, 0x39, 0x30, 0x31, 0x2d, 0x67, 0x31, 0x37, 0x38, 0x62, 0x31, 0x32, 0x32, 0x63, 0x31, 0x2d, 0x64, 0x69, 0x72, 0x74, 0x79, 0x0, 0x0, 0xaa, 0xfc, 0x75, 0xd4, 0x9e, 0xd8, 0x9, 0xc1, 0x11, 0x49, 0x59, 0xa4, 0xbb, 0x16,
|
||||||
|
0xb8, 0x74, 0x14, 0xee, 0x2, 0xe7, 0x82, 0xe6, 0x2b, 0x96, 0x19, 0xb7, 0xe8, 0x2f, 0x41, 0x9e, 0x7e, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
|
||||||
|
0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x61, 0x72, 0x67, 0x73, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29,
|
||||||
|
0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x21, 0x1b, 0x5b, 0x30,
|
||||||
|
0x6d, 0xa, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61,
|
||||||
|
0x73, 0x6b, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61,
|
||||||
|
0x64, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x21, 0x22, 0x0, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70,
|
||||||
|
0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2e, 0x63, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20,
|
||||||
|
0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46,
|
||||||
|
0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x21, 0x22, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x5f, 0x75,
|
||||||
|
0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x0, 0x0, 0x74, 0x6c, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0, 0x2f, 0x68, 0x6f, 0x6d,
|
||||||
|
0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74
|
||||||
|
};
|
||||||
|
|
||||||
|
//without http response + 0.0.1
|
||||||
|
char dataWithoutHttpRespone0_0_1[] =
|
||||||
|
{
|
||||||
|
0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xe4, 0x55, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x6f, 0x74, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x31, 0x30, 0x3a, 0x32, 0x37, 0x3a, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x61, 0x6e, 0x20, 0x20, 0x32, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76, 0x34, 0x2e, 0x33, 0x2d, 0x64,
|
||||||
|
0x65, 0x76, 0x2d, 0x31, 0x39, 0x30, 0x31, 0x2d, 0x67, 0x31, 0x37, 0x38, 0x62, 0x31, 0x32, 0x32, 0x63, 0x31, 0x2d, 0x64, 0x69, 0x72, 0x74, 0x79, 0x0, 0x0, 0xaa, 0xfc, 0x75, 0xd4, 0x9e, 0xd8, 0x9, 0xc1, 0x11, 0x49, 0x59, 0xa4, 0xbb, 0x16,
|
||||||
|
0xb8, 0x74, 0x14, 0xee, 0x2, 0xe7, 0x82, 0xe6, 0x2b, 0x96, 0x19, 0xb7, 0xe8, 0x2f, 0x41, 0x9e, 0x7e, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
|
||||||
|
0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x61, 0x72, 0x67, 0x73, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29,
|
||||||
|
0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x21, 0x1b, 0x5b, 0x30,
|
||||||
|
0x6d, 0xa, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61,
|
||||||
|
0x73, 0x6b, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61,
|
||||||
|
0x64, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x21, 0x22, 0x0, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70,
|
||||||
|
0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2e, 0x63, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20,
|
||||||
|
0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46,
|
||||||
|
0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x21, 0x22, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x5f, 0x75,
|
||||||
|
0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x0, 0x0, 0x74, 0x6c, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0, 0x2f, 0x68, 0x6f, 0x6d,
|
||||||
|
0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74
|
||||||
|
};
|
||||||
|
|
||||||
|
//without http response + 9999.999.999
|
||||||
|
char dataWithoutHttpRespone999_999_999[] =
|
||||||
|
{
|
||||||
|
0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xec, 0x44, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x6f, 0x74, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x34, 0x3a, 0x35, 0x39, 0x3a, 0x33, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x61, 0x6e, 0x20, 0x20, 0x36, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76, 0x34, 0x2e, 0x33, 0x2d, 0x64,
|
||||||
|
0x65, 0x76, 0x2d, 0x31, 0x39, 0x30, 0x31, 0x2d, 0x67, 0x31, 0x37, 0x38, 0x62, 0x31, 0x32, 0x32, 0x63, 0x31, 0x2d, 0x64, 0x69, 0x72, 0x74, 0x79, 0x0, 0x0, 0x75, 0xf1, 0xa7, 0x5d, 0x78, 0xac, 0xe3, 0x63, 0x3f, 0x1a, 0x81, 0x90, 0x34, 0x2c,
|
||||||
|
0xf7, 0xb3, 0x33, 0x63, 0xa4, 0x7c, 0x1e, 0x98, 0xf6, 0x74, 0xd0, 0xcf, 0xdc, 0x51, 0x68, 0x15, 0xcd, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f,
|
||||||
|
0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x61, 0x72, 0x67, 0x73, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x21, 0x1b, 0x5b,
|
||||||
|
0x30, 0x6d, 0xa, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74,
|
||||||
|
0x61, 0x73, 0x6b, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x72,
|
||||||
|
0x65, 0x61, 0x64, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x21, 0x22, 0x0, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f,
|
||||||
|
0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2e, 0x63, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26,
|
||||||
|
0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x21, 0x22, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65,
|
||||||
|
0x78, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x0, 0x0, 0x74, 0x6c, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0, 0x2f,
|
||||||
|
0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//with http response + 999.999.999
|
||||||
|
char dataWithHttpRespone999_999_999[] =
|
||||||
|
{
|
||||||
|
0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44,
|
||||||
|
0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x3a, 0x31, 0x33, 0x3a, 0x32, 0x39, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x31, 0x31, 0x34, 0x31, 0x30, 0x30, 0xd, 0xa, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x20, 0x57, 0x65, 0x64, 0x2c,
|
||||||
|
0x20, 0x30, 0x36, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x33, 0x3a, 0x35, 0x39, 0x3a, 0x35, 0x33, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b,
|
||||||
|
0x65, 0x65, 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0xd, 0xa, 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x35, 0x66, 0x66, 0x35, 0x63, 0x32, 0x35, 0x39, 0x2d, 0x31, 0x30, 0x66, 0x66, 0x66, 0x34, 0x22, 0xd, 0xa, 0x53, 0x74, 0x72, 0x69,
|
||||||
|
0x63, 0x74, 0x2d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, 0x3d, 0x33, 0x31, 0x35, 0x33, 0x36, 0x30, 0x30, 0x30, 0xd,
|
||||||
|
0xa, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0xd, 0xa, 0xd, 0xa, 0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xec, 0x44, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x6f, 0x74, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x34, 0x3a, 0x35, 0x39, 0x3a, 0x33, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x61, 0x6e, 0x20, 0x20, 0x36, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76, 0x34, 0x2e, 0x33, 0x2d, 0x64,
|
||||||
|
0x65, 0x76, 0x2d, 0x31, 0x39, 0x30, 0x31, 0x2d, 0x67, 0x31, 0x37, 0x38, 0x62, 0x31, 0x32, 0x32, 0x63, 0x31, 0x2d, 0x64, 0x69, 0x72, 0x74, 0x79, 0x0, 0x0, 0x75, 0xf1, 0xa7, 0x5d, 0x78, 0xac, 0xe3, 0x63, 0x3f, 0x1a, 0x81, 0x90, 0x34, 0x2c,
|
||||||
|
0xf7, 0xb3, 0x33, 0x63, 0xa4, 0x7c, 0x1e, 0x98, 0xf6, 0x74, 0xd0, 0xcf, 0xdc, 0x51, 0x68, 0x15, 0xcd, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f,
|
||||||
|
0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x61, 0x72, 0x67, 0x73, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x21, 0x1b, 0x5b,
|
||||||
|
0x30, 0x6d, 0xa, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74,
|
||||||
|
0x61, 0x73, 0x6b, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x72,
|
||||||
|
0x65, 0x61, 0x64, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x21, 0x22, 0x0, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f,
|
||||||
|
0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2e, 0x63, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26,
|
||||||
|
0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x21, 0x22, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65,
|
||||||
|
0x78, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x0, 0x0, 0x74, 0x6c, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0, 0x2f,
|
||||||
|
0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
|
||||||
|
};
|
||||||
|
|
||||||
|
//with http response + 999.9.999
|
||||||
|
char dataWithHttpRespone999_9_999[] =
|
||||||
|
{
|
||||||
|
0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44,
|
||||||
|
0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x3a, 0x31, 0x33, 0x3a, 0x32, 0x39, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x34, 0x31, 0x30, 0x30, 0xd, 0xa, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x20, 0x57, 0x65, 0x64, 0x2c,
|
||||||
|
0x20, 0x30, 0x36, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x33, 0x3a, 0x35, 0x39, 0x3a, 0x35, 0x33, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b,
|
||||||
|
0x65, 0x65, 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0xd, 0xa, 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x35, 0x66, 0x66, 0x35, 0x63, 0x32, 0x35, 0x39, 0x2d, 0x31, 0x30, 0x66, 0x66, 0x66, 0x34, 0x22, 0xd, 0xa, 0x53, 0x74, 0x72, 0x69,
|
||||||
|
0x63, 0x74, 0x2d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, 0x3d, 0x33, 0x31, 0x35, 0x33, 0x36, 0x30, 0x30, 0x30, 0xd,
|
||||||
|
0xa, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0xd, 0xa, 0xd, 0xa, 0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xec, 0x44, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x6f, 0x74, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x34, 0x3a, 0x35, 0x39, 0x3a, 0x33, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x61, 0x6e, 0x20, 0x20, 0x36, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76, 0x34, 0x2e, 0x33, 0x2d, 0x64,
|
||||||
|
0x65, 0x76, 0x2d, 0x31, 0x39, 0x30, 0x31, 0x2d, 0x67, 0x31, 0x37, 0x38, 0x62, 0x31, 0x32, 0x32, 0x63, 0x31, 0x2d, 0x64, 0x69, 0x72, 0x74, 0x79, 0x0, 0x0, 0x75, 0xf1, 0xa7, 0x5d, 0x78, 0xac, 0xe3, 0x63, 0x3f, 0x1a, 0x81, 0x90, 0x34, 0x2c,
|
||||||
|
0xf7, 0xb3, 0x33, 0x63, 0xa4, 0x7c, 0x1e, 0x98, 0xf6, 0x74, 0xd0, 0xcf, 0xdc, 0x51, 0x68, 0x15, 0xcd, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f,
|
||||||
|
0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x61, 0x72, 0x67, 0x73, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x21, 0x1b, 0x5b,
|
||||||
|
0x30, 0x6d, 0xa, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74,
|
||||||
|
0x61, 0x73, 0x6b, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x72,
|
||||||
|
0x65, 0x61, 0x64, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x21, 0x22, 0x0, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f,
|
||||||
|
0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2e, 0x63, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26,
|
||||||
|
0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x21, 0x22, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65,
|
||||||
|
0x78, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x0, 0x0, 0x74, 0x6c, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0, 0x2f,
|
||||||
|
0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
|
||||||
|
};
|
||||||
|
|
||||||
|
//with http response + 999.99.999
|
||||||
|
char dataWithHttpRespone999_99_999[] =
|
||||||
|
{
|
||||||
|
0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44,
|
||||||
|
0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x3a, 0x31, 0x33, 0x3a, 0x32, 0x39, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
|
0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x31, 0x31, 0x34, 0x31, 0x30, 0x30, 0xd, 0xa, 0x4c, 0x61, 0x73, 0x74, 0x2d, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x3a, 0x20, 0x57, 0x65, 0x64, 0x2c,
|
||||||
|
0x20, 0x30, 0x36, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x33, 0x3a, 0x35, 0x39, 0x3a, 0x35, 0x33, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b,
|
||||||
|
0x65, 0x65, 0x70, 0x2d, 0x61, 0x6c, 0x69, 0x76, 0x65, 0xd, 0xa, 0x45, 0x54, 0x61, 0x67, 0x3a, 0x20, 0x22, 0x35, 0x66, 0x66, 0x35, 0x63, 0x32, 0x35, 0x39, 0x2d, 0x31, 0x30, 0x66, 0x66, 0x66, 0x34, 0x22, 0xd, 0xa, 0x53, 0x74, 0x72, 0x69,
|
||||||
|
0x63, 0x74, 0x2d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x61, 0x78, 0x2d, 0x61, 0x67, 0x65, 0x3d, 0x33, 0x31, 0x35, 0x33, 0x36, 0x30, 0x30, 0x30, 0xd,
|
||||||
|
0xa, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0xd, 0xa, 0xd, 0xa, 0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xec, 0x44, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x6f, 0x74, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x34, 0x3a, 0x35, 0x39, 0x3a, 0x33, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x61, 0x6e, 0x20, 0x20, 0x36, 0x20, 0x32, 0x30, 0x32, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76, 0x34, 0x2e, 0x33, 0x2d, 0x64,
|
||||||
|
0x65, 0x76, 0x2d, 0x31, 0x39, 0x30, 0x31, 0x2d, 0x67, 0x31, 0x37, 0x38, 0x62, 0x31, 0x32, 0x32, 0x63, 0x31, 0x2d, 0x64, 0x69, 0x72, 0x74, 0x79, 0x0, 0x0, 0x75, 0xf1, 0xa7, 0x5d, 0x78, 0xac, 0xe3, 0x63, 0x3f, 0x1a, 0x81, 0x90, 0x34, 0x2c,
|
||||||
|
0xf7, 0xb3, 0x33, 0x63, 0xa4, 0x7c, 0x1e, 0x98, 0xf6, 0x74, 0xd0, 0xcf, 0xdc, 0x51, 0x68, 0x15, 0xcd, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||||
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f,
|
||||||
|
0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x61, 0x72, 0x67, 0x73, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x21, 0x1b, 0x5b,
|
||||||
|
0x30, 0x6d, 0xa, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64, 0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74,
|
||||||
|
0x61, 0x73, 0x6b, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x72,
|
||||||
|
0x65, 0x61, 0x64, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x21, 0x22, 0x0, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f,
|
||||||
|
0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2f, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2e, 0x63, 0x0, 0x0, 0x1b, 0x5b, 0x30, 0x3b, 0x33, 0x31, 0x6d, 0x45, 0x20, 0x28, 0x25, 0x64,
|
||||||
|
0x29, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0xa, 0x0, 0x0, 0x0, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x26, 0x26,
|
||||||
|
0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x21, 0x22, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65,
|
||||||
|
0x78, 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x0, 0x0, 0x0, 0x0, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x0, 0x0, 0x74, 0x6c, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0, 0x2f,
|
||||||
|
0x68, 0x6f, 0x6d, 0x65, 0x2f, 0x68, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x6b, 0x2f, 0x65, 0x73, 0x70, 0x2f, 0x65, 0x73, 0x70, 0x2d, 0x69, 0x64, 0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* H_TEST_IMAGE_HEX */
|
223
components/mesh_ota/test/test_mesh_ota.c
Normal file
223
components/mesh_ota/test/test_mesh_ota.c
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
#include <limits.h>
|
||||||
|
#include "unity.h"
|
||||||
|
|
||||||
|
#include "mesh_ota.h"
|
||||||
|
#include "test_image_hex.h"
|
||||||
|
|
||||||
|
// ### ### ### distinguish newer image version ### ### ###
|
||||||
|
|
||||||
|
TEST_CASE("Remote got patch", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "1.2.3"; //current running image
|
||||||
|
char versionRemote[] = "1.2.4"; //image from server
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Remote got minor", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "1.2.3"; //current running image
|
||||||
|
char versionRemote[] = "1.3.3"; //image from server
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Remote got major", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "1.2.3"; //current running image
|
||||||
|
char versionRemote[] = "2.2.3"; //image from server
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Local got patch", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "1.2.4"; //current running image
|
||||||
|
char versionRemote[] = "1.2.3"; //image from server
|
||||||
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Local got minor", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "1.3.3"; //current running image
|
||||||
|
char versionRemote[] = "1.2.3"; //image from server
|
||||||
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Local got major", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "2.2.3"; //current running image
|
||||||
|
char versionRemote[] = "1.2.3"; //image from server
|
||||||
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Remote got alpha and patch", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "2.2.3"; //current running image
|
||||||
|
char versionRemote[] = "a2.2.4"; //image from server
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Remote got max", "[distinguish newer image version]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "2.2.3"; //current running image
|
||||||
|
char versionRemote[] = "999.999.999"; //image from server
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ### ### ### find start offset in firmware image ### ### ###
|
||||||
|
|
||||||
|
TEST_CASE("with http response + 0.0.1", "[find start offset in firmware image]")
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone0_0_1)/sizeof(dataWithHttpRespone0_0_1[0]);
|
||||||
|
esp_err_t err = errFindImageStart(dataWithHttpRespone0_0_1, &u32DataLenght, &u32StartOffset);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(305, u32StartOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("without http response + 0.0.1", "[find start offset in firmware image]")
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithoutHttpRespone0_0_1)/sizeof(dataWithoutHttpRespone0_0_1[0]);
|
||||||
|
esp_err_t err = errFindImageStart(dataWithoutHttpRespone0_0_1, &u32DataLenght, &u32StartOffset);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, u32StartOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("with http response + 999.999.999", "[find start offset in firmware image]")
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_999_999)/sizeof(dataWithHttpRespone999_999_999[0]);
|
||||||
|
esp_err_t err = errFindImageStart(dataWithHttpRespone999_999_999, &u32DataLenght, &u32StartOffset);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(305, u32StartOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("without http response + 999.999.999", "[find start offset in firmware image]")
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithoutHttpRespone999_999_999)/sizeof(dataWithoutHttpRespone999_999_999[0]);
|
||||||
|
esp_err_t err = errFindImageStart(dataWithoutHttpRespone999_999_999, &u32DataLenght, &u32StartOffset);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, u32StartOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("with http response + 999.9.999", "[find start offset in firmware image]")
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_9_999)/sizeof(dataWithHttpRespone999_9_999[0]);
|
||||||
|
esp_err_t err = errFindImageStart(dataWithHttpRespone999_9_999, &u32DataLenght, &u32StartOffset);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(302, u32StartOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("with http response + 999.99.999", "[find start offset in firmware image]")
|
||||||
|
{
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_99_999)/sizeof(dataWithHttpRespone999_99_999[0]);
|
||||||
|
esp_err_t err = errFindImageStart(dataWithHttpRespone999_99_999, &u32DataLenght, &u32StartOffset);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(299, u32StartOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ### ### ### distinguish newer image version ### ### ###
|
||||||
|
|
||||||
|
TEST_CASE("extract version 0.0.1", "[extract image version number]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "0.0.0"; //current running image
|
||||||
|
char versionRemote[12];//image from server
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone0_0_1)/sizeof(dataWithHttpRespone0_0_1[0]);
|
||||||
|
esp_err_t err = errExtractVersionNumber(dataWithHttpRespone0_0_1, &u32DataLenght, versionRemote);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("extract version 999.999.999", "[extract image version number]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "0.0.0"; //current running image
|
||||||
|
char versionRemote[12];//image from server
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_999_999)/sizeof(dataWithHttpRespone999_999_999[0]);
|
||||||
|
esp_err_t err = errExtractVersionNumber(dataWithHttpRespone999_999_999, &u32DataLenght, versionRemote);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("extract version 999.99.999", "[extract image version number]")
|
||||||
|
{
|
||||||
|
char versionLocal[] = "999.100.999"; //current running image
|
||||||
|
char versionRemote[12];//image from server
|
||||||
|
uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_99_999)/sizeof(dataWithHttpRespone999_99_999[0]);
|
||||||
|
esp_err_t err = errExtractVersionNumber(dataWithHttpRespone999_99_999, &u32DataLenght, versionRemote);
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_INT(ESP_OK, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
|||||||
idf_component_register(SRCS "mesh_main.c"
|
idf_component_register(SRCS "main.c"
|
||||||
INCLUDE_DIRS ".")
|
INCLUDE_DIRS ".")
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
menu "Example Configuration"
|
menu "Mesh OTA Configuration"
|
||||||
|
|
||||||
choice
|
choice
|
||||||
bool "Mesh Topology"
|
bool "Mesh Topology"
|
||||||
@ -124,22 +124,17 @@ menu "Example Configuration"
|
|||||||
help
|
help
|
||||||
Authentication mode.
|
Authentication mode.
|
||||||
|
|
||||||
config WIFI_AUTH_OPEN
|
|
||||||
bool "WIFI_AUTH_OPEN"
|
|
||||||
config WIFI_AUTH_WPA_PSK
|
|
||||||
bool "WIFI_AUTH_WPA_PSK"
|
|
||||||
config WIFI_AUTH_WPA2_PSK
|
config WIFI_AUTH_WPA2_PSK
|
||||||
bool "WIFI_AUTH_WPA2_PSK"
|
bool "WIFI_AUTH_WPA2_PSK"
|
||||||
config WIFI_AUTH_WPA_WPA2_PSK
|
config WIFI_AUTH_WPA2_ENTERPRISE
|
||||||
bool "WIFI_AUTH_WPA_WPA2_PSK"
|
bool "WIFI_AUTH_WPA2_ENTERPRISE"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config MESH_AP_AUTHMODE
|
config MESH_AP_AUTHMODE
|
||||||
int
|
int
|
||||||
default 0 if WIFI_AUTH_OPEN
|
|
||||||
default 2 if WIFI_AUTH_WPA_PSK
|
|
||||||
default 3 if WIFI_AUTH_WPA2_PSK
|
default 3 if WIFI_AUTH_WPA2_PSK
|
||||||
default 4 if WIFI_AUTH_WPA_WPA2_PSK
|
default 5 if WIFI_AUTH_WPA2_ENTERPRISE
|
||||||
help
|
help
|
||||||
Mesh AP authentication mode.
|
Mesh AP authentication mode.
|
||||||
|
|
||||||
@ -162,4 +157,29 @@ menu "Example Configuration"
|
|||||||
default 50
|
default 50
|
||||||
help
|
help
|
||||||
The number of devices over the network(max: 300).
|
The number of devices over the network(max: 300).
|
||||||
|
|
||||||
|
config OTA_HTTPS_SERVER_COMMON_NAME
|
||||||
|
string "Common name OTA server"
|
||||||
|
default "exmaple.com"
|
||||||
|
help
|
||||||
|
Fully Qualified Domain Name used in the certificate.
|
||||||
|
|
||||||
|
config OTA_HTTPS_SERVER_PORT
|
||||||
|
string "Server port"
|
||||||
|
default "443"
|
||||||
|
help
|
||||||
|
HTTPS webserver port
|
||||||
|
|
||||||
|
config OTA_HTTPS_URL
|
||||||
|
string "URL to ota image"
|
||||||
|
default "https://exmaple.com/theImage.bin"
|
||||||
|
help
|
||||||
|
Uniform Resource Locator to the image file
|
||||||
|
|
||||||
|
config OTA_HTTPS_AUTH
|
||||||
|
string "HTTPS authentication"
|
||||||
|
default "base64(user:password)"
|
||||||
|
help
|
||||||
|
HTTPS basic auth using base64 decoded "user:password"
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -11,13 +11,11 @@
|
|||||||
#include "esp_ota_ops.h"
|
#include "esp_ota_ops.h"
|
||||||
#include "esp_partition.h"
|
#include "esp_partition.h"
|
||||||
|
|
||||||
|
#include "mesh_ota.h"
|
||||||
|
|
||||||
#define RX_SIZE (1234)
|
#define RX_SIZE (1234)
|
||||||
#define TX_SIZE (1234)
|
#define TX_SIZE (1234)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static const char *MESH_TAG = "mesh_main";
|
static const char *MESH_TAG = "mesh_main";
|
||||||
static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77};
|
static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77};
|
||||||
static uint8_t tx_buf[TX_SIZE] = { 0, };
|
static uint8_t tx_buf[TX_SIZE] = { 0, };
|
||||||
@ -28,8 +26,10 @@ static uint8_t ownMAC[6];
|
|||||||
static int mesh_layer = -1;
|
static int mesh_layer = -1;
|
||||||
static esp_netif_t *netif_sta = NULL;
|
static esp_netif_t *netif_sta = NULL;
|
||||||
|
|
||||||
struct ota_mesh_packet {
|
struct ota_mesh_packet
|
||||||
enum ota_mesh_packet_type {
|
{
|
||||||
|
enum ota_mesh_packet_type
|
||||||
|
{
|
||||||
APP_Version_Request,
|
APP_Version_Request,
|
||||||
APP_Version_Response,
|
APP_Version_Response,
|
||||||
OTA_Data,
|
OTA_Data,
|
||||||
@ -40,8 +40,6 @@ struct ota_mesh_packet {
|
|||||||
uint8_t au8Payload[1024];
|
uint8_t au8Payload[1024];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************
|
/*******************************************************
|
||||||
* Function Declarations
|
* Function Declarations
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
@ -52,7 +50,6 @@ esp_err_t esp_mesh_send_packet(mesh_addr_t* dest, struct ota_mesh_packet* packet
|
|||||||
* Function Definitions
|
* Function Definitions
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
|
|
||||||
|
|
||||||
esp_err_t esp_mesh_ota_send(mesh_addr_t* dest)
|
esp_err_t esp_mesh_ota_send(mesh_addr_t* dest)
|
||||||
{
|
{
|
||||||
esp_err_t err = ESP_OK;
|
esp_err_t err = ESP_OK;
|
||||||
@ -61,7 +58,8 @@ esp_err_t esp_mesh_ota_send(mesh_addr_t* dest)
|
|||||||
|
|
||||||
const esp_partition_t * currentPartition = esp_ota_get_boot_partition();
|
const esp_partition_t * currentPartition = esp_ota_get_boot_partition();
|
||||||
|
|
||||||
if((*currentPartition).subtype == 0) {
|
if((*currentPartition).subtype == 0)
|
||||||
|
{
|
||||||
|
|
||||||
int data_read = 0;
|
int data_read = 0;
|
||||||
|
|
||||||
@ -157,14 +155,13 @@ esp_err_t esp_mesh_ota_receive(mesh_addr_t* dest, struct ota_mesh_packet* packet
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//returns true if MAC address is equal
|
//returns true if MAC address is equal
|
||||||
bool esp_mesh_check_MAC_Equality(uint8_t* aMAC, uint8_t* bMAC)
|
bool esp_mesh_check_MAC_Equality(uint8_t* aMAC, uint8_t* bMAC)
|
||||||
{
|
{
|
||||||
for (uint8_t index = 0; index < 6; index++)
|
for (uint8_t index = 0; index < 6; index++)
|
||||||
{
|
{
|
||||||
if(aMAC[index] != bMAC[index]) {
|
if(aMAC[index] != bMAC[index])
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -216,10 +213,12 @@ void esp_mesh_p2p_rx_main(void *arg)
|
|||||||
data.data = rx_buf;
|
data.data = rx_buf;
|
||||||
data.size = RX_SIZE;
|
data.size = RX_SIZE;
|
||||||
|
|
||||||
while (true) {
|
while (true)
|
||||||
|
{
|
||||||
data.size = RX_SIZE;
|
data.size = RX_SIZE;
|
||||||
err = esp_mesh_recv(&from, &data, portMAX_DELAY, &flag, NULL, 0);
|
err = esp_mesh_recv(&from, &data, portMAX_DELAY, &flag, NULL, 0);
|
||||||
if (err != ESP_OK || !data.size) {
|
if (err != ESP_OK || !data.size)
|
||||||
|
{
|
||||||
ESP_LOGE(MESH_TAG, "err:0x%x, size:%d", err, data.size);
|
ESP_LOGE(MESH_TAG, "err:0x%x, size:%d", err, data.size);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -266,7 +265,8 @@ void esp_mesh_p2p_rx_main(void *arg)
|
|||||||
esp_err_t esp_mesh_comm_p2p_start(void)
|
esp_err_t esp_mesh_comm_p2p_start(void)
|
||||||
{
|
{
|
||||||
static bool is_comm_p2p_started = false;
|
static bool is_comm_p2p_started = false;
|
||||||
if (!is_comm_p2p_started) {
|
if (!is_comm_p2p_started)
|
||||||
|
{
|
||||||
is_comm_p2p_started = true;
|
is_comm_p2p_started = true;
|
||||||
xTaskCreate(esp_mesh_p2p_rx_main, "MPRX", 7000, NULL, 5, NULL);
|
xTaskCreate(esp_mesh_p2p_rx_main, "MPRX", 7000, NULL, 5, NULL);
|
||||||
}
|
}
|
||||||
@ -279,8 +279,10 @@ void mesh_event_handler(void *arg, esp_event_base_t event_base,
|
|||||||
mesh_addr_t id = {0,};
|
mesh_addr_t id = {0,};
|
||||||
static uint16_t last_layer = 0;
|
static uint16_t last_layer = 0;
|
||||||
|
|
||||||
switch (event_id) {
|
switch (event_id)
|
||||||
case MESH_EVENT_STARTED: {
|
{
|
||||||
|
case MESH_EVENT_STARTED:
|
||||||
|
{
|
||||||
esp_mesh_get_id(&id);
|
esp_mesh_get_id(&id);
|
||||||
ESP_LOGI(MESH_TAG, "<MESH_EVENT_MESH_STARTED>ID:"MACSTR"", MAC2STR(id.addr));
|
ESP_LOGI(MESH_TAG, "<MESH_EVENT_MESH_STARTED>ID:"MACSTR"", MAC2STR(id.addr));
|
||||||
is_mesh_connected = false;
|
is_mesh_connected = false;
|
||||||
@ -480,13 +482,99 @@ void ip_event_handler(void *arg, esp_event_base_t event_base,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void test(void *pvParameters)
|
||||||
|
{
|
||||||
|
esp_err_t err;
|
||||||
|
uint32_t u32BufferLenght = 1024U;
|
||||||
|
char buffer[1024U];
|
||||||
|
uint32_t u32BytesRead = 0;
|
||||||
|
char pcRemoteVersionNumber[12];
|
||||||
|
const esp_partition_t * currentPartition;
|
||||||
|
const esp_partition_t * otaPartition;
|
||||||
|
static esp_ota_handle_t otaHandle;
|
||||||
|
uint32_t u32StartOffset;
|
||||||
|
esp_app_desc_t otaPartitionDesc;
|
||||||
|
|
||||||
|
ESP_LOGI(MESH_TAG, "Hello World");
|
||||||
|
currentPartition = esp_ota_get_boot_partition();
|
||||||
|
ESP_LOGI(MESH_TAG, "Type: %d", (*currentPartition).subtype);
|
||||||
|
ESP_LOGI(MESH_TAG, "Start address: %d", (*currentPartition).address);
|
||||||
|
ESP_LOGI(MESH_TAG, "Size: %d", (*currentPartition).size);
|
||||||
|
ESP_LOGI(MESH_TAG, "Encrypted: %d", (*currentPartition).encrypted);
|
||||||
|
|
||||||
|
esp_app_desc_t curPartitionDesc;
|
||||||
|
err = esp_ota_get_partition_description(currentPartition, &curPartitionDesc);
|
||||||
|
ESP_ERROR_CHECK(err);
|
||||||
|
ESP_LOGI(MESH_TAG, "currentPartition project_name: %s", (curPartitionDesc).project_name);
|
||||||
|
ESP_LOGI(MESH_TAG, "currentPartition version: %s", (curPartitionDesc).version);
|
||||||
|
ESP_LOGI(MESH_TAG, "currentPartition Timestamp: %s %s", (curPartitionDesc).date, (curPartitionDesc).time);
|
||||||
|
|
||||||
|
https_clientInitialize();
|
||||||
|
https_clientRetrieveData(buffer, &u32BufferLenght, &u32BytesRead);
|
||||||
|
ESP_LOGI(MESH_TAG, "Data received: %i", u32BytesRead);
|
||||||
|
err = errExtractVersionNumber(buffer, &u32BytesRead, pcRemoteVersionNumber);
|
||||||
|
|
||||||
|
if(err == ESP_OK)
|
||||||
|
{
|
||||||
|
if(bNewerVersion((curPartitionDesc).version, pcRemoteVersionNumber))
|
||||||
|
{
|
||||||
|
ESP_LOGI(MESH_TAG, "Newer Version available");
|
||||||
|
//write ota
|
||||||
|
otaPartition= esp_ota_get_next_update_partition(currentPartition);
|
||||||
|
|
||||||
|
err = errFindImageStart(buffer, &u32BufferLenght, &u32StartOffset);
|
||||||
|
|
||||||
|
ESP_LOGI(MESH_TAG, "first byte offset: %i", u32StartOffset);
|
||||||
|
ESP_LOGI(MESH_TAG, "first byte: %x", buffer[u32StartOffset]);
|
||||||
|
|
||||||
|
err = esp_ota_begin(otaPartition, OTA_SIZE_UNKNOWN, &otaHandle);
|
||||||
|
ESP_ERROR_CHECK(err);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
ESP_LOGI(MESH_TAG, "OTA-Data written: %i", u32BytesRead);
|
||||||
|
err = esp_ota_write(otaHandle, (const void*) buffer+u32StartOffset, (u32BytesRead-u32StartOffset));
|
||||||
|
u32StartOffset = 0U;
|
||||||
|
https_clientRetrieveData(buffer, &u32BufferLenght, &u32BytesRead);
|
||||||
|
}
|
||||||
|
while (u32BytesRead > 0);
|
||||||
|
|
||||||
|
err = esp_ota_end(otaHandle);
|
||||||
|
ESP_ERROR_CHECK(err);
|
||||||
|
|
||||||
|
err = esp_ota_get_partition_description(otaPartition, &otaPartitionDesc);
|
||||||
|
ESP_ERROR_CHECK(err);
|
||||||
|
ESP_LOGI(MESH_TAG, "otaPartition project_name: %s", (otaPartitionDesc).project_name);
|
||||||
|
err = esp_ota_set_boot_partition(otaPartition);
|
||||||
|
ESP_ERROR_CHECK(err);
|
||||||
|
//esp_restart();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESP_LOGI(MESH_TAG, "NO newer Version available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESP_LOGI(MESH_TAG, "errExtractVersionNumber failed: %i", err);
|
||||||
|
}
|
||||||
|
|
||||||
|
https_clientDeinitialize();
|
||||||
|
|
||||||
|
ESP_LOGI(MESH_TAG, "\nend of task\n");
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
{
|
{
|
||||||
|
ESP_LOGI(MESH_TAG, "hardcoded: 0.0.1");
|
||||||
/*
|
/*
|
||||||
esp_err_t err;
|
|
||||||
|
|
||||||
err = nvs_flash_erase();
|
err = nvs_flash_erase();
|
||||||
|
|
||||||
if(err != ESP_OK){
|
if(err != ESP_OK){
|
||||||
ESP_LOGI(MESH_TAG, "Error: %x", err);
|
ESP_LOGI(MESH_TAG, "Error: %x", err);
|
||||||
while(1){
|
while(1){
|
||||||
@ -497,13 +585,6 @@ void app_main(void)
|
|||||||
|
|
||||||
ESP_ERROR_CHECK(nvs_flash_init());
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
|
|
||||||
ESP_LOGI(MESH_TAG, "Hello World");
|
|
||||||
const esp_partition_t * currentPartition = esp_ota_get_boot_partition();
|
|
||||||
ESP_LOGI(MESH_TAG, "Type: %d", (*currentPartition).subtype);
|
|
||||||
ESP_LOGI(MESH_TAG, "Start address: %d", (*currentPartition).address);
|
|
||||||
ESP_LOGI(MESH_TAG, "Size: %d", (*currentPartition).size); //passt
|
|
||||||
ESP_LOGI(MESH_TAG, "Encrypted: %d", (*currentPartition).encrypted);
|
|
||||||
|
|
||||||
/* tcpip initialization */
|
/* tcpip initialization */
|
||||||
ESP_ERROR_CHECK(esp_netif_init());
|
ESP_ERROR_CHECK(esp_netif_init());
|
||||||
|
|
||||||
@ -566,41 +647,14 @@ void app_main(void)
|
|||||||
esp_mesh_is_root_fixed() ? "root fixed" : "root not fixed",
|
esp_mesh_is_root_fixed() ? "root fixed" : "root not fixed",
|
||||||
esp_mesh_get_topology(), esp_mesh_get_topology() ? "(chain)":"(tree)", esp_mesh_is_ps_enabled());
|
esp_mesh_get_topology(), esp_mesh_get_topology() ? "(chain)":"(tree)", esp_mesh_is_ps_enabled());
|
||||||
|
|
||||||
|
for(;;)
|
||||||
/* START OTA MESH */
|
{
|
||||||
|
|
||||||
//if (esp_mesh_is_root()) {
|
|
||||||
ESP_LOGI(MESH_TAG, "ROOT NODE");
|
|
||||||
//https ota
|
|
||||||
|
|
||||||
// while(1){
|
|
||||||
for(;;) {
|
|
||||||
if(gpio_get_level(0) == 0){
|
if(gpio_get_level(0) == 0){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
|
xTaskCreate(&test, "test_task", 8192, NULL, 5, NULL);
|
||||||
mesh_addr_t children[CONFIG_MESH_ROUTE_TABLE_SIZE];
|
|
||||||
uint16_t u16ChildrenSize;
|
|
||||||
esp_mesh_get_Children(children, &u16ChildrenSize);
|
|
||||||
|
|
||||||
ESP_LOGI(MESH_TAG, "ChildrenSize: %i", u16ChildrenSize);
|
|
||||||
|
|
||||||
|
|
||||||
struct ota_mesh_packet packet;
|
|
||||||
|
|
||||||
packet.type=APP_Version_Request;
|
|
||||||
//packet.au8Payload[0] = 42;
|
|
||||||
|
|
||||||
for (uint16_t i = 0; i < u16ChildrenSize; i++)
|
|
||||||
{
|
|
||||||
ESP_ERROR_CHECK (esp_mesh_send_packet(&children[i], &packet));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// }//end while 1
|
|
||||||
//} // end root node
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3,6 +3,5 @@
|
|||||||
nvs, data, nvs, , 0x4000,
|
nvs, data, nvs, , 0x4000,
|
||||||
otadata, data, ota, , 0x2000,
|
otadata, data, ota, , 0x2000,
|
||||||
phy_init, data, phy, , 0x1000,
|
phy_init, data, phy, , 0x1000,
|
||||||
factory, app, factory, , 1M,
|
ota_0, app, ota_0, , 1500K,
|
||||||
ota_0, app, ota_0, , 1M,
|
ota_1, app, ota_1, , 1500K,
|
||||||
ota_1, app, ota_1, , 1M,
|
|
||||||
|
|
35
sdkconfig
35
sdkconfig
@ -31,7 +31,8 @@ CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
|
|||||||
CONFIG_APP_COMPILE_TIME_DATE=y
|
CONFIG_APP_COMPILE_TIME_DATE=y
|
||||||
# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
|
# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
|
||||||
# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
|
# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
|
||||||
# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
|
CONFIG_APP_PROJECT_VER_FROM_CONFIG=y
|
||||||
|
CONFIG_APP_PROJECT_VER="0.0.1"
|
||||||
CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
|
CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
|
||||||
# end of Application manager
|
# end of Application manager
|
||||||
|
|
||||||
@ -66,8 +67,16 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
|||||||
#
|
#
|
||||||
# Security features
|
# Security features
|
||||||
#
|
#
|
||||||
# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
|
CONFIG_SECURE_SIGNED_ON_BOOT=y
|
||||||
|
CONFIG_SECURE_SIGNED_ON_UPDATE=y
|
||||||
|
CONFIG_SECURE_SIGNED_APPS=y
|
||||||
|
CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT=y
|
||||||
|
CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME=y
|
||||||
|
CONFIG_SECURE_SIGNED_ON_BOOT_NO_SECURE_BOOT=y
|
||||||
|
CONFIG_SECURE_SIGNED_ON_UPDATE_NO_SECURE_BOOT=y
|
||||||
# CONFIG_SECURE_BOOT is not set
|
# CONFIG_SECURE_BOOT is not set
|
||||||
|
CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=y
|
||||||
|
CONFIG_SECURE_BOOT_SIGNING_KEY="secure_boot_signing_key.pem"
|
||||||
# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
|
# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
|
||||||
# end of Security features
|
# end of Security features
|
||||||
|
|
||||||
@ -119,12 +128,12 @@ CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
|
|||||||
CONFIG_PARTITION_TABLE_CUSTOM=y
|
CONFIG_PARTITION_TABLE_CUSTOM=y
|
||||||
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
|
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
|
||||||
CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
|
CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
|
||||||
CONFIG_PARTITION_TABLE_OFFSET=0x8000
|
CONFIG_PARTITION_TABLE_OFFSET=0x10000
|
||||||
CONFIG_PARTITION_TABLE_MD5=y
|
CONFIG_PARTITION_TABLE_MD5=y
|
||||||
# end of Partition Table
|
# end of Partition Table
|
||||||
|
|
||||||
#
|
#
|
||||||
# Example Configuration
|
# Mesh OTA Configuration
|
||||||
#
|
#
|
||||||
CONFIG_MESH_TOPO_TREE=y
|
CONFIG_MESH_TOPO_TREE=y
|
||||||
# CONFIG_MESH_TOPO_CHAIN is not set
|
# CONFIG_MESH_TOPO_CHAIN is not set
|
||||||
@ -141,17 +150,19 @@ CONFIG_MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE=y
|
|||||||
CONFIG_MESH_PS_NWK_DUTY_RULE=0
|
CONFIG_MESH_PS_NWK_DUTY_RULE=0
|
||||||
CONFIG_MESH_MAX_LAYER=6
|
CONFIG_MESH_MAX_LAYER=6
|
||||||
CONFIG_MESH_CHANNEL=13
|
CONFIG_MESH_CHANNEL=13
|
||||||
CONFIG_MESH_ROUTER_SSID="nicht verbunden"
|
CONFIG_MESH_ROUTER_SSID="labNet"
|
||||||
CONFIG_MESH_ROUTER_PASSWD="flamingo"
|
CONFIG_MESH_ROUTER_PASSWD="12345678"
|
||||||
# CONFIG_WIFI_AUTH_OPEN is not set
|
|
||||||
# CONFIG_WIFI_AUTH_WPA_PSK is not set
|
|
||||||
CONFIG_WIFI_AUTH_WPA2_PSK=y
|
CONFIG_WIFI_AUTH_WPA2_PSK=y
|
||||||
# CONFIG_WIFI_AUTH_WPA_WPA2_PSK is not set
|
# CONFIG_WIFI_AUTH_WPA2_ENTERPRISE is not set
|
||||||
CONFIG_MESH_AP_AUTHMODE=3
|
CONFIG_MESH_AP_AUTHMODE=3
|
||||||
CONFIG_MESH_AP_PASSWD="MAP_PASSWD"
|
CONFIG_MESH_AP_PASSWD="qaws1234"
|
||||||
CONFIG_MESH_AP_CONNECTIONS=6
|
CONFIG_MESH_AP_CONNECTIONS=6
|
||||||
CONFIG_MESH_ROUTE_TABLE_SIZE=50
|
CONFIG_MESH_ROUTE_TABLE_SIZE=50
|
||||||
# end of Example Configuration
|
CONFIG_OTA_HTTPS_SERVER_COMMON_NAME="ota.hendrikschutter.com"
|
||||||
|
CONFIG_OTA_HTTPS_SERVER_PORT="443"
|
||||||
|
CONFIG_OTA_HTTPS_URL="https://ota.hendrikschutter.com/mesh_ota.bin"
|
||||||
|
CONFIG_OTA_HTTPS_AUTH="b3RhOnB3"
|
||||||
|
# end of Mesh OTA Configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
# Compiler options
|
# Compiler options
|
||||||
@ -1026,7 +1037,7 @@ CONFIG_WS_BUFFER_SIZE=1024
|
|||||||
#
|
#
|
||||||
CONFIG_UNITY_ENABLE_FLOAT=y
|
CONFIG_UNITY_ENABLE_FLOAT=y
|
||||||
CONFIG_UNITY_ENABLE_DOUBLE=y
|
CONFIG_UNITY_ENABLE_DOUBLE=y
|
||||||
# CONFIG_UNITY_ENABLE_COLOR is not set
|
CONFIG_UNITY_ENABLE_COLOR=y
|
||||||
CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
|
CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
|
||||||
# CONFIG_UNITY_ENABLE_FIXTURE is not set
|
# CONFIG_UNITY_ENABLE_FIXTURE is not set
|
||||||
# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
|
# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
|
||||||
|
5
secure_boot_signing_key.pem
Normal file
5
secure_boot_signing_key.pem
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-----BEGIN EC PRIVATE KEY-----
|
||||||
|
MHcCAQEEIPADEvh72EIFEGixpoyTcMq6k3TdS5vYytoCd/aFdcOUoAoGCCqGSM49
|
||||||
|
AwEHoUQDQgAE3LyvSuovRT0+O9V8fcjvdHT1vaS2RRs6Zh7RKd3LemhOR+ZZ7KmE
|
||||||
|
7QZiCmbVxMsano1h8rJG0m4PSv/eQ03K8A==
|
||||||
|
-----END EC PRIVATE KEY-----
|
16
test/CMakeLists.txt
Normal file
16
test/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# This is the project CMakeLists.txt file for the test subproject
|
||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
# Include the components directory of the main application:
|
||||||
|
#
|
||||||
|
set(EXTRA_COMPONENT_DIRS "../components")
|
||||||
|
|
||||||
|
# Set the components to include the tests for.
|
||||||
|
# This can be overriden from CMake cache:
|
||||||
|
# - when invoking CMake directly: cmake -D TEST_COMPONENTS="xxxxx" ..
|
||||||
|
# - when using idf.py: idf.py -T xxxxx build
|
||||||
|
#
|
||||||
|
set(TEST_COMPONENTS "mesh_ota" CACHE STRING "List of components to test")
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
project(unit_test_mesh_ota)
|
17
test/Makefile
Normal file
17
test/Makefile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#
|
||||||
|
# This is a project Makefile for the test subproject.
|
||||||
|
#
|
||||||
|
|
||||||
|
PROJECT_NAME := unit_test_mesh_ota
|
||||||
|
|
||||||
|
# Include the components directory of the main application:
|
||||||
|
#
|
||||||
|
EXTRA_COMPONENT_DIRS := $(realpath ../components)
|
||||||
|
|
||||||
|
# Set the components to include the tests for.
|
||||||
|
# This can be overriden from the command line
|
||||||
|
# (e.g. 'make TEST_COMPONENTS=xxxx flash monitor')
|
||||||
|
#
|
||||||
|
TEST_COMPONENTS ?= mesh_ota
|
||||||
|
|
||||||
|
include $(IDF_PATH)/make/project.mk
|
2
test/main/CMakeLists.txt
Normal file
2
test/main/CMakeLists.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
idf_component_register(SRCS "unit_test_mesh_ota.c"
|
||||||
|
INCLUDE_DIRS ".")
|
0
test/main/component.mk
Normal file
0
test/main/component.mk
Normal file
58
test/main/unit_test_mesh_ota.c
Normal file
58
test/main/unit_test_mesh_ota.c
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* Example test application for testable component.
|
||||||
|
|
||||||
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, this
|
||||||
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "unity.h"
|
||||||
|
|
||||||
|
static void print_banner(const char* text);
|
||||||
|
|
||||||
|
void app_main(void)
|
||||||
|
{
|
||||||
|
/* These are the different ways of running registered tests.
|
||||||
|
* In practice, only one of them is usually needed.
|
||||||
|
*
|
||||||
|
* UNITY_BEGIN() and UNITY_END() calls tell Unity to print a summary
|
||||||
|
* (number of tests executed/failed/ignored) of tests executed between these calls.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
print_banner("Executing one test by its name");
|
||||||
|
UNITY_BEGIN();
|
||||||
|
unity_run_test_by_name("Mean of an empty array is zero");
|
||||||
|
UNITY_END();
|
||||||
|
|
||||||
|
print_banner("Running tests with [mean] tag");
|
||||||
|
UNITY_BEGIN();
|
||||||
|
unity_run_tests_by_tag("[mean]", false);
|
||||||
|
UNITY_END();
|
||||||
|
|
||||||
|
print_banner("Running tests without [fails] tag");
|
||||||
|
UNITY_BEGIN();
|
||||||
|
unity_run_tests_by_tag("[fails]", true);
|
||||||
|
UNITY_END();
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
print_banner("Running all the registered tests");
|
||||||
|
UNITY_BEGIN();
|
||||||
|
unity_run_all_tests();
|
||||||
|
UNITY_END();
|
||||||
|
|
||||||
|
print_banner("Starting interactive test menu");
|
||||||
|
/* This function will not return, and will be busy waiting for UART input.
|
||||||
|
* Make sure that task watchdog is disabled if you use this function.
|
||||||
|
*/
|
||||||
|
unity_run_menu();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void print_banner(const char* text)
|
||||||
|
{
|
||||||
|
printf("\n#### %s #####\n\n", text);
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
# Automatically generated file. DO NOT EDIT.
|
# Automatically generated file. DO NOT EDIT.
|
||||||
# Espressif IoT Development Framework (ESP-IDF) Project Configuration
|
# Espressif IoT Development Framework (ESP-IDF) Project Configuration
|
||||||
#
|
#
|
||||||
|
CONFIG_IDF_CMAKE=y
|
||||||
CONFIG_IDF_TARGET_ARCH_XTENSA=y
|
CONFIG_IDF_TARGET_ARCH_XTENSA=y
|
||||||
CONFIG_IDF_TARGET="esp32"
|
CONFIG_IDF_TARGET="esp32"
|
||||||
CONFIG_IDF_TARGET_ESP32=y
|
CONFIG_IDF_TARGET_ESP32=y
|
||||||
@ -11,8 +12,6 @@ CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000
|
|||||||
# SDK tool configuration
|
# SDK tool configuration
|
||||||
#
|
#
|
||||||
CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-"
|
CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-"
|
||||||
CONFIG_SDK_PYTHON="python"
|
|
||||||
CONFIG_SDK_MAKE_WARN_UNDEFINED_VARIABLES=y
|
|
||||||
# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set
|
# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set
|
||||||
# end of SDK tool configuration
|
# end of SDK tool configuration
|
||||||
|
|
||||||
@ -75,15 +74,7 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
|||||||
#
|
#
|
||||||
# Serial flasher config
|
# Serial flasher config
|
||||||
#
|
#
|
||||||
CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB0"
|
|
||||||
CONFIG_ESPTOOLPY_BAUD_115200B=y
|
|
||||||
# CONFIG_ESPTOOLPY_BAUD_230400B is not set
|
|
||||||
# CONFIG_ESPTOOLPY_BAUD_921600B is not set
|
|
||||||
# CONFIG_ESPTOOLPY_BAUD_2MB is not set
|
|
||||||
# CONFIG_ESPTOOLPY_BAUD_OTHER is not set
|
|
||||||
CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
|
CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
|
||||||
CONFIG_ESPTOOLPY_BAUD=115200
|
|
||||||
CONFIG_ESPTOOLPY_COMPRESSED=y
|
|
||||||
# CONFIG_ESPTOOLPY_NO_STUB is not set
|
# CONFIG_ESPTOOLPY_NO_STUB is not set
|
||||||
# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
|
# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
|
||||||
# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
|
# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
|
||||||
@ -96,11 +87,11 @@ CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
|
|||||||
# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
|
# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
|
||||||
CONFIG_ESPTOOLPY_FLASHFREQ="40m"
|
CONFIG_ESPTOOLPY_FLASHFREQ="40m"
|
||||||
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
|
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
|
||||||
# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
|
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
|
||||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
|
||||||
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
|
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
|
||||||
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
|
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
|
||||||
CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
|
CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
|
||||||
CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
|
CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
|
||||||
CONFIG_ESPTOOLPY_BEFORE_RESET=y
|
CONFIG_ESPTOOLPY_BEFORE_RESET=y
|
||||||
# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
|
# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
|
||||||
@ -120,36 +111,6 @@ CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200
|
|||||||
CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
|
CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
|
||||||
# end of Serial flasher config
|
# end of Serial flasher config
|
||||||
|
|
||||||
#
|
|
||||||
# Example Configuration
|
|
||||||
#
|
|
||||||
CONFIG_MESH_TOPO_TREE=y
|
|
||||||
# CONFIG_MESH_TOPO_CHAIN is not set
|
|
||||||
CONFIG_MESH_TOPOLOGY=0
|
|
||||||
CONFIG_MESH_ENABLE_PS=y
|
|
||||||
CONFIG_MESH_PS_DEV_DUTY_TYPE_REQUEST=y
|
|
||||||
# CONFIG_MESH_PS_DEV_DUTY_TYPE_DEMAND is not set
|
|
||||||
CONFIG_MESH_PS_DEV_DUTY_TYPE=1
|
|
||||||
CONFIG_MESH_PS_DEV_DUTY=12
|
|
||||||
CONFIG_MESH_PS_NWK_DUTY=12
|
|
||||||
CONFIG_MESH_PS_NWK_DUTY_DURATION=-1
|
|
||||||
CONFIG_MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE=y
|
|
||||||
# CONFIG_MESH_PS_NETWORK_DUTY_APPLIED_UPLINK is not set
|
|
||||||
CONFIG_MESH_PS_NWK_DUTY_RULE=0
|
|
||||||
CONFIG_MESH_MAX_LAYER=6
|
|
||||||
CONFIG_MESH_CHANNEL=13
|
|
||||||
CONFIG_MESH_ROUTER_SSID="nicht verbunden"
|
|
||||||
CONFIG_MESH_ROUTER_PASSWD="flamingo"
|
|
||||||
# CONFIG_WIFI_AUTH_OPEN is not set
|
|
||||||
# CONFIG_WIFI_AUTH_WPA_PSK is not set
|
|
||||||
CONFIG_WIFI_AUTH_WPA2_PSK=y
|
|
||||||
# CONFIG_WIFI_AUTH_WPA_WPA2_PSK is not set
|
|
||||||
CONFIG_MESH_AP_AUTHMODE=3
|
|
||||||
CONFIG_MESH_AP_PASSWD="MAP_PASSWD"
|
|
||||||
CONFIG_MESH_AP_CONNECTIONS=6
|
|
||||||
CONFIG_MESH_ROUTE_TABLE_SIZE=50
|
|
||||||
# end of Example Configuration
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Table
|
# Partition Table
|
||||||
#
|
#
|
||||||
@ -338,36 +299,6 @@ CONFIG_ESP32_XTAL_FREQ=40
|
|||||||
CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5
|
CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5
|
||||||
# end of ESP32-specific
|
# end of ESP32-specific
|
||||||
|
|
||||||
#
|
|
||||||
# Memory protection
|
|
||||||
#
|
|
||||||
CONFIG_ESP32S2_MEMPROT_FEATURE=y
|
|
||||||
CONFIG_ESP32S2_MEMPROT_FEATURE_LOCK=y
|
|
||||||
# end of Memory protection
|
|
||||||
|
|
||||||
#
|
|
||||||
# Cache config
|
|
||||||
#
|
|
||||||
# end of Cache config
|
|
||||||
|
|
||||||
CONFIG_ESP32S2_TRACEMEM_RESERVE_DRAM=0x0
|
|
||||||
CONFIG_ESP32S2_ULP_COPROC_RESERVE_MEM=0
|
|
||||||
CONFIG_ESP32S2_DEBUG_OCDAWARE=y
|
|
||||||
CONFIG_ESP32S2_BROWNOUT_DET=y
|
|
||||||
CONFIG_ESP32S2_ALLOW_RTC_FAST_MEM_AS_HEAP=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Cache config
|
|
||||||
#
|
|
||||||
# end of Cache config
|
|
||||||
|
|
||||||
CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0
|
|
||||||
CONFIG_ESP_MAC_ADDR_UNIVERSE_BT_OFFSET=2
|
|
||||||
CONFIG_ESP32S3_ULP_COPROC_RESERVE_MEM=0
|
|
||||||
CONFIG_ESP32S3_DEBUG_OCDAWARE=y
|
|
||||||
CONFIG_ESP32S3_BROWNOUT_DET=y
|
|
||||||
CONFIG_ESP32S3_ALLOW_RTC_FAST_MEM_AS_HEAP=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# ADC-Calibration
|
# ADC-Calibration
|
||||||
#
|
#
|
||||||
@ -395,15 +326,12 @@ CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
|||||||
CONFIG_ESP_INT_WDT=y
|
CONFIG_ESP_INT_WDT=y
|
||||||
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
||||||
CONFIG_ESP_INT_WDT_CHECK_CPU1=y
|
CONFIG_ESP_INT_WDT_CHECK_CPU1=y
|
||||||
CONFIG_ESP_TASK_WDT=y
|
# CONFIG_ESP_TASK_WDT is not set
|
||||||
# CONFIG_ESP_TASK_WDT_PANIC is not set
|
|
||||||
CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
|
|
||||||
CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
|
|
||||||
CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
|
|
||||||
# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
|
# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
|
||||||
CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
|
CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
|
||||||
CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
|
CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
|
||||||
CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
|
CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
|
||||||
|
CONFIG_ESP_MAC_ADDR_UNIVERSE_BT_OFFSET=2
|
||||||
CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
|
CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
|
||||||
# end of Common ESP-related
|
# end of Common ESP-related
|
||||||
|
|
||||||
@ -1054,6 +982,11 @@ CONFIG_SPIFFS_USE_MTIME=y
|
|||||||
CONFIG_WS_BUFFER_SIZE=1024
|
CONFIG_WS_BUFFER_SIZE=1024
|
||||||
# end of TCP Transport
|
# end of TCP Transport
|
||||||
|
|
||||||
|
#
|
||||||
|
# TinyUSB
|
||||||
|
#
|
||||||
|
# end of TinyUSB
|
||||||
|
|
||||||
#
|
#
|
||||||
# Unity unit testing library
|
# Unity unit testing library
|
||||||
#
|
#
|
||||||
@ -1112,3 +1045,157 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
|
|||||||
#
|
#
|
||||||
# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set
|
# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set
|
||||||
# end of Compatibility options
|
# end of Compatibility options
|
||||||
|
|
||||||
|
# Deprecated options for backward compatibility
|
||||||
|
CONFIG_TOOLPREFIX="xtensa-esp32-elf-"
|
||||||
|
# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
|
||||||
|
# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
|
||||||
|
# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
|
||||||
|
CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
|
||||||
|
# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
|
||||||
|
# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
|
||||||
|
CONFIG_LOG_BOOTLOADER_LEVEL=3
|
||||||
|
# CONFIG_APP_ROLLBACK_ENABLE is not set
|
||||||
|
# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
|
||||||
|
# CONFIG_FLASHMODE_QIO is not set
|
||||||
|
# CONFIG_FLASHMODE_QOUT is not set
|
||||||
|
CONFIG_FLASHMODE_DIO=y
|
||||||
|
# CONFIG_FLASHMODE_DOUT is not set
|
||||||
|
# CONFIG_MONITOR_BAUD_9600B is not set
|
||||||
|
# CONFIG_MONITOR_BAUD_57600B is not set
|
||||||
|
CONFIG_MONITOR_BAUD_115200B=y
|
||||||
|
# CONFIG_MONITOR_BAUD_230400B is not set
|
||||||
|
# CONFIG_MONITOR_BAUD_921600B is not set
|
||||||
|
# CONFIG_MONITOR_BAUD_2MB is not set
|
||||||
|
# CONFIG_MONITOR_BAUD_OTHER is not set
|
||||||
|
CONFIG_MONITOR_BAUD_OTHER_VAL=115200
|
||||||
|
CONFIG_MONITOR_BAUD=115200
|
||||||
|
CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
|
||||||
|
# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
|
||||||
|
CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
|
||||||
|
# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
|
||||||
|
# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
|
||||||
|
# CONFIG_CXX_EXCEPTIONS is not set
|
||||||
|
CONFIG_STACK_CHECK_NONE=y
|
||||||
|
# CONFIG_STACK_CHECK_NORM is not set
|
||||||
|
# CONFIG_STACK_CHECK_STRONG is not set
|
||||||
|
# CONFIG_STACK_CHECK_ALL is not set
|
||||||
|
# CONFIG_WARN_WRITE_STRINGS is not set
|
||||||
|
# CONFIG_DISABLE_GCC8_WARNINGS is not set
|
||||||
|
# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
|
||||||
|
CONFIG_ESP32_APPTRACE_DEST_NONE=y
|
||||||
|
CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
|
||||||
|
CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0
|
||||||
|
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0
|
||||||
|
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||||
|
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
|
||||||
|
CONFIG_ADC2_DISABLE_DAC=y
|
||||||
|
# CONFIG_SPIRAM_SUPPORT is not set
|
||||||
|
CONFIG_TRACEMEM_RESERVE_DRAM=0x0
|
||||||
|
# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
|
||||||
|
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
|
||||||
|
CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
|
||||||
|
# CONFIG_ULP_COPROC_ENABLED is not set
|
||||||
|
CONFIG_ULP_COPROC_RESERVE_MEM=0
|
||||||
|
CONFIG_BROWNOUT_DET=y
|
||||||
|
CONFIG_BROWNOUT_DET_LVL_SEL_0=y
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
|
||||||
|
# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
|
||||||
|
CONFIG_BROWNOUT_DET_LVL=0
|
||||||
|
CONFIG_REDUCE_PHY_TX_POWER=y
|
||||||
|
CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
|
||||||
|
# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set
|
||||||
|
# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set
|
||||||
|
# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set
|
||||||
|
# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
|
||||||
|
# CONFIG_NO_BLOBS is not set
|
||||||
|
# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
|
||||||
|
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||||
|
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||||
|
CONFIG_MAIN_TASK_STACK_SIZE=3584
|
||||||
|
CONFIG_IPC_TASK_STACK_SIZE=1024
|
||||||
|
CONFIG_CONSOLE_UART_DEFAULT=y
|
||||||
|
# CONFIG_CONSOLE_UART_CUSTOM is not set
|
||||||
|
# CONFIG_ESP_CONSOLE_UART_NONE is not set
|
||||||
|
CONFIG_CONSOLE_UART=y
|
||||||
|
CONFIG_CONSOLE_UART_NUM=0
|
||||||
|
CONFIG_CONSOLE_UART_BAUDRATE=115200
|
||||||
|
CONFIG_INT_WDT=y
|
||||||
|
CONFIG_INT_WDT_TIMEOUT_MS=300
|
||||||
|
CONFIG_INT_WDT_CHECK_CPU1=y
|
||||||
|
# CONFIG_TASK_WDT is not set
|
||||||
|
# CONFIG_EVENT_LOOP_PROFILING is not set
|
||||||
|
CONFIG_POST_EVENTS_FROM_ISR=y
|
||||||
|
CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
|
||||||
|
# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
|
||||||
|
CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
|
||||||
|
# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
|
||||||
|
# CONFIG_ESP32S2_PANIC_GDBSTUB is not set
|
||||||
|
CONFIG_TIMER_TASK_STACK_SIZE=3584
|
||||||
|
# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
|
||||||
|
# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
|
||||||
|
CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
|
||||||
|
CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150
|
||||||
|
CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
|
||||||
|
CONFIG_MB_QUEUE_LENGTH=20
|
||||||
|
CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
|
||||||
|
CONFIG_MB_SERIAL_BUF_SIZE=256
|
||||||
|
CONFIG_MB_SERIAL_TASK_PRIO=10
|
||||||
|
CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
|
||||||
|
CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
|
||||||
|
CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
|
||||||
|
CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
|
||||||
|
CONFIG_MB_CONTROLLER_STACK_SIZE=4096
|
||||||
|
CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
|
||||||
|
CONFIG_MB_TIMER_PORT_ENABLED=y
|
||||||
|
CONFIG_MB_TIMER_GROUP=0
|
||||||
|
CONFIG_MB_TIMER_INDEX=0
|
||||||
|
# CONFIG_SUPPORT_STATIC_ALLOCATION is not set
|
||||||
|
CONFIG_TIMER_TASK_PRIORITY=1
|
||||||
|
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
||||||
|
CONFIG_TIMER_QUEUE_LENGTH=10
|
||||||
|
# CONFIG_L2_TO_L3_COPY is not set
|
||||||
|
# CONFIG_USE_ONLY_LWIP_SELECT is not set
|
||||||
|
CONFIG_ESP_GRATUITOUS_ARP=y
|
||||||
|
CONFIG_GARP_TMR_INTERVAL=60
|
||||||
|
CONFIG_TCPIP_RECVMBOX_SIZE=32
|
||||||
|
CONFIG_TCP_MAXRTX=12
|
||||||
|
CONFIG_TCP_SYNMAXRTX=12
|
||||||
|
CONFIG_TCP_MSS=1440
|
||||||
|
CONFIG_TCP_MSL=60000
|
||||||
|
CONFIG_TCP_SND_BUF_DEFAULT=5744
|
||||||
|
CONFIG_TCP_WND_DEFAULT=5744
|
||||||
|
CONFIG_TCP_RECVMBOX_SIZE=6
|
||||||
|
CONFIG_TCP_QUEUE_OOSEQ=y
|
||||||
|
# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
|
||||||
|
CONFIG_TCP_OVERSIZE_MSS=y
|
||||||
|
# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
|
||||||
|
# CONFIG_TCP_OVERSIZE_DISABLE is not set
|
||||||
|
CONFIG_UDP_RECVMBOX_SIZE=6
|
||||||
|
CONFIG_TCPIP_TASK_STACK_SIZE=3072
|
||||||
|
CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
|
||||||
|
# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
|
||||||
|
# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
|
||||||
|
CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
|
||||||
|
# CONFIG_PPP_SUPPORT is not set
|
||||||
|
CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
|
||||||
|
CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
|
||||||
|
CONFIG_ESP32_PTHREAD_STACK_MIN=768
|
||||||
|
CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
|
||||||
|
# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
|
||||||
|
# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
|
||||||
|
CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
|
||||||
|
CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
|
||||||
|
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
|
||||||
|
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
|
||||||
|
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
|
||||||
|
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
|
1
test/sdkconfig.defaults
Normal file
1
test/sdkconfig.defaults
Normal file
@ -0,0 +1 @@
|
|||||||
|
CONFIG_ESP_TASK_WDT=n
|
Reference in New Issue
Block a user