www.pudn.com > openh323-v1_15_1-src.zip > ixjDefs.h


/* 
	ixjDefs.h 
 
	Copyright (c) 1996-1998, Quicknet Technologies, Inc. 
	All Rights Reserved. 
 
	Internet PhoneJACK, Internet LineJACK, etc. definitions. 
 
    ----------------------------------------------------------------- 
 
	$Header: /cvsroot/openh323/openh323/include/ixjDefs.h,v 1.4 2002/03/21 21:21:10 craigs Exp $ 
 
  $Log: ixjDefs.h,v $ 
  Revision 1.4  2002/03/21 21:21:10  craigs 
  Move idb stuff to separate file 
 
	 
*/ 
 
#ifndef _IXJDEFS_H 
#define _IXJDEFS_H 
 
#include  
 
//========================================================================== 
//========================================================================== 
// 
//	Constants and structures for Quicknet's Internet PhoneJACK and 
//	Internet LineJACK cards. 
// 
//========================================================================== 
 
//------------------------------------------------ 
//	Plug and Play IDs 
//------------------------------------------------ 
#define MODEL_INTERNET_PHONEJACK		0x0100 
#define MODEL_INTERNET_BLACKJACK		0x0200 
#define MODEL_INTERNET_LINEJACK			0x0300 
#define MODEL_INTERNET_PHONEJACK_LITE	0x0400 
#define MODEL_INTERNET_PHONEJACK_PCI	0x0500 
#define MODEL_INTERNET_PHONEJACK_TJPCI	0x0501 
#define MODEL_INTERNET_PHONECARD		0x0600 
 
//-------------------------------------------------------------------------- 
//	Codec support 
//-------------------------------------------------------------------------- 
// 
#define CODEC_RATE_4000Hz  4000 
#define CODEC_RATE_5500Hz  5500 
#define CODEC_RATE_6000Hz  6000 
#define CODEC_RATE_7333Hz  7333 
#define CODEC_RATE_8000Hz  8000 
#define CODEC_RATE_11025Hz 11025 
#define CODEC_RATE_16000Hz 16000 
#define CODEC_RATE_22050Hz 22050 
#define CODEC_RATE_32000Hz 32000 
#define CODEC_RATE_33075Hz 33075 
#define CODEC_RATE_44100Hz 44100 
#define CODEC_RATE_48000Hz 48000 
 
#define OLD_CODEC_RATE_4000Hz  1000 
#define OLD_CODEC_RATE_5500Hz  1010 
#define OLD_CODEC_RATE_6000Hz  1020 
#define OLD_CODEC_RATE_7333Hz  1030 
#define OLD_CODEC_RATE_8000Hz  1040 
#define OLD_CODEC_RATE_11025Hz 1050 
#define OLD_CODEC_RATE_16000Hz 1060 
#define OLD_CODEC_RATE_22050Hz 1070 
#define OLD_CODEC_RATE_32000Hz 1080 
#define OLD_CODEC_RATE_33075Hz 1090 
#define OLD_CODEC_RATE_44100Hz 1100 
#define OLD_CODEC_RATE_48000Hz 1110 
 
//	XTAL = 3.8912 MHz 
//	Clock = 10*XTAL = 38.912 MHz 
// 
//	Rules: 
//		SCLK = Clock/(N+1) 
//		FSYNC = SCLK/(M+1) 
// 
//		4 <= (N+1) <= 32 
//		For 8-bit Codec:  SCLK >= 16*FSYNC 
//		For 16-bit Codec: SCLK >= 32*FSYNC 
// 
//	8Khz Playback/Record: 
//		SCLK = Clock/( 18+1) = 2.048 MHz 
//		FSYNC = SCLK/(255+1) =  8000 Hz ( 8,000.0 Hz =   8,000 Hz standard + 0%) 
//	11Khz Playback/Record: 
//		SCLK = Clock/( 13+1) = 2.779 MHz 
//		FSYNC = SCLK/(251+1) =  11025 Hz (11,029.5 Hz = 11,025 Hz standard + -0.04%) 
//	22Khz Playback/Record: 
//		SCLK = Clock/( 9+1)  = 3.8912 MHz 
//		FSYNC = SCLK/(175+1) =  22050 Hz (22,109.1 Hz = 22,050 Hz standard + ?.?%) +59.1 
// 
//		SCLK = Clock/( 13+1) = 2.779 MHz 
//		FSYNC = SCLK/(125+1) =  22050 Hz (22,059.0 Hz = 22,050 Hz standard + ?.?%)  
// 
 
//	XTAL = 3.8912 MHz 
//	Clock = 10*XTAL = 38.912 MHz 
// 
//	SCLK = Clock/( 18+1) = 2.048 MHz 
//	FSYNC = SCLK/(371+1) =  5505 Hz ( 5,505.4 Hz =  5,500 Hz standard + x%) 
//	FSYNC = SCLK/(340+1) =  6006 Hz ( 6,005.9 Hz =  6,000 Hz standard + x%) 
//	FSYNC = SCLK/(278+1) =  7341 Hz ( 7,340.5 Hz =  7,333 Hz standard + x%) 
//	FSYNC = SCLK/(255+1) =  8000 Hz ( 8,000.0 Hz =  8,000 Hz standard + 0%) 
//	FSYNC = SCLK/(127+1) = 16000 Hz (16,000.0 Hz = 16,000 Hz standard + 0%) 
//	FSYNC = SCLK/( 63+1) = 32000 Hz (32,000.0 Hz = 32,000 Hz standard + 0%) 
//	FSYNC = SCLK/( 61+1) = 33032 Hz (33,032.3 Hz = 33,075 Hz standard + x%) 
//	FSYNC = SCLK/( 45+1) = 44522 Hz (44,521.7 Hz = 44,100 Hz standard + x%) 
//	FSYNC = SCLK/( 42+1) = 47628 Hz (47,627.9 Hz = 48,000 Hz standard - x%) 
 
//	Selects: Sets the division factor used to divide the SCLK clock to generate FSYNC. 
#define CODEC_FSYNC_RATE_371 371 
#define CODEC_FSYNC_RATE_340 340 
#define CODEC_FSYNC_RATE_278 278 
#define CODEC_FSYNC_RATE_255 255 
#define CODEC_FSYNC_RATE_251 251 
#define CODEC_FSYNC_RATE_185 185 
#define CODEC_FSYNC_RATE_175 175 
#define CODEC_FSYNC_RATE_127 127 
#define CODEC_FSYNC_RATE_125 125 
#define CODEC_FSYNC_RATE_92   92 
#define CODEC_FSYNC_RATE_63   63 
#define CODEC_FSYNC_RATE_61   61 
#define CODEC_FSYNC_RATE_45   45 
#define CODEC_FSYNC_RATE_42   42 
 
//	Selects: Sets the division factor used to divide the main CT8020 clock to generate SCLK. 
#define CODEC_CO_RATE_9 9 
#define CODEC_CO_RATE_13 13 
#define CODEC_CO_RATE_19 19 
#define CODEC_CO_RATE_18 18 
 
const WORD CODEC_WIDTH_8BIT  = 0;	//	Selects 8-bit Mu-law codec. 
const WORD CODEC_WIDTH_16BIT = 1;	//	Selects 16-bit linear codec. 
 
