updated tests, changed file names, new mesh packet type
This commit is contained in:
parent
d4182eddb2
commit
c17756160f
@ -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"
|
||||
REQUIRES nvs_flash
|
||||
esp_http_client
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "mesh_ota.h"
|
||||
#include "Mesh_OTA.h"
|
||||
|
||||
/*
|
||||
* 999.999.999
|
@ -1,11 +1,14 @@
|
||||
|
||||
#include "mesh_ota.h"
|
||||
#include "Mesh_OTA.h"
|
||||
|
||||
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[TX_SIZE] = { 0, };
|
||||
static uint8_t rx_buf[RX_SIZE] = { 0, };
|
||||
static uint8_t tx_buf[CONFIG_MESH_MESSAGE_SIZE] = { 0, };
|
||||
static uint8_t rx_buf[CONFIG_MESH_MESSAGE_SIZE] = { 0, };
|
||||
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()
|
||||
{
|
||||
@ -13,7 +16,7 @@ esp_err_t errMeshNetworkInitialize()
|
||||
esp_err_t err;
|
||||
bIsMeshConnected = false;
|
||||
i32MeshLayer = -1;
|
||||
//netif_sta = NULL;
|
||||
netif_sta = NULL;
|
||||
|
||||
err = nvs_flash_init(); //init non-volatile storage
|
||||
|
||||
@ -57,7 +60,7 @@ esp_err_t errMeshNetworkInitialize()
|
||||
mesh_cfg_t cfg = MESH_INIT_CONFIG_DEFAULT();
|
||||
|
||||
/* 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));
|
||||
|
||||
@ -150,8 +153,7 @@ esp_err_t errGetChildren(mesh_addr_t* pChildren, uint16_t* pu16ChildrenSize)
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
esp_err_t errSendPacket(mesh_addr_t* dest, struct ota_mesh_packet* packet)
|
||||
esp_err_t errSendMeshPacket(mesh_addr_t* pAddrDest, MESH_PACKET_t* pPacket)
|
||||
{
|
||||
esp_err_t err;
|
||||
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.proto = MESH_PROTO_BIN;
|
||||
data.tos = MESH_TOS_P2P;
|
||||
memcpy(tx_buf, (uint8_t *)packet, sizeof(struct ota_mesh_packet));
|
||||
err = esp_mesh_send(dest, &data, MESH_DATA_P2P, NULL, 0);
|
||||
memcpy(tx_buf, (uint8_t *)pPacket, sizeof(MESH_PACKET_t));
|
||||
err = esp_mesh_send(pAddrDest, &data, MESH_DATA_P2P, NULL, 0);
|
||||
return err;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
esp_err_t errStartReceiveTask()
|
||||
{
|
||||
esp_err_t err = ESP_OK;
|
||||
BaseType_t xReturned;
|
||||
|
||||
//static bool is_comm_p2p_started = false;
|
||||
// if (!is_comm_p2p_started)
|
||||
// {
|
||||
//is_comm_p2p_started = true;
|
||||
xReturned = xTaskCreate(vTaskReceiveMeshData, "ReceiveMeshData", 7000, NULL, 5, NULL);
|
||||
xReturned = xTaskCreate(vTaskReceiveMeshData, "ReceiveMeshData", 7000, NULL, 5, NULL);
|
||||
|
||||
if(xReturned != pdPASS)
|
||||
{
|
||||
err = ESP_FAIL;
|
||||
}
|
||||
//}
|
||||
if(xReturned != pdPASS)
|
||||
{
|
||||
err = ESP_FAIL;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -191,11 +188,11 @@ void vTaskReceiveMeshData(void *arg)
|
||||
mesh_data_t data;
|
||||
int flag = 0;
|
||||
data.data = rx_buf;
|
||||
data.size = RX_SIZE;
|
||||
data.size = CONFIG_MESH_MESSAGE_SIZE;
|
||||
|
||||
while (true)
|
||||
{
|
||||
data.size = RX_SIZE;
|
||||
data.size = CONFIG_MESH_MESSAGE_SIZE;
|
||||
err = esp_mesh_recv(&from, &data, portMAX_DELAY, &flag, NULL, 0);
|
||||
if (err != ESP_OK || !data.size)
|
||||
{
|
||||
@ -204,7 +201,7 @@ void vTaskReceiveMeshData(void *arg)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
struct ota_mesh_packet packet;
|
||||
memcpy(&packet, (uint8_t *)rx_buf, sizeof(struct ota_mesh_packet));
|
||||
|
||||
@ -239,8 +236,9 @@ void vTaskReceiveMeshData(void *arg)
|
||||
break;
|
||||
}//end switch
|
||||
|
||||
*/
|
||||
|
||||
} //end while
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
#include "mesh_ota.h"
|
||||
#include "Mesh_OTA.h"
|
||||
|
||||
static const char *LOG_TAG = "mesh_network_handler";
|
||||
|
||||
@ -85,10 +85,7 @@ void vMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventI
|
||||
bIsMeshConnected = true;
|
||||
if (esp_mesh_is_root())
|
||||
{
|
||||
ESP_LOGE(LOG_TAG, "addr %p", netif_sta);
|
||||
|
||||
|
||||
//ESP_ERROR_CHECK(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
|
||||
}
|
@ -13,23 +13,20 @@
|
||||
#include "esp_ota_ops.h"
|
||||
#include "esp_partition.h"
|
||||
|
||||
#include "mesh_network.h"
|
||||
#include "Mesh_network.h"
|
||||
|
||||
#define ERASE_NVS //erase non volatile storage if full
|
||||
|
||||
struct ota_mesh_packet
|
||||
{
|
||||
enum ota_mesh_packet_type
|
||||
/*
|
||||
enum ota_packet_type
|
||||
{
|
||||
APP_Version_Request,
|
||||
APP_Version_Response,
|
||||
OTA_Data,
|
||||
OTA_ACK,
|
||||
OTA_Complete
|
||||
} type;
|
||||
|
||||
uint8_t au8Payload[1024];
|
||||
};
|
||||
};
|
||||
*/
|
||||
|
||||
#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 errFindImageStart(const char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset);
|
||||
|
||||
|
||||
|
||||
#endif /* H_MESH_OTA */
|
78
components/mesh_ota/include/Mesh_network.h
Normal file
78
components/mesh_ota/include/Mesh_network.h
Normal file
@ -0,0 +1,78 @@
|
||||
#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
|
||||
{
|
||||
//todo type
|
||||
//todo lenght
|
||||
|
||||
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 = NULL;
|
||||
|
||||
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 "unity.h"
|
||||
|
||||
#include "mesh_ota.h"
|
||||
#include "Mesh_OTA.h"
|
||||
#include "test_image_hex.h"
|
||||
|
||||
// ### ### ### distinguish newer image version ### ### ###
|
||||
|
@ -1,2 +1,2 @@
|
||||
idf_component_register(SRCS "main.c"
|
||||
idf_component_register(SRCS "Main.c"
|
||||
INCLUDE_DIRS ".")
|
||||
|
@ -105,6 +105,12 @@ menu "Mesh OTA Configuration"
|
||||
default 0
|
||||
help
|
||||
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
|
||||
string "Router SSID"
|
||||
@ -158,6 +164,13 @@ menu "Mesh OTA Configuration"
|
||||
help
|
||||
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
|
||||
string "Common name OTA server"
|
||||
default "exmaple.com"
|
||||
|
@ -11,13 +11,10 @@
|
||||
#include "esp_ota_ops.h"
|
||||
#include "esp_partition.h"
|
||||
|
||||
#include "mesh_ota.h"
|
||||
#include "Mesh_OTA.h"
|
||||
|
||||
static const char *LOG_TAG = "esp_main";
|
||||
|
||||
|
||||
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
esp_err_t err = ESP_OK;
|
||||
@ -29,10 +26,6 @@ void app_main(void)
|
||||
|
||||
//start app
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -150,6 +150,7 @@ CONFIG_MESH_PS_NETWORK_DUTY_APPLIED_ENTIRE=y
|
||||
CONFIG_MESH_PS_NWK_DUTY_RULE=0
|
||||
CONFIG_MESH_MAX_LAYER=6
|
||||
CONFIG_MESH_CHANNEL=13
|
||||
CONFIG_MESH_ID="00, 00, 00, 00, 00, 00"
|
||||
CONFIG_MESH_ROUTER_SSID="labNet"
|
||||
CONFIG_MESH_ROUTER_PASSWD="12345678"
|
||||
CONFIG_WIFI_AUTH_WPA2_PSK=y
|
||||
@ -158,6 +159,7 @@ CONFIG_MESH_AP_AUTHMODE=3
|
||||
CONFIG_MESH_AP_PASSWD="qaws1234"
|
||||
CONFIG_MESH_AP_CONNECTIONS=6
|
||||
CONFIG_MESH_ROUTE_TABLE_SIZE=50
|
||||
CONFIG_MESH_MESSAGE_SIZE=1500
|
||||
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"
|
||||
|
Loading…
Reference in New Issue
Block a user