涂鸦_8266SDK

分类: wifi |
一、接口说明:
旧版本的按键接口,使用顺序是key_init初始化,reg_proc_key注册按键回调函数。具体参考key.h头文件说明;
新版本的按键接口,使用顺序是 tuya_kb_init()初始化,tuya_kb_reg_proc注册按键回调函数,设置连击时间都是一样的。
按键默认有连击功能,设置连击间隔时间用旧接口set_key_detect_time,需要在key_init之前使用(手册上是这么说,实际测试发现无所谓);新接口tuya_set_kb_seq_enable函数,可以使能或者关闭多击功能,初始化前后使用都可以,注意,如果是nomal或者长按,那么cnt是0而不是1,SDK的一个bug吧。
旧版本的led接口,使用顺序是create_led_handle创建led句柄,然后使用set_led_light_type来操作这些io口,set_led_light_type_new比set_led_light_type多了一个总时间的参数,比如闪烁多久。
新版本的led接口,使用 tuya_create_led_handle创建led句柄,然后使用tuya_set_led_type来操作io口;
新版本接口,使用 tuya_psm_register_module注册模块名称和扇区名称,然后使用tuya_psm_set_single写入数据,参数是模块名称,变量名称和变量值。tuya_psm_get_single用于读取数据。
旧版本接口,使用 msf_register_module注册,使用msf_set_single,写入使用msf_get_single读取,同上。
备注:变量名称是用于区分各个数据的,比用tuya_psm_register_module注册后,可以保存多个数据进去,用于区分每个数据的就是变量名称。
备注:有一些接口作用是一样的,只是sdk新老版本的区别,新的sdk在原来的接口上增加了一些新的接口,tuya开头的都是新版本增加的接口函数,以下以模块化的形式来说明这些接口;
①、按键模块:
②、led模块:
③、flash模块:
④、其他:
1创建任务:
IN CONST P_THRD_FUNC
pThrdFunc,\
IN CONST PVOID
pThrdFuncArg,\
IN CONST STACK_SIZE
stack_size,\
IN CONST TRD_PRI pri,\
IN CONST CHAR
*thrd_name);
1.device_init:app入口函数;
2.初始化设备:相当于初始化这个插座或者开关等等;
3.创建按键任务:按键初始化,登记按键回调函数;
4.创建led句柄,用于操作某个gpio;
5.增加系统定时器并运行,在里面写自己操作;
备注:系统启动的时候其实会查询当前是smartconfig、AP配置还是已经配置过等状态,就和阿里的SDK一样,但是涂鸦的是已经封装好,我们看不见这个过程。配网其实就是调用tuya_dev_reset_factory函数,把上面的状态写进flash里面,然后重启(重启的时候会查询)。tuya_get_wf_status查询返回值为1说明是smartconfig状态,返回值是2则是AP配网状态,返回值是6则是已经连接上热点。配网成功后直接连上涂鸦的服务器,只需使用涂鸦的手机app软件进行数据收发即可。
1、在涂鸦官网上注册开发者账号,创建一个产品,比如插座,插排,开关,此时会产生一个用于标志该产品的16位产品id:
2、为产品设置功能,比如,这个排插有三个开关;
3、选择一个app界面,用于产品联网后进行显示和操作;
4、开发sdk的时候初始化设备需要用到上面说到的产品id,用于识别为何种产品;
5、产品联上服务器后,服务器能由产品id识别出何种产品(首次激活的时候会赋予一个该设备独有的UID),app可进入第3步设置的,该产品的app界面进行操控;
6、点击控制按钮,根据第2步设置的功能,发送的数据都是固定的。比如,设置为开关,则发送的数据为json格式的{"1",true},{"2",true},{"3",false},这些都是涂鸦的服务器已经定义好的。
1、用sf_reg_pt_proc注册三个回调函数,分别是产品测试函数,模块测试函数和设备测试函数;
2、首先,系统会调用产品测试函数,并且参数为PTS_RD
0,在参数0的代码里面应该添加一些初始化,比如指示灯的句柄创建和闪烁,注册一个系统定时器等;
3、系统定时的时间到后,必须要调用single_dev_reset_factory函数(感觉这个函数的设计意义就是为了告诉系统,该调用模块测试函数了,其他时候使用没有任何意义),然后,系统会重新调用产品测试函数,参数为PTS_RUN
1,这个时候,系统又会调用之前注册好的模块测试函数;
4、在模块测试函数里面,调用wifi_func_verify_pt验证wifi功能是否正常,若正常,返回真,若不正常,返回假;
5、接着系统重新调用产品测试函数,参数视模块测试函数返回值而定。返回值为真,参数为PTS_OK 3,返回值为假,参数为PTS_FAIL
2,此时就可以打印产测结果了;
6、最后系统调用设备测试函数,整个过程完成;
总结一下:其实在第3步的定时时间到后直接调用wifi_func_verify_pt,根据返回值就可以完成射频功能测试了,但是,涂鸦自己这么设计肯定有原因,还是按照上面的流程来做比较好。
if(STAT_UNPROVISION ==
wf_stat || \
STAT_STA_UNCONN == wf_stat || \
(get_gw_status() != STAT_WORK))//连接上热点就可以,不需要连接外网
{
return WM_FAIL;
}
OPERATE_RET CreateAndStart(OUT THRD_HANDLE
*pThrdHandle,\
pThrdHandle:句柄指针,以后可用来删除任务,如不需要则用NULL;
pThrdFunc:任务函数指针;
pThrdFuncArg:传递给pThrdFunc的参数;
stack_size:堆栈大小;
pri:任务优先级;
thrd_name:只是个名字,最好起和pThrdFunc一样的名字;
实际应用参考如下:
CreateAndStart(NULL,Task1,NULL, 100, 5,
"TASK1");
2、single_dev_reset_factory:恢复出厂设置,需要调用两次才能恢复出厂设置,用于产测的时候,产测成功,需保证调用了两次,然后会重启;
3、tuya_dev_reset_factory:恢复出厂设置,是新的接口,调用两次上面的函数是一样的功能,另外清除配置信息和激活信息的功能参考头文件说明;
4、tuya_get_wf_status:获取flash里面的配置信息,比如是STAT_UNPROVISION(smartconfig状态)或者STAT_AP_STA_UNCONN(AP配置状态)等等;启动时会查询这个信息,进行不同的操作比如smartconfig等。
5、tuya_get_gw_status:获取产品激活状态,比如产测模式,产品未激活,激活就绪态,正常工作状态等,这个信息也是保存在flash里面,不需要联网获取。每次调用tuya_dev_reset_factory重新配置上网,就会重新变成产测或者是未激活状态,配置上网后就会变成正常工作状态,服务器上也会显示一次新的激活,也可以说,每次配置都对应一次新的激活。
6、tuya_device_init(),设备初始化,旧版本的是smart_frame_init和single_wf_device_init_pk一起使用;
7、set_wf_cfg_method函数用于设置配网状态,在app_init里面调用。涂鸦的demo是设置为0,这种状态下,进入配网模式后,只要还没配网,重启都还是会进入原来的配网模式。如果设置为2,进入配网模式后,10s内重启,还是会进入配网模式。但是如果是10s后重启,就不会再进入配网模式了,而是进入连接状态(已经配置过的情况下,没配置过的情况还没详细测试,好像是进入STAT_LOW_POWER,可在wfl_timer_cb查看)。
二、SDK架构开发流程:
如图:
三、产品开发流程分析:
四、产测流程:
五、注意事项:
1、使用tuya_get_wf_status获取状态,刚上电时都是2,过了一段时间之后,才能获取到真正的状态。
2、PR_DEBUG在使用build_app_release.sh编译的时候不会打印信息。
3、只要在同一个局域网内,就算没有连接外网也可以控制,所以msg_upload_proc里面有这句话:
GW_WIFI_STAT_E wf_stat = get_wf_gw_status();
...
否则就上报。
六、1.0.6sdk的配网,低功耗和产测的关系
可以简单的只把模块状态分成低功耗和已配置过网络(也就是会直接连接配置过的网络)的状态;
1、烧录程序后,模块处于低功耗状态;
2、只有在低功耗状态,模块在上电时大概2s内会扫描产测热点,若扫描到产测热点,进入产测代码,若没扫描到产测热点,则进入用户代码。
若不是在低功耗状态,则不会进行上面的步骤,而是直接进入用户代码,也就是产测只有在低功耗状态下才有可能进行。
3、在低功耗状态(或者配置过网络的状态),程序调用single_dev_reset_factory进入配网模式后10s内重启,还会进入配网模式,若上电超过10s到3min之间重启,就会退出配网模式,返回之前的状态(低功耗或者已配置过网络的状态)。若上电超过3min则直接退出配网模式,返回之前的状态,此时重启后也是之前的状态(低功耗或者已配置过网络的状态)。
4、若是连接上服务器后,用手机app移除的方式来进入配网模式,在10s内重启,还会进入配网模式。若上电10s到3min之间重启,则进入低功耗模式;若上电超过3min则直接退出配网模式,返回低功耗模式,此时重启后也是低功耗模式。
前一篇:链接
后一篇:乐鑫RTOS_SDK