语音模块CBB编程指导

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

语音模块CBB编程指导
目录
0版本记录 (3)
1编写目的 (3)
2术语、定义及缩略语 (3)
2.1术语、定义 (3)
2.2缩略语 (3)
2.3阅读须知 (4)
3基本概念................................................... 错误!未定义书签。

4语音框架.. (6)
4.1软件结构 (6)
4.2软件框架 (8)
5文件/目录组织 (10)
5.1文件头编写 (15)
5.2h目录 (11)
5.3comm目录 (13)
5.4osal目录 (13)
6公共配置模块 (13)
7SIP呼叫模块............................................... 错误!未定义书签。

8参考文献. (21)
9附录 (21)
9.1设备宏定义 (21)
9.2DSP宏定义 (21)
9.3OS宏定义 (21)
0版本记录
1编写目的
[说明编写本文件的目的,指明读者对象。

]
2术语、定义及缩略语
2.1术语、定义
[逐项列出本文中用到的难以理解或可能引起混淆的术语及其定义。

说明,本方案中的术语和约定仅适用于本方案。

]
2.2缩略语
2.3阅读须知
红色:为待定项,需进一步讨论确定。

黄色:为预警项,相关人员务必遵守。

蓝色:为注释项。

3模块缩写及说明
4语音框架
4.1软件结构
语音组件
INIT:完成所有模块的初始化,分为两个阶段:配置初始化和任务初始化。

⏹配置初始化:公共配置模块、应用模块、传真模块、POTS卡管理模块、DSP适配模
块及命令行初始化。

⏹任务初始化:应用模块、POTS卡管理模块、DSP适配模块及与网管接口钩子函数注
册。

WEB/NM/TR069 : 各款设备根据不同的设备管理需求,加载某种或多种配置管理模块。

该模块不限于web、图形网管和TR069这三种管理方式,根据需求的发展,还会增加新的管理模式。

⏹WEB配置管理
⏹图形网管配置管理
⏹TR069配置管理
POTS : 记录POTS卡上端口的物理状态、使能状态,并在状态改变时触发端口注册/注销业务。

根据设备需求,还有可能需要完成POTS盘轮询功能。

DHCP/PPPOE/NTP:顾名思义,这些模块会完成相应的系统功能。

他们均是系统功能模块,随着发展,也可能增加更多这样的系统功能模块。

⏹DHCP
⏹PPPOE
⏹NTP时间管理
NGN APP:包括SIP 协议应用模块、H248协议应用模块、MGCP 协议应用模块。

当设备为某种NGN 协议应用场景时,语音软件只包含对应的协议应用模块。

⏹网络侧,根据各种协议标准,实现VOIP语音信令指令的下发。

⏹用户侧,根据上报的用户事件,组建信令包,通知软交换平台,实现互通。

SMU:此模块原本是根据电信呼入呼出仿真测试需求增加的,它相当于用户侧的仿真器,模拟用户侧的动作,以实现基本语音业务。

对现网开通业务,检测开通是否存在故障极有帮助。

FAX:最初因为传真透传、传真vbd、POS机和智能公话业务而增加了这个模块,但现在不光完成前述业务,也控制对基本语音业务的DSP参数调整,应用模块对DSP参数的修改都必须经过此模块到达DSP适配层。

HWAL:屏蔽各款DSP/CODEC驱动,完成各种DSP/CODEC功能,包括分配/释放时隙,创建/删除DSP通道,各种信号音的处理,各种检测事件的上报,语音相关参数的设置,传真/MODEM 业务,三方/会议业务等。

COMM:负责语音公用的配置,涵盖IP、VALN、DNS等,还完成调试信息控制和任务监控等。

MND:各款DSP/CODEC驱动。

OSAL:操作系统适配,屏蔽VXWORKS和LINUX之间的差异,对上层应用透明。

RV:VOIP各款核心协议栈,包括H248、MGCP和SIP。

SCALL
SSDP SDM S
R
E
G
S
A
U
NGN APP(SIP)
SIP APP模块
SREG:SIP 注册心跳模块,记录端点电话号码、注册服务器、代理服务器和心跳信息等,完成端点注册/注销,注册刷新,心跳及双SBC。

SAU:SIP 认证模块,包括呼叫、注册中MD5、AKA 认证功能
SACLL :SIP 呼叫模块,包括语音呼叫的建立、更新、删除,增值业务(传真/MODEM/三
方/呼等)实现,SIP 核心协议栈封装。

SSDP :SIP SDP 模块,完成SDP 消息的解析和构造,实现 SDP 协商并完成与DSP 适配层
的交互。