const WORD CODEC_LAW_MULAW = 0;	//	Selects external Mu-law codec. 
 
const WORD CODEC_MASTER_SLAVE  = 0;	//	Selects save mode (FSYNC and SCLK are inputs - default after reset). 
const WORD CODEC_MASTER_MASTER = 1;	//	Selects master mode (FSYNC and SCLK are outputs). 
 
const WORD CODEC_LONG_SHORTFRAME = 0;	//	Selects short frame sync mode when WIDE=0. 
const WORD CODEC_LONG_LONGFRAME  = 1;	//	Selects long frame sync mode when WIDE=1. 
 
const WORD CODEC_OUTPUT_CODEC_DEFAULT = 0;	//	Selects: default output codec routing. 
const WORD CODEC_OUTPUT_CODEC_CODEC1  = 1;	//	Selects: output signal goes to codec 1 only. 
const WORD CODEC_OUTPUT_CODEC_CODEC0  = 2;	//	Selects: output signal goes to codec 0 only. 
const WORD CODEC_OUTPUT_CODEC_BOTH    = 3;	//	Selects: output signal goes to both codec 0 and codec 1. 
 
const WORD CODEC_INPUT_CODEC_NORMAL   = 0;	//	Selects: normal input codec routing. 
const WORD CODEC_INPUT_CODEC_EXCHANGE = 1;	//	Selects: input from codec 0 and codec 1 exchanged. 
 
const WORD CODEC_SET_RATE_NOACTION = 0;	//	Selects: no action. 
const WORD CODEC_SET_RATE_NEXTCMD  = 1;	//	Selects: next command word programs codec sample rate dividers. 
 
const WORD CODEC_WIDE_1SCLK      = 0;		//	Selects: FSYNC is 1 SCLK period wide. 
const WORD CODEC_WIDE_8OR16SCLKS = 1;		//	Selects: FSYNC is 8 SCLK periods wide if Width=0 or 16 SCLK periods wide if Width=1. 
 
const DWORD XTAL_38912 = 3891200; 
const DWORD XTAL_4000 = 4000000; 
const DWORD XTAL_4096 = 4096000; 
 
const DWORD SCLK_2048 = 2048000; 
const DWORD SCLK_512 = 512000; 
const DWORD SCLK_1024 = 1024000; 
const DWORD SCLK_2000 = 2000000; 
const DWORD SCLK_MAX = 1835008; // 300373; // 2097152; // 2095600; 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Compression/Decompression support 
//-------------------------------------------------------------------------- 
// 
#define COMPRESS_MODE_TRUESPEECH  0	//	Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps 
#define COMPRESS_MODE_ULAW        2	//	Selects: 64 Kbit/sec U-law PCM 
#define COMPRESS_MODE_16LINEAR    6	//	Selects: 128 Kbit/sec 16-bit linear 
#define COMPRESS_MODE_8LINEAR     4	//	Selects: 64 Kbit/sec 8-bit signed linear 
#define COMPRESS_MODE_8LINEAR_WSS 5	//	Selects: 64 Kbit/sec WSS 8-bit unsigned linear 
 
//	TrueSpeech compress modes: 8.5 - 4.1 
#define COMPRESS_RATE_TS85 0	//	Selects TrueSpeech 8.5 play mode. 
#define COMPRESS_RATE_TS63 1	//	Selects TrueSpeech 6.3 play mode. 
#define COMPRESS_RATE_TS53 2	//	Selects TrueSpeech 5.3 play mode. 
#define COMPRESS_RATE_TS48 3	//	Selects TrueSpeech 4.8 play mode. 
#define COMPRESS_RATE_TS41 4	//	Selects TrueSpeech 4.1 play mode. 
 
//	G.723.1 record/compress modes: 6.3 & 5.3 
//	NOTE: Same as TrueSpeech 6.3 & 5.3 modes. 
#define COMPRESS_RATE_G7231_TS63 1	//	Selects TrueSpeech 6.3 play mode. 
#define COMPRESS_RATE_G7231_TS53 2	//	Selects TrueSpeech 5.3 play mode. 
 
// ------------------------ 
 
#define COMPRESS_FRAME_TRUESPEECH  0	//	TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps 
#define COMPRESS_FRAME_ULAW        120	//	64 Kbit/sec U-law PCM 
#define COMPRESS_FRAME_16LINEAR    240	//	128 Kbit/sec 16-bit linear 
#define COMPRESS_FRAME_8LINEAR     120	//	64 Kbit/sec 8-bit signed linear 
#define COMPRESS_FRAME_8LINEAR_WSS 120	//	64 Kbit/sec WSS 8-bit unsigned linear 
 
//	TrueSpeech recording modes: 8.5 - 4.1 
#define COMPRESS_FRAME_TS85 16	//	TrueSpeech 8.5 record frame. 
#define COMPRESS_FRAME_TS63 12	//	TrueSpeech 6.3 record frame. 
#define COMPRESS_FRAME_TS53 10	//	TrueSpeech 5.3 record frame. 
#define COMPRESS_FRAME_TS48 9		//	TrueSpeech 4.8 record frame. 
#define COMPRESS_FRAME_TS41 8		//	TrueSpeech 4.1 record frame. 
 
//	G.723.1 recording modes: 6.3 & 5.3 
//	NOTE: Same as TrueSpeech 6.3 & 5.3 modes. 
#define COMPRESS_FRAME_G7231_TS63 COMPRESS_FRAME_TS63	//	TrueSpeech 6.3 record frame. 
#define COMPRESS_FRAME_G7231_TS53 COMPRESS_FRAME_TS53	//	TrueSpeech 5.3 record frame. 
 
#define COMPRESS_MAX_BUFFER_SIZE COMPRESS_FRAME_16LINEAR	//	Max buffer size: Tx or Rx. 
 
//	Additional bit patterns to 'Or' into Command Base 'words' 
const WORD COMPRESS_TFRMODE_80X5 = 0;	//	Selects Data transfer via Software Control and Status Registers (CT8015/CT8005 protocol mode). 
const WORD COMPRESS_TFRMODE_8020 = 3;	//	Selects Data transfer via Host Transmit Data Buffer Access Port. 
 
const WORD COMPRESS_SYNC_MODE_CODEC = 0; 
const WORD COMPRESS_SYNC_MODE_DATA  = 1; 
const WORD COMPRESS_SYNC_MODE_POLL  = 2; 
const WORD COMPRESS_SYNC_MODE_HOST  = 3; 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Device support 
//-------------------------------------------------------------------------- 
// 
//	Additional bit patterns to 'Or' into Command Base 'words' 
//const WORD DEVCTRL_TONE_MODE_SYNC  = 0;	//	Selects Synchronous Tone mode 
//const WORD DEVCTRL_TONE_MODE_ASYNC = 1;	//	Selects Asynchronous Tone mode 
 
// Analog source for the Codec #1. 
//	Analog source is determined by the GPIO bits: 6 & 7. 
//					| GPIO6	| GPIO7	| 
//------------------|-------|-------|------- 
//	POTS Phone		|   0	|   0	| 
//	Speakerphone	|   0	|   1	| 
//	Handset Phone	|   1	|   0	| 
//	  ??????		|   1   |   1   | 
//------------------------------------------- 
// 
#define ANALOG_SOURCE_POTSPHONE		(0x0) 
#define ANALOG_SOURCE_SPEAKERPHONE	(0x1) 
#define ANALOG_SOURCE_HANDSETPHONE	(0x2) 
#define ANALOG_SOURCE_PSTNLINE		(0x2) 
 
