发明内容
0004.鉴于传统语音网关在无法获得数字语音包的情况下,无法对语音进行转发,无法实现互联互通的功能,本发明提供了一种基于DMR系统和TETRA系统互通的语音网关的实现方法,本发明采用的技术是对语音进行采集、编码和转发,实现了两个系统之间的信令和语音互通。
0005.本发明采用的技术方案是:一种基于DMR系统和TETRA系统互通网关的实现方法,以服务器、PC机、音频转接电路为载体,所述音频转接电路接入服务器或PC机上,操作系统为WINDOWS或LINU,具体步骤如下:
第一步,呼叫建立信令转发:网关接入DMR系统和TETRA系统后,将TETRA系统发起的呼叫建立信令转发给DMR系统,将DMR系统发起的呼叫建立信令转发给TETRA系统,通过转发呼叫,建立了TETRA系统和DMR系统之间的呼叫;
第二步,话权申请信令转发:呼叫建立信令转发后,DMR和TETRA系统之间的呼叫已建立,将TETRA系统发起的话权申请信令转发给DMR系统,将DMR系统发起的话权申请信令转发给TETRA系统;
第三步,采样语音数据:话权申请信令转发后,语音互通流程开始,首先采样语音数据,将TETRA系统的模拟语音输出,通过音频转接电路转为模拟语音输入,对输入的模拟语音进行采样;将DMR系统的模拟语音输出,通过音频转接电路转为模拟语音输入,对输入的模拟语音进行采样;
第四步,编码语音数据:采样语音数据后,根据DMR系统和TETRA系统支持的语音编码格式对语音数据进行编码;其中,TETRA系统语音编码方式为ACELP,DMR系统语音编码方式为AMBE;
第五步,转发语音数据:编码语音数据后,将编码后的语音数据放入缓存区,等待时间周期将语音数据发送至DMR系统和TETRA系统;当网络延时超过一个时间周期时,应采取一次发送多份数据的方式,对网络延时做一个缓冲;所述DMR系统的时间周期为30毫秒,所述TETRA系统的时间周期为56毫秒;
第六步:解码语音数据:网关收到语音数据以后,根据TETR系统和DMR系统支持的语音解码方式对语音数据进行解码;所述TETRA系统语音解码方式为ACELP,所述DMR系统语音解码方式为AMBE;
第七步:播放语音数据:网关解码语音数据后,将解码后的语音数据放入缓存区,对缓存区的语音数据进行播放;TETRA系统播放的语音数据通过音频转接电路输入至DMR系统;DMR系统播放的语音数据通过音频转接电路输入至TETRA系统;
第八步,话权释放信令转发:语音数据播放结束后,网关将TETRA系统发起的话权释放信令转发给DMR系统,将DMR系统发起的话权释放信令转发给TETRA系统;
第九步,呼叫结束信令转发:话权释放信令转发后,对呼叫结束信令进行转发;网关将TETRA系统发起的呼叫结束信令转发给DMR系统,网关将DMR系统发起的呼叫结束信令转发给TETRA系统;
通过以上九个步骤实现了DMR系统和TETRA系统语音呼叫的互通。
0006.第一步中所述网关接入DMR系统和TETRA系统的方法为:根据网关所接入的DMR系统和TETRA系统的厂家不同,采用不同的接入接口和获取资源数据的方法,接入MOTOTETRA系统,通过CORBA协议调用MOTO接口实现接入系统和获取系统中的资源数据的功能;接入空客TETRA系统,通过DCOM分布式接口实现接入系统和获取系统中的资源数据的功能;获取系统中的资源数据包括组号信息、基站信息、信道信息和系统信息。
0007.第一步中所述的TETRA系统发起的呼叫建立信令转发给DMR系统方法为,网关收到TETRA系统的呼叫建立信令后,获取信令中携带的呼叫类型、发起方号码、接收方号码、呼叫优先级数据,将这些数据构建成DMR系统支持的呼叫建立信令,发送给DMR系统;所述的DMR系统发起的呼叫建立信令转发给TETRA系统的方法为,网关收到DMR系统的呼叫建立信令后,获取信令中携带的呼叫类型、发起方号码、接收方号码、呼叫优先级数据,将这些数据构建成TETRA系统支持的呼叫建立信令,发送给TETRA系统。
0008.第二步所述的将TETRA系统发起的话权申请信令转发给DMR系统的方法为,网关收到TETRA系统的话权申请信令后,发起对应的DMR系统的话权申请信令,发送给DMR系统;所述的将DMR系统发起的话权申请信令转发给TETRA系统的方法为,网关收到DMR系统的话权申请信令后,发起对应的TETRA系统的话权申请信令,发送给TETRA系统。
0009.第三步中所述采样语音数据的方法如为:通过操作系统的api接口实现对麦克风输入的模拟语音数据的采集,以及将数字语音包转成模拟语音播放出来;Windows系统使用WaveIn族的api函数实现对麦克风输入的模拟语音的采集,使用WaveOut族的api函数实现对模拟语音的播放。
0010.第八步中所述的网关将TETRA系统发起的话权释放信令转发给DMR系统的方法为,网关收到TETRA系统的话权释放信令后,发起对应的DMR系统的话权释放信令,发送给DMR系统;网关将DMR系统发起的话权释放信令转发给TETRA系统的方法为,网关收到DMR系统的话权释放信令后,发起对应的TETRA系统的话权释放信令,发送给TETRA系统。
0011.第九步中所述的网关将TETRA系统发起的呼叫结束信令转发给DMR系统的方法为,网关收到TETRA系统的呼叫结束信令后,发起对应的DMR系统的呼叫结束信令,发送给DMR系统;网关将DMR系统发起的呼叫结束信令转发给TETRA系统的方法为,网关收到DMR系统的呼叫结束信令后,发起对应的TETRA系统的呼叫结束信令,发送给TETRA系统。
0012.本发明的有益效果是:本发明解决了传统语音网关在互联互通功能上的局限性,无论TETRA系统和DMR系统是否提供数字语音包,都实现可对双系统各种呼叫的转发,包括组呼、个呼。传统的二开网关,只有在获取到数字信令和数字语音包之后,才能实现转发;市场上多种DMR及TETRA产品,不一定能给二次开发提供数字语音包,导致传统的语音网关无法实现双系统的呼叫互联互通的功能;传统网关的互联互通也有在终端上实现的,每增加一个需要互联的终端,需要对终端做一次电连接,操作繁琐。
0013.相比之下,本发明是系统级别的互联,运行之后每增加一个需要互联的终端,只需要在核心网内添加需要互联的终端号码即可,不需要对终端做任何改动,易操作。
0014.本发明的互通网关是系统级别的网关,即在核心网实现两个系统的互联互通,与系统级别相对应的是终端级别,即在对讲机或机车台上对设备进行改动来实现两个系统的互联,本发明通过处理模拟语音,对模拟语音进行采集、编码、转发、解码和播放,来实现语音互通。
实施方式
0016.如图1所示,本发明软件业务组成框图,包括:获取资源、组呼转发、语音转发三个功能模块,其中获取资源模块包括组号信息、基站信息、信道信息和系统信息,组呼转发和语音转发模块包括DMR系统到TETRA系统的转发和TETRA系统到DMR系统的转发;获取资源模块获取资源完成之后,通知组呼转发模块可以开始组呼的转发流程,组呼信令转发成功后,通知语音转发模块开始语音转发流程。
0017.如图2所示,描述软件启动后的初始化流程;初始默认处于开始状态,开启日志线程;判断日志线程是否开启成功,如果失败,则回到初始的开始状态等待下一个周期进行判断,如果成功,则读取配置信息;判断读取配置信息是否成功,如果失败,则回到初始的开始状态等待下一个周期进行判断,如果成功,则初始化与TETRA系统交互,判断与TETRA系统的初始化是否成功,如果失败,则回到初始的开始状态等待下一个周期进行判断,如果成功,则初始化与DMR系统交互;判断与DMR系统的初始化是否成功,如果失败,则回到初始的开始状态等待下个周期进行判断,如果成功,则整个初始化流程完成,进入空闲状态。
0018.如图3所示,描述日志模块的流程;初始默认处于空闲状态,等待接收日志消息;收到日志消息之后,获取当前系统时间,判断获取系统时间是否成功,如果成功,则使用当前系统时间,否则使用默认系统时间;根据日志级别写入日志,日志级别分错误、告警、信息三种级别;判断当前是否收到退出线程的消息,如果没有收到,则在日志中追加消息内容和时间,写入日志文档,回到初始的空闲状态;如果收到退出线程的消息,则结束退出这个流程。
0019.如图4所示,描述本发明软件读取配置文件的流程,初始默认处于开始状态,判断打开配置文件是否成功,如果成功,则读取服务器的IP地址、端口信息,并返回服务器的IP地址和端口信息;如果失败,则显示出配置界面,要求用户输入服务器的IP地址和端口信息,将这些信息保存到配置文件中,并返回服务器的IP地址和端口信息,整个流程结束。
0020.如图5所示,描述了本发明登录DMR系统并获取资源的流程;在初始状态下,登录DMR系统,判断登录是否成功,如果成功,则获取资源,如果不成功,则回到初始状态重新登录DMR系统,获取资源之后,判断获取是否成功,如果成功,则进入空闲状态,如果不成功,则判断获取资源次数是否超过最大值,未超过则重新获取资源,超过最大次数则退出录DMR系统,发出告警,回到最初的初始状态。
0021.如图6所示,描述了本发明登录TETRA系统并获取资源的流程,在初始状态下,登录TETRA系统,判断登录是否成功,如果成功,则获取资源,如果不成功,则回到初始状态重新登录TETRA系统,获取资源之后,判断获取是否成功,如果成功,则进入空闲状态;如果不成功,则判断获取资源次数是否超过最大值,未超过则重新获取资源,超过最大次数则退出录DMR系统,发出告警,回到最初的初始状态。
0022.如图7所示,描述了本发明软件语音开始采样的流程;该软件默认处于空闲状态下,判断是否收到开始采样的消息,如果没有收到,则回到初始的空闲状态等待下一个周期进行判断,如果收到开始采样的消息,则判断当前采样是否已经开启,如果当前已经处于采样中,则无法开启新的采样,回到初始的空闲状态等待下一个周期进行判断;如果当前未处于采样中,则判断当前是否已经开始播放中,如果处于播放中,则无法进行采样,回到初始的空闲状态等待下一个周期进行判断;如果当前未处于播放中,则打开采样,判断打开采样是否成功,如果失败,则回到初始的空闲状态等待下个周期判断,如果成功,则开始采样,判断开始采样是否成功,如果失败,则回到初始的空闲状态等待下一个周期进行判断,如果成功,则进入采样中的状态。
0023.如图8所示,描述了本发明软件语音停止采样的流程;该软件处于采样中的状态下,判断是否收到停止采样的消息,如果没有,则回到采样中的状态等待下一个周期判断,如果收到停止采样的消息,则关闭采样,判断关闭采样是否成功,如果失败,则回到采样中的状态等待下一个周期进行判断,如果成功,则清空语音缓存区,进入空闲状态。
0024.如图9所示,描述了组呼信令转发的流程;初始默认处于空闲状态,判断是否收到TETRA呼叫,如果没有收到,则回到空闲状态等待下一个周期进行判断,如果收到,则判断被叫方号码在DMR系统是否存在关联组或者该号码是DMR系统的号,如果不是,则回到空闲状态等待下一个周期进行判断,如果是,则发起DMR系统的呼叫;判断呼叫建立是否成功,如果成功,则进入呼叫中的状态,如果失败,则判断重试次数是否超过最大值,如果未超过,则重新发起DMR系统呼叫,如果已超过,则发出告警,回到最初的空闲状态。
0025.如图10所示,描述了本发明软件退出流程;开始,释放DMR线程,释放TETRA线程,释放退出日志线程,软件结束退出。
0026.如图11、图12、图13、图14所示,对外接口电路的接口J1中的MIC+和MIC-连接到音频转接电路的音频输入电容C10一端MIC+和电容C8一端MIC-;SPK+和SPK-连接到音频转接电路的音频输出电阻R9一端SPK+和接地端SPK-,VCC_5V分别连接电容C4、电容C5、电阻R5、电阻R4的一端及音频放大电路U2的8脚作为整个音频转接电路的电源输入,VCC_12V连接电容C1一端;电源电路的三端稳压集成电路U1将12V电源转换为5V电源,用于音频转接电路的供电,5V与12V电源只连接其一,有5V电源时连接5V电源,没有5V电源时可以连接12V电源;音频输入之后经过音频放大电路U2进行放大信号,音频放大电路U2内部集成了2个高增益运算放大器,该电路的放大倍数可通过电阻R13和电阻R12进行调节,音频信号经过音频放大电路U2的(SPK+和接地端SPK-)输出;电阻R5、电阻R6、电阻R4、电阻R7分别为两级运算放大器提供直流分量,将信号转变为带直流分量的音频信号,整个过程完成音频输出,经过调节再转为输入的这一功能。
0027.电阻R1是连接MIC+和MIC-之间的匹配电阻,电阻R3是连接SPK+和SPK-之间的匹配电阻。
0028.三端稳压集成电路U1的型号为LM7805C/TO,音频放大电路U2型号为LM2904。
0029.实施例1,本方法在实际项目中的具体运用,以应用于某武警大队TETRA系统和DMR系统互联互通为例。该武警大队使用MOTO TETRA系统多年,引入DMR系统之后,为了实现TETRA系统内的终端和DMR系统内的终端之间能够互联互通,使用本发明中方法实现互联互通网关。具体如下:
第一步,呼叫建立信令转发:网关使用HTTP协议接入DMR系统,接入系统成功后通过HTTP POST方法获得系统中的资源,资源数包括组号信息、基站信息、信道信息和系统信息。当存在大量资源时,采取HTTP压缩的方法来获取信息,获取之后进行解压缩;网关使用CORBA协议接入TETRA系统,鉴权成功之后可获得系统中的资源,使用组号资源信息发起对组的监听要求,即TETRA系统内只要发起组呼,网关都可以接收到;接入TETRA系统和DMR系统成功后,进行呼叫建立信令的转发,获取信令中携带的呼叫类型、发起方号码、接收方号码、呼叫优先级数据,将这些数据构建成DMR系统支持的呼叫建立信令,发送给DMR系统,实现了将TETRA系统发起的呼叫建立信令转发给DMR系统的功能。同样,将DMR系统发起的呼叫建立信令转发给TETRA系统,通过转发呼叫,建立了TETRA系统和DMR系统之间的呼叫。
0030.第二步,话权申请信令转发:呼叫建立信令转发后,DMR和TETRA系统之间的呼叫已建立,将TETRA系统发起的话权申请信令转发给DMR系统,将DMR系统发起的话权申请信令转发给TETRA系统;将DMR系统发起的话权申请信令转发给TETRA系统的方法为,网关收到DMR系统的话权申请信令后,发起对应的TETRA系统的话权申请信令,发送给TETRA系统话权申请信令的转发,要处理话权申请信令转发冲突的问题,当一个互联互通的组呼建立成功之后,两个系统内的两个终端可能在同一个时间发起话权申请,网关收到两个系统各自发来的话权申请时,需要根据话权申请的优先级来处理该冲突:
1)如果同时发起话权申请的双方是TETRA系统和DMR系统的手持终端,那么,由于网关的话权优先级比手持终端高,网关直接抢占该呼叫在两个系统内的话权,则两个手持终端都能收到提示“话权被抢占”,手持终端可以重新发起话权请求;2)如果同时发起话权申请的双方是TETRA系统和DMR系统的手持终端和调度设备,由于网关的话权优先级比手持终端高,而和调度设备一样,那么网关可以抢占手持终端的话权申请,但是无法抢占调度设备的话权申请,因此网关在抢占手持终端的话权申请之后,直接转发调度设备的话权申请;
3)如果同时发起话权申请的双方是TETRA系统和DMR系统的调度设备,由于网关的话权优先级和调度设备一样,无法抢占调度设备的话权,则这种冲突无法处理,直接忽略。
0031.第三步,采样语音数据:话权申请转发成功后,开始对语音数据进行采样,将TETRA系统的模拟语音输出,通过音频转接电路转为模拟语音输入,对输入的模拟语音进行采样;将DMR系统的模拟语音输出,通过音频转接电路转为模拟语音输入,对输入的模拟语音进行采样;将DMR系统发起的话权申请信令转发给TETRA系统的方法为,网关收到DMR系统的话权申请信令后,发起对应的TETRA系统的话权申请信令,发送给TETRA系统;采样使用WaveIn系列的系统API,waveInUnprepareHeader,waveInPrepareHeader和waveInAddBuffer;为防止出现WaveInReset死锁问题,将WaveInReset和MM_WOM_DONE/MM_WIM_DATA相关回调放到同一个线程中进行。
0032.第四步,编码语音数据:采样语音数据后,根据DMR系统和TETRA系统支持的语音编码格式对语音数据进行编码;TETRA系统语音编码方式为ACELP,DMR系统语音编码方式为AMBE;
第五步,转发语音数据:编码语音数据后,将编码后的语音数据放入缓存区,等待时间周期将语音数据发送至DMR系统和TETRA系统;当网络延时超过一个时间周期时,应采取一次发送多份数据的方式,对网络延时做一个缓冲。通过ping包的值实时计算网络延时,根据网络延时,调整语音数据的发送量;
TETRA系统的时间周期为56毫秒:
1)当网络延时小于56毫秒,则每56毫秒发送一份语音数据;
2)当网咯延时大于56毫秒,小于112毫秒,则每112毫秒发送两份语音数据;
3)当网络延时大于112毫秒,小于168毫秒,则每168毫秒发送三份语音数据;
4)当网络延时超过168毫秒,根据系统设置的阈值,可继续发送多份语音数据,或者认为网络延时不支持该呼叫正常继续,结束呼叫。
0033.DMR系统的时间周期为30毫秒:
1)当网络延时小于30毫秒,则每30毫秒发送一份语音数据;
2)当网咯延时大于30毫秒,小于60毫秒,则每60毫秒发送两份语音数据;
3)当网络延时大于60毫秒,小于90毫秒,则每90毫秒发送三份语音数据;
4)当网络延时超过90毫秒,根据系统设置的阈值,可继续发送多份语音数据,或者认为网络延时不支持该呼叫正常继续,结束呼叫。
0034.第六步:解码语音数据:网关收到语音数据以后,根据TETR系统和DMR系统支持的语音解码方式对语音数据进行解码;其中,TETRA系统语音解码方式为ACELP,DMR系统语音解码方式为AMBE。
0035.第七步:播放语音数据:网关解码语音数据后,将解码后的语音数据放入缓存区,对缓存区的语音数据进行播放;TETRA系统播放的语音数据,通过音频转接电路转为输入,输入至DMR系统;DMR系统播放的语音数据,通过音频转接电路转为输入,输入至TETRA系统;播放使用WaveOut系列的系统API,waveOutUnprepareHeader,waveOutPrepareHeader和waveOutWrite。为防止出现WaveOutReset死锁问题,将WaveOutReset和MM_WOM_DONE/MM_WIM_DATA相关回调放到同一个线程中;
第八步,话权释放信令转发:语音数据播放结束后,网关将TETRA系统发起的话权释放信令转发给DMR系统,将DMR系统发起的话权释放信令转发给TETRA系统;网关将TETRA系统发起的话权释放信令转发给DMR系统的方法为,网关收到TETRA系统的话权释放信令后,发起对应的DMR系统的话权释放信令,发送给DMR系统;网关将DMR系统发起的话权释放信令转发给TETRA系统的方法为,网关收到DMR系统的话权释放信令后,发起对应的TETRA系统的话权释放信令,发送给TETRA系统。
0036.第九步,呼叫结束信令转发:话权释放信令转发后,对呼叫结束信令进行转发;网关将TETRA系统发起的呼叫结束信令转发给DMR系统,将DMR系统发起的呼叫结束信令转发给TETRA系统;网关将TETRA系统发起的呼叫结束信令转发给DMR系统的方法为,网关收到TETRA系统的呼叫结束信令后,发起对应的DMR系统的呼叫结束信令,发送给DMR系统;网关将DMR系统发起的呼叫结束信令转发给TETRA系统的方法为,网关收到DMR系统的呼叫结束信令后,发起对应的TETRA系统的呼叫结束信令,发送给TETRA系统。
0037.通过以上九个步骤实现了本发明在武警大队TETRA系统和DMR系统互联互通中的应用。