refactor #2
|
@ -1,3 +1,13 @@
|
|||
/**
|
||||
* @file HTTPS_Client.c
|
||||
* @brief Used to download the OTA image from the server
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Additional Infos: Connects via HTTPS and HTTPS Basic Auth to the Server.
|
||||
* Downloads the image in segments
|
||||
*/
|
||||
|
||||
#include "HTTPS_Client.h"
|
||||
|
||||
static const char *TAG = "https_client";
|
||||
|
@ -17,6 +27,16 @@ https_client_ret_t errHTTPSClientConnectToServer(void);
|
|||
https_client_ret_t errHTTPSClientValidateServer(void);
|
||||
https_client_ret_t errHTTPSClientSendRequest(void);
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t errHTTPSClientInitialize(void)
|
||||
* @brief Initialize the client
|
||||
* @param void
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Initialize embedTLS
|
||||
*/
|
||||
https_client_ret_t errHTTPSClientInitialize(void)
|
||||
{
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
|
@ -31,6 +51,18 @@ https_client_ret_t errHTTPSClientInitialize(void)
|
|||
return i32RetHTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t errHTTPSClientRetrieveData(char* const cpu8Data, const uint32_t* const cpcu32DataLenght, uint32_t* pu32BytesRead)
|
||||
* @brief receive a image segment from server
|
||||
* @param cpu8Data data buffer
|
||||
* @param cpcu32DataLenght desired byte amount
|
||||
* @param pu32BytesRead actual received byte amount
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Read segement and handle all events like EOF or timeout
|
||||
*/
|
||||
https_client_ret_t errHTTPSClientRetrieveData(char* const cpu8Data, const uint32_t* const cpcu32DataLenght, uint32_t* pu32BytesRead)
|
||||
{
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
|
@ -86,6 +118,16 @@ https_client_ret_t errHTTPSClientRetrieveData(char* const cpu8Data, const uint32
|
|||
return i32RetHTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t errHTTPSClientReset(void)
|
||||
* @brief reset client for next receive of image
|
||||
* @param void
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* reset session
|
||||
*/
|
||||
https_client_ret_t errHTTPSClientReset(void)
|
||||
{
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
|
@ -103,9 +145,18 @@ https_client_ret_t errHTTPSClientReset(void)
|
|||
return i32RetHTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t https_clientInitEmbedTLS(void)
|
||||
* @brief init embedTLS
|
||||
* @param void
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* attach certs for tls
|
||||
*/
|
||||
https_client_ret_t https_clientInitEmbedTLS(void)
|
||||
{
|
||||
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
int32_t i32RetEmbedTLS = ESP_OK;
|
||||
static bool bAlreadySetup = false;
|
||||
|
@ -168,20 +219,13 @@ https_client_ret_t https_clientInitEmbedTLS(void)
|
|||
i32RetEmbedTLS = mbedtls_ssl_setup(&sHTTPS_ClientConfig.ssl, &sHTTPS_ClientConfig.conf); //call this only once
|
||||
if(i32RetEmbedTLS != ESP_OK)
|
||||
{
|
||||
ESP_LOGE(TAG, "mbedtls_ssl_setup returned 0x%x\n\n", i32RetEmbedTLS);
|
||||
|
||||
// uint8_t buffer[20];
|
||||
//mbedtls_strerror(i32RetEmbedTLS, buffer, 20);
|
||||
//ESP_LOGE(TAG, "%s", buffer);
|
||||
ESP_LOGE(TAG, "mbedtls_ssl_setup returned 0x%x\n", i32RetEmbedTLS);
|
||||
}
|
||||
else
|
||||
{
|
||||
bAlreadySetup = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(i32RetEmbedTLS == ESP_OK)
|
||||
|
@ -197,6 +241,16 @@ https_client_ret_t https_clientInitEmbedTLS(void)
|
|||
return i32RetHTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t errHTTPSClientConnectToServer(void)
|
||||
* @brief connect to server
|
||||
* @param void
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* open TLS session
|
||||
*/
|
||||
https_client_ret_t errHTTPSClientConnectToServer(void)
|
||||
{
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
|
@ -230,6 +284,16 @@ https_client_ret_t errHTTPSClientConnectToServer(void)
|
|||
return i32RetHTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t errHTTPSClientValidateServer(void)
|
||||
* @brief validate server
|
||||
* @param void
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* check CDN and cert
|
||||
*/
|
||||
https_client_ret_t errHTTPSClientValidateServer(void)
|
||||
{
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
|
@ -248,6 +312,16 @@ https_client_ret_t errHTTPSClientValidateServer(void)
|
|||
return i32RetHTTPClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn https_client_ret_t errHTTPSClientSendRequest(void)
|
||||
* @brief send request to server
|
||||
* @param void
|
||||
* @return HTTPS_Client error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* send HTTP GET request
|
||||
*/
|
||||
https_client_ret_t errHTTPSClientSendRequest(void)
|
||||
{
|
||||
https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK;
|
||||
|
|
|
@ -1,9 +1,16 @@
|
|||
/**
|
||||
* @file Mesh_Network.c
|
||||
* @brief Mesh network layer used by OTA and APP
|
||||
* @author Hendrik Schutter, init based in ESP32-IDE code
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Additional Infos: Start network and send and receive data.
|
||||
*/
|
||||
|
||||
#include "Mesh_Network.h"
|
||||
|
||||
static const char *LOG_TAG = "mesh_network";
|
||||
|
||||
|
||||
//w: errMeshNetworkInitialize
|
||||
//r: errMeshNetworkInitialize;vMeshNetworkGetOwnAddr;errMeshNetworkGetChildren
|
||||
uint8_t u8ownMAC[6];
|
||||
|
@ -30,7 +37,17 @@ void (*pOTAChildConnectHandle)(const uint8_t* const);
|
|||
void (*pOTAMessageHandle)(const MESH_PACKET_t* const);
|
||||
void (*pChangeStateOfServerWorkerHandle)(const bool );
|
||||
|
||||
esp_err_t errMeshNetworkInitialize()
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkInitialize()
|
||||
* @brief Starts the mesh network
|
||||
* @param void
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter, init based in ESP32-IDE code
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Initialize the network
|
||||
*/
|
||||
esp_err_t errMeshNetworkInitialize(void)
|
||||
{
|
||||
//init module variables
|
||||
esp_err_t err;
|
||||
|
@ -107,6 +124,16 @@ esp_err_t errMeshNetworkInitialize()
|
|||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkInitializeWiFi()
|
||||
* @brief Starts the WiFI
|
||||
* @param void
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter, init based in ESP32-IDE code
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* start the wifi
|
||||
*/
|
||||
esp_err_t errMeshNetworkInitializeWiFi()
|
||||
{
|
||||
//wifi initialization
|
||||
|
@ -119,6 +146,16 @@ esp_err_t errMeshNetworkInitializeWiFi()
|
|||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkInitializeRouter(mesh_cfg_t* cfg)
|
||||
* @brief Starts the router
|
||||
* @param cfg router config
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter, init based in ESP32-IDE code
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Initialize the network
|
||||
*/
|
||||
esp_err_t errMeshNetworkInitializeRouter(mesh_cfg_t* cfg)
|
||||
{
|
||||
//router initialization
|
||||
|
@ -131,24 +168,56 @@ esp_err_t errMeshNetworkInitializeRouter(mesh_cfg_t* cfg)
|
|||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkSetChildConnectedHandle(void (*pChildConnectHandleTmp)(const uint8_t* const cpcu8Data))
|
||||
* @brief set callback for event when child connects
|
||||
* @param (*pChildConnectHandleTmp)(const uint8_t* const cpcu8Data) function pointer
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*/
|
||||
esp_err_t errMeshNetworkSetChildConnectedHandle(void (*pChildConnectHandleTmp)(const uint8_t* const cpcu8Data))
|
||||
{
|
||||
pOTAChildConnectHandle = pChildConnectHandleTmp;
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkSetAppReceiveHandle(void (*pAppRxHandleTmp)(const uint8_t* const cpcu8Data, const uint8_t* const pu8Sender))
|
||||
* @brief set callback for event when application data is received
|
||||
* @param (*pAppRxHandleTmp)(const uint8_t* const cpcu8Data, const uint8_t* const pu8Sender) function pointer
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*/
|
||||
esp_err_t errMeshNetworkSetAppReceiveHandle(void (*pAppRxHandleTmp)(const uint8_t* const cpcu8Data, const uint8_t* const pu8Sender))
|
||||
{
|
||||
pAppRxHandle = pAppRxHandleTmp; //set handle from app as receive handle if an app packet is received
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkSetOTAMessageHandleHandle(void (*pOTAMessageHandleTmp)(const MESH_PACKET_t* const cpcuMeshPacket))
|
||||
* @brief set callback for event when OTA message is received
|
||||
* @param (*pOTAMessageHandleTmp)(const MESH_PACKET_t* const cpcuMeshPacket) function pointer
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*/
|
||||
esp_err_t errMeshNetworkSetOTAMessageHandleHandle(void (*pOTAMessageHandleTmp)(const MESH_PACKET_t* const cpcuMeshPacket))
|
||||
{
|
||||
pOTAMessageHandle = pOTAMessageHandleTmp;
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn esp_err_t errMeshNetworkSetChangeStateOfServerWorkerHandle(void (*pChangeStateOfServerWorkerHandleTmp)(const bool cbState))
|
||||
* @brief set callback for event when connectify to server is changed
|
||||
* @param (*pChangeStateOfServerWorkerHandleTmp)(const bool cbState) function pointer
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*/
|
||||
esp_err_t errMeshNetworkSetChangeStateOfServerWorkerHandle(void (*pChangeStateOfServerWorkerHandleTmp)(const bool cbState))
|
||||
{
|
||||
pChangeStateOfServerWorkerHandle = pChangeStateOfServerWorkerHandleTmp;
|
||||
|
|
|
@ -1,8 +1,28 @@
|
|||
|
||||
/**
|
||||
* @file Mesh_Network_Handler.c
|
||||
* @brief Handler for events from mesh network (no messages)
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Additional Infos: IP event received or parrent or child connected or disconnected
|
||||
*/
|
||||
|
||||
#include "Mesh_Network.h"
|
||||
|
||||
static const char *LOG_TAG = "mesh_network_handler";
|
||||
|
||||
/**
|
||||
* @fn void vMeshNetworkIpEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void *vpEventData)
|
||||
* @brief received an IP event
|
||||
* @param arg
|
||||
* @param event_base
|
||||
* @param i32EventID
|
||||
* @param vpEventData
|
||||
* @return void
|
||||
* @author ESP-IDF
|
||||
* @date 20.01.2021
|
||||
*/
|
||||
void vMeshNetworkIpEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void *vpEventData)
|
||||
{
|
||||
ip_event_got_ip_t *event = (ip_event_got_ip_t *) vpEventData;
|
||||
|
@ -13,6 +33,17 @@ void vMeshNetworkIpEventHandler(void *arg, esp_event_base_t event_base, int32_t
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void vMeshNetworkMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void* vpEventData)
|
||||
* @brief received an mesh event
|
||||
* @param arg
|
||||
* @param event_base
|
||||
* @param i32EventID
|
||||
* @param vpEventData
|
||||
* @return void
|
||||
* @author ESP-IDF
|
||||
* @date 20.01.2021
|
||||
*/
|
||||
void vMeshNetworkMeshEventHandler(void *arg, esp_event_base_t event_base, int32_t i32EventID, void* vpEventData)
|
||||
{
|
||||
mesh_addr_t id = {0,};
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
/**
|
||||
* @file HTTPS_Client.h
|
||||
* @brief Used to download the OTA image from the server
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Additional Infos: Connects via HTTPS and HTTPS Basic Auth to the Server.
|
||||
* Downloads the image in segments
|
||||
*/
|
||||
|
||||
#ifndef H_HTTPS_CLIENT
|
||||
#define H_HTTPS_CLIENT
|
||||
|
||||
|
|
|
@ -1,13 +1,32 @@
|
|||
/**
|
||||
* @file Blinky_LED.c
|
||||
* @brief Demo application using the mesh network
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Additional Infos: If button "BOOT" on ESP32-Module is pressed, all LED2 (blue) in the network will toggle the state.
|
||||
*/
|
||||
|
||||
#include "Blinky_LED.h"
|
||||
|
||||
static const char *LOG_TAG = "blinky_led";
|
||||
static bool bLEDisOn = false; //set led default off
|
||||
static mesh_addr_t addrParent; //addr of parent node
|
||||
static mesh_addr_t addrParent; //addr of parent node
|
||||
static mesh_addr_t childrenAddr[CONFIG_MESH_ROUTE_TABLE_SIZE]; //array of children attached to this node
|
||||
static uint16_t u16ChildrenSize; //number of children attached to this node
|
||||
xQueueHandle queueBlinkyLEDPackets; //handle for led action queue
|
||||
|
||||
esp_err_t errBlinkyLEDInitialize()
|
||||
/**
|
||||
* @fn esp_err_t errBlinkyLEDInitialize()
|
||||
* @brief Starts the demp app
|
||||
* @param void
|
||||
* @return ESP32 error code
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Initialize the queue and starts the tasks
|
||||
*/
|
||||
esp_err_t errBlinkyLEDInitialize(void)
|
||||
{
|
||||
esp_err_t err = ESP_OK;
|
||||
BaseType_t xReturned;
|
||||
|
@ -45,7 +64,17 @@ esp_err_t errBlinkyLEDInitialize()
|
|||
return err;
|
||||
}
|
||||
|
||||
void vGPIOInitialize()
|
||||
/**
|
||||
* @fn void vGPIOInitialize(void)
|
||||
* @brief sets the GPIO pins to correct modes
|
||||
* @param void
|
||||
* @return void
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Initialize GPIO
|
||||
*/
|
||||
void vGPIOInitialize(void)
|
||||
{
|
||||
gpio_config_t gpioConf;
|
||||
|
||||
|
@ -62,6 +91,17 @@ void vGPIOInitialize()
|
|||
gpio_config(&gpioConf);
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void rxHandle(const uint8_t* const pu8Data, const uint8_t* const pu8Sender)
|
||||
* @brief callback handler from mesh network layer
|
||||
* @param pu8Data data received
|
||||
* @param pu8Sender sender node from data
|
||||
* @return void
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Adds the data into queue
|
||||
*/
|
||||
void rxHandle(const uint8_t* const pu8Data, const uint8_t* const pu8Sender)
|
||||
{
|
||||
//send payload to app queue
|
||||
|
@ -74,6 +114,16 @@ void rxHandle(const uint8_t* const pu8Data, const uint8_t* const pu8Sender)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void vTaskReadUserInput(void *arg)
|
||||
* @brief FreeRTOS task reading the user input (button)
|
||||
* @param args parameter for task
|
||||
* @return void
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Adds a button press to the queue
|
||||
*/
|
||||
void vTaskReadUserInput(void *arg)
|
||||
{
|
||||
esp_err_t err = ESP_OK;
|
||||
|
@ -129,6 +179,16 @@ void vTaskReadUserInput(void *arg)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void vTaskReceiveData(void *arg)
|
||||
* @brief FreeRTOS task reading queue and setting the LED
|
||||
* @param args parameter for task
|
||||
* @return void
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Sets the LED off or on based on data in queue
|
||||
*/
|
||||
void vTaskReceiveData(void *arg)
|
||||
{
|
||||
esp_err_t err = ESP_OK;
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
/**
|
||||
* @file Blinky_LED.h
|
||||
* @brief Demo application using the mesh network
|
||||
* @author Hendrik Schutter
|
||||
* @date 20.01.2021
|
||||
*
|
||||
* Additional Infos: If button "BOOT" on ESP32-Module is pressed, all LED2 (blue) in the network will toggle the state.
|
||||
*/
|
||||
|
||||
#ifndef H_BLINKY_LED
|
||||
#define H_BLINKY_LED
|
||||
|
||||
|
@ -29,8 +38,8 @@ struct blinky_packet
|
|||
|
||||
typedef struct blinky_packet BLINKY_PACKET_t;
|
||||
|
||||
esp_err_t errBlinkyLEDInitialize();
|
||||
void vGPIOInitialize();
|
||||
esp_err_t errBlinkyLEDInitialize(void);
|
||||
void vGPIOInitialize(void);
|
||||
void rxHandle(const uint8_t* const pu8Data, const uint8_t* const pu8Sender);
|
||||
void vTaskReadUserInput(void *arg);
|
||||
void vTaskReceiveData(void *arg);
|
||||
|
|
Loading…
Reference in New Issue