驱动环境VOICE-TAPI-VoIP说明
Version :0.1
简 介
本文档涉及驱动底层LL,也只是对驱动上层HL的应用分析,对于电话应用编程接口(TAPI)和VoIP进行详细的介绍,是对上层的理解和给应用程序进行调用的接口。篇一详细的介绍了TAPI的上层需要的功能获得接口,篇二详细的介绍了VoIP的上层需要的功能和接口
篇 一
电话编程接口TAPI的应用,驱动提供给应用程序的服务,在TAPI HL和LL,实现具体设备的功能。TAPI支持Lantiq的各种设备的Voip和POTS功能。
TAPI HL作为一个独立的驱动,TAPI LL的实现作为每个支持设备的二进制,二者都需要TAPI接口进行控制和数据路径的建立。
一:应用情景支持
- ATA和Gateway应用
ATA和Gateway应用适应ALM接口到PSTN网络FXO或者模拟电话端口FXS,lantiq设备默认的ALM连接到FXS,若连接FXO,需要重新编程设置线路类型。Chapter 5.1.1 Chapter 5.2.4.
就FXS线路而言,振铃是由SLIC产生的高电压信号和紧密联系由固件产生的FSK/DTMF信号编码显示在模拟通道的CID组成的,对于FXO线路,振铃信号如果需要检查,信号检测器被激活。Chapter 5.1.7 Chapter 5.5.2
Lantiq设备包含数据通道、信号传输/检测,一次在信号传输/产生之前,有必要建立可以使用的模拟端口ALM和数据通道。ALM到数据通道的连接在Chapter 6.1。
在某些情形中,信号传输(检测)直接来自通过PCM接口连接的外部的芯片,数据通道必须去连接PCM通道和用合适的PCM通信参数(RX、TX)进行编程。
Data channel包括复杂的信号处理(如语音压缩和信号产生/检测)和RTP包,Phone channel资源包含数字语音上的I/O端口。
对于ATA和VoIP网关,PCM和ALM属于Phone channel,而SIG和COD资源属于数据通道。因此,IFX_TAPI_ENC_START 只应用于数据通道,IFX_TAPI_LINE_FEED_SET 和IFX_TAPI_PCM_CFG_SET 应用于电话通道。Chapter 8.1
这两个通道的连接在打开文件描述符的时候,IFX_TAPI_ENC_START和IFX_TAPI_LINE_FEED_SET使用哪个fd,便是数据通道和电话通道的连接方式。
VoiceA data channel IFX_TAPI_ENC_START使用fd0
phone channel IFX_TAPI_LINE_FEED_SET使用fd1
2、系统使用经过PCM的FXO
我们打大麦盒子使用的是外部桥接PCM的FXO口,PCM的接口和通道的配置和控制在Chapter 5.3. FXO的控制在Chapter 5.1.1 Chapter 5.2.4.
- FXO使用XWAY的SLIC121
大麦盒子使用的PCM和SPI连接的FXO,若是使用SLIC121连接的FXO,那么控制DAA设备连接SLIC实现FXO的功能。
- voice采样率
Lantiq设备的dect channel,ALM和PCM channel支持8kHz和16kHz使用在电话系统的采样比例。
对于的ATA和Gateway应用的宽带,PCM通道编码已经扩展支持G.711编码和16-bit linear。注意,在时序的编码序列中,2时隙的给G711,4时隙的给16-bit linear。Chapter 5.3.2.
对于ALM,采样比率的选择是通过选择数据类型决定的Chapter 5.1.1 Chapter 5.1.1.2.
- 调用流的实例
VoIP-FXS调用的拨号
VoIP-FXS调用的设定RTP流
VoIP-FXS调用的断开连接
二:架构
- 开发环境
GR909功能凯子与分开的库函数,不节能在一些操作系统的驱动层,使能GR909的支持。
Qos驱动是使用Linux IP栈和通过用户孔家你的TPAI更新RTP包流,为了使用这个功能,给定的linux网络协议栈和Qos驱动必须连接进入和出去的RTP包的交换。Chapter 5.7 Chapter 5.7.2.
在各种linux内核的线程和tasklets中,一些线程作为linux的tasklets,这取决于内核的配置。
Kpi2udp(Qos驱动)-这个threads/tasklets处理来自linux网络协议栈的RTP的交换。
Kpi_in-这个TAPI的KPI执行一个tasklet来从KPI接口接收数据和使用一个内核线程从KPI接口接收包。TAPI_OS_THREAD_PRIO_HIGHEST 和tasklet_hi_schedule()" 处理优先级。
Event Handler-使用linux工作队列“TAPIevents ”分配事件到工作context中
Dxs_int 驱动底层使用内核的线程处理中断请求
2.驱动接口和初始化
TAPI驱动实现下列的字符驱动接口
open/close 获得/释放文件描述符 Chapter 4.2.1 Chapter 4.3.2.
select 在中断/事件中阻塞 Chapter 5.7.1.
read/write 从中断模式,来自和给设备接收/发送数据包 Chapter 5.7.1.
ioctl 配置和控制设备 Chapter 8.1.
TAPI包含linux内核的接口ifx_tapi_kioctl() ,允许ioctl用户空间接口
设备与通道初始化
TAPI设备初始化
IFX_TAPI_DEV_START 以默认的值初始化TAPI软件,读取当前的voip部分固件和分配所有的操作系统资源,TAPI使用这些容量去分配资源。
if (ioctl(fd, IFX_TAPI_DEV_START, 0) != 0)
return IFX_ERROR;
TAPI通道初始化
IFX_TAPI_CH_INIT
for (i = 0; i < TAPI_MAX_CHANNELS; i ++) {
/* Initialize all system channels */
if (ioctl (fd_vmmc[i], IFX_TAPI_CH_INIT, (IFX_int32_t) &init) != 0)
三:特性
在excel表格中,有支持的特性列表,而下面是对这些特性应用说明。
- POTS特性
- 设置线路类型:FXS、FXO和宽带
模拟通道可以被使用作为FXS和FXO的接口,这个主要的不同是FXS接口连接slic设备,而FXO的接口是DAA设备连接模拟通道。
应用软件需要配置每个模拟通道在正确的模式:FXS或者FXO模式,以及采样频率。
使用命令:IFX_TAPI_LINE_TYPE_SET,
结构体IFX_TAPI_LINE_TYPE_CFG_t.
IFX_TAPI_LINE_TYPE_t.
注意:配置正确的线路类型,如果配置正确,DAA驱动加载起来,线路只能设置FXO模式
设置通道线路类型之前,需要使用命令IFX_TAPI_CH_INIT初始化通道
设置线路的宽带:
IFX_TAPI_LINE_TYPE_FXS_NB
IFX_TAPI_LINE_TYPE_FXS_WB
IFX_TAPI_LINE_TYPE_FXO_NB
IFX_TAPI_LINE_TYPE_FXS_AUTO
设置线路反馈模式:
IFX_TAPI_LINE_FEED_SET.
IFX_TAPI_LINE_FEED_STANDBY
设置脉冲时序验证
IFX_TAPI_LINE_HOOK_VT_SET
IFX_TAPI_LINE_HOOK_VT_t
IFX_TAPI_LINE_HOOK_VALIDATION_TYPE_t
设置FXS接口的拨号检测
描述了如何在FXS接口配置脉冲拨号的检测参数,这个接口如何使能事件检测在Chapter 7.
IFX_TAPI_EVENT_PULSE_DIGIT ( 0 1 2 3 4 5 6 7 8 9 * # )
IFX_TAPI_EVENT_PULSE_START
设置模拟线路通道容量
对模拟电话端口进行调整读写增益
IFX_TAPI_PHONE_VOLUME_SET.
IFX_TAPI_COD_VOLUME_SET
设置FXS接口的振铃
FXS端口的振铃处理分为两步:振铃节奏和类型的编程,周期性振铃。
配置振铃类型:IFX_TAPI_RING_CFG_SET
IFX_TAPI_RING_CFG_MODE_t
IFX_TAPI_RING_CFG_SUBMODE_t
配置振铃节奏:IFX_TAPI_RING_CADENCE_HR_SET
IFX_TAPI_RING_CADENCE_t,
开始停止振铃:IFX_TAPI_RING_START
IFX_TAPI_RING_STOP.
设置CID支持
TAPI接口接收/传输CID和振铃。
IFX_TAPI_CID_TX_INFO_START,
CID的配置:IFX_TAPI_CID_CFG_SET
IFX_TAPI_CID_STD_TYPE_t
IFX_TAPI_CID_CFG_t
CID时序配置:IFX_TAPI_CID_TX_SEQ_START
IFX_TAPI_CID_TIMING_t.
CID Tx: IFX_TAPI_CID_TX_SEQ_START
IFX_TAPI_CID_TX_INFO_START
IFX_TAPI_CID_MSG_t
准备CID消息:IFX_TAPI_CID_MSG_t
IFX_TAPI_CID_ST_VISINDIC.
IFX_TAPI_CID_MSG_ELEMENT_t
CID -Rx FSK接收器:IFX_TAPI_CID_RX_START
IFX_TAPI_CID_HOOK_MODE_t
IFX_TAPI_CID_RX_STOP
IFX_TAPI_CID_RX_DATA_GET
IFX_TAPI_CID_RX_STATUS_GET:
设置消息等待提示灯 : IFX_TAPI_MWL_ACTIVATION_SET
- )高级POTS特性
设置线路回声消除
WLEC(Window-based Line Echo Canceller)需要在模拟电话接口(IFX_TAPI_WLEC_PHONE_CFG_SET)
或者在PCM接口(IFX_TAPI_WLEC_PCM_CFG_SET) 中被激活。
结构体:IFX_TAPI_WLEC_CFG_t;
IFX_TAPI_WLEC_WIN_SIZE_t.
设置计数器
TAPI提供计数脉冲的产生,这个主要的过程为:
使用命令:IFX_TAPI_METER_BURST.
设置自动电话状态检测机制:
使用命令:IFX_TAPI_LINE_PHONE_DETECT_CFG_SET.
设置FXO 支持
TPAI接口提供控制一个和多个FXO线路
IFX_TAPI_FXO_LINE_MODE_SET 允许FXO线路激活和关闭
设置FXO线路状态事件
设置FXO线路拨号
IFX_TAPI_FXO_DIAL_START
IFX_TAPI_FXO_DIAL_t.
IFX_TAPI_FXO_DIAL_STOP
IFX_TAPI_FXO_DIAL_CFG_SET
设置FXO连接的状态:
IFX_TAPI_FXO_HOOK_SET
IFX_TAPI_FXO_FLASH_SET
IFX_TAPI_FXO_FLASH_CFG_SET
设置持续的测量(电压和电流值)
IFX_TAPI_CONTMEASUREMENT_GET
IFX_TAPI_CONTMEASUREMENT_REQ
IFX_TAPI_EVENT_CONTMEASUREMENT
IFX_TAPI_CONTMEASUREMENT_RESET
设置自动模拟线路校准
IFX_TAPI_CALIBRATION_START
IFX_TAPI_LINE_FEED_DISABLED
设置GR909测试
ifxphone_LT_GR909_Start.
IFX_TAPI_EVENT_LT_GR909_RDY
Ifxphone_LT_GR909_GetResults.
- PCM
PCM接口通讯被使用连接额外的设备Duslic或者DECT芯片集,每个产品能够通过PCM和外部设备进行通信。
设置PCM接口(主机/从机模式)
使用命令:IFX_TAPI_PCM_IF_CFG_SET
设置PCM通道通讯
使用命令:IFX_TAPI_PCM_ACTIVATION_SET
配置LEC、Timeslots、Windband
建立PCM通道给Fax/Modem和RFC 4040
IFX_TAPI_PCM_RES_NB_ALAW_8BIT
IFX_TAPI_PCM_DEC_HP_SET
IFX_TAPI_PCM_VOLUME_SET
设置PCM通道在HDLC和Loop模式
HDLC的控制器,写入相同的时序,控制包交换在内核包的接口。IFX_TAPI_PCM_HDLC_CFG_SET
Loop环回验证 IFX_TAPI_PCM_LOOP_CFG_SET
- 语音产生
设置语音表
早语音产生和被定义以前,它们被IFX_TAPI_TONE_SIMPLE_t /IFX_TAPI_TONE_COMPOSED_t定义使用,保存在内部的语音表中。
设置播放语音
IFX_TAPI_TONE_LOCAL_PLAY
IFX_TAPI_TONE_NET_PLAY
设置单一语音
IFX_TAPI_TONE_t
IFX_TAPI_TONE_SIMPLE_t.
IFX_TAPI_TONE_TABLE_CFG_SET.
定义混合语音
IFX_TAPI_TONE_t
IFX_TAPI_TONE_COMPOSED_t.
IFX_TAPI_TONE_TABLE_CFG_SET.
设置预定义语音
IFX_TAPI_TONE_TABLE_CFG_SET
IFX_TAPI_TONE_SIMPLE_t
设置高电平输出产生语音表
IFX_TAPI_LINE_LEVEL_SET
IFX_TAPI_PHONE_VOLUME_SET
5)语音/信号检测
设置打开/关闭信号检测
IFX_TAPI_SIG_DETECT_ENABLE
IFX_TAPI_SIG_DETECTION_t
IFX_TAPI_SIG_t
IFX_TAPI_SIG_EXT_t.
设置DTMF检测参数
IFX_TAPI_DTMF_RX_CFG_SET
IFX_TAPI_DTMF_RX_CFG_t
设置调用过程语音检测
IFX_TAPI_TONE_CPTD_START
IFX_TAPI_TONE_CPTD_t
IFX_TAPI_EVENT_TONE_DET_CPT
- 编码配置和控制
设置编码/解码配置
IFX_TAPI_ENC_CFG_SET
IFX_TAPI_ENC_VAD_CFG_SET
IFX_TAPI_COD_VOLUME_SET:
IFX_TAPI_COD_DEC_HP_SET,
IFX_TAPI_DEC_CFG_SET,
设置G711或G722 RFC4040
IFX_TAPI_JB_CFG_SET.
IFX_TAPI_ENC_AGC_ENABLE.
编码器/解码器控制
IFX_TAPI_ENC_START
IFX_TAPI_ENC_STOP.
IFX_TAPI_ENC_HOLD
设置室内噪声检测
IFX_TAPI_ENC_ROOM_NOISE_DETECT_START
IFX_TAPI_ENC_ROOM_NOISE_DETECT_STOP.
IFX_TAPI_ENC_ROOM_NOISE_DETECT_t.
IFX_TAPI_EVENT_COD_ROOM_NOISE
IFX_TAPI_EVENT_COD_ROOM_SILENCE
设置抖动缓存
IFX_TAPI_JB_CFG_SET,
设置包丢失隐藏
设置RTP配置
IFX_TAPI_PKT_RTP_PT_CFG_SET
IFX_TAPI_PKT_RTP_CFG_SET
设置上流DTMF和Fax/Modem事件包
IFX_TAPI_PKT_EV_OOB_DTMF_SET.
IFX_TAPI_PKT_EV_OOB_MFTD_SET.
设置RTCP和JB分析
IFX_TAPI_PKT_RTCP_STATISTICS_GET
IFX_TAPI_JB_STATISTICS_GET
设置来自应用软件的RFC 2833 RFC4733
IFX_TAPI_PKT_EV_GENERATE
设置RTP流通知
IFX_TAPI_EVENT_COD_ANNOUNCE_END,
IFX_TAPI_COD_ANNOUNCE_BUFFER_FREE
设置PCM接口(主机/从机模式)
使用命令:IFX_TAPI_PCM_IF_CFG_SET
设置PCM通道通讯
使用命令:IFX_TAPI_PCM_ACTIVATION_SET
配置LEC、Timeslots、Windband
建立PCM通道给Fax/Modem和RFC 4040
IFX_TAPI_PCM_RES_NB_ALAW_8BIT
IFX_TAPI_PCM_DEC_HP_SET
IFX_TAPI_PCM_VOLUME_SET
设置PCM通道在HDLC和Loop模式
HDLC的控制器,写入相同的时序,控制包交换在内核包的接口。IFX_TAPI_PCM_HDLC_CFG_SET
Loop环回验证 IFX_TAPI_PCM_LOOP_CFG_SET
- 语音产生
设置语音表
早语音产生和被定义以前,它们被IFX_TAPI_TONE_SIMPLE_t /IFX_TAPI_TONE_COMPOSED_t定义使用,保存在内部的语音表中。
设置播放语音
IFX_TAPI_TONE_LOCAL_PLAY
IFX_TAPI_TONE_NET_PLAY
设置单一语音
IFX_TAPI_TONE_t
IFX_TAPI_TONE_SIMPLE_t.
IFX_TAPI_TONE_TABLE_CFG_SET.
定义混合语音
IFX_TAPI_TONE_t
IFX_TAPI_TONE_COMPOSED_t.
IFX_TAPI_TONE_TABLE_CFG_SET.
设置预定义语音
IFX_TAPI_TONE_TABLE_CFG_SET
IFX_TAPI_TONE_SIMPLE_t
设置高电平输出产生语音表
IFX_TAPI_LINE_LEVEL_SET
IFX_TAPI_PHONE_VOLUME_SET
5)语音/信号检测
设置打开/关闭信号检测
IFX_TAPI_SIG_DETECT_ENABLE
IFX_TAPI_SIG_DETECTION_t
IFX_TAPI_SIG_t
IFX_TAPI_SIG_EXT_t.
设置DTMF检测参数
IFX_TAPI_DTMF_RX_CFG_SET
IFX_TAPI_DTMF_RX_CFG_t
设置调用过程语音检测
IFX_TAPI_TONE_CPTD_START
IFX_TAPI_TONE_CPTD_t
IFX_TAPI_EVENT_TONE_DET_CPT
- 编码配置和控制
设置编码/解码配置
IFX_TAPI_ENC_CFG_SET
IFX_TAPI_ENC_VAD_CFG_SET
IFX_TAPI_COD_VOLUME_SET:
IFX_TAPI_COD_DEC_HP_SET,
IFX_TAPI_DEC_CFG_SET,
设置G711或G722 RFC4040
IFX_TAPI_JB_CFG_SET.
IFX_TAPI_ENC_AGC_ENABLE.
编码器/解码器控制
IFX_TAPI_ENC_START
IFX_TAPI_ENC_STOP.
IFX_TAPI_ENC_HOLD
设置室内噪声检测
IFX_TAPI_ENC_ROOM_NOISE_DETECT_START
IFX_TAPI_ENC_ROOM_NOISE_DETECT_STOP.
IFX_TAPI_ENC_ROOM_NOISE_DETECT_t.
IFX_TAPI_EVENT_COD_ROOM_NOISE
IFX_TAPI_EVENT_COD_ROOM_SILENCE
设置抖动缓存
IFX_TAPI_JB_CFG_SET,
设置包丢失隐藏
设置RTP配置
IFX_TAPI_PKT_RTP_PT_CFG_SET
IFX_TAPI_PKT_RTP_CFG_SET
设置上流DTMF和Fax/Modem事件包
IFX_TAPI_PKT_EV_OOB_DTMF_SET.
IFX_TAPI_PKT_EV_OOB_MFTD_SET.
设置RTCP和JB分析
IFX_TAPI_PKT_RTCP_STATISTICS_GET
IFX_TAPI_JB_STATISTICS_GET
设置来自应用软件的RFC 2833 RFC4733
IFX_TAPI_PKT_EV_GENERATE
设置RTP流通知
IFX_TAPI_EVENT_COD_ANNOUNCE_END,
IFX_TAPI_COD_ANNOUNCE_BUFFER_FREE
篇二
Voip的子系统提供了完整的VoIP在lantiq的语音平台上的具体功能,这个VoIP子系统支持不同类型的终端和网络接口,如大麦盒子的终端POTS,FXS和DECT。在网络接口侧,VoIP子系统支持VoIP和POTS FXO,另外提供的VoIP的功能,如提供PBX的特性给网关内部互打电话,这个VoIP子系统的参数通过网络和远程管理接口,这个VoIP子系统提供了接口的终端,帮助了更好定义第三方的APIs。
一:软件架构
VoIP子系统架构分为了两个独立的逻辑分区:应用程序库和VoIP库
应用程序库是一系类的写入VoIP协议的模块,应用程序库实现了非VoIP库的子系统特性。
VoIP库是一系类的VoIP的功能的核心,信号通过SIP和媒体交换通过RTP
依赖模块不是严格的VoIP子系统,是结合VoIP子系统提供的扩展功能。
VoIP子系统是运行在linux用户空间的来自Application和VoIP库的模块,语音处理固件的接口在TAPI调用过程中,Linux系统的调用将被使用。
应用库的组成的部分
• Endpoint Agents: FXS Agent, DECT Agent
• Network Agent: FXO Agent
• Call Manager
调用管理CMGR是VoIP中心的部分,这个CMGR提供了复杂的框架给VoIP系统进行调用。CMGR提供了内部的调用和外部的VoIP和PSTN和网关之间的调用管理,CGMR充当一个调用路由的角色,CMGR管理呼叫保持,3 parter 会话等等
• Media Manager
媒体管理MMGR是VoIP重要的部分,帮助建立建立各种调用的媒体路径,如Voice和Fax,音频资源被MMGR管理的类型有,信号、VoIP、DECT、PCM。
• FXS Agent
• DECT Agent
• FXO Agent
• Configuration Agent
配置代理主要是管理来自管理接口(Web,TR104和终端代理)的管理配置。
• Web Adaptation Layer
VoIP库的组成部分:
• SIP (Network) Agent
SIP网络代理是提供SIP用户的功能,实现会话初始化协议RFC 3261,注意不能用作MMGR接口
• RTP Agent
• VoIP Data Model
• SIP Toolkit
• RTP Toolkit
依赖模块:
VoIP需要从依赖模块实现完整的VoIP路由的功能,这模块是
• TR-104 Adaptation Layer
• Management API Framework
• Fax Agent
• Utilities Library
二、接口描述
VoIP系统有两种不同类型的接口:功能接口和消息接口
- 功能接口
功能接口以两种类型的方式实现VoIP系统,第一种类型是导出功能的模块,第二种类型是提供注册的回调函数。
CMGR实现各个代理的功能接口,这个功能接口实现调用管理的API。
• Call Control
实现逻辑初始化,应答和释放呼叫及其唤醒呼叫
• Call Transfer
实现逻辑去绑定(uattented)和咨询(attentend)调用转移
• Subscription / Notification
建立订阅/通知机制
• SMS
实现建立基于VoIP的消息
• RTP and Fax Session management
1)呼叫控制服务
下面列出了call manager的服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
函数类型概要及其简要说明:
pfn_IFX_CMGR_CallFwdInfo :回调函数通知呼叫前端的状态,然后对该代理初始化
pfn_IFX_CMGR_CallHoldRsp :回调函数异步响应呼叫保持申请
pfn_IFX_CMGR_CallIncoming :回调函数初始化呼叫建立的申请
pfn_IFX_CMGR_CallResumeRsp :回调函数异步响应呼叫继续申请
pfn_IFX_CMGR_ConfStatus :报导会话的状态
pfn_IFX_CMGR_DigitsInCallRcv :接收呼叫的数字
pfn_IFX_CMGR_MediaNegReq : 改变调用的媒体协商
pfn_IFX_CMGR_MediaNegRsp : 在呼叫的过程中反百年媒体
pfn_IFX_CMGR_MediaParamsGet :获得媒体参数
pfn_IFX_CMGR_RemoteCallAccept :通知呼叫端,呼叫已接收
pfn_IFX_CMGR_RemoteCallAnswer :通知呼叫端,呼叫已应答
pfn_IFX_CMGR_RemoteCallHold :通知远端,呼叫进入了保持状态
pfn_IFX_CMGR_RemoteCallRelease:终止接出的呼叫
pfn_IFX_CMGR_RemoteCallResume :通知远端,呼叫被唤醒
呼叫控制服务结构体概要说明
/voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
/voip_ifx_gateway_appln/CallMgr/h/IFX_LineMgr.h
/voip_ifx_gateway_appln/CallMgr/h/IFX_CallMgr.h
x_IFX_CMGR_CodecParams :一系列的Codecs和相关信息
x_IFX_CMGR_FaxParams :包含Fax传输参数
x_IFX_CMGR_RtpParams :RTP参数
x_IFX_CMGR_VoipAddr :VoIP地址信息
x_IFX_CMGR_VoipMediaParams :媒体相关参数
x_IFX_CMGR_AddressInfo
x_IFX_CMGR_CallParams
x_IFX_CMGR_CidInfo
x_IFX_CMGR_DgtInfo
x_IFX_CMGR_ExtnMediaParams
x_IFX_CMGR_ExtnParams
x_IFX_CMGR_FxoInfo
x_IFX_CMGR_FxoParams
x_IFX_CMGR_MediaParams
x_IFX_CMGR_RegParams
x_IFX_CMGR_RegServerInfo
x_IFX_CMGR_VoipParams
ux_IFX_CMGR_AddressInfo
ux_IFX_CMGR_CallParams
ux_IFX_CMGR_MediaParams
呼叫控制的枚举类型概要
e_IFX_CallForwardType
e_IFX_CallRegisterType
e_IFX_CMGR_CallType
e_IFX_CMGR_FeatStatus
e_IFX_CMGR_Status
e_IFX_EndptType
呼叫控制服务函数概要
./voip_ifx_gateway_appln
./voip_ifx_gateway_appln/CallMgr/src/IFX_CallMgr.c:
IFX_CMGR_CallAccept :函数通知调用管理这个代理已经节后接入的呼叫,例如终端振铃作为对pfn_IFX_CMGR_CallIncoming回调函数的响应。
IFX_CMGR_CallAnswer :函数通知代理已经应答了这次呼叫
IFX_CMGR_CallDeflect :检测呼叫
IFX_CMGR_CallHold :函数呼叫保持
IFX_CMGR_CallHoldRsp :函数开始激活保持的呼叫
IFX_CMGR_CallInitiate :函数初始化一个申请建立的呼叫
IFX_CMGR_CallRelease :函数终止呼出和拒绝接入
IFX_CMGR_CallResume :函数开始继续呼叫
IFX_CMGR_CallResumeRsp :函数需要继续一个保持的呼叫
IFX_CMGR_ConfBreak :函数关闭会议到独立呼叫
IFX_CMGR_ConfMake :函数建立会议
IFX_CMGR_DigitsInCallSnd :函数将拨号数字进入调用管理,发送DTMF给用户
IFX_CMGR_FaxStart :函数开始Fax传输
IFX_CMGR_MediaNegReq :函数转换媒体,在一个申请呼叫的情况下
IFX_CMGR_MediaNegRsp :同上 SIP代理
e_IFX_Return IFX_CMGR_MediaNegRsp(
IN uint32 uiCallId,
IN x_IFX_CMGR_MediaParams* pxMediaParams,
IN_OUT e_IFX_CMGR_Status* peStatus,
IN_OUT e_IFX_ReasonCode* peReason
);
IFX_CMGR_MediaParamsGet :在处理呼叫过程的时候,获得媒体参数
e_IFX_Return IFX_CMGR_MediaParamsGet(
IN uint32 uiCallId,
OUT x_IFX_CMGR_MediaParams* pxMediaParams);
IFX_CMGR_MediaParamsSet :在处理呼叫过程的时候,设置媒体参数
e_IFX_Return IFX_CMGR_MediaParamsGet(
IN uint32 uiCallId,
OUT x_IFX_CMGR_MediaParams* pxMediaParams);
2)RTP服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
RTP服务函数类型概要
pfn_IFX_CMGR_DateTimeNtfn :回调函数提供获得终端日期和时间的接口
pfn_IFX_CMGR_ListAccessFreeVmapiObj:回调函数将提供释放MAPI-V对象的接口
pfn_IFX_CMGR_ListAccessNtfn :回调函数将提供列表中通知的改变
pfn_IFX_CMGR_RtpSessionModify :回调函数修改RTP会话的参数
pfn_IFX_CMGR_RtpSessionStart :回调函数修改给VoIP 呼叫的RTP会话
pfn_IFX_CMGR_RtpSessionStop :会带哦函数停止和中止一个VoIP的RTP会话
RTP服务结构体
x_IFX_CMGR_RtpAgentInfo
RTP服务枚举类型
e_IFX_CMGR_LA_Type
RTP服务函数概要
IFX_CMGR_DateTimeNtfy :提供接口设置终端的时间日期
IFX_CMGR_ListAccessNtfy :提供列表中的通知的改变
IFX_CMGR_RtpMediaError :提供来自RTP代理的异步错误报道
IFX_CMGR_SetAtxCnxt :设置attended转移内容的context的接口
- Fax服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
Fax服务类型概要
pfn_IFX_CMGR_FaxServerListen :回调函数显示FAx TCP连接等待提示
pfn_IFX_CMGR_FaxSessionStart :回调函数开始使用作为Fax会话给FoIP呼叫
pfn_IFX_CMGR_FaxSessionStop :回调函数终止给FoIP的Fax呼叫
Fax结构体
x_IFX_CMGR_FaxAgentInfo
Fax服务函数概要
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h:
./voip_ifx_gateway_appln/Agents/src/IFX_FAX_Agent.c
IFX_CMGR_FaxMediaError :通过CMGR的实现唤醒Fax代理通知发生的错误
IFX_CMGR_FaxSessionEnd :这个函数提供了异步的错误和来自Fax代理的状态报道
- 配置服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
配置服务的函数类型
pfn_IFX_CMGR_Register :回调函数帮之注册和注销VoIP线路
pfn_IFX_CMGR_RegisterRsp :回调函数通知注销和注销申请的状态
pfn_IFX_CMGR_VM_NtfnRcv :回调函数通知接收在Voice邮件上的订阅者
pfn_IFX_CMGR_VM_SubnRsp :回调函数通知voice 订阅者的请求
配置服务结构体
x_IFX_CMGR_VoiceMailEPNotify
x_IFX_CMGR_VoiceMailNotifyInfo
配置服务函数
IFX_CMGR_AllCallsDisc :函数断开系统上的ongoing的呼叫
IFX_CMGR_CallsDiscForEndpt :函数断开所有的终端上的ongoing的呼叫
IFX_CMGR_CallsDiscForLine :函数断开所有的VoIP线路上的呼叫
IFX_CMGR_Register :函数帮助注测和注销VoIP线路的支持
IFX_CMGR_RegisterRsp :函数通知注销和注册的申请状态
IFX_CMGR_VM_Subn :函数帮助订阅者到Voice邮件服务
- 订阅/通知服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
订阅/通知服务函数类型
pfn_IFX_CMGR_ARD_NtfnRcv :回调函数接收在订阅者自动重播忙音的通知
pfn_IFX_CMGR_ARD_Register :回调函数报导自动重播忙音的订阅者申请
pfn_IFX_CMGR_ARD_Status :回调函数通知自动重播的忙音申请状态
pfn_IFX_CMGR_NtfnSnd :回调函数在接收订阅时帮助发送SIP NOTIFY消息
pfn_IFX_CMGR_SubnSnd :回调函数帮助远端在实践中订阅
pfn_IFX_CMGR_SubnStatus :回调函数通知订阅请求的状态
订阅/通知服务结构体
x_IFX_CMGR_ARD_NotifyInfo
x_IFX_CMGR_NotifyInfo
订阅/通知服务公用体
ux_IFX_CMGR_NotifyInfo
订阅/通知服务枚举类型
e_IFX_CMGR_SubsEvent
订阅/通知服务函数
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
./voip_ifx_gateway_appln/Agents/src/IFX_FXS_Agent.c:
./dect_ifx_agent/src/IFX_DECT_Agent.c:
IFX_CMGR_ARD_Activate :这个函数在VoIP线路激活了自动重播忙音
IFX_CMGR_ARD_Ntf :这个函数在终端有效的通讯
IFX_CMGR_NtfnRcv :这个函数通知了在订阅接收的状态
IFX_CMGR_SubnRcv :这个函数通知了接入的远端的订阅申请
IFX_CMGR_SubnStatus :这个函数报导了订阅的需求状态
- 转接服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
转接服务函数类型
pfn_IFX_CMGR_AttendedTxReq :回调函数处理加入的转接申请
pfn_IFX_CMGR_AttendedTxStatus :回调函数报导加入的转接申请
pfn_IFX_CMGR_BlindTxReq :回调函数绑定呼叫转接申请
pfn_IFX_CMGR_BlindTxStatus :回调函数报呼叫转接申请的状态
pfn_IFX_CMGR_CallIdReplace :回调函数在转接的情形下替换呼叫识别
转接服务枚举类型
e_IFX_TransferStatus
转接服务函数类
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
./voip_ifx_gateway_appln/CallMgr/src/IFX_CallMgr.c
./voip_ifx_network_agent/src/IFX_SIPAPP_PAIf.c
IFX_CMGR_AttendedTx :函数帮助完成加入的呼叫转接
IFX_CMGR_AttendedTxStatus :函数确认代理端口的转接是否良好
IFX_CMGR_BlindTx :函数帮助完成绑定呼叫转接
IFX_CMGR_BlindTxStatus :函数确认代理端转接是否良好
- 其他杂项服务
./voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
Misc服务函数类型
pfn_IFX_CMGR_InfoRcv :回调函数通知分配消息
pfn_IFX_CMGR_OffHkCidRcv: 回调函数接收摘机的CID消息
Misc服务结构体概要
x_IFX_CMGR_CallBackList
Misc服务函数概要.
/voip_ifx_gateway_appln/Interface/IFX_CallMgrIf.h
/voip_ifx_gateway_appln/Agents/src/IFX_RTP_Agent.c
./voip_ifx_gateway_appln/Agents/src/IFX_FAX_Agent.c:
./voip_ifx_gateway_appln/Agents/src/IFX_FXO_Agent.c
./voip_ifx_gateway_appln/Agents/src/IFX_CFG_Agent.c:
./voip_ifx_gateway_appln/Agents/src/IFX_FXS_Agent.c:
./voip_ifx_gateway_appln/Agents/src/IFX_FXS_Agent.c
IFX_CMGR_CallBacksRegister :函数注册代理的调用管理的回调函数
IFX_CMGR_CallBacksUnRegister :函数注销代理调用管理的回调函数
IFX_CMGR_InfoSnd :函数在代理之间的消息交换
IFX_CMGR_Init :函数初始化调用管理
IFX_CMGR_LineIdFromCallIdGet :函数获得VoIP线路的一个特殊的呼叫标识
IFX_CMGR_LineIdFromReqIdGet :函数获得VoIP线路的一个特殊的呼叫标识的申请
IFX_CMGR_OffHkCidSnd :函数获得摘机的CID的前端信息
IFX_CMGR_PrivateDataFromCallIdGet :函数提供私有的数据给特定的标识符
IFX_CMGR_PrivateDataFromReqIdGet :函数使用私有的数据给特定的标识申请
IFX_CMGR_PrivateDataToCallIdSet :函数设定私有数据给特定的呼叫标识
IFX_CMGR_PrivateDataToReqIdSet :函数设定私有数据给特定的申请标识
IFX_CMGR_Shut :函数关闭调用管理
MMGR实现功能接口,使用CMGR和各个终端节点的使用的MMGR接口。
• Basic Telephony
帮助代理处理信号资源,播放和停止语音(调用过程和DTMF)、CID和接收,发送连接时间到FXO接口和传输/接收FSK数据
基本电话服务的结构体
e_IFX_MMGR_CidRxMode
x_IFX_MMGR_CidParams
x_IFX_MMGR_FreqGain
x_IFX_MMGR_FSK_CallDuration
x_IFX_MMGR_FSK_ChargeParam
x_IFX_MMGR_FSK_Data
x_IFX_MMGR_FSK_DateTime
x_IFX_MMGR_FSK_DisplayInfo
x_IFX_MMGR_FSK_MsgId
x_IFX_MMGR_Tone
基本电话服务的枚举
e_IFX_MMGR_CidTxMode
e_IFX_MMGR_CodecType
e_IFX_MMGR_FSK_CallFwdType
e_IFX_MMGR_FSK_CallingUserType
e_IFX_MMGR_FSK_CallType
e_IFX_MMGR_FSK_MsgType
e_IFX_MMGR_FSK_ParamType
e_IFX_MMGR_Return
e_IFX_MMGR_ToneType
基本电话服务函数概要
./voip_ifx_gateway_appln/MediaMgr/src/IFX_MediaMgr.c
./voip_ifx_gateway_appln/Interface/IFX_MediaMgrIf.h
IFX_MMGR_ApohStatusGet :获得在线路上其他的电话的摘机状态
IFX_MMGR_CidRxStart :这个功能在FXO 线路是哪个有开始CID接收的函数
IFX_MMGR_CidRxStop :这个函数在FXO线路是停止CID的接收
IFX_MMGR_CidTxStart :这个函数开始在FXS终端的CID接收
IFX_MMGR_CptdStart :这个函数开始在FXO线路上的调用过程语音检测
IFX_MMGR_CptdStop :这个函数停止在FXO线路上的调用过程语音检测
IFX_MMGR_DectResActivate :这个函数激活了DECT通道资源和先前获得试用
IFX_MMGR_DectResAlloc 的呼叫
IFX_MMGR_DectResAlloc :这个函数保留了可以利用的资源池的DECT通道资源
IFX_MMGR_DectResDeActivate :这个函数激活了一个先前分配的DECT通道
IFX_MMGR_DectResDealloc :这个函数释放了DECT通道资源
IFX_MMGR_DtmfPlayLocal :这个函数产生了DTMF语音
IFX_MMGR_DtmfPlayRemote :这个函数播放在连接的DTMF语音
IFX_MMGR_DtmfStopLocal :这个函数停止当前播放的语音表
IFX_MMGR_DtmfStopRemote :这个函数停止了在网络侧的DTMF语音
IFX_MMGR_FSKDataRcv :这个函数接收了FSK的数据传输
IFX_MMGR_FSKDataSnd :这个函数发送FSK的数据
IFX_MMGR_HookFlashSet :这个函数发送在FXO到PSTN的Hook Flash事件
IFX_MMGR_OffHookSet :这个函数设定FXO线路到摘机状态
IFX_MMGR_OnHookSet ;这个函数设定FXO 线路在挂机状态
IFX_MMGR_RingCadenceTimeGet :这个函数设定振铃节奏
IFX_MMGR_SetFxsToActive :这个函数设定FXS激活状态
IFX_MMGR_SetFxsToStandBy :这个函数设定FXS
IFX_MMGR_SigResAlloc :这个函数分配了信号资源channel
IFX_MMGR_SigResDealloc :这个函数释放了分配的信号资源channel
IFX_MMGR_ToneAdd :这个函数增加了保存在媒体管理的一个新的语音表
IFX_MMGR_TonePlay :这个函数在一个终端播放语音
IFX_MMGR_ToneRemove :这个函数移除了来自媒体管理的先前注册的语音表
IFX_MMGR_ToneStop :这个函数播放了一个终端的语音表
• Media Control
帮助代理和CMGR去处理和配置媒体资源给VoIP的调用和建立会话的媒体通道
媒体控制服务结构体
x_IFX_MMGR_CodecInfo
x_IFX_MMGR_CodecList
x_IFX_MMGR_JitterBuffer_Conf
x_IFX_MMGR_MediaParams
x_IFX_MMGR_SessionInfo
x_IFX_MMGR_TelephonyEvent_Info
媒体控制服务枚举
e_IFX_MMGR_RFC2833_Rx_Action
e_IFX_MMGR_TelephonyEvent
e_IFX_MMGR_TypeOfCall
媒体控制函数概要
IFX_MMGR_MediaCfg :这个函数配置了一个呼叫的媒体配置
IFX_MMGR_MediaModify :在接出的媒体会话修改了媒体参数
IFX_MMGR_MixingDisable :这个函数关闭了固件语音流的混合
IFX_MMGR_MixingEnable :这个函数配置固件处理语音流的混合
IFX_MMGR_QosActivate :这个函数激活了RTP重定向的包流
IFX_MMGR_QosStart :这个函数是使能了RTP的重定向会话
IFX_MMGR_QosStop :这个函数关闭了RTP的重定向通道的包流
IFX_MMGR_ResFreeForCall :这个函数释放了所有的呼叫资源
IFX_MMGR_ResMove :这个函数转一个终端到另一个终端的转接
IFX_MMGR_ResReserveForCall :这个函数预留了需要的呼叫的所有的资源
• Miscellaneous
提供初始化和事件报道功能,帮助代理获得物理接口的事件,动态配置codec宽带和窄带
Misc服务结构体概要
ux_IFX_MMGR_Device_Params
x_IFX_MMGR_ChannelParams
x_IFX_MMGR_Coder_ResourceInfo
x_IFX_MMGR_Coder_Resources
x_IFX_MMGR_CountrySettingsParams
x_IFX_MMGR_DECT_ResourceInfo
x_IFX_MMGR_DECT_Resources
x_IFX_MMGR_Device_Info
x_IFX_MMGR_DeviceEvents
x_IFX_MMGR_DspDevParam
x_IFX_MMGR_FdSet
x_IFX_MMGR_FXO_ResourceInfo
x_IFX_MMGR_FXO_Resources
x_IFX_MMGR_FxoDevparam
x_IFX_MMGR_FXS_ResourceInfo
x_IFX_MMGR_FXS_Resources
x_IFX_MMGR_GR909_Param
x_IFX_MMGR_GR909_Result
x_IFX_MMGR_InitParams
Misc服务枚举类型
e_IFX_MMGR_CidStd
e_IFX_MMGR_GR909_Freq
e_IFX_MMGR_GR909_TestType
Misc服务函数概要
IFX_MMGR_ChannelReCfg :这个函数重新再通道接口重新配置参数
IFX_MMGR_DeviceEventsGet :这个函数返回了在设备中的事件发生
IFX_MMGR_GR909TestStart :这个加密手机开始在FXS端口的GR909的测试
IFX_MMGR_Init :这个函数初始化媒体管理
MAPI-V数据模型实现配置代理和管理接口web和TR104,方位VoIP的数据模块接提供有限的分析数据。
对象和方法
Objects 描述了MAPI Voice对象
./voip_ifx_vmapi/src/ifx_vmapi_obj_param_tbl.c
/voip_ifx_vmapi/h/ifx_vmapi.h
Methods 描述了MAPI Voice方法
./voip_ifx_vmapi/src/ifx_vmapi_api.c
./voip_ifx_vmapi/h/ifx_vmapi_api.h
./voip_ifx_vmapi/test/ifx_vmapi_test.c
Configure API帮助VoIP子系统模块方位VoIP子系统的参数
SIP工具包API
通过SIP代理和实现SIP用户代理功能
• SDP message
./voip_ifx_network_agent/src/IFX_SDPAPP_ParsePredefAttr.c
./voip_ifx_sip/stack_h/IFX_SDP_GetSet.h
• SIP Call Control
• Dialog Handling
./voip_ifx_network_agent/src/IFX_SIPAPP_CallIf.c
./voip_ifx_network_agent/src/IFX_SIPAPP_Uas.c
• Event Package
./voip_ifx_network_agent/src/IFX_SIPAPP_Refer.c
./voip_ifx_network_agent/src/IFX_SIPAPP_CallBk.c
• Messaging
• SIP Headers
• Option method handling
• Registration
• Stack Configuration
• Transaction handling
• Signaling Compression
RTP工具包API
这个工具包API提供功能帮助RTP代理管理RTP会话和处理RTP和RTCP包相关功能,
• Media Session
帮助创建和RTP和RTCP会话和帮助声音媒体,这个媒体会话服务保持在数据库相联系的数据过程中。
1)媒体会话服务结构体
x_IFX_RTP_AddOnCallBks
x_IFX_RTP_CallBks
x_IFX_RTP_SyncCallBks
- 媒体会话枚举概要
e_IFX_RTP_AddOnType
- 媒体会话服务函数概要
./voip_ifx_rtp/app/src/ifx_rtpapp_app.c
./voip_ifx_rtp/app/src/ifx_rtpapp_app.c
IFX_RTCP_SessConfig:配置RTCP会话参数
IFX_RTP_GetRxSSRC :获得远程的SSRC会话
IFX_RTP_GetSdesItem :获得Sdes项目连接会话和连接
IFX_RTP_Init :函数初始化RTP协议栈和数据库
IFX_RTP_RtpShut: 关闭RTP歇息栈和RTP的资源联系
IFX_RTP_SessAddToConfList: 加入新的会话到会话列表
IFX_RTP_SessClose :关闭会话
IFX_RTP_SessConfig :函数配置会话参数
IFX_RTP_SessCreate :函数创建会话和返回会话ID
IFX_RTP_SessGetRtcpFooterSize: 会话获得RTCP的footer的大小
IFX_RTP_SessGetRtcpHeaderSize :会话获得RTCP的header的大小
IFX_RTP_SessGetRtpFooterSize :会话获得RTP的footer的大小
IFX_RTP_SessGetRtpHeaderSize :会话获得RTP的header的大小
IFX_RTP_SessGetRtpSequenceNum: 会话获得RTP顺序标号
IFX_RTP_SessGetSsrc :会话获得SSRC
IFX_RTP_SessOpen :打开会话
IFX_RTP_SessRegisterAddOn: 会话增加注册
IFX_RTP_SessRemoveFromConfList: 从会话列表中移除会话
IFX_RTP_SessSendRawPkt :函数发送原始的RTP包
IFX_RTP_SessSendRtcpPkt :函数范松RTCP包
IFX_RTP_SessSendRtpPkt :函数发送RTP包到既定的会话
IFX_RTP_SessSetAddOnProcAidData :函数设置procAid给Addon
IFX_RTP_SessSetSsrc :函数会的SSRC会话
IFX_RTP_SetSdesItem :函数设定联系的Sdes 项目
IFX_RTP_SetSessPocSessId: :函数设定Poc会话Id到会话Id
IFX_RTP_StackCfg :函数配置RTP协议栈参数
IFX_RTP_SyncRecvPkt: 函数接收来自SYNC模式的RTP包
• RTP/RTCP Packet handling
设置接收独立的字段在接收RTP和RTCP包处理
- 包处理结构体
x_IFX_RTCP_App
x_IFX_RTCP_Bye
x_IFX_RTCP_Header
x_IFX_RTCP_RR
x_IFX_RTCP_SDES_PRIV_Item
x_IFX_RTCP_SdesItemBlock
x_IFX_RTCP_SdesItems
x_IFX_RTCP_SR
x_IFX_RTP_Header
- 包处理枚举
e_IFX_RTCP_PktType
e_IFX_RTCP_SDES_Item
- 包处理服务函数
./voip_ifx_rtp/stack/src/ifx_rtp_api.c
./voip_ifx_rtp/stack_h/ifx_rtp_pkt.h
IFX_RTCP_BYE_GetByeOpt :获得RTCP包的Bye字段
IFX_RTCP_BYE_GetSsrc :获得RTCP包的SSRC
IFX_RTCP_GET_SDES_Size :获得RTCP SDEC包的大小
IFX_RTCP_GetSdesItemFromPkt :获得RTCP SDES包的SDES项目
IFX_RTCP_RR_GetRepBlock :接收RTCP包的块
IFX_RTCP_SetAppData :设定RTCP的APP的PKT的APPData
IFX_RTCP_SetAppName :设定RTCP的APP的PKT的APPData
IFX_RTCP_SetAppSubType :设定RTCP的APP的子类型
IFX_RTCP_SR_GetSenderInfo :设定Sender显示接收RTCP的SR包
IFX_RTP_APP_GetAppRec: 获得APP包的来自RTCP的APP包
IFX_RTP_GetRtcpHdr :接收RTCP包的RTCP头
IFX_RTP_GetRtpExtnHdr :获得RTP的扩展的头
IFX_RTP_GetRtpHeader :从接收的RTP包获得RTP头
实用工具API包含以下的服务
• Debug
• Timer
• IPC
• OS Interface
模块概要:
1)Misc服务:显示杂项服务
结构体
x_IFX_CalledAddr
x_IFX_Codec
x_IFX_CodecLis
x_IFX_FaxCfg
x_IFX_FaxParams
x_IFX_MediaParams
x_IFX_RtpParams
枚举
e_IFX_AddrType
e_IFX_DtmfType
e_IFX_Mode
e_IFX_ReasonCode
e_IFX_Return
e_IFX_TransportType
2)拨号方案服务:认识拨号方案函数
结构体:x_IFX_DP_Rule
枚举体:e_IFX_DP_Action
3)定时服务:提供定时接口模块
函数类型
pfn_IFX_TIM_TimerCallBack
IFX_TIM_Init
IFX_TIM_Shut
IFX_TIM_TimerMsgReceived
IFX_TIM_TimerStart
IFX_TIM_TimerStop
消息路由API
帮助代理注册事件和手机的消息的回调函数,实用这些功能导出文件描述符。
----------------------------------------------------------
VOIP的代理(客户端)的调用管理配置
---------------------------------------------------------
1、VoIP代理端的配置
- 给代理配置服务的结构体
x_IFX_AgentStatus
x_IFX_CIF_DectSubsInfo
x_IFX_CIF_FxResourceInfo
- 给代理配置服务的枚举
e_IFX_AgentState
- 给代理配置服务的函数
./voip_ifx_gateway_appln/Utils/src/IFX_CfgIf.c
IFX_CIF_AddrBookEntryGet :这个函数加入新的实体去调用注册
IFX_CIF_AddressBookEntryModify :这个函数需要获得默认的FAX端口进行配置
IFX_CIF_AssocLineIdSet :这个函数分配了DECT手持设备到线路中
IFX_CIF_BS_NameGet :这个函数重置了DECT基本初始化的名称
IFX_CIF_BS_PinGet :这个函数重置了基本的pin
IFX_CIF_BS_PinSet :这个函数设置了基本的pin
IFX_CIF_CallReturnAddrGet :这个函数重置了终端的调用返回参数
IFX_CIF_CountryNameGet :这个函数重置了当前应用的国家
IFX_CIF_DectDbgGet:这个函数重置配置DECT的高斯值
IFX_CIF_DectEncryptionFlagGet :这个函数重置了DECT加密的标志
IFX_CIF_DectSubsInfoGet :这个函数重值了手持设备的订阅信息
IFX_CIF_DectSubsInfoSet :这个函数重置了DECT系统的高斯值
IFX_CIF_DefaultOutBoundIfGet :这个函数获得了默认的国外接口VoIP/PSTN的呼叫
IFX_CIF_DefaultOutBoundIfSet: 这个函数设置了默认的国外终端接口
IFX_CIF_DeviceListGet :这个函数重置了设备列表的获得
IFX_CIF_EndptAnonymousCallBlockSet :这个函数设定了异步物理块列表
IFX_CIF_EndptCallFwdInfoSet :这个函数配置了默认线路上的呼叫前向选项
IFX_CIF_EndptCallWaitingSet :这个函数切换默认语音线路终端的呼叫等待提示功能
IFX_CIF_EndptCidStatusSet :这个函数切换了在默认线路终端的CID传输
IFX_CIF_EndptDataUpdate :这个函数切换了终端数据的更新
IFX_CIF_EndptDefaultVLRegStatusCheck :这个函数核对语音线路是否被注册
IFX_CIF_EndptDefaultVLSet :这个函数设定默认的语音线路的终端
IFX_CIF_EndptDNDStatusSet :这个函数设定在默认的终端的DND的状态
IFX_CIF_EndptListGet :这个函数设置一个特定的类型去重置终端
IFX_CIF_EndptVLListGet :这个函数通常获得联系终端的语音线路列表
IFX_CIF_EndptVLListSet :这个函数设定终端的语音线路
IFX_CIF_EndptVMRetrievalAddrGet :这个函数获得重置地址的语音的mailbox
IFX_CIF_EndptVMStatusCheck :这个函数核对是否语音线路已经不读语音mails
IFX_CIF_FreeVmapiObj :这个函数释放VMAPI列表对象
IFX_CIF_FxEndptResInfoGet :这个函数重置FXS.FXO终端资源消息
IFX_CIF_FxoCallForwardAddrGet: 这个是FXO呼叫的前端地址
IFX_CIF_FxoModeGet :这个是FXO线路模式的获得
IFX_CIF_FxoSmsScNumberGet :这个是FXO线路的SMS-SC编号
IFX_CIF_FxoVLIdGet :这个是FXO线路的语音线路的ID的获取
IFX_CIF_FxsSMSCapablityCheck :这个电话连接的FXS端口设备是否是SMS容量
IFX_CIF_FxsWidebandCapablityCheck :这函数是电话连接的FXS端口设备是否是宽带设备
IFX_CIF_IncomingCallBlockCheck :这个函数是接入调用块检查
IFX_CIF_Init :这个函数初始化配置接口
IFX_CIF_IsInterceptAllowed :这个函数核对是否允许
IFX_CIF_IsIntrusionAllowed :这个函数核对是否线路允许
IFX_CIF_IsLineTypeMulti :这个函数检测是否语序相同的对个呼叫,还是单一的呼叫
IFX_CIF_OutgoingCallBlockCheck :这个函数检查试过阻塞和允许接出呼叫
IFX_CIF_ProfileIdListGet :这个函数重置语音文件的标识列表
IFX_CIF_RFPIGet :
IFX_CIF_UnsolicitedNtfyStatusGet 这个函数通常核对是否通知被接受
IFX_CIF_UpdateProfilePorts :这个函数更新文件端口
IFX_CIF_VLRegisterStatusSet :这个函数在语音线路设置注册状态
IFX_CIF_VLVMStatusSet :这个函数设置Voice mail的状态
IFX_CIF_VLVMWaitingStatusSet :这个函数设置语音线路的Voice mail
IFX_UpdateEnptDefaultLine :这个函数跟新所有的终端线路id
2、调用管理的配置服务
配置调用管理的配置服务的函数概要
./voip_ifx_gateway_appln/Utils/src/IFX_CfgIf.c
./voip_ifx_gateway_appln/CallMgr/src/IFX_LineMgr.c
IFX_CIF_CallRegisterAdd :这个函数开始加入新的实体到调用注册
IFX_CIF_DefaultFaxPortGet 这个函数使用默认的FAX端口进行配置
IFX_CIF_EndptCodecListGet :这个函数冲洗分配了语音文件id列表
IFX_CIF_EndptDefaultFxoLineGet :这个函数使用给终端使用默认的FXO线路id
IFX_CIF_EndptDefaultVLGet :这个函数获得终端默认的语音线路
IFX_CIF_EndptLinesGet :这个函数获得终端的线路id的联系
IFX_CIF_EndptTypeGet :这个函数获得终端的类型
IFX_CIF_FxoLineEndptListGet :这个函数获得FXO线路与终端的联系
IFX_CIF_GetCallFrwdDomain :这个函数获得呼叫前端的与地址
IFX_CIF_ReleasePort :这个函数获得释放的端口
IFX_CIF_UrlFromVLGet :这个函数获得语音线路的addr(URL)
IFX_CIF_VLAnonCallBlkStatusGet :这个函数获得语音线路的异步呼叫块状态
IFX_CIF_VLCallFwdInfoGet :这个函数使用呼叫语音线路的前向信息
IFX_CIF_VLCallWaitingCheck :这个函数使能语音线路的前向信息
IFX_CIF_VLCidStatusGet :这个函数是语音线路的CID状态
IFX_CIF_VLCodecInfoGet :这个函数重置语音线路codec列表和参数
IFX_CIF_VLDigitMethodGet :这个函数重置语音线路的DTMF传输类型
IFX_CIF_VLDNDStatusGet :这个函数获得语音线路的DND状态
IFX_CIF_VLEndptListGet :这个函数获得语音线路的终端列表
IFX_CIF_VLFaxMediaCfgGet :这个函数获得媒体Fax传真配置
IFX_CIF_VLFromUrlGet :这个函数获得SIP URL的语音线路
IFX_CIF_VLJBCfgGet :这个函数获得语音线路的Jiffer Buffer
IFX_CIF_VLModeGet :这个函数获得语音线路的模式
IFX_CIF_VLRtpMediaCfgGet: 这个函数获得RTP媒体参数通知语音线路
IFX_CIF_VLSIDCheck :这个函数重置SID
IFX_CIF_VLStatusGet :这个函数获得语音线路的状态
IFX_CIF_VLVMStatusGet :这个函数重置了给定的语音线路的voice mail状态
三:调用流
- 子系统初始化
-配置代理,开始操作VoIP子系统,在开始的时候对芯片初始化
-MAPI-V模块初始化,这是确保其他模块在初始化的过程中是有效的
-实用工具模块,如定时器,调试进行初始化
-当系统支持DECT,DECT代理初始化DECT模块下载固件
-媒体管理和调用管理初始化
-配置媒体管理的回调函数
-终端和媒体代理初始化,在他们注册的过程中,回调函数也注册在调用管理中
-同样的方式初始化SIP代理
-SIP代理使用数据注册VoIP线路和初始化线路
-VoIP系统开始其他的功能
- 系统来自管理接口的配置
- MAPI-V获得来自适配层的请求,如Web/TR104AL
- TAPI用新的数据更新rc.conf。MAPI-V使用MAPI的框架存档
- 配置代理和通知MAPI-V改变到特性的对象,配置代理通知这个改变
- 配置代理包含新的数据和分配VoIP子系统模块
- 在一些情形下,当前的正在的调用可能会失去应用新值
- 一些VoIP文件和VoIP线路的参数的改变,可能会需要VoIP线路去注销和暂时取消订阅
- 基本呼叫情形
• Internal Call between endpoints in a Gateway
- 用户获得FXS终端的摘机信号,摘机事件被TAPI报导到FXS代理
- FXS代理从媒体管理获得信号资源,信号资源需要播放资源
- 媒体管理资源在信号资源有效和音频固件被正在运行的信号资源加载之后,才分配资源
- 在信号资源成功获得之后,FXS开始播放拨号音,FXS代理使用媒体管理函数播放语音
- 在第一次数字接收停止后,拨号音停止,每次接收数字,FXS代理唤醒数字编号方案函数匹配拨号串。
- 通信动作被提取和规则相匹配,就这个例子而言,通信动作建立内部呼叫
- FXS代理唤醒调用管理函数初始化另一个FXS的呼叫,在这个类型的拨号也被提示,这个调用类型是数字编号方案的输出
- 调用管理唤醒媒体管理函数去保存呼叫的资源
- 媒体管理保存申请的资源和诊断CPU是否有足够用的能力运行这次呼叫
- 成功保存资源后,调用管理唤醒在FXS接入调用函数
- FXS代理分配信号资源给第二个终端,在终端振铃以前,这个振铃状态也通过回调函数作为输出。
- 这个调用管理的转态通知FXS代理的Context中第一个终端
- FXS代理给第一个终端播放回铃音
- 当用户开始摘机应答呼叫的时候,FXS代理,在context中的第二个终端唤醒调用福安里的呼叫应答函数
- 调用管理唤醒远FXS代理context中的第一个终端的远程呼叫应答回调函数,这个FXS代理停止在第一个终端的回铃音
- 这个调用管理调用媒体管理函数去交互连接FXS终端件的语音路径
- 在这个时间节点,两个用户在会话中
• External Call between the Gateway and PSTN
- 用户开始在FXS终端摘机,这个摘机事件通过TAPI被报导在FXS代理
- FXS代理需要申请来自媒体管理的信号资源,信号资源需要播放拨号音
- 媒体管理资源在信号资源有效和音频固件被正在运行的信号资源加载之后,才分配资源
- 在成功获得信号资源的时候,FXS开始播放拨号音FXS代理使用媒体管理函数播放语音
- 在第一次数字接收停止后,拨号音停止,每次接收数字,FXS代理唤醒数字编号方案函数匹配拨号串。
- 通信动作被提取和规则相匹配,就这个例子而言,通信动作建立PSTN呼叫
- FXS代理唤醒调用管理区初始化PSTN的呼叫,在这个功能,呼叫的类型也被提示,这个呼叫的类型作为编号方案处理的输出
- 媒体调用管理唤醒媒体管理函数去保存呼叫的资源
- 媒体管理保存申请的资源和诊断CPU是否有足够用的能力运行这次呼叫
- 在成功分配信号资源到FXO线路的时候,这个调用管理唤醒FXO代理的呼叫回调函数
- 这个FXO代理分配信号资源给FXO线路,这个信号资源需要在FXP线路产生信号事件
- 这个FXO代理,在FXO线路中接收一个摘机事件和开始拨号这个数字,在终端,这个网关已经连接了PSTN,这些数字被拨号一个接着一个在极短事件内传输
- 在完整的PSTN号码被拨号之后,这个FXO代理换气呼叫应答函数显示呼叫已经被远端的对方应答
- 这个调用管理使用远程呼叫应答回调函数通知FXS代理
- 这个FXS用户连接PSTN和开始接听PSTN,这个回铃音和忙音开始被接收
- 当PSTN用户开始接受呼叫,通话开始了
接出到PSTN可以建立两种方式
• Single stage dialing
• Two stage dialing
• External Call between the Gateway and VoIP
接入:
- 这个SIP代理接收来自远端VoIP实体的SIP INVITE消息
- 这个SIP代理唤醒调用管理函数去初始化FXS端口的呼叫
- 这个媒体参数,codecs,远程rtp/rtcp端口数字开始连接调用管理初始化申请
- 这个媒体管理核对一个语音线路(SIP account)的存在和一些物理终端
- 这个调用管理开始唤醒媒体管理功能保存资源
- 这个媒体管理开始保存一个编码资源和开始核对CPU的负载足够运行这个申请的Codec的呼叫,如果CPU负载不足,那么媒体管理匹配一个合适的CPU负载。
- 在成功保存资源的时候,调用管理在FXS唤醒接入呼叫调用函数。
- FXS代理需要来自媒体管理的信号资源,这个信号资源在FXS播放振铃音。
- 这个FXS代理唤醒TAPI振铃服务播放振铃音
- 这个振铃的状态在调用管理返回参数的接入呼叫回调函数作为返回参数
- 这个调用管理连接同一个状态到SIP 代理作为初始化呼叫函数的返回参数
- 这个SIP代理在振铃状态通讯连接到远程的VoIP对方和SIP 180振铃消息
- 一旦用户开始摘机,这个振铃语音开始停止,FXS代理花型调用管理的呼叫应答函数去显示用户呼叫应答
- 这个调用管理唤醒媒体管理的媒体配置函数去做RTP配置,jitter Buffer(抖动缓存)配置和配置合适的编码资源和是和的Codec类型
- 这个调用管理也唤醒了媒体会话,创建了了RTP的回调函数器创建RTP呼叫会话。
- 这个调用管理唤醒SIP代理的呼叫应答回调函数去显示回答呼叫的本地终端
- 这个SIP代理结合SDP参数去咨询200响应到通过唤醒媒体管理函数获得SIP INVITE消息
- 这个SIP代理发送200响应,在这个时间点,双方在在会话中
这个调用流也许展现了VoIP的断开,就这个而言,FXS终端用户断开呼叫
- 当本地用户断开连接,这个挂机事件写入了FXS代理,这个FXS代理唤醒媒体管理去重新分配信号资源
- 这个FXS的代理然后唤醒呼叫调用管理的释放函数显示用户终端挂机
- 这个调用管理唤醒体制RTP代理的媒体会话回调函数,这是调整终端的RTP会话
- 这个呼叫管理唤醒媒体管理的释放资源函数去释放codec资源和CPU负载
- 在释放资源之后,这个调用管理唤醒SIP代理的回调函数,这发送SIP BYE到远端VoIP实体
- 用户获得FXS端口的摘机信号,这个摘机事件被TAPI报导到了FXS代理
- 这个FXS代理需要来自媒体管理的信号资源,这个信号资源西药播放拨号音
- 这个媒体管理在核对是否信号资源有效和音频固件是否被正在运行的信号资源加载后准许分配资源
- 在成功获得信号资源之后,在FXS代理播放语音,这个FXS代理使用媒体管理语音服务区播放拨号音
- 在第一次数字接收停止后,拨号音停止,每次接收数字,FXS代理唤醒数字编号方案函数匹配拨号串。
- 通信动作被提取和规则相匹配,就这个例子而言,通信动作建立VoIP呼叫
- FXS代理唤醒调用管理区初始化对远端VoIP的呼叫,在这个功能,呼叫的类型也被提示,这个呼叫的类型作为编号方案处理的输出
- 调用管理核对FXS终端是否连接了,如果连接,它保存Codecs,RTP/RTCP端口号码和来自线路数据的SIP信号的参数
- 这个调用管理唤醒媒体管理功能区保存呼叫的资源
- 这个媒体管理保留了编码资源和核对了CPU负载是否对运行在codec的呼叫充足,如果CPU负载不足,那么媒体管理匹配一个合适的CPU负载。
- 在成功保存资源之后,这个调用管理唤醒SIP代理的回调函数
- 这个SIP代理需要给调用管理给呼叫参数,这个数据需要产生和传输SIP INVITE消息到远端VoIP对端
- SIPdialing在接收远端VoIP对方的180响应,唤醒呼调用管理的叫接收函数显示远端的VoIP实体接收。
- 接收呼叫信号重新回到FXS代理,将分配回铃音给FXS终端
- 这个SIP代理,接收来自远端VoIP的200响应,唤醒调用管理的呼叫应答函数显示远端应答呼叫
- 这个调用管理唤醒获得呼叫参数去取得协商参数,这个呼叫配自己哦媒体管理的媒体函数,这个媒体管理函数RTP配置,用合适的参数配置jitter Buffer和Coder资源。
- 这个调用管理唤醒媒体会话穿件RTP代理的回调函数刦创建呼叫的RTP会话
- 这个呼叫管理唤醒FXS代理调用函数显示VoIP应答这次呼叫
- 这个FXS代理停止回铃音
- 在这个时间,双方建立通话
- 补充呼叫情形
• Call Hold
- 这个VoIP呼叫(在FXS终端和远程VoIP端)在会话中
- 这个FXS代理,在接收用户放置呼叫保持的接收输入(Hook Flash),唤醒调用管理呼叫保持函数显示用户想要放置呼叫为保持状态
- 这个调用管理唤醒呼叫SIP代理的保持回调函数,显示FXS代理正在建立呼叫保持
- 这个SIP代理唤醒参数功能和建立再次的Re-INVITE请求
- 这个远端的VoIP端口联系Re-INVITE的200响应
- 这个SIP代理唤醒呼叫保持函数
- 这个呼叫管理然后唤醒获得参数参数函数去再次修改会话的参数,这个修改的媒体管理的媒体函数被决定去修改会话
- 这个调用管理然后唤醒保持回调函数去通知FXS代理关于呼叫保持的成功的状态
- 呼叫下载保持
• Call Resume
- 这个VoIP呼叫(在FXS终端和远程VoIP方)被保持
- 这个呼叫被FXS唤醒,这个FXS代理唤醒调用管理的调用函数去继续这个保持呼叫
- 这个调用管理转而唤醒SIP代理的继续拨号回调函数
- 这个SIP代理发送Re-INVITE请求给远方的VoIP方和等待200响应
- 接收200响应,这个SIP代理唤醒呼叫响应功能
- 这个调用管理然后唤醒重新修改会话的参数,这个修改媒体管理的媒体函数的会话被修改
- 这个调用管理然后被唤醒调用唤醒响应功能去通知FXS代理关于成功的转态和呼叫继续的申请
- 呼叫开始继续
• Call Forwarding
- 这个从FXS终端及接入到远端的VoIP对方的呼叫建立起来
- SIP代理接收302消息从远端的VoIP对方显示需要的forward到另一个VoIP对方
- 这个SIP代理唤醒释放呼叫函数,显示因为forward请求接收,呼叫被释放
- 这个调用管理唤醒了呼叫的forward回调函数通知FXS代理关于呼叫被转移,这个呼叫管理也提供了可能被藤椅代理所显示的呼叫forward消息。
- 这个调用管理释放了所有的呼叫资源,同一时间,这个调用管理也保留了所有的forward的呼叫
- 新的forward的呼叫已经被建立起来了。
• Attended Call Transfer
- Call 1在网关FXS终端和远程的VoIP端口RV1,Call 2在同一个FXS终端和远程的VoIP对方RV2对端。
- 当FXS代理初始化attended呼叫transfer,唤醒attended呼叫transfer函数的时候,Call 1和Call 2保持
- 这个调用管理,唤醒SIP代理的attended 转移回调函数功能
- 这个SIP代理初始化通过发送REFER 替换RV1的申请,Rv1初始化一个呼叫为Rv2
- 在从Rv1的REFER上接收200响应的时候,这个SIP代理呼叫attended转移状态函数接收转态
- 这个状态重新反馈给FXS代理,唤醒状态来自调用管理的attended transfer状态回调函数。
- 接收来自RV1的BYE请求,这个SIP代理唤醒呼叫释放函数去释放Rv1
- 这个调用管理释放Call 1的所用资源,并且唤醒呼叫释放回调函数终止call 1
- 在接收NOTIFY提示的时候,这个transfer已经实现了,这个SIP代理唤醒加入attended transfer状态函数去状态应答
- 这个调用管理释放保存的资源和初始化程序去终止Call2
- 这个调用transfer的状态给了FXS代理
• Blind Call Transfer
- 这个呼叫在FXS终端和远端的VoIP保持
- 这个FXS代理唤醒了绑定转移函数在呼叫管理,当用户试图绑定Rv2的呼叫的时候,查阅相关的编号方案规则去给比好代码处理化一个绑定转移。
- 这个调用管理,转而唤醒了SIP代理的bind transfer 回调函数
- 这个SIP代理初始化了tansfer发送REFER请求给RV1,RV1初始化和Rv2的呼叫
- 在接收从Rv1的REFER的200响应,这个SIP代理呼叫bind transfer状态函数接收状态
- 这个状态反馈给FXS代理通过来自调用管理的blind transfer 状态回调函数
- 在接收NOTIFY提示的时候,这个转移的是完成,这个SIP代理唤醒来自调用管理的回调函数
- 这个调用转移状态给了FXS代理
- 这个调用管理释放了所有的保存的资源和初始化程序终止呼叫
• 3 Party Conference
- 在这个例子中,Call 1显示了两个FXS终端和Call 2显示了一个FXS终端和远端VoIP端,Call 1和Call 2在保持状态。
- 在建立会话从用户的输出的过程中,这个FXS代理唤醒了调用管理的会话功能
- 这个调用管理先唤醒了Call 2,后唤醒了Call 1,这个过程唤醒了描述在上图的呼叫
- 在呼叫重新消耗之后和媒体会话转移之后,这个调用管理呼叫开始使能媒体管理函数去混合call 1和Call 2 的语音流
- 这个管理驱动在唤醒了在FXS代理的会话状态回调函数显示这个会话建立成功建立
- 这两个呼叫(Call 1 和 Call 2)此时在会话中。
第二个部分的调用流的步骤为关闭一个会话
- 这个请求关闭了来自远端VoIP对方的会话,就饿SIP BYE的请求而言
- 这个SIP代理唤醒了终止Call 2的呼叫
- 这个调用管理唤醒了在FXS代理的远端释放呼叫回调函数终止Call 2
- 这个调用管理也修改了媒体配置去关闭声音流的混合,这个保留的Call 2资源也被释放
- 这个调用管理报导了FXS代理通过唤醒状态回调函数,关闭了会话。
- 这个会话关闭了,只是Call 1是在激活状态。