id to string me

C code
将枚举变量转换为string 打方式

typedef enum{
    MY_ID_NONE = 0,     //none
    MY_ID_1,
    MY_ID_2,
    MY_ID_3,
    MY_ID_MAX,
}MY_ID_E;

#define CASE_ENUM(e) case e: return "["#e"]"

static const char *my_id_to_str(MY_ID_E id)
{
    switch(id) {
        CASE_ENUM(MY_ID_1);
        CASE_ENUM(MY_ID_2);
        CASE_ENUM(MY_ID_3);
        default:
            break;
    }
    return "";
}

Sure, here is a sample code to implement MQTT broker on ESP32 using ESP-IDF: #include <stdio.h> #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_log.h" #include "esp_event.h" #include "esp_netif.h" #include "esp_wifi.h" #include "esp_mqtt.h" #define WIFI_SSID "your_wifi_ssid" #define WIFI_PASS "your_wifi_password" #define MQTT_BROKER "mqtt://your_mqtt_broker_ip" #define MQTT_TOPIC "your_mqtt_topic" static const char *TAG = "MQTT_BROKER"; static esp_err_t wifi_event_handler(void *ctx, system_event_t *event) { switch(event->event_id) { case SYSTEM_EVENT_STA_START: esp_wifi_connect(); break; case SYSTEM_EVENT_STA_CONNECTED: break; case SYSTEM_EVENT_STA_GOT_IP: ESP_LOGI(TAG, "Got IP: %s", ip4addr_ntoa(&event->event_info.got_ip.ip_info.ip)); esp_mqtt_start(MQTT_BROKER, NULL, 0, NULL); break; case SYSTEM_EVENT_STA_DISCONNECTED: esp_wifi_connect(); break; default: break; } return ESP_OK; } static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) { esp_mqtt_event_handle_t event = (esp_mqtt_event_handle_t)event_data; switch (event_id) { case MQTT_EVENT_CONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); esp_mqtt_subscribe(event->client, MQTT_TOPIC, 0); break; case MQTT_EVENT_DISCONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); break; case MQTT_EVENT_SUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED"); break; case MQTT_EVENT_UNSUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED"); break; case MQTT_EVENT_PUBLISHED: ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED"); break; case MQTT_EVENT_DATA: ESP_LOGI(TAG, "MQTT_EVENT_DATA"); ESP_LOGI(TAG, "Topic=%.*s", event->topic_len, event->topic); ESP_LOGI(TAG, "Data=%.*s", event->data_len, event->data); break; case MQTT_EVENT_ERROR: ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); break; default: ESP_LOGI(TAG, "Other event id:%d", event_id); break; } } void app_main() { esp_netif_init(); esp_event_loop_create_default(); esp_netif_create_default_wifi_sta(); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); esp_wifi_init(&cfg); esp_wifi_set_storage(WIFI_STORAGE_RAM); wifi_config_t wifi_config = { .sta = { .ssid = WIFI_SSID, .password = WIFI_PASS, }, }; esp_wifi_set_mode(WIFI_MODE_STA); esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config); esp_wifi_start(); esp_event_handler_instance_t wifi_event_handler_instance; esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL, &wifi_event_handler_instance); esp_mqtt_client_config_t mqtt_cfg = { .event_handle = mqtt_event_handler, }; esp_mqtt_client_handle_t mqtt_client = esp_mqtt_client_init(&mqtt_cfg); esp_mqtt_client_start(mqtt_client); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值