一、环境
使用CH573EVT_V1.4\EVT\EXAM\BLE\Peripheral
二、流程
例如我们要收发 200 字节数据
config.h里面设置 MTU大小 为207 !最后实际设置成功后,MTU=203 ,实际收发数据=203-3=200
#ifndef BLE_BUFF_MAX_LEN
#define BLE_BUFF_MAX_LEN 207//27
设置特征值长度,这里 CHAR1用于Write,CHAR4用于Notify
// Length of characteristic in bytes ( Default MTU is 23 )
#define SIMPLEPROFILE_CHAR1_LEN 200
#define SIMPLEPROFILE_CHAR2_LEN 1
#define SIMPLEPROFILE_CHAR3_LEN 1
#define SIMPLEPROFILE_CHAR4_LEN 200
#define SIMPLEPROFILE_CHAR5_LEN 5
最好增加以下每个间隔可以发送的数据包
//BLE_TX_NUM_EVENT - 单个连接事件最多可以发多少个数据包( 默认:1 )
#ifndef BLE_TX_NUM_EVENT
#define BLE_TX_NUM_EVENT 3
#endif
加一下MTU设置成功的打印回调
uint16 Peripheral_ProcessEvent( uint8 task_id, uint16 events )
{
// VOID task_id; // TMOS required parameter that isn't used in this function
if ( events & SYS_EVENT_MSG ){
uint8 *pMsg;
if ( (pMsg = tmos_msg_receive( Peripheral_TaskID )) != NULL ){
Peripheral_ProcessTMOSMsg( (tmos_event_hdr_t *)pMsg );
// Release the TMOS message
tmos_msg_deallocate( pMsg );
}
// return unprocessed events
return (events ^ SYS_EVENT_MSG);
}
----------------------------------------------
/*********************************************************************
* @fn Peripheral_ProcessTMOSMsg
*
* @brief Process an incoming task message.
*
* @param pMsg - message to process
*
* @return none
*/
static void Peripheral_ProcessTMOSMsg( tmos_event_hdr_t *pMsg )
{
switch ( pMsg->event ){
case GATT_MSG_EVENT:
{
centralProcessGATTMsg( (gattMsgEvent_t *) pMsg );
}
break;
default:
break;
}
}
注意点,notify数据最好不超100字节,否则很容易发送失败。。。主设备Write设备倒是可以200字节
|