#define LINEJACK_MODE_PHONEJACK		(0x0) 
#define LINEJACK_MODE_LINEJACK		(0x1) 
#define LINEJACK_MODE_STANDALONE	(0x2) 
 
#define DEVICE_SPEAKERPHONE 0x01 
#define DEVICE_POTS 0x02 
#define DEVICE_HANDSET 0x04 
#define DEVICE_PSTN 0x08 
 
#define COEFF_US            0 
#define COEFF_UK            1 
#define COEFF_FRANCE        2 
#define COEFF_GERMANY       3 
#define COEFF_AUSTRALIA     4 
#define COEFF_JAPAN         5 
#define COEFF_CTR21         6 
#define COEFF_CZECH         7 
#define COEFF_GERMANY2      8 
#define COEFF_ITALY         9 
#define COEFF_SOUTH_KOREA  10 
#define COEFF_NEW_ZEALAND  11 
#define COEFF_NORWAY       12 
#define COEFF_PHILIPPINES  13 
#define COEFF_POLAND       14 
#define COEFF_SOUTH_AFRICA 15 
#define COEFF_SWEDEN       16 
 
// SLIC States 
//	SLIC State is determined by the GPIO bits: 1,2,3 
//					| GPIO3	| GPIO2	| GPIO1	| !GPIO1 | 
//					|   C3	|   C2	|   C1	|  B2EN	 | 
//------------------|-------|-------|-------|--------| 
//	Open Circuit	|   0	|   0	|   0	|   1	 | 
//	Ringing   		|   0	|   0	|   1	|   0	 | 
//	Active       	|   0	|   1	|   0	|   1	 | 
//---------------------------------------------------- 
// 
#define SLIC_STATE_OPENCIRCUIT	0 
#define SLIC_STATE_RINGING		1 
#define SLIC_STATE_ACTIVE		2 
#define SLIC_STATE_OHT			3 
#define SLIC_STATE_TIPOPEN		4 
#define SLIC_STATE_STANDBY		5 
#define SLIC_STATE_APR			6 
#define SLIC_STATE_OHTPR		7 
 
// Switch Hook States 
//	Switch Hook State is determined by GPIO 5 
//					| GPIO5	 | 
//------------------|--------| 
//	Off Hook		|   0	 | 
//	On Hook			|   1	 | 
//---------------------------- 
// 
#define SLIC_OFF_HOOK	(0x0) 
#define SLIC_ON_HOOK	(0x1) 
 
// LineJack Test error codes 
#define LINE_TEST_OK 0 
#define LINE_TEST_TESTING 1 
#define LINE_TEST_POTS_OFF_HOOK 2 
#define LINE_TEST_LINE_CONNECTED_TO_POTS 3 
#define LINE_TEST_NO_LINE_PRESENT 4 
 
// The ring pattern is a 12-bit sequence. 
// Each bit represents 1/2 second of ring 
// on or off for a total of 6 seconds. 
#define RING_PATTERN_MASK (0x0FFF) 
 
#define DEVCTRL_HOOKSTATE_INIT			0 
#define DEVCTRL_HOOKSTATE_ON_HOOK_1		1 
#define DEVCTRL_HOOKSTATE_ON_HOOK_2		2 
#define DEVCTRL_HOOKSTATE_ON_HOOK_3		3 
#define DEVCTRL_HOOKSTATE_OFF_HOOK_1	4 
#define DEVCTRL_HOOKSTATE_OFF_HOOK_2	5 
#define DEVCTRL_HOOKSTATE_OFF_HOOK_3	6 
 
#define DEVCTRL_RINGSTATE_INIT		0 
#define DEVCTRL_RINGSTATE_RING_0	1 
#define DEVCTRL_RINGSTATE_RING_1	2 
#define DEVCTRL_RINGSTATE_RING_2	3 
#define DEVCTRL_RINGSTATE_RING_3	4 
#define DEVCTRL_RINGSTATE_RING_4	5 
#define DEVCTRL_RINGSTATE_RING_5	6 
#define DEVCTRL_RINGSTATE_RING_6	7 
#define DEVCTRL_RINGSTATE_RING_7	8 
#define DEVCTRL_RINGSTATE_RING_8	9 
#define DEVCTRL_RINGSTATE_RING_9	10 
#define DEVCTRL_RINGSTATE_RING_10	11 
#define DEVCTRL_RINGSTATE_RING_11	12 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Filter support 
//-------------------------------------------------------------------------- 
// 
//	Additional bit patterns to 'Or' into Command Base 'words' 
#define FILTER_MODE_SYNC  0 
#define FILTER_MODE_ASYNC 1 
 
#define FILTER_LINE_VOLUME_POS_0DB 2	//	+0 dB 
#define FILTER_LINE_VOLUME_MUTE    3	//	Mute Microphone (also resets AEC) 
 
#define FILTER_SPEAKER_VOLUME_POS_14DB 0	//	+14 dB 
#define FILTER_SPEAKER_VOLUME_POS_12DB 1	//	+12 dB 
#define FILTER_SPEAKER_VOLUME_POS_10DB 2	//	+10 dB 
#define FILTER_SPEAKER_VOLUME_POS_8DB  3	//	+8 dB 
#define FILTER_SPEAKER_VOLUME_POS_6DB  4	//	+6 dB 
#define FILTER_SPEAKER_VOLUME_POS_4DB  5	//	+4 dB 
#define FILTER_SPEAKER_VOLUME_POS_2DB  6	//	+2 dB 
#define FILTER_SPEAKER_VOLUME_POS_0DB  7	//	0 dB 
#define FILTER_SPEAKER_VOLUME_NEG_2DB  8	//	-2 dB 
#define FILTER_SPEAKER_VOLUME_NEG_4DB  9	//	-4 dB 
#define FILTER_SPEAKER_VOLUME_NEG_6DB  10	//	-6 dB 
#define FILTER_SPEAKER_VOLUME_NEG_8DB  11	//	-8 dB 
#define FILTER_SPEAKER_VOLUME_NEG_10DB 12	//	-10 dB 
#define FILTER_SPEAKER_VOLUME_NEG_12DB 13	//	-12 dB 
#define FILTER_SPEAKER_VOLUME_NEG_14DB 14	//	-14 dB 
#define FILTER_SPEAKER_VOLUME_MUTE     15	//	Mute Filter 
 
#define FILTER_DTMFSTATE_INIT			0 
#define FILTER_DTMFSTATE_NOT_VALID_1	1 
#define FILTER_DTMFSTATE_NOT_VALID_2	2 
#define FILTER_DTMFSTATE_NOT_VALID_3	3 
#define FILTER_DTMFSTATE_VALID_1		4 
#define FILTER_DTMFSTATE_VALID_2		5 
#define FILTER_DTMFSTATE_VALID_3		6 
 
#define FrameCount( LineMonitor ) ((LineMonitor>>12)&0x0f) 
#define FilterBits( LineMonitor ) ((LineMonitor>>8)&0x0f) 
#define Peak( LineMonitor ) ((LineMonitor>>6)&1) 
#define DTMFValid( LineMonitor ) ((LineMonitor>>5)&1) 
#define CPFValid( LineMonitor ) ((LineMonitor>>4)&1) 
#define DTMFDigit( LineMonitor ) (LineMonitor&0x0f) 
 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Idle support 
//-------------------------------------------------------------------------- 
// 
#define IDLE_TONE_MODE_SYNC  0	//	Selects Synchronous Tone mode 
#define IDLE_TONE_MODE_ASYNC 1	//	Selects Asynchronous Tone mode 
 
#define IDLE_TONE_NOTONE	0 
#define IDLE_TONE_1		1 
#define IDLE_TONE_2		2 
#define IDLE_TONE_3		3 
#define IDLE_TONE_4		4 
#define IDLE_TONE_5		5 
#define IDLE_TONE_6		6 
#define IDLE_TONE_7		7 
#define IDLE_TONE_8		8 
#define IDLE_TONE_9		9 
#define IDLE_TONE_STAR	10 
#define IDLE_TONE_0		11 
#define IDLE_TONE_POUND	12 
#define IDLE_TONE_DIAL	25 
#define IDLE_TONE_RING	26 
#define IDLE_TONE_BUSY	27 
#define IDLE_TONE_A		28 
#define IDLE_TONE_B		29 
#define IDLE_TONE_C		30 
#define IDLE_TONE_D		31 
 
//	Table from TelTone M-991 Spec sheet (table 4). 
//	Tone Name				Frequency (Hz)			Interruption Rate 
//							 1			 2 
//------------------------------------------------------------------------------------------- 
//	Dial				|	350		|	440		|	Steady 
//	Reorder				|	480		|	620		|	Repeat, tones on and off 250 ms +- 25ms 
//	Busy				|	480		|	620		|	Repeat,	tones on and off 500 ms +- 50ms 
//	Audible Ring		|	480		|	480		|	Repeat,	tones on 2 +- 0.2sec, tones off 4 +- 0.4sec 
//	Recall Dial			|	350		|	440		|	Three bursts tones on and off 100 ms +- 20ms each followed by dial tone 
//	Special AR			|	440		|	480		|	Tones on 1 +- 0.2sec, followed by single 440Hz on for 0.2sec on, and silence for 3 +- 0.3sec, repeat 
//	Intercept			|	440		|	620		|	Repeat alternating tones, each on for 230ms +- 70ms with total cycle of 500 +- 50ms 
//	Call Waiting		|	440		|	Off		|	One burst 200 +- 100ms 
//	Busy Verification	|	440		|	Off		|	One burst of tone on 1.75 +- 0.25sec before attendant intrudes, followed by burst of tone 0.65 +- 0.15sec on, 8 to 20 sec apart for as long as the call lasts. 
//	Executive Override	|	440		|	Off		|	One burst of tone for 3 +- 1sec before overriding station intrudes. 
//	Confirmation		|	350		|	440		|	Three bursts on and off 100ms each or 100ms on, 100ms off, 300 ms on. 
 
#define TONE_DIAL				0 
#define	TONE_REORDER			1 
#define TONE_BUSY				2 
#define	TONE_AUDIBLE_RING		3 
#define	TONE_RECALL_DIAL		4 
#define	TONE_SPECIAL_AR			5 
#define	TONE_INTERCEPT			6 
#define	TONE_CALL_WAITING		7 
#define	TONE_BUSY_VERIFICATION	8 
#define	TONE_EXECUTIVE_OVERRIDE	9 
#define	TONE_CONFIRMATION		10 
 
typedef struct 
{ 
    DWORD dwToneIndex; 
    DWORD dwDuration; 
	DWORD dwToneOnPeriod; 
	DWORD dwToneOffPeriod; 
	DWORD dwMasterGain; 
} IDLE_TONE; 
 
typedef struct 
{ 
    DWORD dwToneIndex;   // 1-31, 0 reserved for silence 
    DWORD dwFrequencyFactor0; // dwFrequencyFactor0 = 32767 * cos( 2*Pi*(frequency0/8000) ) 
	DWORD dwGain0;   // 0-15 See Tone Level Table 
    DWORD dwFrequencyFactor1; // dwFrequencyFactor1 = 32767 * cos( 2*Pi*(frequency1/8000) ) 
	DWORD dwGain1;   // 0-15 See Tone Level Table 
} IDLE_NEW_TONE; 
 
//========================================================================== 
//  
// Tone Level Table 
//____________________________________________________________ 
// Index     Codec Output Level (dB relative to 0.707 Vrms) 
//____________________________________________________________ 
//      0                   +6 
//      1                   +4 
//      2                   +2 
//      3                     0 
//      4                    -2 
//      5                    -4 
//      6                    -6 
//      7                    -8 
//      8                  -10 
//      9                  -12 
//     10                 -14 
//     11                 -16 
//     12                 -18 
//     13                 -20 
//     14                 -22 
//     15                 -24 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Mixer support 
//-------------------------------------------------------------------------- 
// 
// Playback mixer lines 
#define PlaybackMaster			0 
#define PlaybackMicrophone		1 
#define PlaybackWave			2 
#define PlaybackCD				3 
#define PlaybackLineIn			4 
#define PlaybackPhoneIn			5 
#define PlaybackPhoneOut		6 
#define PlaybackPhoneLineOut	7 
#define PlaybackDeviceCount		8 
 
// Record mixer lines 
#define RecordMaster		0 
#define RecordMicrophone	1 
#define RecordWave			2 
#define RecordCD			3 
#define RecordLineIn		4 
#define RecordPhoneIn		5 
#define RecordPhoneLineIn	6 
#define RecordDeviceCount	7 
 
// Output mixer lines 
#define OutputMicrophone	PlaybackMicrophone 
#define OutputWave			PlaybackWave 
#define OutputCD			PlaybackCD 
#define OutputLineIn		PlaybackLineIn 
#define OutputPhoneIn		PlaybackPhoneIn 
 
// Input mixer lines 
#define InputMicrophone	RecordMicrophone 
#define InputWave		RecordWave 
#define InputCD			RecordCD 
#define InputLineIn		RecordLineIn 
#define InputPhoneIn	RecordPhoneIn 
 
// Mixer line structure 
typedef struct _MIXER_LINE 
{ 
    DWORD dwLineID; 
    DWORD dwMute; 
    DWORD dwLeftVolume; 
    DWORD dwRightVolume; 
} 
MIXER_LINE; 
 
#define MIXER_ACCESS TEXT( "MixerAccess" ) 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Playback support 
//-------------------------------------------------------------------------- 
// 
//	Additional bit patterns to 'Or' into Command Base 'words' 
#define PLAYBACK_TFRMODE_80X5 0	//	Selects Data transfer via Software Control and Status Registers (CT8015/CT8005 protocol mode). 
#define PLAYBACK_TFRMODE_8020 3	//	Selects Data transfer via Host Transmit Data Buffer Access Port. 
 
#define PLAYBACK_SYNC_MODE_CODEC	0 
#define PLAYBACK_SYNC_MODE_DATA		1 
#define PLAYBACK_SYNC_MODE_POLL		2 
#define PLAYBACK_SYNC_MODE_HOST		3 
 
