TA的每日心情 | 奋斗 1 小时前 |
|---|
签到天数: 2729 天 连续签到: 1 天 [LV.Master]伴坛终老
进士
- 积分
- 2085
|
前面也已经介绍了如何搭建开发环境,安装AndeSight_RDS IDE,这里不再赘述。这节主要介绍开发板的蓝牙例程。直接去到泰凌微官方网址:http://wiki.telink-semi.cn/wiki/chip-series/TLSR921x-Series/,这里选择单模SDK,文件如下附件。
当然开发板也是支持双模、Mesh、Zigbee的,该网址也提供了相应的SDK,有兴趣的坛友可以去体验体验。打开AndeSight_RDS IDE,直接导入单模SDK。
此单模SDK包含三个Demo工程,在Build时选择B91 feature工程,执行编译。等待编译完成后,生成B91_feature.bin文件。
使用BDT软件,加载刚刚生成的bin文件。
下载完成后,打开手机蓝牙,并打开安装好的nRF Connect蓝牙调试工具。
点击“CONNECT”,即可看到板卡上的红色指示灯被点亮,手机端弹出配对的提示对话框。
连接绑定后,设备的特征值,服务列表显示如下:
这里我们着重看“Human Interface Device”服务,有按键远程控制蓝牙设备的接入点。
- void task_connect (u8 e, u8 *p, int n)
- {
- bls_l2cap_requestConnParamUpdate (8, 8, 99, 400); // 1 S
- #if (UI_LED_ENABLE)
- gpio_write(GPIO_LED_RED, LED_ON_LEVAL); //yellow light on
- #endif
- }
- void task_terminate(u8 e,u8 *p, int n) //*p is terminate reason
- {
- if(*p == HCI_ERR_CONN_TIMEOUT){
- }
- else if(*p == HCI_ERR_REMOTE_USER_TERM_CONN){ //0x13
- }
- else if(*p == HCI_ERR_CONN_TERM_MIC_FAILURE){
- }
- else{
- }
- #if (UI_LED_ENABLE)
- gpio_write(GPIO_LED_RED, !LED_ON_LEVAL); //yellow light off
- #endif
- }
- _attribute_ram_code_ void task_suspend_exit (u8 e, u8 *p, int n)
- {
- rf_set_power_level_index (MY_RF_POWER_INDEX);
- }
- #if (UI_KEYBOARD_ENABLE)
- _attribute_data_retention_ int key_not_released;
- #define CONSUMER_KEY 1
- #define KEYBOARD_KEY 2
- _attribute_data_retention_ u8 key_type;
- /**
- * @brief this function is used to process keyboard matrix status change.
- * @param[in] none
- * @return none
- */
- void key_change_proc(void)
- {
- u8 key0 = kb_event.keycode[0];
- u8 key_buf[8] = {0,0,0,0,0,0,0,0};
- key_not_released = 1;
- if (kb_event.cnt == 2) //two key press, do not process
- {
- }
- else if(kb_event.cnt == 1)
- {
- if(key0 >= CR_VOL_UP ) //volume up/down
- {
- key_type = CONSUMER_KEY;
- u16 consumer_key;
- if(key0 == CR_VOL_UP){ //volume up
- consumer_key = MKEY_VOL_UP;
- gpio_write(GPIO_LED_WHITE,1);
- }
- else if(key0 == CR_VOL_DN){ //volume down
- consumer_key = MKEY_VOL_DN;
- gpio_write(GPIO_LED_GREEN,1);
- }
- blc_gatt_pushHandleValueNotify (BLS_CONN_HANDLE, HID_CONSUME_REPORT_INPUT_DP_H, (u8 *)&consumer_key, 2);
- }
- else
- {
- key_type = KEYBOARD_KEY;
- key_buf[2] = key0;
- if(key0 == VK_1)
- {
- gpio_write(GPIO_LED_BLUE,1);
- }
- else if(key0 == VK_2)
- {
- gpio_write(GPIO_LED_BLUE,1);
- }
- blc_gatt_pushHandleValueNotify (BLS_CONN_HANDLE, HID_NORMAL_KB_REPORT_INPUT_DP_H, key_buf, 8);
- }
- }
- else //kb_event.cnt == 0, key release
- {
- gpio_write(GPIO_LED_WHITE,0);
- gpio_write(GPIO_LED_GREEN,0);
- key_not_released = 0;
- if(key_type == CONSUMER_KEY)
- {
- u16 consumer_key = 0;
- blc_gatt_pushHandleValueNotify (BLS_CONN_HANDLE, HID_CONSUME_REPORT_INPUT_DP_H, (u8 *)&consumer_key, 2);
复制代码 从代码中可看出,官方提供了许多接口供用户拓展其它功能。在nRF Connect蓝牙调试工具中可查看开发板连接log。
打开手机蓝牙搜索,列表中发现feature设备。
连接feature设备后,再打开“输入设备”的开关,即可实现通过开发板按键远程控制手机端。
经测试,开发板上的SW2 K1可控制手机铃声音量减少,播放音乐时可减少播放音量,照相时可及时抓拍;开发板上的SW3 K2控制手机铃声音量增加,播放音乐时可增加播放音量,照相时也可及时抓拍等。视频审核通过后再附上,此次分享就到这儿啦,咱们后会有期。
|
|