驱动环境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
今天的文章open wrt app_openwrt设置有线ap分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88710.html