added control for http_ota task

This commit is contained in:
2021-01-17 23:27:01 +01:00
parent 62d16a437a
commit c6829f0483
7 changed files with 665 additions and 472 deletions

View File

@ -16,30 +16,34 @@
#include "Mesh_network.h"
#define ERASE_NVS //erase non volatile storage if full
/*
enum ota_packet_type
{
APP_Version_Request,
APP_Version_Response,
OTA_Data,
OTA_ACK,
OTA_Complete
};
*/
#define QUEUE_NODES_SIZE 10
#define QUEUE_MESSAGE_OTA_SIZE 10
#define SERVER_CHECK_INTERVAL 30 //in seconds
#define ERROR_CHECK(x) if (err == ESP_OK) \
{ \
err = (x); \
if (err != ESP_OK) \
{ \
ESP_LOGE(LOG_TAG, "%s failed with error: 0x%x -> %s", #x, err, esp_err_to_name(err)); \
ESP_LOGE(LOG_TAG, "%s failed with error: 0x%x -> %s", #x, err, esp_err_to_name(err)); \
} \
} \
esp_err_t errMeshOTAInitialize();
//helper functions
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);
//Handler
void vAddNodeToPossibleUpdatableQueue(uint8_t* pu8Data);
void vAddOTAControllMessageToQueue(MESH_PACKET_t* puMeshPacket);
void vChangeStateOfServerWorker(bool state);
//Tasks
void vTaskServerWorker(void *arg);
#endif /* H_MESH_OTA */

View File

@ -59,6 +59,7 @@ struct meshPacket
OTA_Complete //signal end of image
} type;
uint8_t au8Payload[1024];
mesh_addr_t meshSenderAddr;
};
typedef struct meshPacket MESH_PACKET_t;
@ -68,12 +69,18 @@ extern int32_t i32MeshLayer;
extern mesh_addr_t meshParentAddr;
extern esp_netif_t* netif_sta;
extern uint8_t u8ownMAC[6];
extern void (*pOTAChildConnectHandle)(uint8_t* );
extern void (*pChangeStateOfServerWorkerHandle)(bool );
esp_err_t errMeshNetworkInitialize();
esp_err_t errMeshNetworkInitializeWiFi();
esp_err_t errMeshNetworkInitializeRouter(mesh_cfg_t* cfg);
esp_err_t errMeshNetworkSetAppReceiveHandle(void (*pFuncParam)(uint8_t * pu8Data, uint8_t* pu8Sender));
esp_err_t errMeshNetworkSetAppReceiveHandle(void (*pAppRxHandleTmp)(uint8_t * pu8Data, uint8_t* pu8Sender));
esp_err_t errMeshNetworkSetChildConnectedHandle(void (*pChildConnectHandleTmp)(uint8_t * pu8Data));
esp_err_t errMeshNetworkSetOTAMessageHandleHandle(void (*pOTAMessageHandleTmp)(MESH_PACKET_t* puMeshPacket));
esp_err_t errMeshNetworkSetChangeStateOfServerWorkerHandle(void (*pChangeStateOfServerWorkerHandleTmp)(bool bState));
bool bCheckMACEquality(uint8_t* pu8aMAC, uint8_t* pu8bMAC);
void vGetOwnAddr(mesh_addr_t* pMeshOwnAddr);