说明:本文适用于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。 |