ESP32 OTA firmware updates via WiFi mesh network.
https://hendrikschutter.com
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.3 KiB
83 lines
2.3 KiB
#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 */ |
|
|
|
|