QPPc 工程更新,与QPPs通信
来源:互联网 发布:知乎 出差神器 编辑:程序博客网 时间:2024/05/21 15:45
prj_client更新:
一、自动扫描
void app_menu_cb(ke_msg_id_t const msgid, void *param){ke_state_t state = (ke_state_get(TASK_APP)); if (APP_INIT == state) { switch (msgid) { case GAP_READY_EVT: case GAP_RESET_REQ_CMP_EVT:app_env.menu_id = menu_start;app_menu_show(); break;case GAP_READ_VER_REQ_CMP_EVT: QPRINTF("*\r\n"); QPRINTF("* Version:\r\n"); QPRINTF("* AP%sHL%1x.%1x.%1xLL%1x.%1x.%1x\r\n", QN_APP_VER, ((struct gap_read_ver_req_cmp_evt *)param)->host_ver, ((struct gap_read_ver_req_cmp_evt *)param)->host_subver>>8&0xFF, ((struct gap_read_ver_req_cmp_evt *)param)->host_subver&0xFF, ((struct gap_read_ver_req_cmp_evt *)param)->lmp_ver, ((struct gap_read_ver_req_cmp_evt *)param)->lmp_subver>>8&0xFF, ((struct gap_read_ver_req_cmp_evt *)param)->lmp_subver&0xFF);break;case GAP_READ_BDADDR_REQ_CMP_EVT:QPRINTF("* BD Address:\r\n");QPRINTF("* %02x%02x%02x%02x%02x%02x\r\n",((struct gap_read_bdaddr_req_cmp_evt *)param)->addr.addr[5],((struct gap_read_bdaddr_req_cmp_evt *)param)->addr.addr[4],((struct gap_read_bdaddr_req_cmp_evt *)param)->addr.addr[3],((struct gap_read_bdaddr_req_cmp_evt *)param)->addr.addr[2],((struct gap_read_bdaddr_req_cmp_evt *)param)->addr.addr[1],((struct gap_read_bdaddr_req_cmp_evt *)param)->addr.addr[0]);QPRINTF("*\r\n");//QPRINTF("* By Derek\r\n");QPRINTF("* @ %11s, %8s\r\n",__DATE__, __TIME__);QPRINTF("*------------------------\r\n");//app_env.menu_id = menu_main;//app_menu_show();//Leoprintf("Scanning....\r\n");app_env.input[0]='1';app_env.menu_id=menu_gap;app_menu_hdl();break;
二、只有一个设备时自动建立连接
int app_gap_dev_inq_cmp_handler(ke_msg_id_t const msgid, struct gap_event_common_cmd_complete const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id){ QPRINTF("Total %d devices found.\r\n", app_env.inq_idx); ke_state_set(TASK_APP, APP_IDLE); app_task_msg_hdl(msgid, param);//Leoapp_env.menu_id = menu_gap_create_connection; app_menu_show();
<span style="white-space:pre">app_menu_hdl();</span> return(KE_MSG_CONSUMED);}
static void app_menu_show_gap_inq_record(void){ if (app_env.inq_idx > 0) { QPRINTF("\r\n"); QPRINTF("Inquiry device record:\r\n"); for (uint8_t i = 0; i < app_env.inq_idx; i++) { QPRINTF("%d. %02X%02X%02X%02X%02X%02X\r\n", i, app_env.inq_addr[i].addr[5], app_env.inq_addr[i].addr[4], app_env.inq_addr[i].addr[3], app_env.inq_addr[i].addr[2], app_env.inq_addr[i].addr[1], app_env.inq_addr[i].addr[0]); } QPRINTF("Please input the device index:\r\n"); } else { QPRINTF("Inquiry device record is NULL.\r\n"); app_env.menu_id = menu_gap; }//Leoif(app_env.inq_idx==1){app_env.input[0]='0';app_menu_hdl();}}
三、连接上以后自动enable qppc
int app_gap_change_param_req_cmp_handler(ke_msg_id_t const msgid, struct gap_change_param_req_cmp_evt const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id){ if (param->status == CO_ERROR_NO_ERROR) { QPRINTF("Update parameter complete, interval: 0x%x, latency: 0x%x, sup to: 0x%x.\r\n", param->con_interval, param->con_latency, param->sup_to); } else { QPRINTF("Update parameter failed.\r\n"); } app_task_msg_hdl(msgid, param);//Leoapp_env.menu_id = menu_qppc;app_env.input[0]='1';app_menu_hdl(); return (KE_MSG_CONSUMED);}
四、enable qppc OK,待输入2发送命令
int app_qppc_enable_cfm_handler(ke_msg_id_t const msgid, struct qppc_enable_cfm *param, ke_task_id_t const dest_id, ke_task_id_t const src_id){ QPRINTF("QPPC enable confirmation status: 0x%x.\r\n", param->status);//Leoapp_menu_show();
五、接收消息:
int app_qppc_data_ind_handler(ke_msg_id_t const msgid, struct qppc_data_ind *param, ke_task_id_t const dest_id, ke_task_id_t const src_id){// uint8_t idx = KE_IDX_GET(src_id);// if ((data_pack%200) == 0 && (data_pack != 0))// {// QPRINTF("(%d)Received %d bytes data[%02X] from characteristic %d\r\n", idx, param->length, param->data[0], param->char_code);// }/*(0)Received 20 bytes data[C9] from characteristic 5(0)Received 20 bytes data[C9] from characteristic 2(0)Received 20 bytes data[C9] from characteristic 3(0)Received 20 bytes data[C9] from characteristic 4(0)Received 20 bytes data[C9] from characteristic 1*///Leo_success_codestatic int8_t i;printf("**Updated****app_qppc_data_ind_handler(),param->length=%d£¬characteristic %d\r\n",param->length,param->char_code);for(i=0;i<param->length;i++){printf("app_env.input[%d]= %d\r\n",i,param->data[i]);}// app_task_msg_hdl(msgid, param);// data_pack ++; return (KE_MSG_CONSUMED);}
0 0
- QPPc 工程更新,与QPPs通信
- QPPS 工程
- QPPc menu过程
- 热更新-Android与Lua相互通信
- 热更新-Android与Lua相互通信
- 《接口与通信》+《Visual C++串口通信技术与工程实践(2nd)》笔记
- git 简明教程(2) --获取工程与更新
- NXP QN902X蓝牙QPPS 流程的理解
- Visual C++实践与提高 —— 串口通信与工程应用篇[配套源码]
- 网络通信学习(更新...)
- SSH通信配置-更新
- [Android通信]版本更新
- 无锡弱电工程通信智能化工程
- SSECMM在某通信网络管理系统安全工程中的应用与实践
- 组态王与单片机通信源码 组态王6.55破解版 大量工程案例
- Android客户端与PHP服务端通信(四)---极光推送示例工程分析
- Linux内核工程导论——进程:内核与用户空间的进程通信
- Python数据挖掘与机器学习_通信信用风险评估实战(3)——特征工程
- 将JDBC ResultSet解析为JSON格式
- as(android studio)的初次使用
- Android学习笔记(三):关于像素的一些知识
- Keil uVision(MDK)软件使用
- 转:Source Insight中多行注释
- QPPc 工程更新,与QPPs通信
- AndroidStudio快捷键Search/Replace
- 潜在语义分析
- MYSQL命令大全
- 邮箱发送搭建注意
- java笔记-初识类与对象
- Restrictions用法
- 用PHP实现一个Amazon SES的代理服务器
- QT学习 之 三维饼图绘制