6626 tspp服务通信流程梳理

徽信管理团队 · 120次点击 · 1个月前

说明:本文适用于6626 SDK中simple工程下的tspp服务通信流程。


1、主机端使能notify,这个时候会进入tspp_event_cb函数中的OB_GATTS_EVT_WRITE_REQ分支。


2、分支会判断到是哪个特性,如果是IDX_TSPP_NOTIFY_DESC这个属性,会调用app_tspp_status_ind_handler函数,代表使能notify,并初始化send_cnt = 0


3、在app_tspp_status_ind_handler函数内会调用app_tspp_data_sent_ind_handler函数


4、该函数会通过tspp_send函数把数据先缓存到tspp_fifo内,然后再通过tspp_transmit发送出去 


5、由于每次发送会有一个 OB_GATT_EVT_TX_COMPLETE回调上来


6、在OB_GATT_EVT_TX_COMPLETE回调内会再次调用tspp_transmit函数进行检查tspp_fifo内是否还有数据


7、在OB_GATT_EVT_TX_COMPLETE回调内也会继续调用app_tspp_data_sent_ind_handler函数进行数据填充到FIFO内。


总结:

1、每次只通过ob_gatts_send_hvx发一笔数据,在OB_GATT_EVT_TX_COMPLETE回调内再发 


2、

要想实现大量数据发送,就得通过如下方式进行发送:

整体流程就是,先往FIFO内填充数据,为了提高传输效率,并不是一次性 FIFO内填充完再发,而是先填充mtu(tspp是按244字节处理,如果发送数据小于mtu就直接发送要发数据长度就行)大小,再通过调用tspp_send函数来从fifo内取出数据,通过tspp_transmit函数进行发送,但是本质的发送函数是ob_gatts_send_hvx。



被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站