Compare commits
9 Commits
feature/ht
...
feature/ot
Author | SHA1 | Date | |
---|---|---|---|
4ac270475b | |||
0f38c893d9 | |||
f1fb982e21 | |||
1ff0de1f49 | |||
d8c9239ed7 | |||
c985ee6031 | |||
13cbb310b4 | |||
076c4b62fc | |||
91edfa0c63 |
@ -1,6 +1,7 @@
|
|||||||
idf_component_register(SRCS "mesh_ota.c"
|
idf_component_register(SRCS "https_client.c" "mesh_ota.c"
|
||||||
INCLUDE_DIRS "include"
|
INCLUDE_DIRS "include"
|
||||||
REQUIRES nvs_flash
|
REQUIRES nvs_flash
|
||||||
esp_http_client bootloader_support
|
esp_http_client
|
||||||
PRIV_REQUIRES log app_update
|
bootloader_support
|
||||||
)
|
app_update
|
||||||
|
log)
|
||||||
|
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 */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
|||||||
#ifndef H_MESH_OTA
|
#ifndef H_MESH_OTA
|
||||||
#define H_MESH_OTA
|
#define H_MESH_OTA
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "esp_system.h"
|
|
||||||
#include "esp_event.h"
|
|
||||||
#include "esp_log.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
@ -18,10 +13,10 @@
|
|||||||
#include "esp_ota_ops.h"
|
#include "esp_ota_ops.h"
|
||||||
#include "esp_partition.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);
|
||||||
bool bNewerVersion(const char* pu8Local, const char* pu8Remote);
|
esp_err_t errFindImageStart(const char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset);
|
||||||
|
|
||||||
|
|
||||||
#endif /* H_MESH_OTA */
|
#endif /* H_MESH_OTA */
|
||||||
|
@ -1,42 +1,128 @@
|
|||||||
#include "mesh_ota.h"
|
#include "mesh_ota.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 999.999.999
|
* 999.999.999
|
||||||
* Return true if remote version is newer (higher) than local version
|
* Return true if remote version is newer (higher) than local version
|
||||||
*/
|
*/
|
||||||
bool bNewerVersion(const char* pu8Local, const char* pu8Remote){
|
bool bNewerVersion(const char* pu8Local, const char* pu8Remote)
|
||||||
|
{
|
||||||
char u8LocalTmp[12];
|
char u8LocalTmp[12]; //local version
|
||||||
char u8RemoteTmp[12];
|
char u8RemoteTmp[12]; //remote version
|
||||||
|
char* pu8saveptrLocal; //context for strok_r
|
||||||
char* pu8saveptrLocal;
|
char* pu8saveptrRemote; //context for strok_r
|
||||||
char* pu8saveptrRemote;
|
bool bReturn = false; //flag to stop loop
|
||||||
|
uint8_t u8Index = 0; //numbers counter in version string
|
||||||
strcpy(u8LocalTmp, pu8Local);
|
|
||||||
strcpy(u8RemoteTmp, pu8Remote);
|
|
||||||
|
|
||||||
char* pu8TokenLocal = strtok_r(u8LocalTmp, ".", &pu8saveptrLocal);
|
|
||||||
char* pu8TokenRemote = strtok_r(u8RemoteTmp, ".", &pu8saveptrRemote) ;
|
|
||||||
|
|
||||||
|
strcpy(u8LocalTmp, pu8Local); //copy in tmp
|
||||||
bool bReturn = false;
|
strcpy(u8RemoteTmp, pu8Remote); //copy in tmp
|
||||||
|
|
||||||
uint8_t u8Index = 0;
|
char* pu8TokenLocal = strtok_r(u8LocalTmp, ".", &pu8saveptrLocal); //split tokens
|
||||||
|
char* pu8TokenRemote = strtok_r(u8RemoteTmp, ".", &pu8saveptrRemote); //split tokens
|
||||||
while( (u8Index <= 2) && (bReturn == false)){
|
|
||||||
|
while( (u8Index <= 2) && (bReturn == false)) //loop through tokens
|
||||||
|
{
|
||||||
u8Index++;
|
u8Index++;
|
||||||
|
|
||||||
if(atoi(pu8TokenLocal) < atoi(pu8TokenRemote))
|
if(atoi(pu8TokenLocal) < atoi(pu8TokenRemote))
|
||||||
{
|
{
|
||||||
bReturn = true;
|
bReturn = true; //version number difference --> stop loop
|
||||||
}
|
}
|
||||||
|
pu8TokenLocal = strtok_r(NULL, ".", &pu8saveptrLocal); //split tokens
|
||||||
pu8TokenLocal = strtok_r(NULL, ".", &pu8saveptrLocal);
|
pu8TokenRemote = strtok_r(NULL, ".", &pu8saveptrRemote); //split tokens
|
||||||
pu8TokenRemote = strtok_r(NULL, ".", &pu8saveptrRemote) ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return bReturn;
|
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;
|
||||||
|
}
|
||||||
|
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 */
|
@ -1,59 +1,223 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include "unity.h"
|
#include "unity.h"
|
||||||
|
|
||||||
#include "mesh_ota.h"
|
#include "mesh_ota.h"
|
||||||
|
#include "test_image_hex.h"
|
||||||
|
|
||||||
|
// ### ### ### distinguish newer image version ### ### ###
|
||||||
|
|
||||||
TEST_CASE("Remote got patch", "[distinguish newer image version]")
|
TEST_CASE("Remote got patch", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "1.2.3"; //current running image
|
char versionLocal[] = "1.2.3"; //current running image
|
||||||
char versionRemote[] = "1.2.4"; //image from server
|
char versionRemote[] = "1.2.4"; //image from server
|
||||||
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Remote got minor", "[distinguish newer image version]")
|
TEST_CASE("Remote got minor", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "1.2.3"; //current running image
|
char versionLocal[] = "1.2.3"; //current running image
|
||||||
char versionRemote[] = "1.3.3"; //image from server
|
char versionRemote[] = "1.3.3"; //image from server
|
||||||
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Remote got major", "[distinguish newer image version]")
|
TEST_CASE("Remote got major", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "1.2.3"; //current running image
|
char versionLocal[] = "1.2.3"; //current running image
|
||||||
char versionRemote[] = "2.2.3"; //image from server
|
char versionRemote[] = "2.2.3"; //image from server
|
||||||
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Local got patch", "[distinguish newer image version]")
|
TEST_CASE("Local got patch", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "1.2.4"; //current running image
|
char versionLocal[] = "1.2.4"; //current running image
|
||||||
char versionRemote[] = "1.2.3"; //image from server
|
char versionRemote[] = "1.2.3"; //image from server
|
||||||
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Local got minor", "[distinguish newer image version]")
|
TEST_CASE("Local got minor", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "1.3.3"; //current running image
|
char versionLocal[] = "1.3.3"; //current running image
|
||||||
char versionRemote[] = "1.2.3"; //image from server
|
char versionRemote[] = "1.2.3"; //image from server
|
||||||
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Local got major", "[distinguish newer image version]")
|
TEST_CASE("Local got major", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "2.2.3"; //current running image
|
char versionLocal[] = "2.2.3"; //current running image
|
||||||
char versionRemote[] = "1.2.3"; //image from server
|
char versionRemote[] = "1.2.3"; //image from server
|
||||||
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Remote got alpha and patch", "[distinguish newer image version]")
|
TEST_CASE("Remote got alpha and patch", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "2.2.3"; //current running image
|
char versionLocal[] = "2.2.3"; //current running image
|
||||||
char versionRemote[] = "a2.2.4"; //image from server
|
char versionRemote[] = "a2.2.4"; //image from server
|
||||||
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Remote got max", "[distinguish newer image version]")
|
TEST_CASE("Remote got max", "[distinguish newer image version]")
|
||||||
{
|
{
|
||||||
char versionLocal[] = "2.2.3"; //current running image
|
char versionLocal[] = "2.2.3"; //current running image
|
||||||
char versionRemote[] = "999.999.999"; //image from server
|
char versionRemote[] = "999.999.999"; //image from server
|
||||||
TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote) );
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,22 +124,17 @@ menu "Mesh OTA 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 "Mesh OTA 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
|
||||||
|
163
main/main.c
163
main/main.c
@ -13,12 +13,9 @@
|
|||||||
|
|
||||||
#include "mesh_ota.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, };
|
||||||
@ -29,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,
|
||||||
@ -59,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;
|
||||||
|
|
||||||
@ -160,7 +160,8 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -212,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;
|
||||||
}
|
}
|
||||||
@ -262,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);
|
||||||
}
|
}
|
||||||
@ -275,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;
|
||||||
@ -477,18 +483,98 @@ 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){
|
||||||
@ -499,31 +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);
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
char test[] = "1.2.3";
|
|
||||||
|
|
||||||
|
|
||||||
if(bNewerVersion((curPartitionDesc).version, test)){
|
|
||||||
|
|
||||||
ESP_LOGI(MESH_TAG, "Newer Version available");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* tcpip initialization */
|
/* tcpip initialization */
|
||||||
ESP_ERROR_CHECK(esp_netif_init());
|
ESP_ERROR_CHECK(esp_netif_init());
|
||||||
|
|
||||||
@ -586,14 +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(;;)
|
||||||
|
{
|
||||||
|
if(gpio_get_level(0) == 0){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
xTaskCreate(&test, "test_task", 8192, NULL, 5, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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,
|
|
||||||
|
|
171
sdkconfig
171
sdkconfig
@ -67,11 +67,12 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
|||||||
#
|
#
|
||||||
# Security features
|
# Security features
|
||||||
#
|
#
|
||||||
|
CONFIG_SECURE_SIGNED_ON_BOOT=y
|
||||||
CONFIG_SECURE_SIGNED_ON_UPDATE=y
|
CONFIG_SECURE_SIGNED_ON_UPDATE=y
|
||||||
CONFIG_SECURE_SIGNED_APPS=y
|
CONFIG_SECURE_SIGNED_APPS=y
|
||||||
CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT=y
|
CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT=y
|
||||||
CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME=y
|
CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME=y
|
||||||
# CONFIG_SECURE_SIGNED_ON_BOOT_NO_SECURE_BOOT is not set
|
CONFIG_SECURE_SIGNED_ON_BOOT_NO_SECURE_BOOT=y
|
||||||
CONFIG_SECURE_SIGNED_ON_UPDATE_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_BUILD_SIGNED_BINARIES=y
|
||||||
@ -127,7 +128,7 @@ 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
|
||||||
|
|
||||||
@ -151,14 +152,16 @@ CONFIG_MESH_MAX_LAYER=6
|
|||||||
CONFIG_MESH_CHANNEL=13
|
CONFIG_MESH_CHANNEL=13
|
||||||
CONFIG_MESH_ROUTER_SSID="labNet"
|
CONFIG_MESH_ROUTER_SSID="labNet"
|
||||||
CONFIG_MESH_ROUTER_PASSWD="12345678"
|
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="qaws1234"
|
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
|
||||||
|
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
|
# end of Mesh OTA Configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1087,3 +1090,161 @@ 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=y
|
||||||
|
# CONFIG_TASK_WDT_PANIC is not set
|
||||||
|
CONFIG_TASK_WDT_TIMEOUT_S=5
|
||||||
|
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
|
||||||
|
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
|
||||||
|
# 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
|
||||||
|
Reference in New Issue
Block a user