smartconfig_done(sc_status status, void *pdata)中参数sc_status status, void *pdata的疑问

dearwind153
Posts: 49
Joined: Sun Feb 28, 2016 7:47 pm

smartconfig_done(sc_status status, void *pdata)中参数sc_status status, void *pdata的疑问

Postby dearwind153 » Thu Apr 07, 2016 8:49 pm

1. SDK中举例smartconfig的实现如下,但有一个疑问,参数sc_status status, void *pdata是必须要这样做吗?

Code: Select all

void ICACHE_FLASH_ATTR
smartconfig_done(sc_status status, void *pdata)
{
    switch(status) {
        case SC_STATUS_WAIT:
            printf("SC_STATUS_WAIT\n");
            break;
        case SC_STATUS_FIND_CHANNEL:
            printf("SC_STATUS_FIND_CHANNEL\n");
            break;
        case SC_STATUS_GETTING_SSID_PSWD:
            printf("SC_STATUS_GETTING_SSID_PSWD\n");
            sc_type *type = pdata;
            if (*type == SC_TYPE_ESPTOUCH) {
                printf("SC_TYPE:SC_TYPE_ESPTOUCH\n");
            } else {
                printf("SC_TYPE:SC_TYPE_AIRKISS\n");
            }
            break;
        case SC_STATUS_LINK:
            printf("SC_STATUS_LINK\n");
            struct station_config *sta_conf = pdata;
   
           wifi_station_set_config(sta_conf);
           wifi_station_disconnect();
           wifi_station_connect();
            break;
        case SC_STATUS_LINK_OVER:
            printf("SC_STATUS_LINK_OVER\n");
            if (pdata != NULL) {
                uint8 phone_ip[4] = {0};

                memcpy(phone_ip, (uint8*)pdata, 4);
                printf("Phone ip: %d.%d.%d.%d\n",phone_ip[0],phone_ip[1],phone_ip[2],phone_ip[3]);
            }
            smartconfig_stop();
            break;
    }
   
}

2. 如果我需要注册回调函数system_init_done_cb(user_scan);
那么

Code: Select all

void ICACHE_FLASH_ATTR
user_scan_done(void *pdata)
的参数void *pdata怎么传参呢?怎么传入,由谁传入呢?

ESP_Faye
Posts: 1646
Joined: Mon Oct 27, 2014 11:08 am

Re: smartconfig_done(sc_status status, void *pdata)中参数sc_status status, void *pdata的疑问

Postby ESP_Faye » Tue Apr 12, 2016 10:03 am

您好,

user_scan_done 一般是 wifi_station_scan 注册的扫描 AP 回调函数,由 SDK 将扫描结果作为参数传入。
system_init_done_cb 注册的是初始化完成的回调函数,回调函数参数为空,进入回调则表示 SDK 底层的初始化已经完成了。
您可以参考示例代码 http://bbs.espressif.com/viewtopic.php?f=31&t=229 使用。

Who is online

Users browsing this forum: No registered users and 14 guests