【Microchip WBZ451 Curiosity】-8- BLE Custom Service开发体验
[复制链接]
本帖最后由 慕容雪花 于 2023-8-21 20:31 编辑
往期测评文章一览:
本文主要体验如何在Microchip的集成开发环境MPLABX IDE中,配合Maplab Harmony MCC插件来图形化开发BLE功能。先来个演示视频:
ble gatt custom service
1. 老朋友MCC,虽然好用,但是还是卡,一如既往。
2. 在BLE基础配置中,确认不需要勾选GATT Client。在本文中,手机app作为GATT Client,WBZ451开发板作为GATT Server。
3. 在customized Service组件中,增加一个Service。Service名称有长度限制,注意UUID的小端存储模式。这里定义的UUID与手机app看到的有区别。
4. Service下面包含Characteristic。下图展示的是Characteristic 0。这个Characteristic用于读取按键状态,以及订阅按键状态变化。
5. Characteristic 1即第二个Characteristic,用户控制板载LED状态。类似Characteristic 0的UUID,都可以用在线的UUID生成器自动生成。
6. 点击Generate,自动生成代码。
7. 自动生成的代码存储在config\default\ble\service_ble
8. APP Task中,循环使用OS抽象层的OSAL_QUEUE_Receive()函数检测是否有相应的事件发生。
case APP_STATE_SERVICE_TASKS:
{
if (OSAL_QUEUE_Receive(&appData.appQueue, &appMsg, OSAL_WAIT_FOREVER))
{
if(p_appMsg->msgId==APP_MSG_BLE_STACK_EVT)
{
// Pass BLE Stack Event Message to User Application for handling
APP_BleStackEvtHandler((STACK_Event_T *)p_appMsg->msgData);
}
else if(p_appMsg->msgId==APP_MSG_BLE_CS_LED_EVT)
{
APP_CustomService_RGB_Handler((uint8_t *)((STACK_Event_T *)p_appMsg->msgData));
}else if(p_appMsg->msgId==APP_MSG_BLE_CS_BUTTON_EVT)
{
APP_CustomService_Button_Handler();
}
}
break;
}
9. 手机app,通过ble gatt写入数据后,步骤8中会检测到相应的BLE事件,通过如下的函数调用,接受到的报文的msgId = APP_MSG_BLE_CS_LED_EVT.
之后,调用LED灯的处理函数:
uint8_t APP_CustomService_RGB_Handler(uint8_t *p_cmd)
{
bleCSdata.RGB_LED.Red = p_cmd[0];
bleCSdata.RGB_LED.Green = p_cmd[1];
bleCSdata.RGB_LED.Blue = p_cmd[2];
//SYS_CONSOLE_PRINT ("[BLE] RGB LED data 0x%X 0x%X 0x%X \r\n",p_cmd[0],p_cmd[1],p_cmd[2]);
SERCOM0_USART_Write((uint8_t *)"[BLE] RGB LED data Received\r\n",strlen("[BLE] RGB LED data Received\r\n"));
if(bleCSdata.rgbOnOffStatus == LED_ON)
{
if(bleCSdata.RGB_LED.Red)
RGB_LED_RED_Set();
else
RGB_LED_RED_Clear();
if(bleCSdata.RGB_LED.Green)
RGB_LED_GREEN_Set();
else
RGB_LED_GREEN_Clear();
if(bleCSdata.RGB_LED.Blue)
RGB_LED_BLUE_Set();
else
RGB_LED_BLUE_Clear();
//SYS_CONSOLE_MESSAGE("[BLE] RGB SET\n\r");
}
return SUCCESS;
}
总结:
整体来讲,使用MPLABX IDE配合HARMONY MCC插件开发蓝牙BLE应用是非常方便的。尤其是MPLABX IDE自带的函数调用结构图非常方便的查看代码。
|