我想问一下,如果我在ROOT NODE用了mlink_httpd_read 之后可以使用mwifi_root_read 吗?
我在root node create 了这两个task
sta
tic void root_read_task(void *arg){ mdf_err_t ret = MDF_OK; mlink_httpd_t *httpd_data = NULL; mwifi_data_type_t mwifi_type = { .compression = true, .communicate = MWIFI_COMMUNICATE_MULTICAST, }; MDF_LOGI("root_read_task is running"); while (esp_mesh_get_layer() == MESH_ROOT) { ret = mlink_httpd_read(&httpd_data, portMAX_DELAY); MDF_ERROR_GOTO(ret != MDF_OK || !httpd_data, FREE_MEM, "<%s> mwifi_root_read", mdf_err_to_name(ret)); MDF_LOGD("Root send, addrs_num: %d, addrs_list: " MACSTR ", size: %d, data: %.*s", httpd_data->addrs_num, MAC2STR(httpd_data->addrs_list), httpd_data->size, httpd_data->size, httpd_data->data); mwifi_type.group = httpd_data->group; memcpy(&mwifi_type.custom, &httpd_data->type, sizeof(mlink_httpd_type_t)); ret = mwifi_root_write(httpd_data->addrs_list, httpd_data->addrs_num, &mwifi_type, httpd_data->data, httpd_data->size, true); MDF_ERROR_GOTO(ret != MDF_OK, FREE_MEM, "<%s> mwifi_root_write", mdf_err_to_name(ret)); FREE_MEM: if (httpd_data) { MDF_FREE(httpd_data->addrs_list); MDF_FREE(httpd_data->data); MDF_FREE(httpd_data); } } MDF_LOGW("root_read_task is exit"); if (httpd_data) { MDF_FREE(httpd_data->addrs_list); MDF_FREE(httpd_data->data); MDF_FREE(httpd_data); } mesh_mqtt_stop(); g_root_read_task_handle = NULL; vTaskDelete(NULL);}static void root_read_mwifi_task(void *arg){ mdf_err_t ret = MDF_OK; char *data = MDF_MALLOC(MWIFI_PAYLOAD_LEN); size_t size = MWIFI_PAYLOAD_LEN; mwifi_data_type_t data_type = {0}; uint8_t src_addr[MWIFI_ADDR_LEN] = {0}; MDF_LOGI("root_read_mwifi_task is running"); while (mwifi_is_connected()) { size = MWIFI_PAYLOAD_LEN; memset(data, 0, MWIFI_PAYLOAD_LEN); ret = mwifi_root_read(src_addr, &data_type, data, &size, portMAX_DELAY); MDF_ERROR_CONTINUE(ret != MDF_OK, "<%s> mwifi_root_recv", mdf_err_to_name(ret)); if (data_type.upgrade) { // This mesh package contains upgrade data. ret = mupgrade_root_handle(src_addr, data, size); MDF_ERROR_CONTINUE(ret != MDF_OK, "<%s> mupgrade_root_handle", mdf_err_to_name(ret)); } else { MDF_LOGI("Receive [NODE] addr: " MACSTR ", size: %d, data: %s", MAC2STR(src_addr), size, data); } } MDF_LOGW("root_read_mwifi_task is exit"); g_root_read_mwifi_task_handle = NULL; MDF_FREE(data); vTaskDelete(NULL);}
mwifi 便有 error message
Code:
Select all
W (14299) [mwifi, 1401]: Uncompress, size: 663W (14531) [LIGHT_EXAMPLE, 198]: mwifi_root_recv
求解。