//	Playback modes 
#define PLAYBACK_MODE_COMPRESSED		0	//	Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729 
#define PLAYBACK_MODE_TRUESPEECH_V40	0	//	Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps 
#define PLAYBACK_MODE_TRUESPEECH		8	//	Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps Version 5.1 
#define PLAYBACK_MODE_ULAW				2	//	Selects: 64 Kbit/sec MuA-law PCM 
#define PLAYBACK_MODE_ALAW				10	//	Selects: 64 Kbit/sec A-law PCM 
#define PLAYBACK_MODE_16LINEAR			6	//	Selects: 128 Kbit/sec 16-bit linear 
#define PLAYBACK_MODE_8LINEAR			4	//	Selects: 64 Kbit/sec 8-bit signed linear 
#define PLAYBACK_MODE_8LINEAR_WSS		5	//	Selects: 64 Kbit/sec WSS 8-bit unsigned linear 
 
//	Playback rates 
#define PLAYBACK_RATE_TS85		0	//	Selects TrueSpeech 8.5 playback rate. 
#define PLAYBACK_RATE_TS63		1	//	Selects TrueSpeech 6.3 playback rate. 
#define PLAYBACK_RATE_TS53		2	//	Selects TrueSpeech 5.3 playback rate. 
#define PLAYBACK_RATE_TS48		3	//	Selects TrueSpeech 4.8 playback rate. 
#define PLAYBACK_RATE_TS41		4	//	Selects TrueSpeech 4.1 playback rate. 
#define PLAYBACK_RATE_G722		7	//	Selects G.722 playback rate. 
#define PLAYBACK_RATE_G723_63	PLAYBACK_RATE_TS63	//	Selects G.723.1 (6.3 kbps) playback rate. 
#define PLAYBACK_RATE_G723_53	PLAYBACK_RATE_TS53	//	Selects G.723.1 (5.3 kbps) playback rate. 
#define PLAYBACK_RATE_G728		5	//	Selects G.728 playback rate. 
#define PLAYBACK_RATE_G729		6	//	Selects G.729 playback rate. 
 
// Frame sizes in WORD units 
#define PLAYBACK_TS85_WORDS				16		//	TrueSpeech 8.5, 30ms frame size 
#define PLAYBACK_TS63_WORDS				12		//	TrueSpeech 6.3, 30ms frame size 
#define PLAYBACK_TS53_WORDS				10		//	TrueSpeech 5.3, 30ms frame size 
#define PLAYBACK_TS48_WORDS				9		//	TrueSpeech 4.8, 30ms frame size 
#define PLAYBACK_TS41_WORDS				8		//	TrueSpeech 4.1, 30ms frame size 
#define PLAYBACK_ALAW_WORDS				120		//	64 Kbit/sec A-law PCM, 30ms frame size 
#define PLAYBACK_ALAW_30MS_WORDS		120		//	64 Kbit/sec A-law PCM, 30ms frame size 
#define PLAYBACK_ALAW_20MS_WORDS		80		//	64 Kbit/sec A-law PCM, 20ms frame size 
#define PLAYBACK_ALAW_10MS_WORDS		40		//	64 Kbit/sec A-law PCM, 10ms frame size 
#define PLAYBACK_ULAW_WORDS				120		//	64 Kbit/sec Mu-law PCM, 30ms frame size 
#define PLAYBACK_ULAW_30MS_WORDS		120		//	64 Kbit/sec Mu-law PCM, 30ms frame size 
#define PLAYBACK_ULAW_20MS_WORDS		80		//	64 Kbit/sec Mu-law PCM, 20ms frame size 
#define PLAYBACK_ULAW_10MS_WORDS		40		//	64 Kbit/sec Mu-law PCM, 10ms frame size 
#define PLAYBACK_16LINEAR_WORDS			240		//	128 Kbit/sec 16-bit linear, 30ms frame size 
#define PLAYBACK_16LINEAR_30MS_WORDS	240		//	128 Kbit/sec 16-bit linear, 30ms frame size 
#define PLAYBACK_16LINEAR_20MS_WORDS	160		//	128 Kbit/sec 16-bit linear, 20ms frame size 
#define PLAYBACK_16LINEAR_10MS_WORDS	80		//	128 Kbit/sec 16-bit linear, 10ms frame size 
#define PLAYBACK_8LINEAR_WORDS			120		//	64 Kbit/sec 8-bit signed linear, 30ms frame size 
#define PLAYBACK_8LINEAR_30MS_WORDS		120		//	64 Kbit/sec 8-bit signed linear, 30ms frame size 
#define PLAYBACK_8LINEAR_20MS_WORDS		80		//	64 Kbit/sec 8-bit signed linear, 20ms frame size 
#define PLAYBACK_8LINEAR_10MS_WORDS		40		//	64 Kbit/sec 8-bit signed linear, 10ms frame size 
#define PLAYBACK_8LINEAR_WSS_WORDS		120		//	64 Kbit/sec WSS 8-bit unsigned linear, 30ms frame size 
#define PLAYBACK_8LINEAR_WSS_30MS_WORDS	120		//	64 Kbit/sec WSS 8-bit unsigned linear, 30ms frame size 
#define PLAYBACK_8LINEAR_WSS_20MS_WORDS	80		//	64 Kbit/sec WSS 8-bit unsigned linear, 20ms frame size 
#define PLAYBACK_8LINEAR_WSS_10MS_WORDS	40		//	64 Kbit/sec WSS 8-bit unsigned linear, 10ms frame size 
#define PLAYBACK_G722_WORDS				40		//	64 Kbit/sec G.722, 10ms frame size 
#define PLAYBACK_G723_63_WORDS			PLAYBACK_TS63_WORDS	//	6.3 Kbit/sec G.723.1, 30ms frame size 
#define PLAYBACK_G723_53_WORDS			PLAYBACK_TS53_WORDS	//	5.3 Kbit/sec G.723.1, 30ms frame size 
#define PLAYBACK_G728_10MS_WORDS		16		//	16 Kbit/sec G.728, 10ms frame size 
#define PLAYBACK_G728_20MS_WORDS		32		//	16 Kbit/sec G.728, 20ms frame size 
#define PLAYBACK_G728_30MS_WORDS		48		//	16 Kbit/sec G.728, 30ms frame size 
#define PLAYBACK_G729_10MS_WORDS		6		//	8 Kbit/sec G.729, 10ms frame size 
#define PLAYBACK_G729_20MS_WORDS		12		//	8 Kbit/sec G.729, 20ms frame size 
#define PLAYBACK_G729_30MS_WORDS		18		//	8 Kbit/sec G.729, 30ms frame size 
 
