一种信号处理方法、基站及计算机存储介质
技术领域
本发明涉及移动通信技术领域,尤其涉及一种信号处理方法、基站及计算机存储介质。
背景技术
在移动通信网络中,B-TrunC(Boardband Trunking Communication,宽带集群通信)是由宽带集群通信(B-TrunC)产业联盟组织制定的基于TD-LTE的“LTE数字传输和集群语音通信”专网宽带集群系统标准。它能满足专业用户对语音集群、宽带数据、应急指挥调度等需求。
目前,集群寻呼消息包括单呼消息和组呼消息两种类型,在寻呼时刻到达时才能发送集群寻呼消息。基于LTE(Long Term Evolution,长期演进版本)技术的B-TrunC系统则规定组呼建立时间不超过300ms,单呼建立时间不超过500ms。为了使集群用户可以快速被呼到,现有技术中设计TPCCH(Trunking Paging Control Channel,集群寻呼控制逻辑信道)来承载发送集群寻呼消息,从而使集群寻呼的发送周期可配置为较小的若干个无线帧,并在规定的寻呼时刻,在PF(Physical Frame,无线帧)和PO(Paging Occasion,无线子帧)上通过TPCCH信道发送寻呼消息。
然而,集群寻呼发送时刻在一个发送周期中只有一个,且一条寻呼消息最多只能携带16个组呼消息与16个单呼消息,这就使得集群寻呼的发送机会大大受到限制;然而,希望集群系统的单呼消息或组呼消息容量越来越多却是一个趋势。显然,现有技术中寻呼消息的传输容量不能满足需求,存在发送效率低的技术问题。
发明内容
本发明实施例提供一种信号处理方法、基站及计算机存储介质。
本发明实施例的第一方面,提供一种信号处理方法,应用于基站,该方法包括:基于获得的集群寻呼消息对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值;根据所述内部优先级将所述集群寻呼消息对应的key值插入RB树;其中,所述RB树为已获得的每个集群寻呼消息对应的key值为节点组成的二叉树;当到达消息发送时刻时,获取从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息;其中,所述N为正整数;发送所述N条集群寻呼消息。
结合第一方面,在第一方面的第一种可能的实施方式中,所述基于获得的集群寻呼消息的对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值之前,所述方法还包括:基于所述集群寻呼消息的消息类型和协议优先级,确定所述内部优先级;其中,所述消息类型包括单呼消息和组呼消息;当所述集群寻呼消息的消息类型为所述单呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级;当所述集群寻呼消息的消息类型为所述组呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级与M之和;其中,所述M为大于所述单呼消息协议优先级范围的上限值的正整数;基于所述消息类型缓存所述集群寻呼消息。
结合第一方面第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述基于所述消息类型缓存所述集群寻呼消息,包括:基于所述集群寻呼消息的消息类型确定所述集群寻呼消息对应的静态存储区域;基于所述集群寻呼消息对应的标识信息确定所述集群寻呼消息在对应的所述静态存储区域中的存储位置;将所述集群寻呼消息放入确定的所述存储位置进行保存。
结合第一方面至第一方面第二种可能的实施方式的任一实施方式,在第一方面的第三种可能的实施方式中,所述发送所述N条集群寻呼消息之后,所述方法还包括:当所述N条集群寻呼消息中存在集群寻呼消息的重传次数低于N1次时,将重传次数低于N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数低于N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数低于N1次的集群寻呼消息对应的key值,将所述重传次数低于N1次的集群寻呼消息的key值插入所述RB树中;当所述N条集群寻呼消息中存在集群寻呼消息的重传次数达到所述N1次时,若重传次数达到N1次的集群寻呼消息为单呼消息,则将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除;若重传次数达到N1次的集群寻呼消息为组呼消息时,将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数达到N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数达到N1次的集群寻呼消息对应的key值,将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中。
结合第一方面第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述发送所述N条集群寻呼消息之后,所述方法还包括:当将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中之后,将所述重传次数达到N1次的集群寻呼消息标志为周期组呼消息;若所述重传次数达到N1次的集群寻呼消息对应的key值小于所述RB树中标志为P0的节点对应的key值,则将所述重传次数达到N1次的集群寻呼消息的key值对应的节点标志为P0;当到达消息发送时刻时,获取并发送从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息,若获取的N条集群寻呼消息中存在i条周期组呼消息时,将第i+1条周期组呼消息对应的节点标志为P0;其中,i为正整数。
结合第一方面至第一方面第一种可能的实施方式的任一实施方式,在第一方面的第五种可能的实施方式中,基于获得的集群寻呼消息对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值,包括:将获得的集群寻呼消息的所述内部优先级对应的二进制数与所述标识信息对应的二进制数进行逻辑运算;将所述逻辑运算获得的结果确定为所述集群寻呼消息对应的key值。
本发明实施例的第二方面,提供一种基站,所述基站包括:Key值确定模块,用于基于获得的集群寻呼消息对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值;插入模块,用于根据所述内部优先级将所述集群寻呼消息对应的key值插入RB树;其中,所述RB树为已获得的每个集群寻呼消息对应的key值为节点组成的二叉树;获取模块,用于当到达消息发送时刻时,获取从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息;其中,所述N为正整数;发送模块,用于发送所述N条集群寻呼消息。
结合第二方面,在第二方面的第一种可能的实施方式中,所述基站还包括:内部优先级确定模块,用于基于所述集群寻呼消息的消息类型和协议优先级,确定所述内部优先级;其中,所述消息类型包括单呼消息和组呼消息;内部优先级确定模块还用于,当所述集群寻呼消息的消息类型为所述单呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级;内部优先级确定模块还用于,当所述集群寻呼消息的消息类型为所述组呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级与M之和;其中,所述M为大于所述单呼消息协议优先级范围的上限值的正整数;缓存模块,用于基于所述消息类型缓存所述集群寻呼消息。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述缓存模块,包括:静态内存区域确定单元,用于根据所述集群寻呼消息的消息类型确定所述集群寻呼消息对应的静态存储区域;存储位置确定单元,用于基于所述集群寻呼消息对应的标识信息确定所述集群寻呼消息在对应的所述静态存储区域中的存储位置;保存单元,用于将所述集群寻呼消息放入确定的所述存储位置进行保存。
结合第二方面至第二方面的第二种可能的实施方式的任一实施方式,在第二方面的第三种可能的实施方式中,所述基站还包括:重传处理模块,用于当所述N条集群寻呼消息中存在集群寻呼消息的重传次数低于N1次时,将重传次数低于N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数低于N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数低于N1次的集群寻呼消息对应的key值,将所述重传次数低于N1次的集群寻呼消息的key值插入所述RB树中;
所述重传处理模块还用于,当所述N条集群寻呼消息中存在集群寻呼消息的重传次数达到所述N1次时,若重传次数达到N1次的集群寻呼消息为单呼消息,则将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除;若重传次数达到N1次的集群寻呼消息为组呼消息时,将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数达到N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数达到N1次的集群寻呼消息对应的key值,将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中。
结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述基站还包括:周期处理模块,用于当将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中之后,将所述重传次数达到N1次的集群寻呼消息标志为周期组呼消息;
所述周期处理模块还用于,若所述重传次数达到N1次的集群寻呼消息对应的key值小于所述RB树中标志为P0的节点对应的key值,则将所述重传次数达到N1次的集群寻呼消息的key值对应的节点标志为P0;
所述周期处理模块还用于,当到达消息发送时刻时,获取并发送从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息,若获取的N条集群寻呼消息中存在i条周期组呼消息时,将第i+1条周期组呼消息对应的节点标志为P0;其中,i为正整数。
本发明实施例的第三方面,提供一种计算机可读存储介质,用于储存为上述基站所用的计算机软件指令,其包含用于执行第一方面或第一方面的任一种可能的实现方式为基站所设计的程序。
通过本发明实施例的上述一个或多个实施例中的技术方案,本发明实施例至少具有如下技术效果:
1、本发明实施例通过将集群寻呼消息的内部优先级和标识信息与RB树数中的key值对应起来,再利用RB树对集群寻呼消息按内部优先级进行管理,以使集群寻呼消息可以通过RB树按内部优先级、标识信息进行排序。这就使得在发送这些集群寻呼消息时,可以通过RB树按集群寻呼消息的内部优先级由高到低顺序取出并发送,从而有效解决了现有技术中集群寻呼消息发送效率低的技术问题,大大的降低了查找集群寻呼消息的时间,进而有效的提高了寻呼消息的发送效率。
2、本发明实施例利用集群寻呼协议优先级的特点,对其进行了协议外的处理,从而方便地实现对不同类型的集群寻呼消息按内部优先级进行排序。即按消息类型将集群寻呼消息的协议优先级转换为集群寻呼消息的内部优先级,使所有集群寻呼消息可以用同一棵RB树按内部优先级进行排序,从而使寻呼消息在发送时可以有序的进行发送,提高了寻呼消息的发送效率。
3、本发明实施例通过将集群寻呼消息缓存到静态内存区域,并为不同消息类型的集群寻呼消息划分不同的静态内存区域,使得在接收集群寻呼消息时可以直接使用静态内存区域,而不需要申请临时存储区,从而有效的减少了存储集群寻呼消息的等待时间,提高了集群寻呼消息的发送速度。
4、本发明实施例通过将集群寻呼消息的优先级和标识信息与RB树的key值进行一一对应,再将集群寻呼消息缓存到静态内存区域,并将集群寻呼消息的key值和地址信息存储于RB树的节点中,让集群寻呼消息可以按消息类型、优先级进行排序,在发送时再按内部优先级由高到低顺序取出并发送。这样便可在只使用一棵RB树的情况下,就能使所有集群寻呼消息的处理流程都得到了合理地完成,从而使整个集群寻呼消息资源的处理更为简洁,并且对集群寻呼消息的资源维护与模块移植更为便捷。
附图说明
图1为B-TrunC系统中寻呼消息在不同发送模式下的发送顺序;
图2为本发明实施例提供的处理及发送寻呼消息的流程图;
图3为本发明实施例提供的一种基站的结构示意图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例作进一步地详细描述。
本文中描述的技术不仅限于B-TrunC系统,还可用于多种移动通信系统,比如:全球移动通信(GSM,Global System for Mobile Communications)或码分多址(CDMA,CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、陆上集群无线电(TETRA,TerrestrialTrunked Radio)系统、集成数字增强型网络(iDEN,IntegratedDigital EnhancedNetworks)系统、开放式集群架构(GoTa,Global Open TrunkingArchitecture)系统以及GT800系统等。
首先介绍本发明实施例的技术背景。
目前在B-TrunC系统中,基站对一条集群寻呼消息的发送是按发送模式进行顺序发送,请参见图1。
集群寻呼消息可以分为单呼消息和组呼消息,在发送时,按照发送模式为新传式、重传模式、周期发送模式依次发送。具体如下:
步骤101:首先对新接收到的多条集群寻呼消息合并为一条寻呼消息在新传模式下发送。
其中,在新传模式下,又需要先发送单呼消息,为便于区别一般称为新传单呼消息;其次再发送组呼消息,为便于区别一般称为新传组呼消息。
步骤102:寻呼消息在新传模式下发送完之后,再在重传模式下发送N1次,其中,N1为重传的次数。
其中,在重传模式下,也需要先发送单呼消息,为便于区别一般称为重传单呼消息;其次再发送组呼消息,为便于区别一般称为重传组呼消息。
步骤103:寻呼消息在重传模式下发送完之后,单呼消息则直接删除,而组呼消息再在周期发送模式下发送一次。
其中,在周期发送模式下的寻呼消息都是组呼消息,为便于区别一般称为周期组呼消息。
通过步骤101至步骤103便能完成多条集群寻呼消息的发送任务。
在B-TrunC系统中,不管是新传消息还是重传消息,都需要优先发送新传消息或重传消息中的单呼消息,之后才能发送新传消息或重传消息中的组呼消息,而在周期发送模式下发送的都是组呼消息,且一个用户预定周期只发送一次,当上一个用户预定周期内的组呼消息没发送完时,在当前用户预定周期需先发送上个周期未发送完的部分,并在发送完之后还需将用户预定周期内的全部组呼消息再发送一次。
由于在B-TrunC系统中,规定组呼建立时间不超过300ms,单呼建立时间不超过500ms。而集群寻呼的一个发送周期只有一个寻呼时刻,一个寻呼时刻只能发送一条寻呼消息,而一条寻呼消息最多只能携带16个组呼消息与16个单呼消息,这就使得集群寻呼消息的发送容量大大受到限制。但用户对集群系统中单呼消息或组呼消息的容量需求却越来越大,如对于组呼的容量明确要求每小区150组,这就使得当大容量的许多集群寻呼消息需要一并发送时,存在发送效率低的技术问题。
为了解决这一问题,业内通常的做法都是对集群寻呼消息先进行预处理,然后在要发送时再将它们按照最多16条一组单呼消息和组呼消息,合并成一条寻呼消息,并在寻呼时刻到来时进行发送。具体实现方式,下面做简要介绍。
第一种方式,队列处理方式。
按照图1所示的发送模式,将不同优先级类型的集群寻呼消息放于不同的队列,高优先级集群寻呼消息放于队列前面,低优先级集群寻呼消息放于队列后面。在发送时按照图1所示的发送模式进行顺序发送,并且在各自的发送模式的队列中,依次从上向下取出并合并多条集群寻呼消息,以形成一条寻呼消息,然后在寻呼时刻发送寻呼消息。
但这种方式由于每次存储集群寻呼消息时,都需要查找队列进行优先级对比,然后再移动插入,当队列的元素比较多时,这种处理方式不仅要同时维护管理多个队列资源,而且每个队列的处理效率也较低,这就造成了发送寻呼消息的效率仍然低的技术问题。
第二种方式,哈希表处理方式。
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问,以加快查找的速度。
将集群寻呼消息用哈希表进行存储,并将集群寻呼消息的优先级作为键变成数组下标索引,在发送时按数组索引下标进行查找取出,并发送。但是,在第二种方式下,一方面,当优先级重复时数组下标索引也会重复,这就造成同优先级的不同集群寻呼消息的存储位置相同时,会出现数据被覆盖的问题;另一方面,哈希表的数组大小不好控制,遍历数组时容易造成很多空遍历,浪费较多的处理时间,从而降低了寻呼消息的发送效率。
第三种处理方式,链表处理方式。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一部分是存储数据元素的数据域,另一部分是存储下一个结点地址的指针域。
尽管链表的节点个数可以得到控制,但是链表本身却没有键值进行寻呼优先级关联,所以最后就变成和队列类似地进行查找、插入,且多个寻呼消息优先级相同时还需要进行节点开链。这也会使得寻呼消息的发送效率低。
通过上述分析,可以清楚的知道,上述三种处理方式都存在寻呼消息发送效率较低的技术问题。
有鉴于此,本发明实施例中,通过将集群寻呼消息的优先级和系统自动为每条集群寻呼消息自动分配的唯一的标识信息与RB树中的key值进行一一对应,再将对应后的每条集群寻呼消息的key值插入到RB树中,使集群寻呼消息不仅能按不同优先级进行排序,并在优先级相同时还能以标示信息相区分。在发送时,只要按需从RB树中最左边的节点顺序取出、发送即可。从而可以有序、合理的处理大量的集群寻呼消息,并充分利用寻呼时刻最大限度的发送集群寻呼消息,进而有效解决了集群寻呼消息发送效率低的技术问题,并提高集群寻呼消息的发送效率。
下面结合附图介绍本发明实施例提供的技术方案。
在介绍本发明的实施例之前,为了使本领域的技术人员能更好的理解本方案,下面先简单介绍关于本发明中一个重要数据结构概念:RB树(Red Black Tree,也称为红黑树)。
RB树是一种自平衡二叉查找树,它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被Leo J.Guibas和RobertSedgewick修改为如今的“红黑树”。
RB树在进行插入和删除操作时,通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。尽管RB树的操作很复杂,但它的最坏情况运行时间却非常的良好,它可以在O(log n)时间内做查找、插入和删除,这里的n是RB树中元素的个数,O(log n)代表对RB树进行操作的时间复杂度。
RB树是每个节点都带有颜色属性的二叉查找树,节点颜色为红色或黑色。且,RB树不仅具有一般二叉查找树的基本特性,树中的任何节点的值大于它的左子节点,且小于它的右子节点,而且对于任何有效的红黑树还有如下的额外要求:
性质1.节点是红色或黑色;
性质2.根节点是黑色;
性质3.每个叶节点(NIL节点,空节点)是黑色的;
性质4.每个红色节点的两个子节点都是黑色,即从每个叶子到根的所有路径上不能有两个连续的红色节点;
性质5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
这些约束使红黑树具有一个关键性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。在本发明实施例中,正是利用了RB树的此性质,让提高集群寻呼消息的处理速度成为了可能。
而作为RB树的节点,其基本属性有:节点的颜色、左子节点指针、右子节点指针、父节点指针、节点的值。在本发明实施例中,在确定了使用RB树这种数据结构对集群寻呼消息进行处理的情况下,要如何让它们之间建立联系,则是通过节点的值实现的,即本发明实施例中的key值。
请参见图2,本发明实施例提供一种信号处理的方法,该方法的处理过程如下。
步骤201:基于获得的集群寻呼消息对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值。
通过将所述集群寻呼消息的内部优先级和标识信息与所述key值进行一一对应,可以让每条所述集群寻呼消息拥有唯一的key值,即确定所述集群寻呼消息对应的key值。
其中,在本实施列中所述内部优先级,仅在系统内部使用,它并非集群寻呼消息在基站外部进行协议传输时携带的优先级。
所述标识信息则是由系统内部自动为所述集群寻呼消息分配的唯一标识。
通过上述方法可以让每条所述集群寻呼消息与一key值建立一种对应关系,利用这种对应关系,便可与RB树建立联系,从而可以利用RB树的时间复杂度较低的属性,快速的对所述集群寻呼消息按内部优先级进行排序,进而提高发送效率。
步骤202:根据所述内部优先级将所述集群寻呼消息对应的key值插入RB树;其中,所述RB树为已获得的每个集群寻呼消息对应的key值为节点组成的二叉树。
将步骤201中获得的集群寻呼消息的key值插入所述RB树,使所述RB树中的所有节点对应的集群寻呼消息始终都是按照已获得的所有集群寻呼消息的内部优先级进行排序。
由于所述key值是由所述集群寻呼消息的内部优先级和标识信息确定的,而且通过所述key值又可以唯一确定所述集群寻呼消息对应的所述RB树中的节点。所以,在用所述key值插入所述RB树的过程,其实就是将已获得的所有集群寻呼消息按内部优先级进行排序的过程,并且在所述内部优先级相同的情况下,还可以通过所述标识信息进一步的进行区分,这就确保了每条集群寻呼消息在所述RB树中不仅具有唯一的节点位置。
步骤203:当到达消息发送时刻时,获取从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息;其中,所述N为正整数;。
当到达消息发送时刻时,从所述RB树最左边的节点开始获取N个节点所对应的N条所述集群寻呼消息,并将所述集群寻呼消息合并为一条待发送消息,以便在寻呼时刻到来时,发送所述待发送消息。
根据前述背景技术中对RB树的介绍,可以清楚的知道,由于所述RB树最左边的节点对应的key值最小,而key值又与集群寻呼消息的内部优先级相关联,在优先级中值越小优先级越高。所以,所述RB树最左边的节点其实对应的就是内部优先级最高的集群寻呼消息。在从所述RB树最左边的节点开始,取出N个节点所对应的N条所述集群寻呼消息的过程,其实就是按所述集群寻呼消息的所述内部优先级,由高到低依次获取N条所述集群寻呼消息的过程;将这些按内部优先级进行排序后的集群寻呼消息合并、发送的过程,其实就是按优先级顺序发送集群寻呼消息的过程。
进一步的,当所述N条集群寻呼消息中存在周期组呼消息,在获取所述集群寻呼消息为周期组呼消息时,应基于所述RB树中标志为P0的节点开始获取所述周期组呼消息。
例如,N=3,在取3条所述集群寻呼消息的过程中,取到第2条时重传寻呼消息取完了,第3条集群寻呼消息应该取周期组呼消息,在取第3条集群寻呼消息时,则基于RB树中的标志P0开始的节点取出对应的集群寻呼消息。
步骤204:发送所述N条集群寻呼消息。
在本申请提供的实施例中,通过上述步骤201至步骤204,将所述集群寻呼消息的内部优先级和标识信息与所述RB树中的key值对应起来,再利用所述RB树对集群寻呼消息按内部优先级进行管理,以使集群寻呼消息在RB树中按内部优先级、标识信息进行排序。这就使得在发送这些集群寻呼消息时,可以从RB树最左边的节点开始取出N个节点对应的N条集群寻呼消息并合并为一条待发送消息,从而大大的降低了现有技术中,需要先按所述消息类型,再按协议优先级对集群寻呼消息进行排序的时间,进而有效的提高了集群寻呼消息的发送效率。
在一种实施方式中,所述基于获得的集群寻呼消息的对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值之前,所述方法还包括:
基于所述集群寻呼消息的消息类型和协议优先级,确定所述内部优先级;其中,所述消息类型包括单呼消息和组呼消息;
其中,单呼消息为只发送给一个用户端的寻呼消息,组呼消息为发送给多个用户端的寻呼方式。
协议优先级为集群寻呼消息在基站外部按通信协议进行信息传输时,使用的集群寻呼消息在产生之时便被网络层分配的优先级。根据目前的协议规定,协议优先级的范围为0-255。随着科技的不断发展,通信协议也可能会随着变化,相应的协议优先级的范围也可能随之而变化,所以协议优先级的范围不应被理解并限定为现有协议的优先级范围。
进一步的,当所述集群寻呼消息的消息类型为所述单呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级。
进一步的,当所述集群寻呼消息的消息类型为所述组呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级与M之和;其中,所述M为大于所述单呼消息协议优先级范围的上限值的正整数。
由于现行通信协议规定不管是单呼消息还是组呼消息的协议优先级的范围均为0至255,所以为了将这两种消息类型的集群寻呼消息按协议优先级同时进行排序,在系统内部就需要内部优先级。内部优先级不仅要能区分不同的协议优先级,并且同时还能区分不同的消息类型。
由前述的背景介绍中可知,在发送时,不管所述发送模式是什么,都是先发送单呼消息后发送组呼消息。所以,在进行内部优先级计算时,应能将组呼消息放在单呼消息之后。故所述集群寻呼消息的消息类型为单呼消息时,确定所述内部优先级为所述协议优先级;而所述集群寻呼消息的消息类型为所述组呼消息时,确定所述内部优先级为所述协议优先级与M之和;其中,M为一大于所述单呼消息协议优先级范围的上限值的正整数。
举例来说,单呼消息data10、data11、data12、data13,它们所对应的协议优先级依次分别为3、5、1、204;组呼消息data20、data21、data22、data23,它们所对应的协议优先级依次分别为36、15、1、253。
其中,由于单呼消息的内部优先级即为协议优先级,所以单呼消息data10、data11、data12、data13,它们所对应的内部优先级依次为3、5、1、204;而组呼消息的所述协议优先级为所述协议优先级与M之和;其中,M为一大于所述单呼消息协议优先级范围的上限值的正整数。假设M的值为256,则组呼消息data20、data21、data22、data23,它们所对应的内部先级依次为292、271、257、509。
通过这种方式就能既区分上述集群寻呼消息的消息类型,又在同消息类型下保留了原来的协议优先级的顺序,使得将所述单呼消息和所述组呼消息同时按内部优先级进行排序能够被实现,并且在发送前只需用内部优先级减去M就可以恢复为原来的协议优先级,有效的简化了现有技术中的操作流程。
进一步的,基于所述消息类型缓存所述集群寻呼消息。
其中,当接收到所述集群寻呼消息之后,还需按照所述消息类型将所述集群寻呼消息进行缓存,在缓存的同时还需要获得所述集群寻呼消息的地址信息。地址信息在本申请中为标识信息,但也可以是集群寻呼消息在存储单元中的具体地址,还可以是指向集群寻呼消息在存储单元中的地址指针,在此不做限定。
在本申请提供的实施例中,通过这种将所述协议优先级转换为所述内部优先级的方式,不仅可以将不同的消息类型按内部优先级范围进行区分,还能使不同消息类型的集群寻呼消息按内部优先级进行排序,从而用一个RB树便可对不同所述消息类型的集群寻呼消息按内部优先级进行管理,为后续大量集群寻呼消息按内部优先级由高到低的取出节约了时间,进而有效的提高了发送效率。
在一种实施方式中,所述基于所述消息类型缓存所述集群寻呼消息,包括:
基于所述消息类型确定所述集群寻呼消息对应的静态存储区域。
其中,所述静态内存区域包括第一静态内存区域和与所述第一静态内存区域不同的第二静态内存区域,所述第一静态内存区域用于存储单呼消息,所述第二静态内存区域用于存储组呼消息。
进一步的,基于所述集群寻呼消息对应的标识信息确定集群寻呼消息在对应的所述静态存储区域中的存储位置。
其中,所述标识信息可以是数组的下标,例如单呼消息data10、data11、data12、data13,被依次存储在一维数组data1的data1[0]、data1[1]、data1[2]、data1[3]中,相应的data10、data11、data12、data13的标识信息依次为0、1、2、3;组呼消息data20、data21、data22、data23被依次存储在一维数组data2的data2[0]、data2[1]、data2[2]、data2[3]中,相应的data20、data21、data22、data23的标识信息依次为0、1、2、3,一维数组data1对应第一静态内存区域,一维数组data2对应第二静态内存区域。当然,也可以不是一维数组,也可以是其它的数据管理形式,在次不做限定。
而data1[0]、data1[1]、data1[2]、data1[3]依次对应第一静态内存区域的地址dress10、dress11、dress12、dress13;data2[0]、data2[1]、data2[2]、data2[3]依次对应第二静态内存区域的地址dress20、dress21、dress22、dress23。从而通过所述集群寻呼消息对应的标识信息便可确定所述集群寻呼消息在对应的所述静态存储区域中的存储位置。
进一步的,将所述集群寻呼消息放入确定的所述存储位置进行保存。
在现有技术中,对接收到的所述集群寻呼消息进行存储时,现有的处理方式是在接收到集群寻呼消息时向系统申请临时内存区,然后系统为集群寻呼消息分配好临时内存区后,再按协议优先级进行排序。而在现实的通信过程中,集群寻呼消息的到达时间不一样、数量也不固定、消息类型也不一样,所以在使用现有的处理方式存储接收到的集群寻呼消息时,就会造成系统分配的临时内存区可能不连续,且系统还要识别可分配的内存区域,以便分配给新到的集群寻呼消息。故而将造成系统在分配临时内存区域时存在耗时较多的问题,进而拖延集群寻呼消息的发送时间,造成发送效率变低的技术问题。
为了解决这一问题,本申请为所述集群寻呼消息分配一个固定的静态内存区域,比如0至2048;并且,进一步的按所述消息类型将静态内存区域又划分为第一静态内存区域,比如0至1024,和第二静态内存区域比如1025至2048。其中,第一静态内存区域用于存储所述单呼消息,第二静态内存区域用于存储所述组呼消息。这样就可以将单呼消息和组呼消息存储于不同的静态内存区域,进一步的,由于单呼消息在重传之后都需要删除,而组呼消息则会保留,所以通过这种方式还可以让单呼消息的增减不会影响组呼消息的存储,从而减小寻找可用存储空间的时间,进一步的提高寻呼消息的发送效率。
本发明提供的实施列中,通过将集群寻呼消息缓存到所述静态内存区域,并为不同所述消息类型的集群寻呼消息划分不同的静态内存区域,使得在接收集群寻呼消息时可以直接获得所述静态内存区域,而不需要临时申请内存区域,从而有效的减少了等待时间,提高了对集群寻呼消息的处理速度。
在一种实施方式中,所述发送所述N条集群寻呼消息之后,所述方法还包括:
当所述N条集群寻呼消息中存在集群寻呼消息的重传次数低于N1次时,将重传次数低于N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数低于N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数低于N1次的集群寻呼消息对应的key值,将所述重传次数低于N1次的集群寻呼消息的key值插入所述RB树中。
其中,将新传寻呼消息和重传寻呼消息都归入了重传次数低于N1次的集群寻呼消息,所述新传寻呼消息为基站新接收到首次发送的集群寻呼消息,所述重传寻呼消息为第二次至第N1+1次发送的集群寻呼消息。
当所述发送所述N条集群寻呼消息中有新接收到的集群寻呼消息且为第一次发送时,所述新接收到的集群寻呼消息的当前发送模式即为所述新传发送模式,在第一发送完所述新接收到的集群寻呼消息之后,将所述新接收到的集群寻呼消息对应的key值从所述RB树中删除,将所述新接收到的集群寻呼消息的内部优先级调整为当前内部优先级与N0之和,并计算所述新接收到的集群寻呼消息对应的key值,将所述新接收到的集群寻呼消息的key值插入所述RB树中,所述新接收到的集群寻呼消息便进入了重传发送模式。
举例来说,当所述发送所述N条集群寻呼消息中有新接收到的集群寻呼消息,所述新接收到的集群寻呼消息的当前重传次数为0,则可以知道所述新接收到的集群寻呼消息为第一次发送且它的当前发送模式为新传发送模式。例如,所述N条集群寻呼消息为data10、data20、data11,其中,data10的当前重传次数为0,当前内部优先级为1,N0=1026,则在发送完data10、data20、data11后,将data10对应的key值从所述RB树中删除,然后重新计算data10的内部优先级为1+256=1027,之后计算data10对应的key值,将data10对应的key值插入所述RB树中,data10便进入了重传发送模式,data10的当前重传次数变为1,其中,N0的值应为能够区分新传寻呼消息、重传寻呼消息、周期发送寻呼消息的内部优先级。
当所述发送所述N条集群寻呼消息中没有第一次发送的所述新接收到的集群寻呼消息时,将所述重传次数低于N1次的集群寻呼消息对应的key值从所述RB树中删除,将重传次数低于N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数低于N1次的集群寻呼消息对应的key值,将所述重传次数低于N1次的集群寻呼消息的key值插入所述RB树中。
继续以前面的例子为例,假设N1为3,在发送完当前重传次数为1的data10后,由于data10的当前重传次数为1,1小于3,则将data10对应的key值从所述RB树中删除,然后重新计算data10的内部优先级为1027+1026=2053,之后计算data10对应的key值,将data10对应的key值插入所述RB树中,data10的当前重传次数变为2。
同样的,在发送完当前重传次数为2的data10后,由于2小于3,则将data10对应的key值从所述RB树中删除,然后重新计算data10的内部优先级为2053+1026=3079,之后计算data10对应的key值,将data10对应的key值插入所述RB树中,data10的当前重传次数变为3。
进一步的,当所述N条集群寻呼消息中存在集群寻呼消息的重传次数达到所述N1次时,若重传次数达到N1次的集群寻呼消息为单呼消息,则将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除;若重传次数达到N1次的集群寻呼消息为组呼消息时,将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数达到N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数达到N1次的集群寻呼消息对应的key值,将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中。
继续前面的例子,当data10的当前重传次数为3时,若data10为单呼消息,则将data10对应的key值从所述RB树中删除;若data10为组呼消息,则将data10对应的key值从所述RB树中删除,然后重新计算data10的内部优先级为3079+1026=4015,之后计算data10对应的key值,将data10对应的key值插入所述RB树中。
在重传模式下,消息类型为所述单呼消息的N个集群寻呼消息,在重传N1次后完成所有重传任务,之后直接删除N个集群寻呼消息在所述RB树中的节点,同时删除在第一静态内存区域中的存储信息。也就是说,单呼消息不需要进行周期发送,在完成所述重传模式的发送任务之后,单呼消息的所有发送任务便已完成,从而使本发明的处理方式与协议中规定的处理方式相对应。进一步的完善了用一个流程便能处理各种消息类型、各种发送模式的所述集群寻呼消息的发送任务,进一步的提高了所述寻呼消息的发送效率。
在本发明提供的实施例中,通过在发送完所述寻呼消息之后,让所述寻呼消息中的所述集群寻呼消息的所述内部优先级自加一固定预设值N0,让所述集群寻呼消息在完成一个所述发送模式的发送任务完成之后,能自动转变为下一个所述发送模式。从而实现了仅仅用一个流程就能完成协议规定的发送过程,而不需要单独管理各种所述发送模式下的发送任务,降低了发送任务的管理时间,提高了管理效率,进而提高了所述寻呼消息的发送效率。
在一种实施方式中,所述发送所述N条集群寻呼消息之后,所述方法还包括:
当将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中之后,将所述重传次数达到N1次的集群寻呼消息标志为周期组呼消息。
其中,周期组呼消息为在每个用户预定周期内都需发送一次的组呼消息,通常在重传寻呼消息发送完之后才发送周期组呼消息,并且仅当将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中之后,所述重传次数达到N1次的集群寻呼消息便被标志为周期组呼消息;与所述周期组呼消息对应的节点在所述RB树中的位置一般不变,仅当基站接收到控制层的命令从周期组呼消息中取出需要立即发送的周期组呼消息时,所述需要立即发送的周期组呼消息被称为立即组呼消息。
在本发明提供的实施例中,对于立即组呼消息的处理方式则是,基于所述命令中断正在进行的任务,并在取出所述需要立即发送的周期组呼消息之后,删除所述需要立即发送的周期组呼消息在所述RB树中对应的节点,将所述需要立即发送的周期组呼消息对应的内部优先级调整为0,并计算所述需要立即发送的周期组呼消息对应的key值,将所述需要立即发送的周期组呼消息的key值插入所述RB树中。
在寻呼时刻到来时,所述需要立即发送的周期组呼消息便能被优先发送。在发送完所述需要立即发送的周期组呼消息之后,删除所述需要立即发送的周期组呼消息在所述RB树中对应的节点,将所述需要立即发送的周期组呼消息对应的内部优先级调整为所述需要立即发送的周期组呼消息的协议优先级与N1×N0之和,并计算所述需要立即发送的周期组呼消息对应的key值,将所述需要立即发送的周期组呼消息的key值插入所述RB树中,然后恢复原来的任务。
进一步的,若所述重传次数达到N1次的集群寻呼消息对应的key值小于所述RB树中标志为P0的节点对应的key值,则将所述重传次数达到N1次的集群寻呼消息的key值对应的节点标志为P0。
在发送周期组呼消息时,由于所述RB树中标志为P0的节点对应的周期组呼消息为所有周期组呼消息中内部优先级最高的节点,为了确保P0标志的始终是内部优先级最高的周期组呼消息对应的节点,所以需要将每次插入的组呼消息的key值与所述RB树中标志为P0的节点对应的周期组呼消息的key值进行比较,所述重传次数达到N1次的集群寻呼消息对应的key值小于所述RB树中标志为P0的节点对应的key值,则将所述重传次数达到N1次的集群寻呼消息的key值对应的节点标志为P0。
举例来说,若在用户预设周期内,周期寻呼消息已发送完,而此时data10对应的key值为1936,RB树中标志为P0的节点对应的key值为1938,由于1936小于1938,即data10的内部优先级大于标志为P0节点对应的内部优先级,故应将data10在RB树中的节点标志为P0。
若在用户预设周期内,周期寻呼消息未全部发送完,则不需重新标志P0。
通过这种方式可以确保当P0对应节点的周期组呼消息的内部优先级为最高时,在有重传组呼消息插入后,P0依然标志的是所有周期组呼消息中内部优先级最高的寻呼消息的节点,进而在发送时确保依然是从内部优先级最高的周期组呼消息开始发送。
进一步的,当到达消息发送时刻时,获取并发送从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息,若获取的N条集群寻呼消息中存在i条周期组呼消息时,将第i+1条周期组呼消息对应的节点标志为P0;其中,i为正整数。
在到达消息发送时刻时,获取并发送从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息,若获取的N条集群寻呼消息中存在i条周期组呼消息时,并在获取第i条待获取周期组呼消息之后,将第i+1条周期组呼消息对应的节点标志为P0,这样可以确保下一个消息发送时刻到达时,可以接着发送未发送完的周期组呼消息,以确保在用户预设周期内完成对周期组呼消息的发送任务。
若在用户预设周期内未完成对周期组呼消息的发送任务,则在下一个用户预设周期内,发送周期组呼消息时从当前用户预设周期内未发送完的周期组呼组呼消息处开始发送,并在发送完之后将周期组呼消息中内部优先级最高的周期组呼消息对应的节点标志为P0,再次从P0对应的节点开始发送一次所以周期组呼消息。
在一种实施方式中,基于获得的集群寻呼消息对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值,包括:
将获得的集群寻呼消息的所述内部优先级对应的二进制数与所述标识信息对应的二进制数进行逻辑运算。
其中,所述key值为一个32bit的数据,而所述内部优先级及所述标识信息均为16bit的数据,通过逻辑运算确定所述key值,是将所述内部优先级的16bit的数据作为所述key值的高16bit数据,将所述标识信息的16bit的数据作为所述key值的低16bit数据,具体逻辑运算可以是或运算、与运算、移位运算,在此不做限定。
例如,一条所述集群寻呼消息的所述内部优先级为3,所述标识信息为1;对它们进行或运算,则十进制数3的16bit数据为0000000000000011,将它转换为32bit数据为0000000000000011 00000000000000,十进制数1的16bit数据为0000000000000001,将它转换为32bit数据为0000000000000000 0000000000000001,之后,将000000000000001100000000000000与0000000000000000 0000000000000001进行或运算,便得到32bit数据为0000000000000011 0000000000000001,该32bit数据即为所述key值。
进一步的,将所述逻辑运算获得的结果确定为所述集群寻呼消息对应的key值。
本发明提供的实施例中,通过将内部优先级及标识信息进行逻辑运算确定一key值,可以唯一确定集群寻呼消息的key值,进而通过key值唯一确定集群寻呼消息在RB树中的节点位置,使集群寻呼消息按消息类型和协议优先级通过RB树进行快速排序得以实现,从而为后续的所述寻呼消息的发送提供了有效的技术支持。
请参见图3,基于同一发明构思,本发明一实施例提供一种基站,该基站包括处理器301和发送器302。
其中,处理器301可以包括中央处理器(CPU)或特定应用集成电路(ApplicationSpecific Integrated Circuit,ASIC),可以包括一个或多个用于控制程序执行的集成电路,可以包括使用现场可编程门阵列(Field Programmable Gate Array,FPGA)开发的硬件电路,可以包括基带芯片。
可能的实施方式中,该基站还可以包括静态内存器303,均在图3中一并示出。静态内存器303的数量可以是一个或多个。静态内存器303可以包括静态随机存取存储器(Static Random Access Memory,SRAM)、同步动态随机存储器(Synchronous DynamicRandom Access Memory,SDRAM)等等。静态内存器303可以用于存储数据。
可能的实施方式中,该基站还可以包括存储器304,均在图3中一并示出,因为存储器304不是必选器件,因此在图3中画为虚线框的形式,以与必选器件进行区分。存储器304的数量可以是一个或多个。存储器304可以包括只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)和磁盘存储器,等等。存储器304可以用于存储处理器301执行任务所需的程序代码,还可以用于存储数据。
其中,处理器301用于基于获得的集群寻呼消息对应的内部优先级及标识信息,确定所述集群寻呼消息对应的key值;根据所述内部优先级将所述集群寻呼消息对应的key值插入RB树;其中,所述RB树为已获得的每个集群寻呼消息对应的key值为节点组成的二叉树;当到达消息发送时刻时,获取从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息;其中,所述N为正整数,以备发送器302使用;发送器302从处理器301处获得所述寻呼消息并发送所述N条集群寻呼消息。
在可能的实施方式中,处理器301还用于基于所述集群寻呼消息的消息类型和协议优先级,确定所述内部优先级;其中,所述消息类型包括单呼消息和组呼消息;当所述集群寻呼消息的消息类型为所述单呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级;当所述集群寻呼消息的消息类型为所述组呼消息时,确定所述集群寻呼消息对应的所述内部优先级为所述集群寻呼消息的协议优先级与M之和;其中,所述M为大于所述单呼消息协议优先级范围的上限值的正整数;基于所述消息类型将所述集群寻呼消息缓存到静态内存器303中。
在可能的实施方式中,处理器301还用于基于所述集群寻呼消息的消息类型确定所述集群寻呼消息在静态内存器303中对应的静态存储区域;基于所述集群寻呼消息对应的标识信息确定所述集群寻呼消息在静态内存器303中的存储位置;将所述集群寻呼消息放入确定的静态内存器303中的存储位置进行保存。
在可能的实施方式中,处理器301用于当所述N条集群寻呼消息中存在集群寻呼消息的重传次数低于N1次时,将重传次数低于N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数低于N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数低于N1次的集群寻呼消息对应的key值,将所述重传次数低于N1次的集群寻呼消息的key值插入所述RB树中;当所述N条集群寻呼消息中存在集群寻呼消息的重传次数达到所述N1次时,若重传次数达到N1次的集群寻呼消息为单呼消息,则将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除;若重传次数达到N1次的集群寻呼消息为组呼消息时,将所述重传次数达到N1次的集群寻呼消息对应的key值从所述RB树中删除,将所述重传次数达到N1次的集群寻呼消息对应的内部优先级调整为当前内部优先级与N0之和,并计算所述重传次数达到N1次的集群寻呼消息对应的key值,将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中。
在可能的实施方式中,处理器301用于当将所述重传次数达到N1次的集群寻呼消息的key值插入所述RB树中之后,将所述重传次数达到N1次的集群寻呼消息标志为周期组呼消息;若所述重传次数达到N1次的集群寻呼消息对应的key值小于所述RB树中标志为P0的节点对应的key值,则将所述重传次数达到N1次的集群寻呼消息的key值对应的节点标志为P0;当到达消息发送时刻时,获取并发送从所述RB树最左边开始的N个节点分别对应的N条集群寻呼消息,若获取的N条集群寻呼消息中存在i条周期组呼消息时,将第i+1条周期组呼消息对应的节点标志为P0;其中,i为正整数。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括如前的图2所示的方法实施例中记载的基站所执行的全部步骤。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。