[0055] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056] 需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0057] 参照图1,本发明语音接入设备通用硬件抽象接口实现方法,语音接入设备的实现包括应用层、协议层和硬件设备驱动层,在应用层和硬件设备驱动层之间添加硬件抽象层,以屏蔽应用层对特定硬件的关注。硬件抽象层包括初始化功能块和或基本配置功能块和或事件上报功能块和或媒体操作功能块和或定时操作功能块,初始化功能块、基本配置功能块和媒体操作功能块由应用层调用,事件上报功能块由硬件抽象层调用,定时操作功能块由应用层和硬件抽象层调用。硬件抽象层中并不是每一个功能块都是必须的,各个功能块均为可扩充和可删除。
[0058] 初始化功能块包括初始化功能和关闭功能,在正常的进程或应用起来后,调用相应的初始化功能以完成硬件抽象层的初始化,当不再需要硬件抽象层时应用层调用关闭功能关闭硬件抽象层。基本配置功能块包括缓冲区调节功能和回音消除功能,事件上报功能块上报的事件包括上报摘机事件、上报挂机事件、报告闪断事件、报告拨号事件、报告调制解调事件。所述事件上报功能块所包含上报的事件可以根据实际需要添加或删除。
[0059] 优选地,事件上报功能块上报的事件还包括报告传真事件。
[0060] 进一步优选地,事件上报功能块上报的事件还包括报告远程拨号事件。
[0061] 媒体操作功能块包括放音功能、停音功能、向网络侧放音功能、开始振铃功能、停止振铃功能、显示呼叫者ID功能、建立媒体功能、修改媒体功能和删除媒体功能。所述媒体操作功能块所包含的各项功能可根据实际需要添加或删除。定时操作功能块包括计时开始功能和计时结束功能。
[0062] 本发明首先定义一个抽象接口管理对象,该管理对象包括如下接口函数:
[0063] 硬件抽象层初始化类函数,完成整个抽象层的初始化或者删除等,调用方是应用层:
[0064] CALL_HAL_API_FUNC init;//HAL初始化函数
[0065] CALL_HAL_API_FUNC potsAdmin;//使能POTS
[0066] CALL_HAL_API_FUNC shutDown;//关闭HAL层
[0067] 硬件抽象层基本配置函数,完成硬件层的一些基本配置,调用方是应用层[0068] CALL_HAL_API_FUNC setJitBuffer;//设置抖动缓存
[0069] CALL_HAL_API_FUNC setEchoCancel;//设置回声抑制
[0070] 硬件抽象层事件上报函数,向上层报告事件,对硬件抽象层屏蔽具体的消息发送实现,调用方是硬件抽象层:
[0071]
[0072] 硬件抽象层媒体操作函数,这些都是和呼叫相关的实现函数定义,调用方是应用层
[0073]
[0074] 硬件抽象层定时操作函数,调用方是硬件抽象层:
[0075] CALL_HAL_API_FUNC timerStart;//开始定时器
[0076] CALL_HAL_API_FUNC timerStop;//结束定时器
[0077] 硬件抽象层定时操作函数,调用方是应用层:
[0078] TIMEOUTENTRYFUNC to[HAL_TIMER_MAX];//定时器超时处理
[0079] 当然,不是上面所有函数的都需要实现,可以根据需要实际需要管理对象进行扩充或删减,对于不需要的接口,接口实现可以是空的。
[0080] 硬件抽象层的实现一般依赖于硬件的实现。对于不同的硬件,上面的函数并非是要全部实现的。但是,对于语音接口芯片或者提供语音接口功能的SoC来说,一般都会提供类似的功能。
[0081] 关于硬件抽象层的初始化:
[0082] 硬件抽象层的初始化,其实就是硬件的初始化。在进程或应用起来后,在合适的地方调用相应的初始化函数,就可以完成硬件抽象层的初始化。本发明还涉及呼叫方法,采用如上述语音接入设备通用硬件抽象接口实现方法来完成呼叫功能,下面以SIP协议的实现过程来描述这些接口函数是如何相互配合来完成呼叫功能的,参照图2a和图2b所示,主要包括下列步骤:
[0083] A、主叫侧流程:
[0084] S1主叫侧摘机;
[0085] S2抽象层调用摘机功能(offhook);
[0086] S3应用层调用放音功能(playtone),带参数为拨号音;
[0087] S4抽象层调用硬件层的放音接口;
[0088] S5主叫侧拨号;
[0089] S6抽象层调用拨号功能(digithook);
[0090] S7累积收号后发送邀请消息(INVITE);
[0091] S8被叫回180消息;
[0092] S9应用层调用放音接口,参数为回铃音;
[0093] S10抽象层调用硬件层的放音接口;
[0094] S11被叫回200消息;
[0095] S12应用层调用建立媒体接口(add),该接口将主叫和被叫侧的媒体传送给抽象层;
[0096] S13抽象层调用硬件层的媒体创建接口;
[0097] S14主叫侧报告挂机;
[0098] S15抽象层调用挂机功能(onhook);
[0099] S16应用层发送再见消息(BYE);
[0100] S17应用层调用删除媒体功能(subtract)删除媒体信息;
[0101] S18抽象层调用硬件层接口,删除媒体;
[0102] B、被叫侧流程:
[0103] P1接收邀请消息(INVITE);
[0104] P2应用层调用振铃功能(ring);
[0105] P3抽象层调用硬件层的振铃接口;
[0106] P4被叫发送180消息;
[0107] P5被叫侧摘机;
[0108] P6抽象层调用摘机功能(offhook);
[0109] P7被叫发送200消息;
[0110] P8应用层调用建立媒体接口(add),该接口将主叫和被叫侧的媒体传送给抽象层;
[0111] P9抽象层调用硬件层的媒体创建接口;
[0112] P10被叫侧报告挂机;
[0113] P11抽象层调用挂机功能(onhook);
[0114] P12应用层发送再见消息;
[0115] P13应用层调用删除媒体功能(subtract)删除媒体信息;
[0116] P14抽象层调用硬件层接口,删除媒体。
[0117] 优选的,上述步骤S3、S6、S8、S11、S16、P2、P4、P5、P7和P12中的任意一个或多个支持定时操作,
[0118] 从上述实施例可以看出,本发明的优势在于:
[0119] 提出语音通用硬件接口管理层,通过该管理层,可以方便地接入不同的硬件平台,方便新硬件,新产品的开发;通过利用通用硬件接口管理,可以同时实现多个硬件接口管理层。当版本运行后,根据当前的硬件,选择对应的硬件接口管理层。这样,无论有多少硬件,开发人员只需要维护一个软件版本,大大简化维护工作量。
[0120] 以上对本发明的具体实施例进行了详细描述,但本发明并不限制于以上描述的具体实施例,其只是作为范例。对于本领域技术人员而言,任何等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作出的均等变换和修改,都应涵盖在本发明的范围内。