// Frame sizes in bytes 
#define PLAYBACK_FRAME_TS85				(PLAYBACK_TS85_WORDS*2) 
#define PLAYBACK_FRAME_TS63				(PLAYBACK_TS63_WORDS*2) 
#define PLAYBACK_FRAME_TS53				(PLAYBACK_TS53_WORDS*2) 
#define PLAYBACK_FRAME_TS48				(PLAYBACK_TS48_WORDS*2) 
#define PLAYBACK_FRAME_TS41				(PLAYBACK_TS41_WORDS*2) 
#define PLAYBACK_FRAME_ALAW				(PLAYBACK_ALAW_WORDS*2) 
#define PLAYBACK_FRAME_ALAW_30MS		(PLAYBACK_ALAW_30MS_WORDS*2) 
#define PLAYBACK_FRAME_ALAW_20MS		(PLAYBACK_ALAW_20MS_WORDS*2) 
#define PLAYBACK_FRAME_ALAW_10MS		(PLAYBACK_ALAW_10MS_WORDS*2) 
#define PLAYBACK_FRAME_ULAW				(PLAYBACK_ULAW_WORDS*2) 
#define PLAYBACK_FRAME_ULAW_30MS		(PLAYBACK_ULAW_30MS_WORDS*2) 
#define PLAYBACK_FRAME_ULAW_20MS		(PLAYBACK_ULAW_20MS_WORDS*2) 
#define PLAYBACK_FRAME_ULAW_10MS		(PLAYBACK_ULAW_10MS_WORDS*2) 
#define PLAYBACK_FRAME_16LINEAR			(PLAYBACK_16LINEAR_WORDS*2) 
#define PLAYBACK_FRAME_16LINEAR_30MS	(PLAYBACK_16LINEAR_30MS_WORDS*2) 
#define PLAYBACK_FRAME_16LINEAR_20MS	(PLAYBACK_16LINEAR_20MS_WORDS*2) 
#define PLAYBACK_FRAME_16LINEAR_10MS	(PLAYBACK_16LINEAR_10MS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR			(PLAYBACK_8LINEAR_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_30MS		(PLAYBACK_8LINEAR_30MS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_20MS		(PLAYBACK_8LINEAR_20MS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_10MS		(PLAYBACK_8LINEAR_10MS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_WSS		(PLAYBACK_8LINEAR_WSS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_WSS_30MS	(PLAYBACK_8LINEAR_WSS_30MS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_WSS_20MS	(PLAYBACK_8LINEAR_WSS_20MS_WORDS*2) 
#define PLAYBACK_FRAME_8LINEAR_WSS_10MS	(PLAYBACK_8LINEAR_WSS_10MS_WORDS*2) 
#define PLAYBACK_FRAME_G722				(PLAYBACK_G722_WORDS*2) 
#define PLAYBACK_FRAME_G723_63			(PLAYBACK_G723_63_WORDS*2) 
#define PLAYBACK_FRAME_G723_53			(PLAYBACK_G723_53_WORDS*2) 
#define PLAYBACK_FRAME_G728_10MS		(PLAYBACK_G728_10MS_WORDS*2) 
#define PLAYBACK_FRAME_G728_20MS		(PLAYBACK_G728_20MS_WORDS*2) 
#define PLAYBACK_FRAME_G728_30MS		(PLAYBACK_G728_30MS_WORDS*2) 
#define PLAYBACK_FRAME_G729_10MS		(PLAYBACK_G729_10MS_WORDS*2) 
#define PLAYBACK_FRAME_G729_20MS		(PLAYBACK_G729_20MS_WORDS*2) 
#define PLAYBACK_FRAME_G729_30MS		(PLAYBACK_G729_30MS_WORDS*2) 
 
#define PLAYBACK_MAX_BUFFER_WORDS	PLAYBACK_16LINEAR_WORDS	//	Max buffer size: Tx or Rx. 
#define PLAYBACK_MAX_BUFFER_SIZE	PLAYBACK_FRAME_16LINEAR	//	Max buffer size: Tx or Rx. 
 
#define PLAYBACK_TS85_AVG_RATE	1067	//	TrueSpeech 8.5 Average bytes per second. 
#define PLAYBACK_TS63_AVG_RATE	800		//	TrueSpeech 6.3 Average bytes per second. 
#define PLAYBACK_TS53_AVG_RATE	667		//	TrueSpeech 5.3 Average bytes per second. 
#define PLAYBACK_TS48_AVG_RATE	600		//	TrueSpeech 4.8 Average bytes per second. 
#define PLAYBACK_TS41_AVG_RATE	533		//	TrueSpeech 4.1 Average bytes per second. 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Record support 
//-------------------------------------------------------------------------- 
// 
//	Additional bit patterns to 'Or' into Command Base 'words' 
#define RECORD_TFRMODE_80X5 0	//	Selects Data transfer via Software Control and Status Registers (CT8015/CT8005 protocol mode). 
#define RECORD_TFRMODE_8020 3	//	Selects Data transfer via Host Transmit Data Buffer Access Port. 
 
#define RECORD_SYNC_MODE_CODEC 0 
#define RECORD_SYNC_MODE_DATA  1 
#define RECORD_SYNC_MODE_POLL  2 
#define RECORD_SYNC_MODE_HOST  3 
 
//	Automatic Gain Control (AGC) 
#define RECORD_AGC_MIN_GAIN     0	//	Sets AGC Min Gain 
#define RECORD_AGC_MAX_GAIN     1	//	Sets AGC Max Gain 
#define RECORD_AGC_START_GAIN   2	//	Sets AGC Start Gain 
#define RECORD_AGC_HOLD_TIME    3	//	Sets AGC Hold Time 
#define RECORD_AGC_ATTACK_TIME  4	//	Sets AGC Attack Time Constant 
#define RECORD_AGC_DECAY_TIME   5	//	Sets AGC Decay Time Constant 
#define RECORD_AGC_ATTACK_THRES 6	//	Sets AGC Attack Threshold 
#define RECORD_AGC_ON_OFF       7	//	Sets AGC On/Off. Enable/Disable AGC. 
 
//	AGC Time Contants 
#define RECORD_AGC_250_us  0 
#define RECORD_AGC_512_us  1 
#define RECORD_AGC_1_ms    2 
#define RECORD_AGC_2_ms    3 
#define RECORD_AGC_4_ms    4 
#define RECORD_AGC_8_ms    5 
#define RECORD_AGC_16_ms   6 
#define RECORD_AGC_32_ms   7 
#define RECORD_AGC_64_ms   8 
#define RECORD_AGC_128_ms  9 
#define RECORD_AGC_256_ms  10 
#define RECORD_AGC_512_ms  11 
#define RECORD_AGC_1024_ms 12 
#define RECORD_AGC_2048_ms 13 
#define RECORD_AGC_4096_ms 14 
#define RECORD_AGC_8192_ms 15 
 
//	Record modes 
#define RECORD_MODE_COMPRESSED		0	//	Selects: Compressed modes, TrueSpeech 8.5-4.1, G.723.1, G.722, G.728, G.729 
#define RECORD_MODE_TRUESPEECH		0	//	Selects: TrueSpeech 8.5, 6.3, 5.3, 4.8 or 4.1 Kbps 
#define RECORD_MODE_ULAW			4	//	Selects: 64 Kbit/sec Mu-law PCM 
#define RECORD_MODE_ALAW			12	//	Selects: 64 Kbit/sec A-law PCM 
#define RECORD_MODE_16LINEAR		5	//	Selects: 128 Kbit/sec 16-bit linear 
#define RECORD_MODE_8LINEAR			6	//	Selects: 64 Kbit/sec 8-bit signed linear 
#define RECORD_MODE_8LINEAR_WSS		7	//	Selects: 64 Kbit/sec WSS 8-bit unsigned linear 
 