SDM :负责按照数图规范要求处理用户拨打的号码。

SDP
E P P
APP
AU
NGN APP(H248/MGCP)
APP : HAPP (H248协议命令处理模块)/MAPP (MGCP 协议命令处理模块),完成各种VOIP
命令的解析,并对用户侧做出相应的指令。

EPP : HEPP (H248 业务处理模块)/MEPP (MGCP 业务处理模块):根据用户侧事件的上报,
触发相应的VOIP 命令,通知软交换平台。

SDP :HSDP (H248 SDP 模块)/MSDP (MGCP SDP 模块),负责实现协议栈SDP 消息结构和
应用层SDP 消息结构的转换。

AU :HAU (H248 认证模块)/MAU (MGCP 认证模块),负责协议MD5认证。

4.2 软件框架
图中的线省去了所有模块与COMM之间统一调试、任务监控之间的关系。

INIT:负责所有模块的初始化工作,包括配置管理、DHCP、PPPOE、NTP、POTS卡管理、NGN 应用、传真模块、DSP适配、公共配置、呼入呼出仿真。

WEB/NM/TR069 : 管理存在配置设置/获取的所有模块,包括DHCP、PPPOE、NTP、POTS卡管理、NGN 应用、传真模块、公共配置、呼入呼出仿真。

POTS :
⏹网管使能端口。

(NM → POTS)
⏹POTS盘轮询功能,使用TIMER。

不是所有设备都存在该项功能。

(POTS → OSAL)
⏹POTS口物理状态或使能状态的改变,触发端口注册/注销。

(POTS → NGN APP)
DHCP/PPPOE:
⏹配置或获取DHCP/PPPPOE配置。

(NM → DHCP/PPPPOE)
⏹动态获取IP后,调用NGN应用接口设置设备IP。

(DHCP/PPPPOE → COMM)
NGN APP:
⏹接收网管的配置命令。

(NM → NGN APP)
⏹完成更改设备IP或RTP IP前后的处理工作。

(COMM → NGN APP)
⏹触发DSP参数的修改。

(NGN APP → FAX)
⏹触发呼叫建立、修改和删除,以及呼等、三方的各种DSP操作指令(NGN APP →HWAL)
⏹调用获取呼叫相关配置,调用任务监控函数(NGN APP → COMM)
⏹调用核心协议栈的各种接口,完成VOIP信令功能(NGN APP → RV)
SMU:
⏹接收网管下发的仿真命令(NM → SMU)
⏹DSP适配层对仿真检查呼叫状态、信号音处理(HWAL → SMU)
FAX:
⏹接收NGN应用对DSP参数的更改(NGN APP → FAX)
⏹调用DSP适配层接口,更新 RTP PARAMETER信息(FAX → HWAL)
HWAL:
⏹接收FAX模块对RTP PARAMETER信息的更新(FAX -> HWAL)
⏹调用DSP/CODEC驱动接口(HWAL → MND)
⏹调用仿真模块对于仿真事件的处理(HWAL → SMU)
COMM:
⏹接收网管配置命令(NM → COMM)
⏹接收外界对设备IP的更改(NM/DHCP/PPPOE → COMM)
⏹提供所有模块的统一调试信息(--> COMM)
⏹提供所有存在任务的模块统一任务监控函数(--> COMM)
⏹提供设备端口数、呼叫配置(NGN APP/HWAL/SMU/POTS -> COMM)
⏹调用修改IP前后的处理函数(COMM -> NGN APP)
MND:提供DSP各种操作函数。

(HWAL-> MND)
OSAL:提供一套任务接口、定时器接口等。

(DHCP/POTS/NGN APP/SMU -> OSAL)RV:提供VOIP各款协议实现接口。

(NGN APP -> RV)
5文件/目录组织
下面仅对通用的几个目录进行详细说明:
5.1h目录
h目录下为各模块提供给其它模块使用的外部接口声明。

为方便函数定义的一致性,防止函数定义与函数使用时不一致,特统一放于同一目录下。

5.1.1外部接口头文件编写原则
✧模块编写者使用外部函数接口时,只能包含h目录和comm目录下的头文件。

✧h目录下各头文件的维护人员在更新了头文件后,必须将更新的头文件上传服务
器,通知所有CBB人员更新h目录。

✧外部接口头文件中使用的数据结构如果为非通用数据类型,则必须将定义包含在头
文件中,不能包含某特定操作系统头文件。

