AliOS-Things--ESP8266 (8)WiFi

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28877125/article/details/83063443

键-值对事件注册

1、注册事件

/**
 * Register system event filter callback.
 *
 * @param[in]  type  event type interested.
 * @param[in]  cb    system event callback.
 * @param[in]  priv  private data past to cb.
 *
 * @return  the operation status, 0 is OK, others is error.
 */
int aos_register_event_filter(uint16_t type, aos_event_cb cb, void *priv);


int aos_register_event_filter(uint16_t type, aos_event_cb cb, void *priv)
{
    return SYS_CALL3(SYS_REGISTER_EVENT_FILTER, int, uint16_t, type,
                     aos_event_cb, cb, void *, priv);
}


aos_register_event_filter(EV_WIFI, wifi_service_event, NULL);

比如,在上面注册了一个类型为"EV_WIFI"的事件过滤器。而该类型下又有五个类型的具体的事件。

/* WiFi event */
#define  EV_WIFI                  0x0002
#define  CODE_WIFI_CMD_RECONNECT  1
#define  CODE_WIFI_ON_CONNECTED   2
#define  CODE_WIFI_ON_DISCONNECT  3
#define  CODE_WIFI_ON_PRE_GOT_IP  4
#define  CODE_WIFI_ON_GOT_IP      5

获得WiFi的一些信息

路径:middleware\linkkit\hal\HAL_AWSS_rhino.c
 如果想知道一个模块有没有配过网要怎么样才能知道呢?可以通过HAL_Wifi_Get_Ap_Info()函数获取得到,如果没有配过网,strlen(ssid)是为零的。

    char ssid[33];
    char passwd[65];
    uint8_t bssid[6];
    
    // 获得wifi信息
    HAL_Wifi_Get_Ap_Info(ssid, passwd, bssid);

    printf(">>>>>%d\r\n", sizeof(ssid));

    printf(">>>>>%d\r\n", strlen(ssid));
    printf("ssid >>>>>>>%s\r\n", ssid);
    printf("passwd >>>>>>>%s\r\n", passwd);
    printf("bssid >>>>>>>%d\r\n", bssid);

但是,如果配过网想重新配网,HAL_Wifi_Get_Ap_Info()函数
1、重新配网:
先awss复位

		do_awss_reset();

再进入配网模式

        do_awss_active();  // 配网模式

再次获取wifi信息,WiFi信息已经被清空

    char ssid[33];
    char passwd[65];
    uint8_t bssid[6];
    
    // 获得wifi信息
    HAL_Wifi_Get_Ap_Info(ssid, passwd, bssid);
    // strlen(ssid) 为 0

AWSS复位的实现其实是清空WiFi信息,然后再硬件复位:

static void linkkit_reset(void *p)
{
    netmgr_clear_ap_config(); // 清空WiFi的信息
    HAL_Sys_reboot();   //系统硬件复位
}


static void do_awss_reset()
{
    aos_post_delayed_action(2000, linkkit_reset, NULL);
}

猜你喜欢

转载自blog.csdn.net/qq_28877125/article/details/83063443