//	Record rates 
#define RECORD_RATE_TS85	0	//	Selects TrueSpeech 8.5 record rate. 
#define RECORD_RATE_TS63	1	//	Selects TrueSpeech 6.3 record rate. 
#define RECORD_RATE_TS53	2	//	Selects TrueSpeech 5.3 record rate. 
#define RECORD_RATE_TS48	3	//	Selects TrueSpeech 4.8 record rate. 
#define RECORD_RATE_TS41	4	//	Selects TrueSpeech 4.1 record rate. 
#define RECORD_RATE_G722	7	//	Selects G.722 record rate. 
#define RECORD_RATE_G723_63	RECORD_RATE_TS63	//	Selects G.723.1 (6.3 kbps) record rate. 
#define RECORD_RATE_G723_53	RECORD_RATE_TS53	//	Selects G.723.1 (5.3 kbps) record rate. 
#define RECORD_RATE_G728	5	//	Selects G.728 record rate. 
#define RECORD_RATE_G729	6	//	Selects G.729 record rate. 
 
// Frame sizes in WORD units 
#define RECORD_TS85_WORDS				16		//	TrueSpeech 8.5, 30ms frame size 
#define RECORD_TS63_WORDS				12		//	TrueSpeech 6.3, 30ms frame size 
#define RECORD_TS53_WORDS				10		//	TrueSpeech 5.3, 30ms frame size 
#define RECORD_TS48_WORDS				9		//	TrueSpeech 4.8, 30ms frame size 
#define RECORD_TS41_WORDS				8		//	TrueSpeech 4.1, 30ms frame size 
#define RECORD_ALAW_WORDS				120		//	64 Kbit/sec A-law PCM, 30ms frame size 
#define RECORD_ALAW_30MS_WORDS			120		//	64 Kbit/sec A-law PCM, 30ms frame size 
#define RECORD_ALAW_20MS_WORDS			80		//	64 Kbit/sec A-law PCM, 20ms frame size 
#define RECORD_ALAW_10MS_WORDS			40		//	64 Kbit/sec A-law PCM, 10ms frame size 
#define RECORD_ULAW_WORDS				120		//	64 Kbit/sec Mu-law PCM, 30ms frame size 
#define RECORD_ULAW_30MS_WORDS			120		//	64 Kbit/sec Mu-law PCM, 30ms frame size 
#define RECORD_ULAW_20MS_WORDS			80		//	64 Kbit/sec Mu-law PCM, 20ms frame size 
#define RECORD_ULAW_10MS_WORDS			40		//	64 Kbit/sec Mu-law PCM, 10ms frame size 
#define RECORD_16LINEAR_WORDS			240		//	128 Kbit/sec 16-bit linear, 30ms frame size 
#define RECORD_16LINEAR_30MS_WORDS		240		//	128 Kbit/sec 16-bit linear, 30ms frame size 
#define RECORD_16LINEAR_20MS_WORDS		160		//	128 Kbit/sec 16-bit linear, 20ms frame size 
#define RECORD_16LINEAR_10MS_WORDS		80		//	128 Kbit/sec 16-bit linear, 10ms frame size 
#define RECORD_8LINEAR_WORDS			120		//	64 Kbit/sec 8-bit signed linear, 30ms frame size 
#define RECORD_8LINEAR_30MS_WORDS		120		//	64 Kbit/sec 8-bit signed linear, 30ms frame size 
#define RECORD_8LINEAR_20MS_WORDS		80		//	64 Kbit/sec 8-bit signed linear, 20ms frame size 
#define RECORD_8LINEAR_10MS_WORDS		40		//	64 Kbit/sec 8-bit signed linear, 10ms frame size 
#define RECORD_8LINEAR_WSS_WORDS		120		//	64 Kbit/sec WSS 8-bit unsigned linear, 30ms frame size 
#define RECORD_8LINEAR_WSS_30MS_WORDS	120		//	64 Kbit/sec WSS 8-bit unsigned linear, 30ms frame size 
#define RECORD_8LINEAR_WSS_20MS_WORDS	80		//	64 Kbit/sec WSS 8-bit unsigned linear, 20ms frame size 
#define RECORD_8LINEAR_WSS_10MS_WORDS	40		//	64 Kbit/sec WSS 8-bit unsigned linear, 10ms frame size 
#define RECORD_G722_WORDS				40		//	64 Kbit/sec G.722, 10ms frame size 
#define RECORD_G723_63_WORDS			RECORD_TS63_WORDS	//	6.3 Kbit/sec G.723.1, 30ms frame size 
#define RECORD_G723_53_WORDS			RECORD_TS53_WORDS	//	5.3 Kbit/sec G.723.1, 30ms frame size 
#define RECORD_G728_10MS_WORDS			16		//	16 Kbit/sec G.728, 10ms frame size 
#define RECORD_G728_20MS_WORDS			32		//	16 Kbit/sec G.728, 20ms frame size 
#define RECORD_G728_30MS_WORDS			48		//	16 Kbit/sec G.728, 30ms frame size 
#define RECORD_G729_10MS_WORDS			6		//	8 Kbit/sec G.729, 10ms frame size 
#define RECORD_G729_20MS_WORDS			12		//	8 Kbit/sec G.729, 20ms frame size 
#define RECORD_G729_30MS_WORDS			18		//	8 Kbit/sec G.729, 30ms frame size 
 
// Frame sizes in bytes 
#define RECORD_FRAME_TS85				(RECORD_TS85_WORDS*2) 
#define RECORD_FRAME_TS63				(RECORD_TS63_WORDS*2) 
#define RECORD_FRAME_TS53				(RECORD_TS53_WORDS*2) 
#define RECORD_FRAME_TS48				(RECORD_TS48_WORDS*2) 
#define RECORD_FRAME_TS41				(RECORD_TS41_WORDS*2) 
#define RECORD_FRAME_ALAW				(RECORD_ALAW_WORDS*2) 
#define RECORD_FRAME_ALAW_30MS			(RECORD_ALAW_30MS_WORDS*2) 
#define RECORD_FRAME_ALAW_20MS			(RECORD_ALAW_20MS_WORDS*2) 
#define RECORD_FRAME_ALAW_10MS			(RECORD_ALAW_10MS_WORDS*2) 
#define RECORD_FRAME_ULAW				(RECORD_ULAW_WORDS*2) 
#define RECORD_FRAME_ULAW_30MS			(RECORD_ULAW_30MS_WORDS*2) 
#define RECORD_FRAME_ULAW_20MS			(RECORD_ULAW_20MS_WORDS*2) 
#define RECORD_FRAME_ULAW_10MS			(RECORD_ULAW_10MS_WORDS*2) 
#define RECORD_FRAME_16LINEAR			(RECORD_16LINEAR_WORDS*2) 
#define RECORD_FRAME_16LINEAR_30MS		(RECORD_16LINEAR_30MS_WORDS*2) 
#define RECORD_FRAME_16LINEAR_20MS		(RECORD_16LINEAR_20MS_WORDS*2) 
#define RECORD_FRAME_16LINEAR_10MS		(RECORD_16LINEAR_10MS_WORDS*2) 
#define RECORD_FRAME_8LINEAR			(RECORD_8LINEAR_WORDS*2) 
#define RECORD_FRAME_8LINEAR_30MS		(RECORD_8LINEAR_30MS_WORDS*2) 
#define RECORD_FRAME_8LINEAR_20MS		(RECORD_8LINEAR_20MS_WORDS*2) 
#define RECORD_FRAME_8LINEAR_10MS		(RECORD_8LINEAR_10MS_WORDS*2) 
#define RECORD_FRAME_8LINEAR_WSS		(RECORD_8LINEAR_WSS_WORDS*2) 
#define RECORD_FRAME_8LINEAR_WSS_30MS	(RECORD_8LINEAR_WSS_30MS_WORDS*2) 
#define RECORD_FRAME_8LINEAR_WSS_20MS	(RECORD_8LINEAR_WSS_20MS_WORDS*2) 
#define RECORD_FRAME_8LINEAR_WSS_10MS	(RECORD_8LINEAR_WSS_10MS_WORDS*2) 
#define RECORD_FRAME_G722				(RECORD_G722_WORDS*2) 
#define RECORD_FRAME_G723_63			(RECORD_G723_63_WORDS*2) 
#define RECORD_FRAME_G723_53			(RECORD_G723_53_WORDS*2) 
#define RECORD_FRAME_G728_10MS			(RECORD_G728_10MS_WORDS*2) 
#define RECORD_FRAME_G728_20MS			(RECORD_G728_20MS_WORDS*2) 
#define RECORD_FRAME_G728_30MS			(RECORD_G728_30MS_WORDS*2) 
#define RECORD_FRAME_G729_10MS			(RECORD_G729_10MS_WORDS*2) 
#define RECORD_FRAME_G729_20MS			(RECORD_G729_20MS_WORDS*2) 
#define RECORD_FRAME_G729_30MS			(RECORD_G729_30MS_WORDS*2) 
 
