⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ac48drdf.h

📁 Audiocodes old vision DSP driver
💻 H
📖 第 1 页 / 共 4 页
字号:
/************************************************************************/
/*	  		*   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 + -