📄 m803xx.h
字号:
/******************************************************************************
* 文件名:m803xx.h *
* 说 明:定义了M803xx驱动用到的宏和数据结构 *
* 日 期:2003/01/16 *
******************************************************************************/
#ifndef _M80320_H
#define _M80320_H
#include "vxworks.h"
#include "stdio.h"
#include "install.h"
#include "ros_ex.h"
#include "rtpmib.h"
#include "cacheLib.h"
#include "taskLib.h"
#include "garlib.h"
#include "Typedef.h"
#include "protocol/common/include/prot_ex.h"
#include "Attache/Common/Include/att_ex.h"
/*#include "Protocol\Attache\Stack\RTM\Include\rtm_ex.h"
#include "Attache/Stack/IPV4/Include/ip_ex.h"*/
#include "product.h"
#include "Layout/ip.h"
/*#include "driver/drvlib/include/drv_comm.h"*/
#include "drvlib/include/voipmuxlib.h"
#if INSTALL_LFXS_DRIVER
#define INPORT(x) Swap_Word(*((volatile unsigned long *)(x)))
#define OUTPORT(x,y) (*((volatile UINT16 *)(x)) = Swap_Byte(y))
#define SEM_FLAG 1
#define SendOpenChannelMsgFirst 1
#define M803xx_INIT_DEBUG 0
#define M803xx_DEBUG 1
#define Send_Int 1
#define MAX_CSM_INTR (1024*2*4)
#define M803XX_MAX_PORT_NUM 8
#define PORTS_OF_CHIP 12
#define MAX_RX_MSG_NUM 10
#define M80320_MAX_CID_NUMBER 32
#define MAX_PIN_NUM 8
#define MAX_PCI_NUM 8
#define FIFO_SIZE 248
#define PCI_TXBUF_SIZE 1540
#define M803xx_VEN_ID 0x14F1
#define M803xx_DEV_ID 0x0100
#define PCI_MEM_BASE_OFFSET 0x10 /*定义内存基地址在PCI配置空间中的偏移量*/
#define PCI_MEM_BASE_MASK 0xfffffff0 /*定义PCI内存基地址mask*/
#define PCI_CFG_COMMAND_OFFSET 0x04 /*定义PCI配置空间命令偏移量*/
#define PCI_CFG_CMD_MEM_ENABLE 0x0002 /* memory access enable */
#define PCI_CFG_CMD_MASTER_ENABLE 0x0004 /* bus master enable */
#define MAX_CID_NUM 64
#define RTP_VERSION 2
#define RTP_SEQ_MOD (1<<16) /* 65536 */
/*maximum text length for SDES*/
#define RTP_MAX_SDES 255
/*Seq number update related constants*/
#define RTP_MAX_DROPOUT 3000
#define RTP_MAX_MISORDER 100
#define TX_MBOX_QSIZE 80
#define TX_DATA_QSIZE 20
#define RE_WR_BUF_SIZE 2000
#define MAX_PPP_FRAME_SIZE 1520
#define MAX_RX_BUF_SIZE 1000
#define PACKET_START_SIZE 28
#define IPV4_PKT_LEN_OFFSET 2
#define UDP_PKT_LEN_OFFSET 24
#define IPV4_HEADER_LEN 20
#define UDP_HEADER_LEN 8
#define CODE_OFFSET 0x80
#define DM_ASYN 0
#define DM_SYNC 1
#define LFXS_DOWN 0
#define LFXS_UP 1
#define BUSY 2
#define LFXS_STOP 3
#define LFXS_CALLTYPE_IDLE 0
#define LFXS_CALLTYPE_IN 1
#define LFXS_CALLTYPE_OUT 2
#define RTP_PACKET 50
#define UDP_PACKET 51
#define IP_PACKET 52
#define RTCP_PACKET 53
#define PORT_FAIL 54
#define SEND_DTMF 55
#define SEND_TONE 56
#define VoIP_CHANNEL_MODE 57
#define IDLE 0
#define LFXS_USE 1
#define REPAIR 2
#define FAIL 3
#define MAX_REPAIR_NUM 3
#define SENDTOM803xxOK 0
#define PORT_ERR 1
#define ERR_PORT_NUM 2
#define DATA_QUEUE_FULL 3
#define ERR_RTP_PACKET 4
#define ERR_TONE_TYPE 5
#define ERR_PORT_ACTIVE 6
#define OPEN_QUEUE_FULL 7
#define MBOX_QUEUE_FULL 8
#define ERR_DTMF_MODE 9
#define ERR_DTMF_DIGIT 10
#define ERR_RTCP_PACKET 11
#define ERROR_ARGUMENT 12
#define FAX_CHAN_NOT_OK 13
#define ADD_FWD_TASK_ERR 14
#define IdleStatus 0
#define ToneStatus 1
#define TalkStatus 2
#define ErrStatus 3
#define WaitTalkStatus 4
#define WaitIdleStatus 5
#define WaitCIDStatus 6
#define CIDStatus 7
#define CIDWaitIdleStatus 8
#define CIDIdleStatus 9
#define RECStatus 10
#define PLAYToneStatus 11
#define SendToneStatus 12
#define ReceiveToneStatus 13
#define CIDTalkStatus 14
#define RingGenerateStatus 15
/* caowm add qos dscp */
#define VOIP_DRIVER_IP_PRECEDENCE_DEFAULT 46
#define VOIP_DRIVER_IP_PRECEDENCE_MAX 63
/* end add */
#define SWITCH_TYPE 15
#define MAX_TONE_NUM 6
#define Dial_Tone 0 /* 拨号音 */
#define Ring_Back_Tone 1 /* 回铃音 */
#define Congestion_Tone 2 /* 拥塞音 */
#define Busy_Tone 3 /* 忙 音 */
#define Null_Tone 4 /* 空号音 */
#define Stop_Tone 5 /* 催挂音 */
#define PHONE_PACKET 0
#define TONE_GENERATION 1
#define DTMF_DETECT 2
#define DTMF_SEND 3
#define OPEN_CHANNEL 4
#define CLOSE_CHANNEL 5
#define GET_MIB 6
#define DTMF_PROCESS_TYPE 7
#define COMFORT_NOISE 8
#define DTMF_THRESHOLD 9
#define ECHO_CANCELLER 10
#define IN_GAIN 11
#define OUT_ATTENUATION 12
#define VAD_CONFIG 13
#define JITTER_BUFFER 14
#define SINGEL_PKT_FRAME_NUM 15
#define VOICE_TYPE 16
#define DRIVER_CHANGE_MODE 17
#define DRIVER_RING_GENERATE 18
#define FIRMWARE_NAME_FILE "/system/cfg/firmware.axf"
#define FIRMWARE_MEM_LEN 3000000
#define DM_INT_TASK_MODE (T_NOPREEMPT|T_NOTSLICE|T_NOASR|T_SUPV|T_ISR)
#define TASK_ATTRI (T_GLOBAL|T_NOFPU)
/*2006-3-28 Add by ZhengQishan, 定义编码方式宏*/
#define CODER_TYPE_G711Alaw 1
#define CODER_TYPE_G711Ulaw 3
#define CODER_TYPE_G723 8
#define CODER_TYPE_G728 9
#define CODER_TYPE_G729 10
#define CODER_TYPE_G729a 11
#define CODER_TYPE_G729wb 12
#define CODER_TYPE_G729awb 13
#define CODER_TYPE_T30 19
#define CODER_TYPE_T38 20
#define M803xx_ALLOC_PCI_ADDR(PciAddr, tempAddr, buf) \
{\
buf = (UINT32 *)endPktAlloc(); \
tempAddr = (UINT32 *)sysVirtToPhys((void*)buf);\
tempAddr = (UINT32*)sysPhysToPci((void *)tempAddr);\
PciAddr = (UINT32 *)tempAddr;\
}
#define M803xx_PCI_ADDR(buf) \
{\
void *tempAddr;\
tempAddr = (UINT32 *)sysVirtToPhys((void*)buf);\
tempAddr = (UINT32 *)sysPhysToPci((void *)tempAddr);\
buf = (UINT32 *)tempAddr;\
}
#define M803xx_ADDR(PciAddr) \
{\
void *tmpAddr;\
tmpAddr = (UINT32 *)sysPciToPhys((void *)PciAddr);\
PciAddr = (UINT32 *)sysPhysToVirt((void *)tmpAddr);\
}
typedef struct
{
UINT16 Tone_Flags; /* Tone Flags */
UINT16 Start_Time[2]; /* Start TimeStamp */
UINT16 Limit_Time[2]; /* Limit TimeStamp */
UINT16 reserved[3];
UINT16 Primary_Freq; /* Primary Tone Frequency */
UINT16 Primary_Amplitude; /* Primary Tone Amplitude */
UINT16 Secondary_Freq; /* Secondary Tone Frequency */
UINT16 Secondary_Amplitude; /* Secondary Tone Amplitude */
UINT16 OnTime; /* On Time, must be greater than 50ms */
UINT16 OffTime; /* Off Time, must be greater than 40ms */
UINT16 reserved1[2];
}ToneStruct;
typedef struct
{
UINT32 RecvCardOpenchannelRequestCount; /*1*/
UINT32 SelfEnablechannelCount; /*2*/
UINT32 SelfDisablechannelCount; /*3*/
UINT32 SelfEnablechannelSucceedCount; /*4*/
UINT32 SelfDisablechannelSucceedCount; /*5*/
UINT32 SelfEnablechannelFailureCount; /*6*/
UINT32 SelfDisablechannelFailureCount; /*7*/
UINT32 Reserved; /*8*/
} gChannelOperateCount;
/*2006-3-18 注释是郑其杉的理解*/
typedef struct
{
UINT8 *QAddr; /*指向队列缓冲区的指针*/
UINT16 QSize; /*缓冲区大小(字节为单位)*/
UINT16 QCount; /*本缓冲区当前已经有的数据,以sizeof(UIN16)为单位*/
UINT16 QGet; /*发送方向:已经通过M803XX发送出去的数据指针,从开始地址到当前位置的偏移量*/
UINT16 QPut; /*发送方向:CPU写入指针,从开始地址到当前位置的偏移量*/
}M80320_QUEUE;
typedef struct
{ UINT8 SQCount;
UINT8 SQGet;
UINT8 SQPut;
}SQUEUE;
typedef struct
{
UINT32 p2;
UINT32 p1;
UINT32 p0;
UINT32 message;
}MBOX_PACKET;
typedef struct
{
UINT8 chip;
MBOX_PACKET msg;
}M803xx_INT_TABLE;
typedef struct
{
UINT16 data_offset_len; /* 数据块的索引 */
UINT16 data_send_len; /* 发送数据块大小*/
UINT16 data_left_size; /* 剩余数据大小 */
UINT8 *packetptr;
UINT8 *frame_ptr; /* 数据块的首地址*/
}CHAN_QUEUE_HEAD;
typedef struct {
UINT8 chan; /* Modem/Channel ID byte of the DP message header */
/*2006-3-18 ZhengQishan, 与程序中所用的pinNo是一个函意,与槽位号对应,不过要求是从0 - 7 */
UINT8 chip; /* Datapump number */
}M803xx_PORT;
#if 0
typedef struct
{
SNMP_MSG_HEAD struHead; /*消息头*/
UINT8 bSuccess; /*表示执行是否成功*/
}SETMDMRESULT;
#endif
typedef struct
{
ipaddr_t ipAddr;
UINT16 port;
}sdTransportAddress_T; /*传输地址, IP = 0, 地址无效 *//* tran */
typedef struct tagT38FaxArgument
{
int tcfPassThroughIpNetwork ; /* 0 - passthrough, 1 - no passthrough*/
int errRecoverMethod ; /* 0 - Redundancy, 1 - FEC*/
int speed ;
int redundancyNumOfT30Msg ; /* Range: 0 to 7, default 3. */
int redundancyNumOfPageData ; /* Range: 0 to 3 */
int ECMFlag ; /* 0 - allow ECM faxes in T.38, 1 - Prevent ECM*/
int lossPktConcealment ; /* 0 - No T.38 packet loss Concealment*/
int level; /* singal level */
}T38_FAX_ARG_T;
typedef struct tagT38FaxPortArg
{
T38_FAX_ARG_T chipArg; /*芯片相关的参数*/
UINT8 ipUdpHeader[PACKET_START_SIZE + 1];
}T38_FAX_PORT_ARGUMENT;
#define OPEN_T38_FAX_CHANEL 1
#define CLOSE_T38_FAX_CHANEL 0
typedef struct
{
UINT32 PortNo; /* 全局端口号 */
int bearerInformation; /* 0 - mu law 1 - a law */
UINT8 echoCancell; /* 0 - 128ms, 8 step*/
UINT8 VAD; /* 静音检测 0--not use 1--use*/
UINT8 CNG; /* 舒适噪音产生 0--not use 1--use*/
UINT8 Channel_Open_Flag; /* use for E1VI */
UINT8 Channel_Close_Flag; /* use for E1VI */
UINT8 Receive_Tone_Stop_Flag; /* use for E1VI */
UINT8 Send_Tone_Stop_Flag; /* use for E1VI */
UINT8 Mfc_Close_Flag; /* use for E1VI */
UINT8 Send_UnCom_Tone; /* use for E1VI */
UINT8 DTMFSendMode; /* 0--in-band 1--out of band */
UINT8 Tos; /*Qos 2004/08/10 add 0 - 7 */
UINT8 frameNum; /* 1 - 5 */
int InGainValue; /* -140 - +60 */
int OutAttenuationValue; /* -60 - +140 */
int DTMF_LEVEL; /* 0 - -30 */
int JitterValue; /* 0 - 200ms */
/*unsigned char nameId; same as bearerInformation*/
UINT32 fax_voiceduration; /*设置特殊传真参数值*/
sdTransportAddress_T localRtpAddress; /*用作T38传真参数时,此地址为UDPTL的参数*/
sdTransportAddress_T localRtcpAddress; /*用作T38传真参数时,此地址为UDPTL的参数*/
sdTransportAddress_T remoteRtpAddress;
sdTransportAddress_T remoteRtcpAddress;
int faxMode;
T38_FAX_PORT_ARGUMENT t38FaxArg;
UINT8 isFaxCall; /*用于e1vi 0---voiceCall 1----voiceCall*/
UINT8 callDirection; /*用于e1vi*/
int tone_temp; /*用于e1vi*/
int e1vi_send_tone;
}PortStatusParameter;
typedef struct
{
UINT8 Port; /* 对应端口号 */
UINT16 ChanId;
UINT16 TimeSlot;
UINT8 Active; /* 0: IDLE, 1: BUSY 2: FAIL*/
UINT8 Repair_Num;
UINT16 tx_data_requested; /* 发送数据标志位 0 - 可以发送;1 - 不能发送 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -