Backup
This commit is contained in:
parent
1d457bb387
commit
55d997c072
139
main/comms.c
139
main/comms.c
@ -24,6 +24,7 @@
|
||||
#include "data_processing.h"
|
||||
#include "ota.h"
|
||||
#include "hmi.h"
|
||||
#include "esp_mac.h"
|
||||
|
||||
#define LOG_LOCAL_LEVEL ESP_LOG_INFO
|
||||
#include "esp_log.h"
|
||||
@ -95,6 +96,14 @@ extern uint32_t g_McuUpdate;
|
||||
extern uint32_t g_ModemUpdate;
|
||||
extern uint32_t g_version;
|
||||
|
||||
|
||||
/// mqtt added ///
|
||||
bool qmtopen_fail = false;
|
||||
int qmtopen_retries = 0;
|
||||
#define QMTOPEN_RETRY_NUM 3
|
||||
|
||||
/// mqtt added end ///
|
||||
|
||||
typedef enum
|
||||
{
|
||||
COMMS_EVENT_START,
|
||||
@ -112,6 +121,9 @@ typedef enum
|
||||
COMMS_STATE_WIFI_CONNECT,
|
||||
COMMS_STATE_WIFI_POST_REQ,
|
||||
COMMS_STATE_WIFI_GET_REQ,
|
||||
COMMS_STATE_WAIT_MQTT_CONNECT,
|
||||
COMMS_STATE_WAIT_MQTT_PUB,
|
||||
COMMS_STATE_WAIT_MQTT_CLOSE,
|
||||
COMMS_STATE_WAIT_HTTP_SEND_CONFIG_FLAGS,
|
||||
COMMS_STATE_WAIT_HTTP_GET_CONFIG_FLAGS,
|
||||
COMMS_STATE_WAIT_HTTP_POST_REQ,
|
||||
@ -217,6 +229,9 @@ static const char* state_str(comms_state_t s)
|
||||
case COMMS_STATE_WIFI_CONNECT:return "WIFI_CONNECT";
|
||||
case COMMS_STATE_WIFI_POST_REQ:return "WIFI_POST_REQ";
|
||||
case COMMS_STATE_WIFI_GET_REQ:return "WIFI_GET_REQ";
|
||||
case COMMS_STATE_WAIT_MQTT_CONNECT:return "WAIT_MQTT_CONNECT";
|
||||
case COMMS_STATE_WAIT_MQTT_PUB:return "WAIT_MQTT_PUB";
|
||||
case COMMS_STATE_WAIT_MQTT_CLOSE:return "WAIT_MQTT_CLOSE";
|
||||
case COMMS_STATE_WAIT_HTTP_SEND_CONFIG_FLAGS:return "WAIT_HTTP_SEND_CONFIG_FLAGS";
|
||||
case COMMS_STATE_WAIT_HTTP_GET_CONFIG_FLAGS:return "WAIT_HTTP_GET_CONFIG_FLAGS";
|
||||
case COMMS_STATE_WAIT_HTTP_POST_REQ:return "WAIT_HTTP_POST_REQ";
|
||||
@ -405,7 +420,86 @@ static void http_op_cb(int status)
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////mqtt////////////////////////////////
|
||||
|
||||
static void mqtt_connect_cb(int status)
|
||||
{
|
||||
comms.poll_timer = true;
|
||||
if (ESP_OK == status)
|
||||
{
|
||||
/* connected */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Nope - back idle */
|
||||
ESP_LOGW(TAG,"MQTT connection failed.\r\n");
|
||||
|
||||
/*if open fail flag is set then mqtt connection is closed
|
||||
and then attempt another mqtt sequence*/
|
||||
if(qmtopen_fail){
|
||||
//qmtopen_fail = false;
|
||||
ESP_LOGI(TAG, "Closing connection\r\n");
|
||||
//GPIO_ResetBits(GPIO_Pin_22);
|
||||
//heartbeat_time = 5;
|
||||
transition(COMMS_STATE_WAIT_MQTT_PUB);
|
||||
}
|
||||
else{
|
||||
transition(COMMS_STATE_GOING_IDLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// update_relay_led();
|
||||
}
|
||||
|
||||
static void mqtt_pub_cb(int status)
|
||||
{
|
||||
comms.poll_timer = true;
|
||||
if (ESP_OK == status)
|
||||
{
|
||||
/* connected */
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/* Nope - back to idle */
|
||||
ESP_LOGW(TAG, "MQTT publish failed.\r\n");
|
||||
transition(COMMS_STATE_GOING_IDLE);
|
||||
|
||||
}
|
||||
// update_relay_led();
|
||||
}
|
||||
|
||||
|
||||
static void mqtt_close_cb(int status)
|
||||
{
|
||||
comms.poll_timer = true;
|
||||
if (ESP_OK == status)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if(qmtopen_fail){
|
||||
if(qmtopen_retries >= QMTOPEN_RETRY_NUM){
|
||||
qmtopen_retries = 0;
|
||||
qmtopen_fail = false;
|
||||
ESP_LOGI(TAG, "MQTT open retries exceeded. bypass SP1\r\n");
|
||||
transition(COMMS_STATE_WAIT_MQTT_CLOSE);
|
||||
}
|
||||
else{
|
||||
qmtopen_fail = false;
|
||||
ESP_LOGW(TAG, "MQTT close failed.\r\n");
|
||||
transition(COMMS_STATE_WAIT_NET_CONNECT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////end mqtt ////////////////////////////////
|
||||
|
||||
static void http_post_op_cb(int status)
|
||||
{
|
||||
@ -1219,7 +1313,7 @@ static int state_machine(comms_event_t evt)
|
||||
|
||||
/* Reset the backup flag */
|
||||
comms_do_wifi_backup = false;
|
||||
comms_do_cell_backup = false;
|
||||
// comms_do_cell_backup = false;
|
||||
|
||||
/* Status is ERROR until cleared by successful completion. */
|
||||
comms.last_cycle_status = COMMS_STATUS_ERROR;
|
||||
@ -1335,11 +1429,7 @@ static int state_machine(comms_event_t evt)
|
||||
/* Set the posting_failed to be true */
|
||||
comms_posting_failed = true;
|
||||
|
||||
/* Do cellular backup for the check-in process */
|
||||
if(COMMS_OVER_WIFI_CELL_BACKUP)
|
||||
{
|
||||
comms_do_cell_backup = true;
|
||||
}
|
||||
|
||||
|
||||
/* Do a transition to "GOING_IDLE" state */
|
||||
transition(COMMS_STATE_GOING_IDLE);
|
||||
@ -2029,6 +2119,43 @@ static int state_machine(comms_event_t evt)
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
|
||||
char* get_mac(void){
|
||||
|
||||
uint8_t mac[6]; // Buffer to store MAC address
|
||||
esp_efuse_mac_get_default(mac);
|
||||
|
||||
// Print original MAC in hex format
|
||||
printf("MAC Address (Hex): %02X:%02X:%02X:%02X:%02X:%02X\n",
|
||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
|
||||
// Convert MAC address to a decimal string
|
||||
char full_mac_decimal[20]; // Buffer for full decimal MAC
|
||||
int len = snprintf(full_mac_decimal, sizeof(full_mac_decimal), "%d%d%d%d%d%d",
|
||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
|
||||
// Ensure exactly 15 characters by padding with leading zeros if necessary
|
||||
char mac_15[16]; // 15 characters + null terminator
|
||||
if (len < 15) {
|
||||
// Fill with leading zeros
|
||||
memset(mac_15, '0', 15 - len);
|
||||
strcpy(mac_15 + (15 - len), full_mac_decimal);
|
||||
} else {
|
||||
// Truncate if necessary
|
||||
strncpy(mac_15, full_mac_decimal, 15);
|
||||
}
|
||||
mac_15[15] = '\0'; // Null-terminate
|
||||
|
||||
// Print the final 15-character decimal MAC address
|
||||
printf("Formatted MAC (15 Characters): %s\n", mac_15);
|
||||
// strncpy(MAC_ID, mac_15, 15);
|
||||
// printf("Formatted MAC (15 Characters): %s\n", MAC_ID);
|
||||
return mac_15;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Initialize. */
|
||||
int comms_init(void)
|
||||
{
|
||||
|
@ -281,4 +281,7 @@ bool comms_is_started(void);
|
||||
*/
|
||||
int comms_get_status(void);
|
||||
|
||||
// Get MAC id
|
||||
char* get_mac(void);
|
||||
|
||||
#endif /* MAIN_COMMS_H_ */
|
||||
|
@ -34,11 +34,14 @@
|
||||
#include "lwip/ip4_addr.h"
|
||||
#include "wifi_Init.h"
|
||||
#include "nvm.h"
|
||||
#include "wifi_OTA.h"
|
||||
static const char* TAG = "DATA";
|
||||
|
||||
#define LOG_LOCAL_LEVEL ESP_LOG_INFO
|
||||
#include "esp_log.h"
|
||||
|
||||
#define IMEI "353165803930522"
|
||||
|
||||
extern bool isCycleCompleted;
|
||||
extern uint8_t comms_mode;
|
||||
extern comms_medium_t comms_medium;
|
||||
@ -2480,17 +2483,22 @@ esp_err_t data_parsing_config(char *buff,int len){
|
||||
esp_err_t retval = ESP_FAIL;
|
||||
char *ret = NULL;
|
||||
char server_request[11]={0};
|
||||
//char setting_req[]="settings";
|
||||
ret = strstr(buff, (const char*)"settings");
|
||||
data_parse_String_value(server_request,"request",buff);
|
||||
if( ret != NULL ){
|
||||
// char setting_req[]="settings";
|
||||
// ret = strstr(buff, (const char*)"settings");
|
||||
// data_parse_String_value(server_request,"request",buff);
|
||||
// if( ret != NULL ){
|
||||
if(1){
|
||||
//retval = data_parse_uint_value(&g_server_time,"time", buff);
|
||||
|
||||
retval = data_parse_uint_value(&g_ID,"id", buff);
|
||||
retval = data_parse_uint_value(&g_SensorInt,"SensorInt", buff);
|
||||
retval = data_parse_uint_value(&g_ConfigUpdate,"ConfigUpdate", buff);
|
||||
retval = data_parse_uint_value(&g_McuUpdate,"McuUpdate", buff);
|
||||
retval = data_parse_uint_value(&g_ModemUpdate,"ModemUpdate", buff);
|
||||
ESP_LOGI(TAG, "ConfigUpdate: %ld McuUpdate: %ld ModemUpdate: %ld", g_ConfigUpdate, g_McuUpdate, g_ModemUpdate);
|
||||
if(g_McuUpdate == 1)
|
||||
|
||||
wifi_ota_start_firmware_update(IMEI);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
72
main/main.c
72
main/main.c
@ -34,6 +34,8 @@
|
||||
#include <sys/time.h>
|
||||
#include "rtc.h"
|
||||
|
||||
#include "data_processing.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -85,37 +87,6 @@ void extract_mcu_update(const char *json_data, char *output) {
|
||||
}
|
||||
}
|
||||
|
||||
void get_mac(void){
|
||||
|
||||
uint8_t mac[6]; // Buffer to store MAC address
|
||||
esp_efuse_mac_get_default(mac);
|
||||
|
||||
// Print original MAC in hex format
|
||||
printf("MAC Address (Hex): %02X:%02X:%02X:%02X:%02X:%02X\n",
|
||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
|
||||
// Convert MAC address to a decimal string
|
||||
char full_mac_decimal[20]; // Buffer for full decimal MAC
|
||||
int len = snprintf(full_mac_decimal, sizeof(full_mac_decimal), "%d%d%d%d%d%d",
|
||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
|
||||
// Ensure exactly 15 characters by padding with leading zeros if necessary
|
||||
char mac_15[16]; // 15 characters + null terminator
|
||||
if (len < 15) {
|
||||
// Fill with leading zeros
|
||||
memset(mac_15, '0', 15 - len);
|
||||
strcpy(mac_15 + (15 - len), full_mac_decimal);
|
||||
} else {
|
||||
// Truncate if necessary
|
||||
strncpy(mac_15, full_mac_decimal, 15);
|
||||
}
|
||||
mac_15[15] = '\0'; // Null-terminate
|
||||
|
||||
// Print the final 15-character decimal MAC address
|
||||
printf("Formatted MAC (15 Characters): %s\n", mac_15);
|
||||
strncpy(MAC_ID, mac_15, 15);
|
||||
printf("Formatted MAC (15 Characters): %s\n", MAC_ID);
|
||||
}
|
||||
|
||||
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
|
||||
{
|
||||
@ -210,13 +181,22 @@ void app_main(void)
|
||||
|
||||
/* Create the UART tasks for both UART0 and UART1 */
|
||||
uart_create_rx_tasks();
|
||||
get_mac();
|
||||
char mac[15];
|
||||
snprintf(mac,sizeof(mac), get_mac());
|
||||
ESP_LOGI(TAG, "======> Mac id: %s", mac);
|
||||
|
||||
|
||||
// Get firmwae version
|
||||
const esp_app_desc_t *app_desc = esp_app_get_description();
|
||||
ESP_LOGI(TAG, "Firmware Version: %s", app_desc->version);
|
||||
|
||||
|
||||
while(1){
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
// get_time();
|
||||
// ESP_LOGI("TIME", "Current time =====> %s", buff);
|
||||
|
||||
ESP_LOGI(TAG,"====>>> Test data <<<=========");
|
||||
}
|
||||
/*
|
||||
|
||||
uint8_t* test_str[] = {0xA5,0x05,0x4C,0x4C,0x42}; // Example command to request current value
|
||||
@ -263,16 +243,6 @@ void app_main(void)
|
||||
|
||||
get_time();
|
||||
|
||||
while(1){
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
// get_time();
|
||||
// ESP_LOGI("TIME", "Current time =====> %s", buff);
|
||||
|
||||
ESP_LOGI(TAG,"====>>> HIiiiiii <<<=========");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Configure Target brocker URL
|
||||
esp_mqtt_client_config_t mqtt_cfg = {
|
||||
@ -284,8 +254,22 @@ void app_main(void)
|
||||
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
|
||||
|
||||
esp_mqtt_client_start(client);
|
||||
|
||||
|
||||
http_get_request(MCU_CONFIG);
|
||||
|
||||
http_get_request(MCU_UPDATE);
|
||||
|
||||
data_parsing_config(&HTTP_GET_DATA, sizeof(HTTP_GET_DATA));
|
||||
|
||||
while(1){
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
// get_time();
|
||||
// ESP_LOGI("TIME", "Current time =====> %s", buff);
|
||||
|
||||
ESP_LOGI(TAG,"====>>> Test data <<<=========");
|
||||
}
|
||||
|
||||
|
||||
char* strret = NULL;
|
||||
char* token = strtok(HTTP_GET_DATA, "SP4");
|
||||
ESP_LOGI(TAG,"REcived data from main1 %s",token);
|
||||
|
Loading…
Reference in New Issue
Block a user