除个别涉及某具体协议且为NGN APP
内部模块间使用的头文件外,其他模块不能使用核心协议栈定义的数据结构,不
能包含核心协议栈头文件(eg:sip.h, h248.h, mgcp.h)。

比如sip.h仅供SIP
应用模块使用(SREG、SAU、SCALL和SSDP),其中声明的函数均为涉及协议栈接
口的函数。

请编程人员在使用和更新h目录头文件时,务必遵守上述原则,如若不遵守,出现程序异常或崩溃的,后果自负。

5.1.2文件头说明
5.2comm目录
5.3osal目录
(暂时略)
6公共约定
语音模块使用一些公共约定:
⏹数据类型
⏹返回值
⏹变量/函数使用
⏹文件头编写
6.1数据类型
基本数据类型定义见文件commTypeDef.h
UINT64
INT64
ULONG
LONG
UINT32
INT32
UINT16
INT16
UINT8
INT8
UCHAR
CHAR
BOOL
对BOOL型值:
TRUE
FALSE
IP数据结构:
IP_TYPE
IP_ADDR
6.2返回值
语音模块函数返回值除需要表达特定含义的情况外,建议函数处理返回状态码,以表达函数处理的成功或失败。

状态码是RSTATUS型,详见下表。

状态码
返回值定义见文件commTypeDef.h。

成功的返回值总是非负数,失败的返回值总是负数。

6.3变量/函数使用
6.4文件头编写
6.4.1xxYy.h
/****************************************************************************** ****
* Copyright (C), 2009,烽火通信科技股份有限公司宽带产品部
* 文件名 : xxYy.h
* 作者 : xx(公司邮箱前缀)
* 日期 : 2011/4/26
* 描述 : 语音模块(REG\AU\CALL\SDP\SIPDIGITMAP module)公用外部接口声明,前四个模块
* 加上SIP独有数图模块统称为APP模块。

* 由于三套语音协议都存在REG\AU\CALL\SDP module,但各自又存在着差异: * 1.即使使用同样的函数接口,但在函数实现上存在不同;
* 2.即使使用同样的函数接口,但同名不同义
* 3.对某些功能,存在某种协议需要,而另一种不需要的情况
* 这些差异体现在如下三个方面:
* 1. REG\AU\CALL\SDP module公用配置接口声明,用于NM module调用,也用于私有
* 协议调用
* 2. REG\AU\CALL\SDP module公用初始化接口声明
* 3. 更改设备IP\本地端口声明
* 版本 : 1.0
* 函数列表:
* 历史记录:
* <作者> <时间> <版本 > <描述>
* gj 11/04/26 1.0 build this moudle
* (公司邮箱前缀) yy/mm/dd x.x add/modify/delete :...
* reason :.................................... ******************************************************************************* *****/
#ifndef _XX_YY_H_
#define XX_YY_H_
#include "commTypeDef.h"
/*---------------------------------------------------------*
* 语音模块(REG\AU\CALL\SDP module)公用配置外部接口声明 *
*---------------------------------------------------------*/
/*----------------REG MODULE INTERFACE------------------------------*/
……
/*------------------------- REG DATA STRUCTURE---------------------*/
……
/*---------------------- REG FUNCTIONS DECLARE ------------------*/
……
#endif
6.4.2xxYy.c
/****************************************************************************** ****
* Copyright (C), 2009,烽火通信科技股份有限公司宽带产品部
* 文件名 : scall2Hwal.c
* 作者 : xx (公司邮箱前缀)
* 日期 : 2011/04/26
* 描述 : 属SIP 呼叫处理模块
* 对DSP某些功能的封装
* 1.创建、删除dsp channel封装
* 2.停音、放音封装
* 3.三方会议参数设置的封装
* 版本 : 1.0
* 函数列表:
* 历史记录:
* <作者> <时间> <版本 > <描述>
* gj 11/04/26 1.0 build this moudle
* (公司邮箱前缀) yy/mm/dd x.x add/modify/delete :...
* reason :.................................... ******************************************************************************* *****/
#ifdef __cplusplus
extern "C" {
#endif
#include "commTypeDef.h"
#include "scall2Hwal.h"
/****************************************************************************** *****
* 函数名 : xxVoiceMsgProcess
* 函数功能: 处理语音消息(必需要有清晰描述)
* 输入参数: 无
* 输出参数: 无
* 返回值 : 是否正确处理语音消息
* 其它 : (对函数整体的修改记录,比如修改了输入/出参数,修改了返回值含义,修改了函数功能)
* 添加者 : (公司邮箱前缀)
* 添加时间: 2009/07/01
******************************************************************************* *****/
RSTATUS xxVoiceMsgProcess(void)
{
......
return ROK;
}
#ifdef __cplusplus
}
#endif
6.5函数头说明
/****************************************************************************** *****
* 函数名 : xxVoiceMsgProcess
* 函数功能: 处理语音消息(必需要有清晰描述)
* 输入参数: 无
* 输出参数: 无
* 返回值 : 是否正确处理语音消息
* 其它 : (对函数整体的修改记录,比如修改了输入/出参数,修改了返回值含义,修改了函数功能)
* 添加者 : (公司邮箱前缀)
* 添加时间: 2009/07/01
******************************************************************************* *****/
RSTATUS xxVoiceMsgProcess (void)
{
……
return ROK;
}
6.6函数名/文件名前缀
函数名、文件名前缀为本模块名缩写(见3-《模块说明表》)。

