一.项目流程
项目整体思路比较简单,W801上电后读取内部flash中保存在固定位置的Wifi账号密码,同时开始蓝牙,每当蓝牙接收到命令后,就对其进行解析,如果为连接wifi命令,则断开当前wifi,并进行新的wifi连接,连接成功后将账号密码更新至内部flash中固定位置,用于下次上电连接。大致的流程图如下:
二.代码解析
【1】使用说明:本代码使用的基本都是基于SDK中代码进行的修改
【2】主程序:
void UserMain(void)
{
printf("\n-----------------------PROJECT Version1.6.5---------------------------\n");
printf("\n-------------------------------BLE Start--------------------------------\n"); //这里在wm_main中开启了蓝牙任务,可以参考官方提供的蓝牙说明书
tls_os_time_delay(1000);
printf("\n-------------------------------WiFi Start--------------------------------\n");
mqtt_start();
get_wifi_params(ssid, pwd); //获取内部flash中保存的最近一次成功连接的wifi账号密码
wifi_connect_net(ssid, pwd); //进行wifi连接,这个使用的就是demo中的链接函数,做了一点修改
tls_os_time_delay(3000);
printf("\n-------------------------------APP Start--------------------------------\n");
tls_os_task_create(app_handle, "app", app_task,
NULL, (void *)app_task_stk,
APP_TASK_SIZE * sizeof(u32),
APP_TASK_PRIO, 0); //主任务
}
【3】蓝牙命令处理的铺垫:要实现蓝牙命令的解析,首先要知道蓝牙接受到命令后在那个位置保存,这个很多大佬已经进行了分享,我这里再简单说明下如下图所示,为了方便后续更多蓝牙命令的处理因此,我单独创建了一个ble_cmd_excute函数用于命令解析执行。