CC2540广播的方式传送一定的信息
hi:
我有一个问题,ble4.0协议栈中,广播数据的数据包中advData段最大是31个字节吗,如果是的话,通过广播方式传送数据只能是每个数据包的拼接,
这样传输的数据大小和传输速率很不理想;
如果能让advData段字节加长如100个字节,可以吗,怎么做,限制字节数,应该是为了降低功耗,因为想做一个广播推送广告基站,所以不用考虑功耗问题。
广播包负载Payload = AdvA (6 Bytes) + AdvData (31 Bytes max.),这个是协议定义的,降低功耗主要靠连接间隔等参数,而不是数据大小,蓝牙本身就不适宜大数据传输
Hi Viki shi:
谢谢你的回答,还有就是一个问题:
我想把我的广播数据分成两种类型,一种是广播数据一样的,一种是将大的数据分包的,这两种数据包之间间隔30ms更新一次;我试过在
peripheralStateNotificationCB中的GAPROLE_ADVERTISING下用GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertDataNew ), advertDataNew )更新数据,但是没有成功;又在SimpleBLEPeripheral_ProcessEvent中用同样的方法还是没有更新成功;是不是用新的定时器中断来做这件事呢,如果不是该怎么做?
用广播来传送数据是个很有创意的想法,这样就省去了连接的开销,而且一个Broadcast的广播可以被很多个Observer接收。
但是,通过广播来传输数据其实是一种不可靠的数据传输。因为广播者发出的广播有没有被接收者接收到,是没有确认的。
现实的环境可能存在各种干扰,是无法保证Observer能检测到Broadcast的每一次广播包的。
如果你的实际应用中允许这种不确定性的丢包现象,倒也无所谓。
而建立在连接的数据传输,在底层是做好了差错控制的。
Hi shaokai Lin:
因为需要交互的主机较多,想不到别的办法,由于传输的信息量不是很大,所以容许一定的丢失率,现在就是还不了解怎么更新广播包!
修改广播包
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
修改扫描回应包
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
Hi shaokai Lin:
修改广播的内容是这样的,我一直没有正确的注意到每隔30ms发送一次广播的事件
我最近也在做广播包携带自己的数据相关的东东,你可以通过GAP_UpdateAdvertisingData( simpleBLEPeripheral_TaskID, TRUE, sizeof( advertData ), advertData );来更新广播数据包。
hi yuhong liu:
我早前就在app中用GAP_UpdateAdvertisingData( simpleBLEPeripheral_TaskID, TRUE, sizeof( advertData ), advertData );更新广播只更新了一次,最后我采用的是这个函数:HCI_LE_SetAdvDataCmd(len ,advertData);来20ms更新一次广播,结果是主机收到的数据会有一定的丢失率,但是基本是可行的,因为我的数据不多最多300个字节;
我有一个问题,请知道的工程师帮我解答一下,就是我要连接更新我的广告,要更新的数据大概在300字节,连接发送的时候最大时20个字节,也就是我得自行分包和组包,如果是这样,主机发送是连续的发送数据包,还是数据包之间有一定的时间间隔?
各位大神:
请问:
GAP_UpdateAdvertisingData( simpleBLEPeripheral_TaskID, TRUE, sizeof( advertData ); 或
HCI_LE_SetAdvDataCmd(len ,advertData);
要更新广播数据,些更新函数应该放在哪个地方,我试了几个地方都不行
我用的例程是:SimpleBLEBroadcaster
放在这里面,结果不行
uint16 SimpleBLEBroadcaster_ProcessEvent( uint8 task_id, uint16 events )
{
}
谢谢