微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于服务发现的一些疑问?如ANCS的服务

关于服务发现的一些疑问?如ANCS的服务

时间:10-02 整理:3721RD 点击:

timeAppDiscStart( void )
{
// Clear handle cache
osal_memset( timeAppHdlCache, 0, sizeof(timeAppHdlCache) );

// Start discovery with first service
return timeAppDiscGattMsg( DISC_ANCS_START, NULL );
}

中调用imeAppDiscGattMsg( DISC_ANCS_START, NULL );其中第二个参数是NULL,进入该函数中去之后,选择执行了

switch ( state & 0xF0 )
{
// Alert notification service
case DISC_ANCS_START:
state = TimeAppDiscAlertNtf( state, pMsg );的函数,pMsg是为NULL的,那在 TimeAppDiscAlertNtf( uint8 state, gattMsgEvent_t *pMsg )中,

if ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP &&
pMsg->msg.findByTypeValueRsp.numInfo > 0 )pMsg的值是哪里来的?

gang,

if ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP &&
pMsg->msg.findByTypeValueRsp.numInfo > 0 )

这个判断是在查找到相应的服务之后的返回。

timeAppDiscStart()之后会有一系列自动的过程,有很多状态机,你可以参考一下 DISC_CURR_TIME_START 的流程。

比如,return timeAppDiscGattMsg( DISC_CURR_TIME_START, NULL ); 只是触发服务查找,不需要注册事件。相应的处理可以参考 TimeAppDiscCurrTime(),里面有对这个事件的处理。之后的DISC_CURR_TIME_SVC 才是有对返回的事件的处理。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top