一种蓝牙基带芯片的广告数据管理方法及装置
技术领域
本申请涉及网络通信技术领域,尤其涉及一种蓝牙基带芯片的广告数据管理方法及装置。
背景技术
蓝牙技术经过20多年的不断发展,其核心协议也在不断演化改进,应用领域和方向也不断得到扩展,从最初的主要应用于短距离连续稳定音频流(ACL和SCO)的传输和控制,到最近几年的低功耗蓝牙模式(Bluetooth lowenergy,BLE)点对点小数据量传输,以及目前多点对多点的广播数据传输(mesh),体现了蓝牙技术演化的基本路径,即适应当前IoT和智能化应用发展的主流趋势。最新的蓝牙5.0标准协议扩大了广告数据发送的单包容量(最多可达254-Byte),传输距离更远(允许的传输功率更高),传输速率更高(可达2Mbps)。
蓝牙5.0核心协议为了提高广告数据包的传输效率,从协议层优化了广告数据的发送模式,增加了扩展广告发送的模式。然而扩展广告发送模式虽然增加了广告数据发送的灵活性,即在一个广告事件中,为了尽可能减少广告数据总的发送数量和时间,只能在辅助广告数据包AUX_ADV_IND、AUX_SYNC_IND和AUX_CHAIN_IND中发送广告数据。但扩展广告数据包单包的数据长度最大可达254个字节,由于考虑到可能存在chain包的情形,因此在一个扩展广告事件中实际传输的广告数据总量根据应用场景的需要可能很大,进而导致蓝牙基带芯片所需的内存容量增加,且现有技术也无法有效地对蓝牙基带芯片所需发送的大量广告数据进行有效管理,导致蓝牙基带芯片的功耗增加。
发明内容
本申请实施例所要解决的技术问题在于,提供一种蓝牙基带芯片的广告数据管理方法及装置,节省蓝牙基带芯片所需要的额外内存空间,降低蓝牙基带芯片的功耗。
为解决上述问题,本申请实施例提供一种蓝牙基带芯片的广告数据管理方法,适于在计算设备中执行,至少包括如下步骤:
响应扩展广告事件,获取K个广告数据集;其中,所述广告数据集包括存储于外部存储器的扩展广告数据包;K为正整数;
沿写指针将各所述广告数据集写入排帧循环队列中,以使蓝牙基带芯片沿读指针发送所述排帧循环队列中的所述广告数据集;以及,
当所述广告数据集存在辅助广告数据包时,根据所述广告数据集在所述排帧循环队列中的排帧情况,确定所述辅助广告数据包的发送时间点。
进一步的,所述响应扩展广告事件,获取广告数据集,包括:
响应扩展广告事件,确定K个所述广告数据集中,所需发送的M个所述扩展广告数据包,及M个所述扩展数据包的发送顺序,并根据M个所述扩展广告数据包的基地址,获取M个所述扩展广告数据包;其中,M为正整数且M≥K。
进一步的,所述排帧循环队列包括多个按帧号排列的扇区;所述扇区用于存储数据;
所述沿写指针将各所述广告数据集写入排帧循环队列中,以使蓝牙基带芯片沿读指针发送所述排帧循环队列中的所述广告数据集,包括:
将所述写指针所指向的所述扇区作为第一目标扇区;
向所述第一目标扇区写入所述广告数据集;
在所述第一目标扇区被写满后,将所述写指针指向的所述排帧循环队列中所述第一目标扇区的下一扇区,作为新的第一目标扇区;
将所述读指针所指向的所述扇区作为第二目标扇区,以使蓝牙基带芯片沿读指针发送所述第二目标扇区中的所述广告数据集,并清除所述第二目标扇区中已读的所述广告数据集。
进一步的,当所述广告数据集存在辅助广告数据包时,根据所述广告数据集在所述排帧循环队列中的排帧情况,确定所述辅助广告数据包的发送时间点,包括:
将所述广告数据集中,与所述辅助广告数据包相关联的所述扩展广告数据包作为第一目标数据包,根据所述第一目标数据包在所述排帧循环队列中的排帧情况,确定所述辅助广告数据包应位于的所述扇区的帧号f为f=(F+((A+B)/C))%D,以及确定所述辅助广告数据包的帧内发送时间偏移量ε为ε=(A+B)%C;其中,D为所述排帧循环队列的长度,F为所述第一目标数据包所位于的扇区的帧号,A为所述辅助广告数据包的Aux Offset值,B为所述第一目标数据包在所述排帧循环队列中的帧内发送偏移量,C为各所述扇区占用的时间长度;
根据所述帧号f及所述帧内发送时间偏移量ε,确定所述辅助广告数据包的发送时间点。
进一步的,还包括:
当主广告通道个数为n时,根据与所述第一目标数据包相关联的辅助广告数据包的Aux Offset值A,以及所述广告数据集中相邻所述扩展广告数据包的间隔时间T,确定与所述广告数据集中第二目标数据包相关联的辅助广告数据包的Aux Offset值x;其中,所述第二目标数据包为在所述第一目标数据包后发送的第m个扩展广告数据包;x=A-(m-1)*T*1000;1<m≤n。
进一步的,还包括:
当第i+1个所述广告数据集中的辅助广告数据包的发送时间,与第i个所述广告数据集的发送时间之间交叠超过预设的单位时间,则将第i+1个所述广告数据集中的辅助广告数据包,先于第i个所述广告数据集发送;其中,i为正整数且i<K。
进一步的,本申请实施例还提供一种蓝牙基带芯片的广告数据管理装置,包括:
广告数据获取模块,用于响应扩展广告事件,获取K个广告数据集;其中,所述广告数据集包括存储于外部存储器的扩展广告数据包;K为正整数;
广告数据发送模块,用于沿写指针将各所述广告数据集写入排帧循环队列中,以使蓝牙基带芯片沿读指针发送所述排帧循环队列中的所述广告数据集;以及,
发送时间确定模块,用于当所述广告数据集存在辅助广告数据包时,根据所述广告数据集在所述排帧循环队列中的排帧情况,确定所述辅助广告数据包的发送时间点。
进一步的,还包括:
时序调整模块,用于当第i+1个所述广告数据集中的辅助广告数据包的发送时间,与第i个所述广告数据集的发送时间之间交叠超过预设的单位时间,则将第i+1个所述广告数据集中的辅助广告数据包,先于第i个所述广告数据集发送;其中,i为正整数且i<K。
实施本申请实施例,具有如下有益效果:
本申请实施例提供的一种蓝牙基带芯片的广告数据管理方法及装置,通过响应扩展广告事件,获取K个广告数据集;其中,广告数据集包括存储于外部存储器的扩展广告数据包;沿写指针将各广告数据集写入排帧循环队列中,以使蓝牙基带芯片沿读指针发送排帧循环队列中的广告数据集;以及,当广告数据集存在辅助广告数据包时,根据广告数据集在排帧循环队列中的排帧情况,确定辅助广告数据包的发送时间点。与现有技术相比,本申请实施例将扩展广告数据包存储于外部存储器,节省蓝牙基带芯片所需要的额外内存空间,并通过管理广告数据包的发送,降低了蓝牙基带芯片的功耗,进而有效提高蓝牙基带芯片的工作效率。
附图说明
图1是扩展广告事件中发送广告数据的基本模型及时序关系图;
图2是本申请的一个实施例提供的蓝牙基带芯片的广告数据管理方法的流程示意图;
图3是本申请的实施例提供的扩展广告数据包的存放格式图;
图4是本申请的实施例提供的排帧循环队列示意图;
图5是本申请的实施例提供的图1中步骤S2的流程示意图;
图6是本申请的又一个实施例提供的蓝牙基带芯片的广告数据管理方法的流程示意图;
图7是发送多个广告数据集的模型图;
图8是本申请的一个实施例提供的蓝牙基带芯片的广告数据管理装置的结构示意图;
图9是本申请的又一个实施例提供的蓝牙基带芯片的广告数据管理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,是扩展广告事件中发送广告数据的基本模型及时序关系图。其中,ADV_EXT_IND包在主广告物理通道(primary advertising channel)上进行传输,与其相关联的辅助广告包及后续的广告包在辅广告物理通道(secondary advertising channel)上进行传输。
进一步的,参见图2,是本申请的一个实施例提供的蓝牙基带芯片的广告数据管理方法的流程示意图。如图1所示,包括步骤S1至步骤S3。各步骤具体如下:
步骤S1,响应扩展广告事件,获取N个广告数据集。
其中,广告数据集包括存储于外部存储器的扩展广告数据包;N为正整数。
步骤S2,沿写指针将各广告数据集写入排帧循环队列中,以使蓝牙基带芯片沿读指针发送排帧循环队列中的广告数据集。
步骤S3,当广告数据集存在辅助广告数据包时,根据广告数据集在排帧循环队列中的排帧情况,确定辅助广告数据包的发送时间点。
对于步骤S1,具体的,响应扩展广告事件,确定N个广告数据集中,所需发送的M个扩展广告数据包,及M个扩展数据包的发送顺序,并根据M个扩展广告数据包的基地址,获取M个扩展广告数据包。
其中,M为正整数且M≥N。
由于扩展广告发送的扩展广告数据包相比于传统广告发送的数据包要大,传输一个完整的广告数据包所需要的时间相对也比较长,且对不同类型的扩展广告数据包其数据格式也不是固定不变的,可以根据应用环境的变化而有所变化。因此在本实施例中,扩展广告数据包存放在外部可读写存储器中,与存放在一个固定的内部存储区域的传统广告的数据包分开,以达到蓝牙基带芯片设计和实现中向下兼容各版本蓝牙核心协议为目的。其中,扩展广告数据包的存放格式如图3所示。
在本实施例中,存放在外部存储器中的扩展广告数据包的基地址base address需要写入蓝牙基带芯片的地址寄存器中,使得在响应扩展广告事件时,可根据基地址获取对应的扩展广告数据包。对于存在多个连续扩展广告数据包发送的情形,后续发送的扩展广告数据包的数据偏移地址也一并写入地址寄存器。
对于步骤S2,在本实施例中,如图4所示,排帧循环队列包括N个扇区,各扇区的帧号从0到N-1进行排列。W为写指针,指向下一个数据写入的帧位置,R为读指针,指向当前数据读取的帧位置。写指针W根据当前的排帧写入,读指针R由基带芯片根据处理帧信息的位置写入,读指针R不能越过写指针W的位置,反之亦然。如果R和W的值相等,说明当前的排帧循环队列为空或者为满。
需要说明的是,排帧循环队列中每一帧所占用的时间长度为1250us。
由于对于一个扩展广告事件,如果可用的主广告物理通道(primary advertisingchannel)存在多个,则在其上发送的每个ADV_EXT_IND广告数据包除了辅助广告数据包指针域(AuxPtr)的Aux offset值需要更新外,其它的字段域可以保持不变。因此在本实施例中,在每次将广告数据集写入排帧循环队列以及从排帧循环队列发送广告数据集时,需要同时更新所发送的扩展广告数据包内容,但数据基地址可以保持不变。
需要说明的是,当K>1时,若主广告通道或辅广告通道发送的扩展广告数据包的数据字段保持不变,则只更新需要修改的字段内容,比如AuxPtr,AdvData Info(ADI),AdvData等,扩展广告数据包保存在存储器中的基地址可以保持不变。
进一步的,如图5所示,步骤S2包括:
步骤S11,将写指针所指向的扇区作为第一目标扇区。
步骤S12,向第一目标扇区写入广告数据集。
步骤S13,在第一目标扇区被写满后,将写指针指向的排帧循环队列中第一目标扇区的下一扇区,作为新的第一目标扇区。
步骤S14,将读指针所指向的扇区作为第二目标扇区,以使蓝牙基带芯片沿读指针发送第二目标扇区中的广告数据集,并清除第二目标扇区中已读的广告数据集。
对于步骤S3,具体的,将广告数据集中,与辅助广告数据包相关联的扩展广告数据包作为第一目标数据包,根据第一目标数据包在排帧循环队列中的排帧情况,确定辅助广告数据包应位于的扇区的帧号f为f=(F+((A+B)/C))%D,以及确定辅助广告数据包的帧内发送时间偏移量ε为ε=(A+B)%C。
根据帧号f及帧内发送时间偏移量ε,确定辅助广告数据包的发送时间点。
其中,D为排帧循环队列的长度,F为第一目标数据包所位于的扇区的帧号,A为辅助广告数据包的Aux Offset值,B为第一目标数据包在排帧循环队列中的帧内发送偏移量,C为各扇区占用的时间长度,帧内发送时间偏移量为数据包在排帧循环队列中的起始发送时刻。
如,假设F为3,A为600us,B为150us,C为1250us,则计算得到的f为3,ε为750us,即辅助广告数据包与第一目标数据包是在同一帧内发送。假设F为3,A为1300us,B为150us,C为1250us,则计算得到的f为4,ε为200us,即辅助广告数据包在第一目标数据包的下一帧发送。
由于对于扩展广告事件中扩展广告数据包的Aux Offset偏移时间值,一个广告事件中每个在主广告通道上发送的ADV_EXT_IND包所关联的Aux Offset值需要重新计算,因此在本实施例中,还包括:
当主广告通道个数为n时,根据与第一目标数据包相关联的辅助广告数据包的AuxOffset值A,以及广告数据集中相邻扩展广告数据包的间隔时间T,确定与广告数据集中第二目标数据包相关联的辅助广告数据包的Aux Offset值x。其中,第二目标数据包为在第一目标数据包后发送的第m个扩展广告数据包;x=A-(m-1)*T*1000;1<m≤n。
比如,同一个扩展广告事件内扩展广告数据包ADV_EXT_IND间隔时间T为10ms,A为21000us,则当m为2时,x为11000us;当m为3时,x则为1000us。
与现有技术相比,本申请实施例将扩展广告数据包存储于外部存储器,节省蓝牙基带芯片所需要的额外内存空间,并通过管理广告数据包的发送,降低了蓝牙基带芯片的功耗,进而有效提高蓝牙基带芯片的工作效率。
进一步的,参见图6,是本申请的又一个实施例提供的蓝牙基带芯片的广告数据管理方法的流程示意图。除图1所示步骤外,还包括:
步骤S4,当第i+1个广告数据集中的辅助广告数据包的发送时间,与第i个广告数据集的发送时间之间交叠超过预设的单位时间,则将第i+1个广告数据集中的辅助广告数据包,先于第i个广告数据集发送。
其中,i为正整数且i<K。
当存在多个广告数据集时,可能出现前一个发送的广告扩展数据包与当前发送的辅助广告数据包并不关联,如图7所示,因此在本实施例中,当第i+1个广告数据集中的辅助广告数据包发送的数据帧,与第i个广告数据集发送的数据帧存在交叠,且交叠的时间超过辅助广告数据包起始发送时间开始的一个单位时间(30或者300us),则优先发送该辅助广告数据包,以保证已经发送但尚未完成的扩展广告事件的完整性。
进一步的,参见图8,是本申请的一个实施例提供的蓝牙基带芯片的广告数据管理装置的结构示意图,包括:
广告数据获取模块101,用于响应扩展广告事件,获取K个广告数据集。其中,广告数据集包括存储于外部存储器的扩展广告数据包;K为正整数。
广告数据发送模块102,用于沿写指针将各广告数据集写入排帧循环队列中,以使蓝牙基带芯片沿读指针发送排帧循环队列中的广告数据集。
发送时间确定模块103,用于当广告数据集存在辅助广告数据包时,根据广告数据集在排帧循环队列中的排帧情况,确定辅助广告数据包的发送时间点。
与现有技术相比,本申请实施例将扩展广告数据包存储于外部存储器,节省蓝牙基带芯片所需要的额外内存空间,并通过管理广告数据包的发送,降低了蓝牙基带芯片的功耗,进而有效提高蓝牙基带芯片的工作效率。
进一步的,参见图9,是本申请的又一个实施例提供的蓝牙基带芯片的广告数据管理装置的结构示意图。除图8所示结构外,还包括:
时序调整模块104,用于当第i+1个广告数据集中的辅助广告数据包的发送时间,与第i个广告数据集的发送时间之间交叠超过预设的单位时间,则将第i+1个广告数据集中的辅助广告数据包,先于第i个广告数据集发送。
其中,i为正整数且i<K。
与现有技术相比,本申请的实施例通过判断在前发送的广告数据集,与在后发送的辅助广告数据包是否属于同一扩展广告事件,当两者不属于同一扩展广告事件,且两者的发送时间之间交叠超过预设的单位时间,优先发送该辅助广告数据包,以保证已经发送但尚未完成的扩展广告事件的完整性。
以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可发送存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。