Reducing the amount of memory used

This commit is contained in:
2024-06-09 09:55:09 +03:00
parent 3bd8d08ce6
commit 925df4b27c

View File

@ -216,48 +216,47 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
goto ZH_NETWORK_EVENT_HANDLER_EXIT;
}
#endif
zh_espnow_data_t data = {0};
memcpy(&data, recv_data->data, recv_data->data_len);
char *topic = (char *)heap_caps_malloc(strlen(CONFIG_MQTT_TOPIC_PREFIX) + strlen(zh_get_device_type_value_name(data.device_type)) + 20, MALLOC_CAP_8BIT);
memset(topic, 0, strlen(CONFIG_MQTT_TOPIC_PREFIX) + strlen(zh_get_device_type_value_name(data.device_type)) + 20);
sprintf(topic, "%s/%s/" MAC_STR, CONFIG_MQTT_TOPIC_PREFIX, zh_get_device_type_value_name(data.device_type), MAC2STR(recv_data->mac_addr));
switch (data.payload_type)
zh_espnow_data_t *data = (zh_espnow_data_t *)recv_data->data;
char *topic = (char *)heap_caps_malloc(strlen(CONFIG_MQTT_TOPIC_PREFIX) + strlen(zh_get_device_type_value_name(data->device_type)) + 20, MALLOC_CAP_8BIT);
memset(topic, 0, strlen(CONFIG_MQTT_TOPIC_PREFIX) + strlen(zh_get_device_type_value_name(data->device_type)) + 20);
sprintf(topic, "%s/%s/" MAC_STR, CONFIG_MQTT_TOPIC_PREFIX, zh_get_device_type_value_name(data->device_type), MAC2STR(recv_data->mac_addr));
switch (data->payload_type)
{
case ZHPT_ATTRIBUTES:
zh_espnow_send_mqtt_json_attributes_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_send_mqtt_json_attributes_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHPT_KEEP_ALIVE:
zh_espnow_send_mqtt_json_keep_alive_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_send_mqtt_json_keep_alive_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHPT_CONFIG:
switch (data.device_type)
switch (data->device_type)
{
case ZHDT_SWITCH:
zh_espnow_switch_send_mqtt_json_config_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_switch_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_LED:
zh_espnow_led_send_mqtt_json_config_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_led_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_SENSOR:
zh_espnow_sensor_send_mqtt_json_config_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_BINARY_SENSOR:
zh_espnow_binary_sensor_send_mqtt_json_config_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_binary_sensor_send_mqtt_json_config_message(data, recv_data->mac_addr, gateway_config);
break;
default:
break;
}
break;
case ZHPT_HARDWARE:
switch (data.device_type)
switch (data->device_type)
{
case ZHDT_SWITCH:
zh_espnow_switch_send_mqtt_json_hardware_config_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_switch_send_mqtt_json_hardware_config_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_LED:
break;
case ZHDT_SENSOR:
zh_espnow_sensor_send_mqtt_json_hardware_config_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_sensor_send_mqtt_json_hardware_config_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_BINARY_SENSOR:
break;
@ -266,19 +265,19 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
}
break;
case ZHPT_STATE:
switch (data.device_type)
switch (data->device_type)
{
case ZHDT_SWITCH:
zh_espnow_switch_send_mqtt_json_status_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_switch_send_mqtt_json_status_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_LED:
zh_espnow_led_send_mqtt_json_status_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_led_send_mqtt_json_status_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_SENSOR:
zh_espnow_sensor_send_mqtt_json_status_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_sensor_send_mqtt_json_status_message(data, recv_data->mac_addr, gateway_config);
break;
case ZHDT_BINARY_SENSOR:
zh_espnow_binary_sensor_send_mqtt_json_status_message(&data, recv_data->mac_addr, gateway_config);
zh_espnow_binary_sensor_send_mqtt_json_status_message(data, recv_data->mac_addr, gateway_config);
break;
default:
break;
@ -287,9 +286,9 @@ void zh_espnow_event_handler(void *arg, esp_event_base_t event_base, int32_t eve
case ZHPT_UPDATE:
if (xSemaphoreTake(gateway_config->espnow_ota_in_progress_mutex, portTICK_PERIOD_MS) == pdTRUE)
{
gateway_config->espnow_ota_data.device_type = data.device_type;
memcpy(gateway_config->espnow_ota_data.app_name, data.payload_data.ota_message.espnow_ota_data.app_name, sizeof(data.payload_data.ota_message.espnow_ota_data.app_name));
memcpy(gateway_config->espnow_ota_data.app_version, data.payload_data.ota_message.espnow_ota_data.app_version, sizeof(data.payload_data.ota_message.espnow_ota_data.app_version));
gateway_config->espnow_ota_data.device_type = data->device_type;
memcpy(gateway_config->espnow_ota_data.app_name, data->payload_data.ota_message.espnow_ota_data.app_name, sizeof(data->payload_data.ota_message.espnow_ota_data.app_name));
memcpy(gateway_config->espnow_ota_data.app_version, data->payload_data.ota_message.espnow_ota_data.app_version, sizeof(data->payload_data.ota_message.espnow_ota_data.app_version));
memcpy(gateway_config->espnow_ota_data.mac_addr, recv_data->mac_addr, 6);
xTaskCreatePinnedToCore(&zh_espnow_ota_update_task, "NULL", ZH_OTA_STACK_SIZE, gateway_config, ZH_OTA_TASK_PRIORITY, NULL, tskNO_AFFINITY);
xSemaphoreGive(gateway_config->espnow_ota_in_progress_mutex);