如果为外部接口,则第一个字母大写。

eg:
comm模块函数名:CommCfgInit
comm模块文件名:commIpCfg.c
6.7各种宏的使用
6.7.1设备宏
可以使用设备宏(见附录-设备宏定义)的模块有:
⏹COMM: 端口数,获取mac地址,信令/RTP IP,信令/RTP VLAN,默认编码方式,传真方
式??,
⏹INIT:各款设备初始化流程不一
⏹HWAL:codec的部分在各款设备间存在不同,比如反极、振铃等
⏹NM:目前仅用于AN5006-20设备
6.7.2DSP/CODEC宏
DSP/CODEC宏仅限于HWAL模块使用。

DSP/CODEC宏定义见附录-DSP宏定义。

6.7.3操作系统宏
操作系统宏仅限于OSAL模块使用。

操作系统宏定义见附录-OS宏定义。

7调试控制
各个模块都存在下列调试等级:
⏹致命(FATAL):严重错误
⏹错误(ERROR):一般错误
⏹错误1(ERROR1):自定义错误
⏹错误2(ERROR2):自定义错误
⏹错误3(ERROR3):自定义错误
⏹警告(WARNING):告警
⏹警告1(WARNING1):自定义告警
⏹警告2(WARNING2):自定义告警
⏹警告3(WARNING3):自定义告警
⏹发送(SEND):发送调试
⏹接收(RECV):接收调试
⏹进入(ENTER):函数入口
⏹退出(LEAVE):函数退出前
⏹调试(DEBUG):一般调试
⏹调试1(DEBUG1):自定义调试
⏹调试2(DEBUG2):自定义调试
⏹调试3(DEBUG3):自定义调试
⏹配置(CONFIG):配置处理调试
⏹所有(ALL):所有等级开关打开
关闭所有(NONE)):所有等级开关关闭
各模块在调试控制中对应的枚举值
NM_SUB_MODULE,
TR069_SUB_MODULE,
SMU_SUB_MODULE,
SCALL_SUB_MODULE,
SREG_SUB_MODULE,
SSDP_SUB_MODULE,
SAU_SUB_MODULE,
SDM_SUB_MODULE,
FAX_SUB_MODULE,
MEPP_SUB_MODULE,
MAPP_SUB_MODULE,
MSDP_SUB_MODULE,
MAU_SUB_MODULE,
HEPP_SUB_MODULE,
HAPP_SUB_MODULE,
HSDP_SUB_MODULE,
HAU_SUB_MODULE,
SIP_SUB_MODULE,
H248_SUB_MODULE,
MGCP_SUB_MODULE,
INIT_SUB_MODULE,
COMM_SUB_MODULE,
POTS_SUB_MODULE,
DHCP_SUB_MODULE,
PPPOE_SUB_MODULE,
HWAL_SUB_MODULE,
MND_SUB_MODULE,
AUDIO_SUB_MODULE,
OSAL_SUB_MODULE,
NTP_SUB_MODULE,
NAT_SUB_MODULE
8在各款设备表现不一的功能
语音模块提供的功能在各款设备中表现不一,存在着相同功能不同的实现方式,也存在着某些功能在一些设备中需要,而另一些设备不需要或不由语音模块实现的情况。

对于这些在各款设备中表现不一的功能,可以通过使用不同的设备宏来加以区分(见6.7.1 设备宏定义),或者采用钩子函数,或者初始化时确定使用方法的方式来加以统一。

9 DSP/CODEC驱动宏定义
10参考文献
1.ONU 语音系统软件模块化方案设计 RA版
2.
11附录
11.1设备宏定义
11.2DSP宏定义
11.3OS宏定义。

相关文档
最新文档