Compare commits
5 Commits
378f6e9ad0
...
feature/me
Author | SHA1 | Date | |
---|---|---|---|
0a32400a04 | |||
0289d3f1dd | |||
c17756160f | |||
d4182eddb2 | |||
0244457d75 |
17
README.md
17
README.md
@ -1,2 +1,19 @@
|
|||||||
# ESP32-Mesh-OTA
|
# ESP32-Mesh-OTA
|
||||||
|
|
||||||
|
## Work in progress
|
||||||
|
<img src="https://patenschaft.bienenweide.org/img/loading.gif" alt="code_example_output" width="50"/>
|
||||||
|
|
||||||
|
## Todo for first release
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
- architecture
|
||||||
|
- full error handling through all functions
|
||||||
|
- export as a component library
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- root node: Download new Firmware from HTTPS server instead using newest ota partition
|
||||||
|
- add example main app
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
idf_component_register(SRCS "mesh_network_handler.c" "mesh_network.c" "mesh_ota.c"
|
idf_component_register(SRCS "Mesh_network_handler.c" "Mesh_network.c" "Mesh_OTA.c"
|
||||||
INCLUDE_DIRS "include"
|
INCLUDE_DIRS "include"
|
||||||
REQUIRES nvs_flash
|
REQUIRES nvs_flash
|
||||||
esp_http_client
|
esp_http_client
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "mesh_ota.h"
|
#include "Mesh_OTA.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 999.999.999
|
* 999.999.999
|
@ -1,11 +1,14 @@
|
|||||||
|
|
||||||
#include "mesh_ota.h"
|
#include "Mesh_OTA.h"
|
||||||
|
|
||||||
static const char *LOG_TAG = "mesh_network";
|
static const char *LOG_TAG = "mesh_network";
|
||||||
static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77};
|
static uint8_t tx_buf[CONFIG_MESH_MESSAGE_SIZE] = { 0, };
|
||||||
static uint8_t tx_buf[TX_SIZE] = { 0, };
|
static uint8_t rx_buf[CONFIG_MESH_MESSAGE_SIZE] = { 0, };
|
||||||
static uint8_t rx_buf[RX_SIZE] = { 0, };
|
|
||||||
static uint8_t u8NodeMAC[6];
|
static uint8_t u8NodeMAC[6];
|
||||||
|
esp_netif_t* netif_sta;
|
||||||
|
bool bIsMeshConnected;
|
||||||
|
int32_t i32MeshLayer;
|
||||||
|
mesh_addr_t mesh_parent_addr;
|
||||||
|
|
||||||
esp_err_t errMeshNetworkInitialize()
|
esp_err_t errMeshNetworkInitialize()
|
||||||
{
|
{
|
||||||
@ -57,7 +60,7 @@ esp_err_t errMeshNetworkInitialize()
|
|||||||
mesh_cfg_t cfg = MESH_INIT_CONFIG_DEFAULT();
|
mesh_cfg_t cfg = MESH_INIT_CONFIG_DEFAULT();
|
||||||
|
|
||||||
/* mesh ID */
|
/* mesh ID */
|
||||||
memcpy((uint8_t *) &cfg.mesh_id, MESH_ID, 6);
|
memcpy((uint8_t *) &cfg.mesh_id, CONFIG_MESH_ID, 6);
|
||||||
|
|
||||||
ERROR_CHECK(errMeshNetworkInitializeRouter(&cfg));
|
ERROR_CHECK(errMeshNetworkInitializeRouter(&cfg));
|
||||||
|
|
||||||
@ -150,8 +153,7 @@ esp_err_t errGetChildren(mesh_addr_t* pChildren, uint16_t* pu16ChildrenSize)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
esp_err_t errSendMeshPacket(mesh_addr_t* pAddrDest, MESH_PACKET_t* pPacket)
|
||||||
esp_err_t errSendPacket(mesh_addr_t* dest, struct ota_mesh_packet* packet)
|
|
||||||
{
|
{
|
||||||
esp_err_t err;
|
esp_err_t err;
|
||||||
mesh_data_t data;
|
mesh_data_t data;
|
||||||
@ -159,28 +161,23 @@ esp_err_t errSendPacket(mesh_addr_t* dest, struct ota_mesh_packet* packet)
|
|||||||
data.size = sizeof(tx_buf);
|
data.size = sizeof(tx_buf);
|
||||||
data.proto = MESH_PROTO_BIN;
|
data.proto = MESH_PROTO_BIN;
|
||||||
data.tos = MESH_TOS_P2P;
|
data.tos = MESH_TOS_P2P;
|
||||||
memcpy(tx_buf, (uint8_t *)packet, sizeof(struct ota_mesh_packet));
|
memcpy(tx_buf, (uint8_t *)pPacket, sizeof(MESH_PACKET_t));
|
||||||
err = esp_mesh_send(dest, &data, MESH_DATA_P2P, NULL, 0);
|
err = esp_mesh_send(pAddrDest, &data, MESH_DATA_P2P, NULL, 0);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
esp_err_t errStartReceiveTask()
|
esp_err_t errStartReceiveTask()
|
||||||
{
|
{
|
||||||
esp_err_t err = ESP_OK;
|
esp_err_t err = ESP_OK;
|
||||||
BaseType_t xReturned;
|
BaseType_t xReturned;
|
||||||
|
|
||||||
//static bool is_comm_p2p_started = false;
|
xReturned = xTaskCreate(vTaskReceiveMeshData, "ReceiveMeshData", 7000, NULL, 5, NULL);
|
||||||
// if (!is_comm_p2p_started)
|
|
||||||
// {
|
|
||||||
//is_comm_p2p_started = true;
|
|
||||||
xReturned = xTaskCreate(vTaskReceiveMeshData, "ReceiveMeshData", 7000, NULL, 5, NULL);
|
|
||||||
|
|
||||||
if(xReturned != pdPASS)
|
if(xReturned != pdPASS)
|
||||||
{
|
{
|
||||||
err = ESP_FAIL;
|
err = ESP_FAIL;
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,11 +188,11 @@ void vTaskReceiveMeshData(void *arg)
|
|||||||
mesh_data_t data;
|
mesh_data_t data;
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
data.data = rx_buf;
|
data.data = rx_buf;
|
||||||
data.size = RX_SIZE;
|
data.size = CONFIG_MESH_MESSAGE_SIZE;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
data.size = RX_SIZE;
|
data.size = CONFIG_MESH_MESSAGE_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)
|
||||||
{
|
{
|
||||||
@ -204,7 +201,7 @@ void vTaskReceiveMeshData(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
struct ota_mesh_packet packet;
|
struct ota_mesh_packet packet;
|
||||||
memcpy(&packet, (uint8_t *)rx_buf, sizeof(struct ota_mesh_packet));
|
memcpy(&packet, (uint8_t *)rx_buf, sizeof(struct ota_mesh_packet));
|
||||||
|
|
||||||
@ -239,8 +236,9 @@ void vTaskReceiveMeshData(void *arg)
|
|||||||
break;
|
break;
|
||||||
}//end switch
|
}//end switch
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
} //end while
|
} //end while
|
||||||
vTaskDelete(NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#include "mesh_ota.h"
|
#include "Mesh_OTA.h"
|
||||||
|
|
||||||
static const char *LOG_TAG = "mesh_network_handler";
|
static const char *LOG_TAG = "mesh_network_handler";
|
||||||
|
|
||||||
@ -76,22 +76,16 @@ void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventI
|
|||||||
mesh_event_connected_t *connected = (mesh_event_connected_t *)vpEventData;
|
mesh_event_connected_t *connected = (mesh_event_connected_t *)vpEventData;
|
||||||
esp_mesh_get_id(&id);
|
esp_mesh_get_id(&id);
|
||||||
i32MeshLayer = connected->self_layer;
|
i32MeshLayer = connected->self_layer;
|
||||||
memcpy(&mesh_parent_addr.addr, connected->connected.bssid, 6);
|
memcpy(&mesh_parent_addr.addr, connected->connected.bssid, 6);
|
||||||
|
|
||||||
//WTF
|
|
||||||
ESP_LOGI(LOG_TAG, "<MESH_EVENT_PARENT_CONNECTED>layer:%d-->%d, parent:"MACSTR"%s, ID:"MACSTR", duty:%d",
|
ESP_LOGI(LOG_TAG, "<MESH_EVENT_PARENT_CONNECTED>layer:%d-->%d, parent:"MACSTR"%s, ID:"MACSTR", duty:%d",
|
||||||
last_layer, i32MeshLayer, MAC2STR(mesh_parent_addr.addr),
|
last_layer, i32MeshLayer, MAC2STR(mesh_parent_addr.addr),
|
||||||
esp_mesh_is_root() ? "<ROOT>" :
|
esp_mesh_is_root() ? "<ROOT>" : (i32MeshLayer == 2) ? "<layer2>" : "", //print own node title
|
||||||
(i32MeshLayer == 2) ? "<layer2>" : "", MAC2STR(id.addr), connected->duty);
|
MAC2STR(id.addr), connected->duty);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
last_layer = i32MeshLayer;
|
last_layer = i32MeshLayer;
|
||||||
//mesh_connected_indicator(i32MeshLayer);
|
|
||||||
bIsMeshConnected = true;
|
bIsMeshConnected = true;
|
||||||
if (esp_mesh_is_root())
|
if (esp_mesh_is_root())
|
||||||
{
|
{
|
||||||
esp_netif_dhcpc_start(netif_sta); //get a IP from router
|
ESP_ERROR_CHECK(esp_netif_dhcpc_start(netif_sta)); //get a IP from router
|
||||||
}
|
}
|
||||||
errStartReceiveTask();//start receiving
|
errStartReceiveTask();//start receiving
|
||||||
}
|
}
|
||||||
@ -101,7 +95,6 @@ void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventI
|
|||||||
mesh_event_disconnected_t *disconnected = (mesh_event_disconnected_t *)vpEventData;
|
mesh_event_disconnected_t *disconnected = (mesh_event_disconnected_t *)vpEventData;
|
||||||
ESP_LOGI(LOG_TAG, "<MESH_EVENT_PARENT_DISCONNECTED>reason:%d", disconnected->reason);
|
ESP_LOGI(LOG_TAG, "<MESH_EVENT_PARENT_DISCONNECTED>reason:%d", disconnected->reason);
|
||||||
bIsMeshConnected = false;
|
bIsMeshConnected = false;
|
||||||
// mesh_disconnected_indicator();
|
|
||||||
i32MeshLayer = esp_mesh_get_layer();
|
i32MeshLayer = esp_mesh_get_layer();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -109,16 +102,10 @@ void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventI
|
|||||||
{
|
{
|
||||||
mesh_event_layer_change_t *layer_change = (mesh_event_layer_change_t *)vpEventData;
|
mesh_event_layer_change_t *layer_change = (mesh_event_layer_change_t *)vpEventData;
|
||||||
i32MeshLayer = layer_change->new_layer;
|
i32MeshLayer = layer_change->new_layer;
|
||||||
|
|
||||||
//WTF
|
|
||||||
ESP_LOGI(LOG_TAG, "<MESH_EVENT_LAYER_CHANGE>layer:%d-->%d%s",
|
ESP_LOGI(LOG_TAG, "<MESH_EVENT_LAYER_CHANGE>layer:%d-->%d%s",
|
||||||
last_layer, i32MeshLayer,
|
last_layer, i32MeshLayer,
|
||||||
esp_mesh_is_root() ? "<ROOT>" :
|
esp_mesh_is_root() ? "<ROOT>" : (i32MeshLayer == 2) ? "<layer2>" : "");
|
||||||
(i32MeshLayer == 2) ? "<layer2>" : "");
|
|
||||||
|
|
||||||
|
|
||||||
last_layer = i32MeshLayer;
|
last_layer = i32MeshLayer;
|
||||||
//mesh_connected_indicator(i32MeshLayer);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MESH_EVENT_ROOT_ADDRESS:
|
case MESH_EVENT_ROOT_ADDRESS:
|
||||||
@ -174,9 +161,7 @@ void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventI
|
|||||||
{
|
{
|
||||||
mesh_event_root_conflict_t *root_conflict = (mesh_event_root_conflict_t *)vpEventData;
|
mesh_event_root_conflict_t *root_conflict = (mesh_event_root_conflict_t *)vpEventData;
|
||||||
ESP_LOGI(LOG_TAG, "<MESH_EVENT_ROOT_ASKED_YIELD>"MACSTR", rssi:%d, capacity:%d",
|
ESP_LOGI(LOG_TAG, "<MESH_EVENT_ROOT_ASKED_YIELD>"MACSTR", rssi:%d, capacity:%d",
|
||||||
MAC2STR(root_conflict->addr),
|
MAC2STR(root_conflict->addr), root_conflict->rssi, root_conflict->capacity);
|
||||||
root_conflict->rssi,
|
|
||||||
root_conflict->capacity);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MESH_EVENT_CHANNEL_SWITCH:
|
case MESH_EVENT_CHANNEL_SWITCH:
|
@ -13,23 +13,20 @@
|
|||||||
#include "esp_ota_ops.h"
|
#include "esp_ota_ops.h"
|
||||||
#include "esp_partition.h"
|
#include "esp_partition.h"
|
||||||
|
|
||||||
#include "mesh_network.h"
|
#include "Mesh_network.h"
|
||||||
|
|
||||||
#define ERASE_NVS //erase non volatile storage if full
|
#define ERASE_NVS //erase non volatile storage if full
|
||||||
|
|
||||||
struct ota_mesh_packet
|
/*
|
||||||
{
|
enum ota_packet_type
|
||||||
enum ota_mesh_packet_type
|
|
||||||
{
|
{
|
||||||
APP_Version_Request,
|
APP_Version_Request,
|
||||||
APP_Version_Response,
|
APP_Version_Response,
|
||||||
OTA_Data,
|
OTA_Data,
|
||||||
OTA_ACK,
|
OTA_ACK,
|
||||||
OTA_Complete
|
OTA_Complete
|
||||||
} type;
|
};
|
||||||
|
*/
|
||||||
uint8_t au8Payload[1024];
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ERROR_CHECK(x) if (err == ESP_OK) \
|
#define ERROR_CHECK(x) if (err == ESP_OK) \
|
||||||
{ \
|
{ \
|
||||||
@ -45,6 +42,4 @@ bool bNewerVersion(const char* pu8Local, const char* pu8Remote);
|
|||||||
esp_err_t errExtractVersionNumber(const char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber);
|
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);
|
esp_err_t errFindImageStart(const char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* H_MESH_OTA */
|
#endif /* H_MESH_OTA */
|
83
components/mesh_ota/include/Mesh_network.h
Normal file
83
components/mesh_ota/include/Mesh_network.h
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#ifndef H_MESH_NETWORK
|
||||||
|
#define H_MESH_NETWORK
|
||||||
|
|
||||||
|
#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"
|
||||||
|
|
||||||
|
#ifndef CONFIG_MESH_MESSAGE_SIZE
|
||||||
|
#define CONFIG_MESH_MESSAGE_SIZE 1500
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_TOPOLOGY
|
||||||
|
#define CONFIG_MESH_TOPOLOGY MESH_TOPO_TREE
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_MAX_LAYER
|
||||||
|
#define CONFIG_MESH_MAX_LAYER 6
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_ID
|
||||||
|
#define CONFIG_MESH_ID "00, 00, 00, 00, 00, 00"
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_AP_AUTHMODE
|
||||||
|
#define CONFIG_MESH_AP_AUTHMODE WIFI_AUTH_WPA2_PSK
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_AP_CONNECTIONS
|
||||||
|
#define CONFIG_MESH_AP_CONNECTIONS 6
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_AP_PASSWD
|
||||||
|
#define CONFIG_MESH_AP_PASSWD "MAP_PASSWD"
|
||||||
|
#endif
|
||||||
|
#ifndef CONFIG_MESH_CHANNEL
|
||||||
|
#define CONFIG_MESH_CHANNEL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_MESH_ROUTER_SSID
|
||||||
|
#define CONFIG_MESH_ROUTER_SSID "ROUTER_SSID"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_MESH_ROUTER_PASSWD
|
||||||
|
#define CONFIG_MESH_ROUTER_PASSWD "ROUTER_PASSWD"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_MESH_ROUTE_TABLE_SIZE
|
||||||
|
#define CONFIG_MESH_ROUTE_TABLE_SIZE 50
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
struct mesh_packet
|
||||||
|
{
|
||||||
|
enum ota_mesh_packet_type {
|
||||||
|
APP_Data, //data for application
|
||||||
|
OTA_Version_Request, //send own version in payload
|
||||||
|
OTA_Version_Respone, //send own version in payload
|
||||||
|
OTA_Data, //send image segment
|
||||||
|
OTA_ACK, //ack image segment
|
||||||
|
OTA_Complete //signal end of image
|
||||||
|
} type;
|
||||||
|
uint8_t au8Payload[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct mesh_packet MESH_PACKET_t;
|
||||||
|
|
||||||
|
extern bool bIsMeshConnected;
|
||||||
|
extern int32_t i32MeshLayer;
|
||||||
|
extern mesh_addr_t mesh_parent_addr;
|
||||||
|
extern esp_netif_t* netif_sta;
|
||||||
|
|
||||||
|
esp_err_t errMeshNetworkInitialize();
|
||||||
|
esp_err_t errMeshNetworkInitializeWiFi();
|
||||||
|
esp_err_t errMeshNetworkInitializeRouter(mesh_cfg_t* cfg);
|
||||||
|
|
||||||
|
bool bCheckMACEquality(uint8_t* pu8aMAC, uint8_t* pu8bMAC);
|
||||||
|
esp_err_t errGetChildren(mesh_addr_t* pChildren, uint16_t* pu16ChildrenSize);
|
||||||
|
void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void* vpEventData);
|
||||||
|
void vIPEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void *event_data);
|
||||||
|
esp_err_t errStartReceiveTask();
|
||||||
|
void vTaskReceiveMeshData(void *arg);
|
||||||
|
esp_err_t errSendMeshPacket(mesh_addr_t* pAddrDest, MESH_PACKET_t* pPacket);
|
||||||
|
|
||||||
|
#endif /* H_MESH_NETWORK */
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
#ifndef H_MESH_NETWORK
|
|
||||||
#define H_MESH_NETWORK
|
|
||||||
|
|
||||||
#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"
|
|
||||||
|
|
||||||
|
|
||||||
#define RX_SIZE (1234)
|
|
||||||
#define TX_SIZE (1234)
|
|
||||||
|
|
||||||
static bool bIsMeshConnected;
|
|
||||||
static int32_t i32MeshLayer;
|
|
||||||
static mesh_addr_t mesh_parent_addr;
|
|
||||||
static esp_netif_t* netif_sta;
|
|
||||||
|
|
||||||
esp_err_t errMeshNetworkInitialize();
|
|
||||||
esp_err_t errMeshNetworkInitializeWiFi();
|
|
||||||
esp_err_t errMeshNetworkInitializeRouter(mesh_cfg_t* cfg);
|
|
||||||
|
|
||||||
|
|
||||||
bool bCheckMACEquality(uint8_t* pu8aMAC, uint8_t* pu8bMAC);
|
|
||||||
esp_err_t errGetChildren(mesh_addr_t* pChildren, uint16_t* pu16ChildrenSize);
|
|
||||||
esp_err_t errSendPacket(mesh_addr_t* dest, struct ota_mesh_packet* packet);
|
|
||||||
void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void* vpEventData);
|
|
||||||
void vIPEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void *event_data);
|
|
||||||
esp_err_t errStartReceiveTask();
|
|
||||||
void vTaskReceiveMeshData(void *arg);
|
|
||||||
|
|
||||||
#endif /* H_MESH_NETWORK */
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
#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"
|
#include "test_image_hex.h"
|
||||||
|
|
||||||
// ### ### ### distinguish newer image version ### ### ###
|
// ### ### ### distinguish newer image version ### ### ###
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
idf_component_register(SRCS "main.c"
|
idf_component_register(SRCS "Main.c"
|
||||||
INCLUDE_DIRS ".")
|
INCLUDE_DIRS ".")
|
||||||
|
@ -105,6 +105,12 @@ menu "Mesh OTA Configuration"
|
|||||||
default 0
|
default 0
|
||||||
help
|
help
|
||||||
mesh network channel.
|
mesh network channel.
|
||||||
|
|
||||||
|
config MESH_ID
|
||||||
|
string "ID for mesh network"
|
||||||
|
default "00, 00, 00, 00, 00, 00"
|
||||||
|
help
|
||||||
|
Mesh network id like MAC addr.
|
||||||
|
|
||||||
config MESH_ROUTER_SSID
|
config MESH_ROUTER_SSID
|
||||||
string "Router SSID"
|
string "Router SSID"
|
||||||
@ -158,6 +164,13 @@ menu "Mesh OTA Configuration"
|
|||||||
help
|
help
|
||||||
The number of devices over the network(max: 300).
|
The number of devices over the network(max: 300).
|
||||||
|
|
||||||
|
config MESH_MESSAGE_SIZE
|
||||||
|
int "Mesh network messages size"
|
||||||
|
range 1 65536
|
||||||
|
default 1500
|
||||||
|
help
|
||||||
|
Length of messages deliveres by the mesh network.
|
||||||
|
|
||||||
config OTA_HTTPS_SERVER_COMMON_NAME
|
config OTA_HTTPS_SERVER_COMMON_NAME
|
||||||
string "Common name OTA server"
|
string "Common name OTA server"
|
||||||
default "exmaple.com"
|
default "exmaple.com"
|
||||||
|
@ -11,13 +11,10 @@
|
|||||||
#include "esp_ota_ops.h"
|
#include "esp_ota_ops.h"
|
||||||
#include "esp_partition.h"
|
#include "esp_partition.h"
|
||||||
|
|
||||||
#include "mesh_ota.h"
|
#include "Mesh_OTA.h"
|
||||||
|
|
||||||
static const char *LOG_TAG = "esp_main";
|
static const char *LOG_TAG = "esp_main";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
{
|
{
|
||||||
esp_err_t err = ESP_OK;
|
esp_err_t err = ESP_OK;
|
||||||
@ -29,10 +26,6 @@ void app_main(void)
|
|||||||
|
|
||||||
//start app
|
//start app
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
sdkconfig
34
sdkconfig
@ -150,6 +150,7 @@ 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_ID="00, 00, 00, 00, 00, 00"
|
||||||
CONFIG_MESH_ROUTER_SSID="labNet"
|
CONFIG_MESH_ROUTER_SSID="labNet"
|
||||||
CONFIG_MESH_ROUTER_PASSWD="12345678"
|
CONFIG_MESH_ROUTER_PASSWD="12345678"
|
||||||
CONFIG_WIFI_AUTH_WPA2_PSK=y
|
CONFIG_WIFI_AUTH_WPA2_PSK=y
|
||||||
@ -158,6 +159,7 @@ 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_MESH_MESSAGE_SIZE=1500
|
||||||
CONFIG_OTA_HTTPS_SERVER_COMMON_NAME="ota.hendrikschutter.com"
|
CONFIG_OTA_HTTPS_SERVER_COMMON_NAME="ota.hendrikschutter.com"
|
||||||
CONFIG_OTA_HTTPS_SERVER_PORT="443"
|
CONFIG_OTA_HTTPS_SERVER_PORT="443"
|
||||||
CONFIG_OTA_HTTPS_URL="https://ota.hendrikschutter.com/mesh_ota.bin"
|
CONFIG_OTA_HTTPS_URL="https://ota.hendrikschutter.com/mesh_ota.bin"
|
||||||
@ -362,6 +364,7 @@ CONFIG_ESP_CONSOLE_UART_DEFAULT=y
|
|||||||
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
||||||
# CONFIG_ESP_CONSOLE_NONE is not set
|
# CONFIG_ESP_CONSOLE_NONE is not set
|
||||||
CONFIG_ESP_CONSOLE_UART=y
|
CONFIG_ESP_CONSOLE_UART=y
|
||||||
|
CONFIG_ESP_CONSOLE_MULTIPLE_UART=y
|
||||||
CONFIG_ESP_CONSOLE_UART_NUM=0
|
CONFIG_ESP_CONSOLE_UART_NUM=0
|
||||||
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
||||||
CONFIG_ESP_INT_WDT=y
|
CONFIG_ESP_INT_WDT=y
|
||||||
@ -605,7 +608,8 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304
|
|||||||
CONFIG_FREERTOS_ISR_STACKSIZE=1536
|
CONFIG_FREERTOS_ISR_STACKSIZE=1536
|
||||||
# CONFIG_FREERTOS_LEGACY_HOOKS is not set
|
# CONFIG_FREERTOS_LEGACY_HOOKS is not set
|
||||||
CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
|
CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
|
||||||
# CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION is not set
|
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
|
||||||
|
# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
|
||||||
CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
|
CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
|
||||||
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
|
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
|
||||||
CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
|
CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
|
||||||
@ -702,7 +706,6 @@ CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
|
|||||||
#
|
#
|
||||||
# TCP
|
# TCP
|
||||||
#
|
#
|
||||||
CONFIG_LWIP_TCP_ISN_HOOK=y
|
|
||||||
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
||||||
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
||||||
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
||||||
@ -730,6 +733,14 @@ CONFIG_LWIP_MAX_UDP_PCBS=16
|
|||||||
CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
|
CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
|
||||||
# end of UDP
|
# end of UDP
|
||||||
|
|
||||||
|
#
|
||||||
|
# Checksums
|
||||||
|
#
|
||||||
|
# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set
|
||||||
|
# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set
|
||||||
|
CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
|
||||||
|
# end of Checksums
|
||||||
|
|
||||||
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
|
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
|
||||||
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
|
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
|
||||||
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
|
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
|
||||||
@ -762,6 +773,20 @@ CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
|
|||||||
|
|
||||||
CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hooks
|
||||||
|
#
|
||||||
|
# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set
|
||||||
|
CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y
|
||||||
|
# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set
|
||||||
|
CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y
|
||||||
|
# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set
|
||||||
|
# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set
|
||||||
|
CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
|
||||||
|
# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set
|
||||||
|
# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set
|
||||||
|
# end of Hooks
|
||||||
|
|
||||||
#
|
#
|
||||||
# Debug
|
# Debug
|
||||||
#
|
#
|
||||||
@ -772,8 +797,10 @@ CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
|||||||
# CONFIG_LWIP_SOCKETS_DEBUG is not set
|
# CONFIG_LWIP_SOCKETS_DEBUG is not set
|
||||||
# CONFIG_LWIP_IP_DEBUG is not set
|
# CONFIG_LWIP_IP_DEBUG is not set
|
||||||
# CONFIG_LWIP_ICMP_DEBUG is not set
|
# CONFIG_LWIP_ICMP_DEBUG is not set
|
||||||
|
# CONFIG_LWIP_DHCP_DEBUG is not set
|
||||||
# CONFIG_LWIP_IP6_DEBUG is not set
|
# CONFIG_LWIP_IP6_DEBUG is not set
|
||||||
# CONFIG_LWIP_ICMP6_DEBUG is not set
|
# CONFIG_LWIP_ICMP6_DEBUG is not set
|
||||||
|
# CONFIG_LWIP_TCP_DEBUG is not set
|
||||||
# end of Debug
|
# end of Debug
|
||||||
# end of LWIP
|
# end of LWIP
|
||||||
|
|
||||||
@ -1082,6 +1109,7 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
|
|||||||
# CONFIG_WPA_DEBUG_PRINT is not set
|
# CONFIG_WPA_DEBUG_PRINT is not set
|
||||||
# CONFIG_WPA_TESTING_OPTIONS is not set
|
# CONFIG_WPA_TESTING_OPTIONS is not set
|
||||||
# CONFIG_WPA_WPS_WARS is not set
|
# CONFIG_WPA_WPS_WARS is not set
|
||||||
|
# CONFIG_WPA_11KV_SUPPORT is not set
|
||||||
# end of Supplicant
|
# end of Supplicant
|
||||||
# end of Component config
|
# end of Component config
|
||||||
|
|
||||||
@ -1204,7 +1232,7 @@ CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
|
|||||||
CONFIG_MB_TIMER_PORT_ENABLED=y
|
CONFIG_MB_TIMER_PORT_ENABLED=y
|
||||||
CONFIG_MB_TIMER_GROUP=0
|
CONFIG_MB_TIMER_GROUP=0
|
||||||
CONFIG_MB_TIMER_INDEX=0
|
CONFIG_MB_TIMER_INDEX=0
|
||||||
# CONFIG_SUPPORT_STATIC_ALLOCATION is not set
|
# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set
|
||||||
CONFIG_TIMER_TASK_PRIORITY=1
|
CONFIG_TIMER_TASK_PRIORITY=1
|
||||||
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
||||||
CONFIG_TIMER_QUEUE_LENGTH=10
|
CONFIG_TIMER_QUEUE_LENGTH=10
|
||||||
|
@ -321,6 +321,7 @@ CONFIG_ESP_CONSOLE_UART_DEFAULT=y
|
|||||||
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
|
||||||
# CONFIG_ESP_CONSOLE_NONE is not set
|
# CONFIG_ESP_CONSOLE_NONE is not set
|
||||||
CONFIG_ESP_CONSOLE_UART=y
|
CONFIG_ESP_CONSOLE_UART=y
|
||||||
|
CONFIG_ESP_CONSOLE_MULTIPLE_UART=y
|
||||||
CONFIG_ESP_CONSOLE_UART_NUM=0
|
CONFIG_ESP_CONSOLE_UART_NUM=0
|
||||||
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
|
||||||
CONFIG_ESP_INT_WDT=y
|
CONFIG_ESP_INT_WDT=y
|
||||||
@ -560,7 +561,8 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304
|
|||||||
CONFIG_FREERTOS_ISR_STACKSIZE=1536
|
CONFIG_FREERTOS_ISR_STACKSIZE=1536
|
||||||
# CONFIG_FREERTOS_LEGACY_HOOKS is not set
|
# CONFIG_FREERTOS_LEGACY_HOOKS is not set
|
||||||
CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
|
CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
|
||||||
# CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION is not set
|
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
|
||||||
|
# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
|
||||||
CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
|
CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
|
||||||
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
|
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
|
||||||
CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
|
CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
|
||||||
@ -657,7 +659,6 @@ CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
|
|||||||
#
|
#
|
||||||
# TCP
|
# TCP
|
||||||
#
|
#
|
||||||
CONFIG_LWIP_TCP_ISN_HOOK=y
|
|
||||||
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
||||||
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
||||||
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
||||||
@ -685,6 +686,14 @@ CONFIG_LWIP_MAX_UDP_PCBS=16
|
|||||||
CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
|
CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
|
||||||
# end of UDP
|
# end of UDP
|
||||||
|
|
||||||
|
#
|
||||||
|
# Checksums
|
||||||
|
#
|
||||||
|
# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set
|
||||||
|
# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set
|
||||||
|
CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
|
||||||
|
# end of Checksums
|
||||||
|
|
||||||
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
|
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
|
||||||
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
|
CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
|
||||||
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
|
# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
|
||||||
@ -717,6 +726,20 @@ CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
|
|||||||
|
|
||||||
CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hooks
|
||||||
|
#
|
||||||
|
# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set
|
||||||
|
CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y
|
||||||
|
# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set
|
||||||
|
CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y
|
||||||
|
# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set
|
||||||
|
# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set
|
||||||
|
CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
|
||||||
|
# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set
|
||||||
|
# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set
|
||||||
|
# end of Hooks
|
||||||
|
|
||||||
#
|
#
|
||||||
# Debug
|
# Debug
|
||||||
#
|
#
|
||||||
@ -727,8 +750,10 @@ CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
|||||||
# CONFIG_LWIP_SOCKETS_DEBUG is not set
|
# CONFIG_LWIP_SOCKETS_DEBUG is not set
|
||||||
# CONFIG_LWIP_IP_DEBUG is not set
|
# CONFIG_LWIP_IP_DEBUG is not set
|
||||||
# CONFIG_LWIP_ICMP_DEBUG is not set
|
# CONFIG_LWIP_ICMP_DEBUG is not set
|
||||||
|
# CONFIG_LWIP_DHCP_DEBUG is not set
|
||||||
# CONFIG_LWIP_IP6_DEBUG is not set
|
# CONFIG_LWIP_IP6_DEBUG is not set
|
||||||
# CONFIG_LWIP_ICMP6_DEBUG is not set
|
# CONFIG_LWIP_ICMP6_DEBUG is not set
|
||||||
|
# CONFIG_LWIP_TCP_DEBUG is not set
|
||||||
# end of Debug
|
# end of Debug
|
||||||
# end of LWIP
|
# end of LWIP
|
||||||
|
|
||||||
@ -1037,6 +1062,7 @@ CONFIG_WPA_MBEDTLS_CRYPTO=y
|
|||||||
# CONFIG_WPA_DEBUG_PRINT is not set
|
# CONFIG_WPA_DEBUG_PRINT is not set
|
||||||
# CONFIG_WPA_TESTING_OPTIONS is not set
|
# CONFIG_WPA_TESTING_OPTIONS is not set
|
||||||
# CONFIG_WPA_WPS_WARS is not set
|
# CONFIG_WPA_WPS_WARS is not set
|
||||||
|
# CONFIG_WPA_11KV_SUPPORT is not set
|
||||||
# end of Supplicant
|
# end of Supplicant
|
||||||
# end of Component config
|
# end of Component config
|
||||||
|
|
||||||
@ -1155,7 +1181,7 @@ CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
|
|||||||
CONFIG_MB_TIMER_PORT_ENABLED=y
|
CONFIG_MB_TIMER_PORT_ENABLED=y
|
||||||
CONFIG_MB_TIMER_GROUP=0
|
CONFIG_MB_TIMER_GROUP=0
|
||||||
CONFIG_MB_TIMER_INDEX=0
|
CONFIG_MB_TIMER_INDEX=0
|
||||||
# CONFIG_SUPPORT_STATIC_ALLOCATION is not set
|
# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set
|
||||||
CONFIG_TIMER_TASK_PRIORITY=1
|
CONFIG_TIMER_TASK_PRIORITY=1
|
||||||
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
||||||
CONFIG_TIMER_QUEUE_LENGTH=10
|
CONFIG_TIMER_QUEUE_LENGTH=10
|
||||||
|
Reference in New Issue
Block a user