Reducing the amount of memory used
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user