请选择 进入手机版 | 继续访问电脑版
论坛
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 474|回复: 1

软件定时器回调函数里面又有软件定时器回调函数?

[复制链接]

1

主题

3

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2018-2-12 22:10:16 | 显示全部楼层 |阅读模式
本帖最后由 hello_galaxy 于 2018-2-12 22:29 编辑

void ICACHE_FLASH_ATTR
user_gizwits_platform_init(void)
{
    if (wifi_get_opmode() != SOFTAP_MODE)
    {  
        //疑问在这里-------------------------------------??????????????????????????????
        os_timer_disarm(&client_timer);
        os_timer_setfn(&client_timer, (os_timer_func_t *)user_gizwits_platform_check_ip, 1);
        os_timer_arm(&client_timer, 100, 1);
    }
}


void ICACHE_FLASH_ATTR
user_gizwits_platform_check_ip(void)
{
    struct ip_info ipconfig;
    //os_printf("m");
    //os_printf("%s line=%d\n",__func__,__LINE__);

    /*
    wifi_get_ip_info
    功能:获取 wifi 的 station 或 softap 接口 ip 信息
    注意:默认未连接情况下 station 模式的 ip 地址都为 0,因此可以使用此函数来
    判断本地是否成功连接 DHCP 模式的 AP(路由),另外 softap 模式下默认的 ip 地
    址为: 192.168.4.1
    */
    if(os_strlen(product_key) == 0)//没有key  就不注册到机智云
    {           
                return ;
        }
       
    wifi_get_ip_info(STATION_IF, &ipconfig);
       
    if (wifi_station_get_connect_status() == STATION_GOT_IP && ipconfig.ip.addr != 0)
    {
        router_flag=1;
        //疑问在这里-------------------------------------??????????????????????????????
        os_timer_disarm(&broad_cast);
        os_timer_setfn(&broad_cast, (os_timer_func_t *)broadcast_cb, 0x05);//广播自己的存在
        os_timer_arm(&broad_cast, 100, 1);

      //   broadcast_cb(5);
        os_timer_disarm(&client_timer);
        user_conn.proto.tcp = &user_tcp;
        user_conn.type = ESPCONN_TCP;
        user_conn.state = ESPCONN_NONE;
        user_gizwits_platform_start_dns(&user_conn);
    }

    /* if there are wrong while connecting to some AP, then reset mode */
    else if ((wifi_station_get_connect_status() == STATION_WRONG_PASSWORD ||
              wifi_station_get_connect_status() == STATION_NO_AP_FOUND ||
              wifi_station_get_connect_status() == STATION_CONNECT_FAIL))
    {
        router_flag=0;
        //os_timer_disarm(&client_timer);
        os_printf("ap connect fail cause %d\n",wifi_station_get_connect_status());
    }

}


实现不会发帖,疑问已经标注出来了,忘坛友解答!!!
回复

使用道具 举报

1

主题

14

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2018-2-21 14:30:16 | 显示全部楼层
这个随你喜欢的, 每次软件定时器启动多关闭了再进行启动的,不会影响函数的执行,其实就是利用定时器跳转到目标函数执行罢了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|安信可论坛    

GMT+8, 2018-11-20 06:30 , Processed in 0.016506 second(s), 14 queries , Redis On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表