#define RECORD_MAX_BUFFER_WORDS	RECORD_16LINEAR_WORDS	//	Max buffer size: Tx or Rx. 
#define RECORD_MAX_BUFFER_SIZE	RECORD_FRAME_16LINEAR	//	Max buffer size: Tx or Rx. 
 
#define RECORD_TS85_AVG_RATE	1067	//	TrueSpeech 8.5 Average bytes per second. 
#define RECORD_TS63_AVG_RATE	800		//	TrueSpeech 6.3 Average bytes per second. 
#define RECORD_TS53_AVG_RATE	667		//	TrueSpeech 5.3 Average bytes per second. 
#define RECORD_TS48_AVG_RATE	600		//	TrueSpeech 4.8 Average bytes per second. 
#define RECORD_TS41_AVG_RATE	533		//	TrueSpeech 4.1 Average bytes per second. 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	Speakerphone support 
//-------------------------------------------------------------------------- 
// 
//	Additional bit patterns to 'Or' into Command Base 'words' 
#define SPKRPHONE_LINE_VOLUME_POS_8DB	0	//	+8 dB 
#define SPKRPHONE_LINE_VOLUME_POS_4DB	1	//	+4 dB 
#define SPKRPHONE_LINE_VOLUME_POS_0DB	2	//	+0 dB 
#define SPKRPHONE_LINE_VOLUME_MUTE		3	//	Mute Microphone (also resets AEC) 
 
#define SPKRPHONE_SPEAKER_VOLUME_POS_14DB	0	//	+14 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_12DB	1	//	+12 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_10DB	2	//	+10 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_8DB	3	//	+8 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_6DB	4	//	+6 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_4DB	5	//	+4 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_2DB	6	//	+2 dB 
#define SPKRPHONE_SPEAKER_VOLUME_POS_0DB	7	//	0 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_2DB	8	//	-2 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_4DB	9	//	-4 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_6DB	10	//	-6 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_8DB	11	//	-8 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_10DB	12	//	-10 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_12DB	13	//	-12 dB 
#define SPKRPHONE_SPEAKER_VOLUME_NEG_14DB	14	//	-14 dB 
#define SPKRPHONE_SPEAKER_VOLUME_MUTE		15	//	Mute Speaker 
 
// AEC bit positions 
#define SPKRPHONE_AEC_ON	1 
#define SPKRPHONE_AEC_LO	2 
#define SPKRPHONE_AEC_HI	4 
 
//========================================================================== 
//-------------------------------------------------------------------------- 
//	VxD support 
// 
//	NOTE: These names will be changed in the future to a generic 'driver' 
//        naming convention. 
//-------------------------------------------------------------------------- 
// 
// Event bit fields. 
#define EVENT_TYPE_INT_DTMF						0x0002 
#define EVENT_TYPE_INT_TX_READY					0x0004 
#define EVENT_TYPE_INT_RX_READY					0x0008 
#define EVENT_TYPE_INT_HOOK						0x0010 
#define EVENT_TYPE_INT_RING						0x0020 
#define EVENT_TYPE_INT_WRITE_DONE				0x0040 
#define EVENT_TYPE_INT_PLAYBACK_VOLUME_CHANGE	0x0080 
#define EVENT_TYPE_INT_RECORD_VOLUME_CHANGE		0x0100 
#define EVENT_TYPE_INT_ANALOG_SOURCE_CHANGE		0x0200 
#define EVENT_TYPE_INT_AEC_CHANGE				0x0400 
#define EVENT_TYPE_INT_PLAYBACK_MUTE_CHANGE		0x0800 
#define EVENT_TYPE_INT_RECORD_MUTE_CHANGE		0x1000 
#define EVENT_TYPE_INT_MIXER_CHANGE				0x2000 
 
//--------------------------------------- 
//	This is included for legacy support. 
//	This name is used by Ring 3 Drivers that use a software interrupt to 
//	get the PM entry point to the VxD. If it changes here, all users of this 
//	define must recompile. 
#define IPJ_VXDNAME		"QTIPJ   " 
 
#define IXJ_DRV_NAME	TEXT("qtxjack.drv") 
#define IXJ_INST_NAME	TEXT("Internet PhoneJACK/Internet LineJACK") 
 
// Typedefs 
 
// For IOCTL_VxD_AddPerformanceStat & fnVxD_AddPerformanceStat 
typedef struct 
{ 
    DWORD ulFlags; 
    LPSTR pszStatName; 
    LPSTR pszStatDescription; 
    LPVOID pStatFunc; 
} PERF_STAT, FAR *LPPERF_STAT; 
 
// Set lpBufPointer to lpPerfStat, dwBufSize to sizeof( PERF_STAT ) 
 
/* pStatFunc points either directly to data (always a DWORD for now) */ 
/* or, if PSTF_FUNCPTR_BIT is set, to a _cdecl function.  This function   */ 
/* accepts a stat handle as it's argument and returns the stat in eax     */ 
// The following #defines come from . 
 
#ifndef PSTF_FUNCPTR 
#define PSTF_FUNCPTR	0x00000001 
#define PSTF_COUNT		0x00000000 
#define PSTF_RATE		0x00000002 
#endif 
 
typedef struct ipj_vxd_devio 
{ 
    DWORD	dwSize; 
	DEVNODE	dnDevNode; 
	DWORD	dwFunctionCode; 
    DWORD	dwReturn; 
	DWORD	dwSetData; 
	DWORD	dwBufSize; 
	LPVOID	lpBufPointer; 
	DWORD	dwOutBufSize; 
	LPVOID	lpOutBufPointer; 
    DWORD	dwReserved;	// Must be zero 
} IPJ_VXD_DEVIO; 
 
#endif 
 
//	eof: ixjDefs.h