您好:
为了对功能进行分类,现需要添加多个Service,而改写原有的simpleGATTprofile.c 这个文件的时候,遇到了一些问题,希望能得到解答,不胜感谢~O(∩_∩)O哈哈~
这是 simpleGATTprofile.c 文件中的两个函数。
bStatus_t simpleProfile_AddService( uint32 services )
{
...
GATTServApp_InitCharCfg( INVALID_CONNHANDLE, Profile1Char1Config ); //①
..
VOID linkDB_Register( simpleProfile_HandleConnStatusCB ); //②
if( services & PROFILE1_SERVICE1 ) //③
status = GATTServApp_RegisterServe( xx,xx,xx );
if( services & PROFILE1_SERVICE2 )
..
}
static void simpleProfile_HandleConnStatusCB( uint16 connHandle, uint8 changeType)
{
if( connHandle != xx )
{
if( (changeType == xx)||(xx...))
GATTServApp_InitCharCfg( connHandle, Profile1Char1Config); //④
}
}
问题:
1.在 Profile_AddServices( u32 ) 这个函数中用 ②函数 也就是linkDB_Register( xx )函数注册了simpleProfile_HandleConnStatusCB( uint16, uint8 ) 这个回调函数,目测和Notify有关,但是不知道起到什么作用,请问这个回调函数有什么作用。
2.现在有多个需要Notify的属性,示例中具有Notify属性的需要用 ① 也就是GATTServApp_InitCharCfg( xx )函数中注册一下,想知道
GATTServApp_InitCharCfg( xx )是不是维持着一个数组,我可以向里面添加多个Notify的地址,是的话,他最多接受的数量是多少?
3.而Profile_AddServices()函数中,有一个判断③ if( services & PROFILE1_SERVICE1 ) 想问一下,模块最多支持多少个Services?32个?
4.然后 simpleProfile_HandleConnStatusCB( uint16, uint8 ) 这个函数中,调用了函数④ GATTServApp_InitCharCfg( xx ),但是在执行这个函数之前的判断,我没看懂。想问下,如果我有多个Notify,比如 uint8 Profile1Char1Config[],uint8 Profile1Char2Config[],那 simpleProfile_AddServices()和simpleProfile_HandleConnStatusCB()这两个函数我该怎么改写啊。
本想照葫芦画瓢,Notify这儿画不出来了,还希望能得到您的指教,谢谢~O(∩_∩)O哈哈~