📄 ac48drdf.h
字号:
/************************************************************************/
/* * AudioCodes Ltd. * Copyright (c) 1998 * */
/************************************************************************/
/* File Name: Ac48DrDf.h */
/************************************************************************/
/* DRIVERS PACKET VERSION: 481(1.30) / 480(1.60) / 483(1.00) */
/************************************************************************/
/* 4804 OPERATION SOFTWARE VERSION SUPPORT: */
/* V 1.60 (December 1999) and above */
/************************************************************************/
/* 481xx OPERATION SOFTWARE VERSION SUPPORT: */
/* V 1.30 (October 1999) and above */
/************************************************************************/
/* 4830x OPERATION SOFTWARE VERSION SUPPORT: */
/* V 1.00 (March 2000) and above */
/************************************************************************/
/* PURPOSE : This header file contains most of the driver type */
/* definitions and constant definitions. */
/* */
/* COMMENTS : As this file contains bit-field structures, it uses */
/* a compilation switch of Endian mode, BIG_ENDIAN or */
/* LITTLE_ENDIAN, for more machine portability. */
/* */
/* DATE : May 1998 */
/* UPDATE REASON TO UPDATE */
/* ====== ================ */
/* 11/8/98 adding 'Version' structure */
/* 6/10/98 changes in 'cas footer' and Msig command: (A,B,C,D) */
/* 18/10/98 addition of "AC_OK" constant */
/* 19/10/98 change MAX_TONE_PAIRS_QUANTITY to 16, */
/* transfer TThresholds Thresholds of call progress and */
/* user defined tones structurs. */
/* ChannelId of packet header changed to 4 bit, size. */
/* 28/10/98 DATA_ <- data (NO_RELAY). */
/* Add TVersion.Name. */
/* 1/11/98 Correct the value */
/* 27/1/99 Voice Attributes, Command additions... */
/* 4/2/99 Add "EchoCancellerFreeze" bit to Packet Header. */
/* Add "#define Word16 unsigned short". */
/* EXTENDED_FAX_COMMAND. */
/* 11/2/99 Add test fiesds to VoiceAttributes. */
/* 15/2/99 Add "IdlePattern" to Pcm Command. */
/* 16/2/99 Add "FullRateGsm" Coder */
/* 26/7/99 Add NET_CODER_PLUS_16K to Coder Structure. */
/* Add CallerID field to FaxCommand Structure. */
/* 5/9/99 Add DecoderDelay Command */
/* 30/12/99 Add PcmClockDirection field instead of Const_1_2_0 */
/* Add ClockDivider */
/* Add FrameWidth */
/************************************************************************/
#ifndef TypeDef_h
#define TypeDef_h
#include "Ac48DrUs.h"
/* "CONST VALUE" field: Const_Value_Word#_startAtBit# */
/* Example: Const_0_2_9 is a zero field in third word */
/* begining at nineth's bit */
#ifndef Word16
#define Word16 unsigned short
#endif /* Word16 */
#define OK 0 /* No Error */
#define AC_OK 0 /* No Error */
#define AC_ERROR 1 /* Not spesified Error */
#define TIME_OUT_ERROR 999
#define RECEIVE_CHECKSUM_ERROR 0x0080
#define RECEIVE_SEQUENCE_ERROR 0x0080
#define ILLEGAL_PACKET 0x8000 /* in some compilers you have to use (-32768) */
#define FIRST_STAGE 10
#define LAST_STAGE_COMPLETED 0
#define KERNEL_VERSION_INFO_OFFSET 0xA0
#define PROGRAM_VERSION_INFO_OFFSET 0x8
/* DSP statuses */
#define PACKET_FULL 0
#define PACKET_EMPTY 1
#define CHECKSUM_ERROR 2
#define STATUS_ERROR 2
#if AC48_DEVICE == AC4804_DEVICE
#define AC48_NUMBER_OF_PACKETS 0x17FE
#define AC48_KERNEL_ADDRESS 0x1000
#define AC48_BOOT_STATUS_REGISTER 0x104b /* Packet full=0, Packet empty=1, Checksum Erroe=2 */
#define AC48_PROGRAM_ADDRESS 0x104C
#define AC48_HOST_RECEIVE_STATUS_REGISTER 0x1760 /* Packet full=0, Packet empty=1 */
#define AC48_HOST_TRANSMIT_STATUS_REGISTER 0x1761 /* Packet full=0, Packet empty=1 */
#define AC48_HOST_RECEIVE_BLOCK_ADDRESS 0x1762
#define AC48_HOST_TRANSMIT_BLOCK_ADDRESS 0x17B0
#elif AC48_DEVICE == AC481XX_DEVICE || AC48_DEVICE == AC4830X_DEVICE
#define AC48_NUMBER_OF_PACKETS 0x166D
#define AC48_KERNEL_ADDRESS 0x1000
#define AC48_PROGRAM_ENTRY_POINT 0x007f /* In bootloader - pointer to program start */
#define AC48_BOOT_STATUS_REGISTER 0x104b /* Packet full=0, Packet empty=1, Checksum Erroe=2 */
#define AC48_PROGRAM_ADDRESS 0x104C
#define AC48_HOST_RECEIVE_STATUS_REGISTER 0x166E /* Packet full=0, Packet empty=1 */
#define AC48_HOST_TRANSMIT_STATUS_REGISTER 0x166F /* Packet full=0, Packet empty=1 */
#define AC48_HOST_RECEIVE_BLOCK_ADDRESS 0x1670 /* 0x1670 -:- 0x1737 */
#define AC48_HOST_TRANSMIT_BLOCK_ADDRESS 0x1738 /* 0x1738 -:- 0x17FF */
#endif /* AC48_DEVICE */
#ifndef BOOL
#ifndef FALSE
#ifndef TRUE
typedef enum
{
FALSE,
TRUE
}BOOL;
#endif
#endif
#endif
typedef enum
{
DONT_WAIT_PACKET_EMPTY,
WAIT_PACKET_EMPTY
}TWaitMode;
typedef enum
{
MSB_FIRST,
LSB_FIRST
}TOrder;
enum
{
AC48_DISABLE,
AC48_ENABLE
};
typedef enum
{
DEBUG_OFF,
DEBUG_ON,
DEBUG_ON_REPORT_ON
}TDebugingData;
typedef enum
{
G_711_A_LAW,
G_711_MU_LAW,
G_726_16, /* 16 kbps */
G_726_24,
G_726_32,
G_726_40,
G_727_16,
G_727_24_16,
G_727_24,
G_727_32_16,
G_727_32_24,
G_727_32,
G_727_40_16,
G_727_40_24,
G_727_40_32,
G_723_1_5K3,
G_723_1_6K3,
G_729_A, /* 0x11 */
FULL_RATE_GSM = 0x13, /* 13kHz, 20mSec, payload size: 33 */
Transparent = 0x16,
NONE,
NET_CODER_PLUS_16K = 0x1A,
NET_CODER_6K4,
NET_CODER_7K2,
NET_CODER_8,
NET_CODER_8K8,
NET_CODER_9K6
}TCoder;
typedef enum
{
M_SIGNAL_0,
M_SIGNAL_1
}TMSignal;
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
typedef enum
{
ACCEPT_M_SIGNAL,
IGNORE_M_SIGNAL
}TIgnoreSignaling;
#elif AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
typedef enum
{
E_M_SIGNALING_S,
NO_SIGNALING_S,
AB_SIGNALING_S,
ABCD_SIGNALING_S
}TSignalingSystem;
#endif /* AC48_SIGNALING_MODE */
typedef enum
{
NO_RINGING,
RING_136_HZ,
RING_160_HZ,
RING_200_HZ,
RING_240_HZ,
RING_320_HZ
}TRingFrequency;
typedef struct
{
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
TMSignal MSignal;
TIgnoreSignaling IgnoreSignaling;
#elif AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
TMSignal SignalA;
TSignalingSystem SignalingSystem;
TMSignal SignalD;
TMSignal SignalC;
TMSignal SignalB;
#endif /* AC48_SIGNALING_MODE */
TRingFrequency RingFrequency;
}TMSig;
typedef enum
{
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
AC_E1, /* 32 slots */
#elif AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
E1_OR_UP_TO_128, /* number of slote can be defined by 'NumberOfTimeSlotes' field */
#endif /* AC48_SIGNALING_MODE */
AC_T1 /* 24 slots */
}TE1T1;
typedef enum
{
AC_ALAW=1,
AC_MULAW=3
}TLawSelect;
typedef enum
{
FRAME_SINC_ACTIVE_HIGH,
FRAME_SINC_ACTIVE_LOW
}TFrameSyncPolarity;
typedef enum
{
RX_FALING_TX_RISING,
RX_RISING_TX_FALLING
}TClockPolarity;
typedef enum
{
SILENCE_OR_IDLE_PATTERN,
TRI_STATE_IDLE
}TTriState; /* Idle State Mode */
typedef enum
{
SILENCE_PATTERN,
IDLE_PATTERN_ENABLE
}TIdlePatternEnable;
typedef enum
{
PCM_CLOCK_OUTPUT,
PCM_CLOCK_INPUT
}TPcmClockDirection;
typedef struct
{
TPcmClockDirection PcmClockDirection;
TE1T1 E1T1;
TLawSelect LawSelect;
TFrameSyncPolarity FrameSyncPolarity;
TClockPolarity ClockPolarity;
TTriState TriState;
#if AC48_DEVICE == AC481XX_DEVICE || AC48_DEVICE == AC4830X_DEVICE
Word16 NumberOfTimeSlotes;
Word16 IdlePattern;
TIdlePatternEnable IdlePatternEnable;
#endif /* AC48_DEVICE */
#if AC48_DEVICE == AC4830X_DEVICE
Word16 ClockDivider;
Word16 FrameWidth ;
#endif /* AC48_DEVICE */
}TPcmAttributes;
typedef struct
{
int Type;
int Delay;
}TDecoderDelay;
typedef struct
{
int Version;
int SubVersion;
int Month;
int Day;
int Year;
char Name[32];
}TVersion;
/****************************************************/
/* Initialization mode commands */
typedef enum
{
PCM_COMMAND_OP_CODE=0,
RUN_COMMAND_OP_CODE=1,
DEBUG_COMMAND_OP_CODE=3,
MSIG_COMMAND_OP_CODE=4,
EXTENDED_SIGNALING_COMMAND_OP_CODE=6,
CALL_PROGRESS_COMMAND_OP_CODE=7,
USER_DFINED_TONES_COMMAND_OP_CODE=8,
DECODER_DELAY_COMMAND_OP_CODE=9
}TInitCommandOpCode;
#if ENDIAN_MODE == LITTLE_ENDIAN
typedef struct
{
Word16 ConstAA :8;
Word16 Const_0_0_8 :8;
Word16 InitCommandOpCode :8;
Word16 InitCommandLength :8;
}TInitCommandHeader;
typedef struct
{
TInitCommandHeader Header;
Word16 PcmClockDirection :1;
Word16 E1T1 :1; /* 0 - E1(32 slots), 1 - T1(24 slots) */
Word16 LawSelect :2; /* 01 - A-low, 11 - Mu-low */
Word16 FrameSyncPolarity :1; /* "FSP" 0 - active high, 1 - active low */
Word16 ClockPolarity :1; /* "CLKP" 0 - Tx in falling & Rx in rising */
Word16 Const_0_2_6 :2;
Word16 TriState :1;
#if AC48_DEVICE == AC4804_DEVICE
Word16 Const_0_2_9 :7;
#elif AC48_DEVICE == AC481XX_DEVICE || AC48_DEVICE == AC4830X_DEVICE
Word16 NumberOfTimeSlotes :7;
Word16 IdlePattern :8;
Word16 IdlePatternEnable :1;
Word16 :7;
#endif /* AC48_DEVICE */
#if AC48_DEVICE == AC4830X_DEVICE
Word16 ClockDivider :8;
Word16 FrameWidth :8;
#endif /* AC48_DEVICE */
}TPcmCommand;
typedef struct
{
TInitCommandHeader Header;
Word16 DebugingData :2; /* "DD", TDebugingData */
Word16 Const_0_2_2 :6;
Word16 Const_0_2_8 :8;
}TDebugCommand;
typedef struct
{
TInitCommandHeader Header;
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
Word16 MSignal :1;
Word16 IgnoreSignaling :1;
Word16 Const_0_2_2 :6;
#elif AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
Word16 SignalA :1;
Word16 SignalingSystem :2;
Word16 Const_0_2_2 :2;
Word16 SignalD :1;
Word16 SignalC :1;
Word16 SignalB :1;
#endif /* AC48_SIGNALING_MODE */
Word16 RingFrequency :3;
Word16 Const_0_2_8 :5;
}TMSigCommand;
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
typedef struct
{
Word16 FirstToneFrequencyLSBits :8;
Word16 FirstToneFrequencyMSBits :4;
Word16 Const_0_0_12 :4;
Word16 SecondToneFrequencyLSBits :8;
Word16 SecondToneFrequencyMSBits :4;
Word16 Const_0_1_12 :4;
Word16 FirstToneLevel :6;
Word16 Const_0_2_6 :2;
Word16 Const_0_2_8 :8;
Word16 SecondToneLevel :6;
Word16 Const_0_3_6 :2;
Word16 Const_0_3_8 :8;
}TTonePair;
#endif /* AC48_SIGNALING_MODE */
typedef struct
{
TInitCommandHeader Header;
Word16 Delay :5;
Word16 Const_0_2_4 :3;
Word16 Type :1;
Word16 Const_0_2_8 :7;
}TDecoderDelayCommand;
#elif ENDIAN_MODE == BIG_ENDIAN
typedef struct
{
Word16 ConstAA :8;
Word16 Const_0_0_8 :8;
Word16 InitCommandOpCode :8;
Word16 InitCommandLength :8;
}TInitCommandHeader;
typedef struct
{
TInitCommandHeader Header;
Word16 Const_0_2_6 :2;
Word16 ClockPolarity :1; /* "CLKP" 0 - Tx in falling & Rx in rising */
Word16 FrameSyncPolarity :1; /* "FSP" 0 - active high, 1 - active low */
Word16 LawSelect :2; /* 01 - A-low, 11 - Mu-low */
Word16 E1T1 :1; /* 0 - E1: 32 slots, 1 - T1: 24 slots */
Word16 PcmClockDirection :1;
#if AC48_DEVICE == AC4804_DEVICE
Word16 Const_0_2_9 :7;
Word16 TriState :1;
#elif AC48_DEVICE == AC481XX_DEVICE || AC48_DEVICE == AC4830X_DEVICE
Word16 NumberOfTimeSlotes :7;
Word16 TriState :1;
Word16 IdlePattern :8;
Word16 :7;
Word16 IdlePatternEnable :1;
#endif /* AC48_DEVICE */
#if AC48_DEVICE == AC4830X_DEVICE
Word16 ClockDivider :8;
Word16 FrameWidth :8;
#endif /* AC48_DEVICE */
}TPcmCommand;
typedef struct
{
TInitCommandHeader Header;
Word16 Const_0_2_2 :6;
Word16 DebugingData :2; /* "DD", TDebugingData */
Word16 Const_0_2_8 :8;
}TDebugCommand;
typedef struct
{
TInitCommandHeader Header;
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
Word16 Const_0_2_2 :6;
Word16 IgnoreSignaling :1;
Word16 MSignal :1;
#elif AC48_SIGNALING_MODE == AC48_EXTENDED_SIGNALING_MODE
Word16 SignalB :1;
Word16 SignalC :1;
Word16 SignalD :1;
Word16 Const_0_2_2 :2;
Word16 SignalingS :2;
Word16 SignalA :1;
#endif /* AC48_SIGNALING_MODE */
Word16 Const_0_2_8 :5;
Word16 RingFrequency :3;
}TMSigCommand;
#if AC48_SIGNALING_MODE == AC48_BASIC_SIGNALING_MODE
typedef struct
{
Word16 FirstToneFrequencyLSBits :8;
Word16 Const_0_0_12 :4;
Word16 FirstToneFrequencyMSBits :4;
Word16 SecondToneFrequencyLSBits :8;
Word16 Const_0_1_12 :4;
Word16 SecondToneFrequencyMSBits :4;
Word16 Const_0_2_6 :2;
Word16 FirstToneLevel :6;
Word16 Const_0_2_8 :8;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -