www.pudn.com > RecDemo6.0.rar > Tc08a32.h


	#ifndef _TC08A32_H 
#define _TC08A32_H 
 
#include  
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
/******************************************* 
	define value 
********************************************/ 
#define	MAX_CARD_NO		16 
#define	MAX_CHANNEL_NO	8 * MAX_CARD_NO 
// add for support 256 channel, 2001.11.14 
#define	MAX_CHANNEL_NO_256	(16 * MAX_CARD_NO) 
 
#define LEN_FILEPATH	70 
 
// the value of every card-type 
#define	CARD_TYPE_T5_64		1 
#define	CARD_TYPE_T5_128	2 
#define	CARD_TYPE_T5_REC	3 
 
#define	CARD_TYPE_T5_128_NT	10 
#define	CARD_TYPE_T5_REC_NT	11 
#define	CARD_TYPE_T5_ID_NT	12 
 
// new-d160a 
#define	CARD_TYPE_D160A_NT		30 
// d160an	 
#define	CARD_TYPE_D160A_NT_NEW	31 
 
//YY ADD FOR PCI SUPPORT 2000.10.16 
#define CARD_TYPE_D160A_PCI		50 
//YY ADD FOR PCI SUPPORT 2000.10.16 
 
#define CHTYPE_USER     0 
#define CHTYPE_TRUNK    1 
#define CHTYPE_EMPTY    2 
#define CHTYPE_RECORD   3 
 
#define NODTMF    -1 
#define DTMF_CODE_0		10 
#define DTMF_CODE_1		1 
#define DTMF_CODE_2		2 
#define DTMF_CODE_3		3 
#define DTMF_CODE_4		4 
#define DTMF_CODE_5		5 
#define DTMF_CODE_6		6 
#define DTMF_CODE_7		7 
#define DTMF_CODE_8		8 
#define DTMF_CODE_9		9 
#define DTMF_CODE_STAR	11 
#define DTMF_CODE_SHARP	12 
#define DTMF_CODE_A		13 
#define DTMF_CODE_B		14 
#define DTMF_CODE_C		15 
#define DTMF_CODE_D		16 
 
 
#define RECORD_CHECK    01 
#define PLAY_CHECK              02 
#define SEND_CHECK              03 
#define SEND_READY_CHECK 04 
 
#define R_BUSY          0x21 
#define R_OTHER         0x20 
 
#define	S_NODIALTONE	0x0F 
#define S_NORESULT      0x10 
#define S_BUSY          0x11 
#define S_NOBODY        0x13 
#define S_CONNECT       0x14 
#define S_NOSIGNAL      0x15 
 
#define S_DIALSIG       0x30 
 
 
#define PACK_64KBPS     0 
#define PACK_32KBPS     1 
#define PACK_16KBPS     2 
#define PACK_8KBPS     3 
 
// NEW ADD for Feed and Signal 
 
#define SIG_STOP		0 
#define SIG_DIALTONE	1 
#define SIG_BUSY1		2 
#define SIG_BUSY2		3 
#define SIG_RINGBACK	4 
#define SIG_STOP_NEW	10 
 
#define HANG_UP_FLAG_FALSE 0 
#define HANG_UP_FLAG_TRUE  1 
#define HANG_UP_FLAG_START 2 
#define HANG_UP_FLAG_PRESS_R  3 
 
 
// caller-ID 
#define	ID_STEP_NONE	0 
#define	ID_STEP_HEAD	1 
#define	ID_STEP_ID	2 
#define	ID_STEP_OK	3 
#define	ID_STEP_FAIL	4 
#define	ID_STEP_LEN	5 
 
// end of caller-ID 
 
 
typedef struct { 
	WORD PlayFlag; 
	WORD RecordFlag; 
	WORD PlayCount; 
	WORD RecordCount; 
	WORD DtmfCount; 
	WORD DialFlag; 
	WORD SigCount; 
	WORD SigStartPoint; 
	LPSTR SigBuf; 
} TPD_RPB; 
 
typedef struct { 
	BYTE Busy1Count1Low; 
	BYTE Busy1Count1High; 
	BYTE Busy1Count0Low; 
	BYTE Busy1Count0High; 
 
	WORD  BusySigCount; 
	WORD  BusySigLen; 
 
	WORD  SendReadyLen; 
 
	BYTE SendBusy1Count1Low; 
	BYTE SendBusy1Count1High; 
	BYTE SendBusy1Count0Low; 
	BYTE SendBusy1Count0High; 
 
	BYTE SendSigCount1Low; 
	BYTE SendSigCount1High; 
	BYTE SendSigCount0Low; 
	BYTE SendSigCount0High; 
 
	WORD  SendNoSignalLen; 
 
	BYTE MaxRingTimes; 
} TPD_WPB; 
 
//use play index file 
typedef struct{ 
	char *FileName[200]; 
	HANDLE gHandle[200]; 
	DWORD FileCount; 
	int FileFlag[200]; 
}TPD_PIF; 
 
/******************************************* 
	define struct & type 
********************************************/ 
typedef struct { 
	// get from "TC08A-V.INI" 
	WORD wCardNo; 
	WORD wCardType; 
	WORD wConnect; 
	WORD wIRQ; 
	char cbDir[LEN_FILEPATH]; 
	WORD wAddress[MAX_CARD_NO]; 
	 
	// get from driver 
	WORD wMajorVer; 
	WORD wMinorVer; 
	WORD wChType[MAX_CHANNEL_NO]; 
 
	WORD wMachineNo; 
 
} TC_INI_TYPE; 
 
 
/******************************************* 
	define function 
********************************************/ 
long WINAPI LoadDRV(void); 
void WINAPI FreeDRV(void); 
 
void WINAPI GetSysInfo( TC_INI_TYPE *TmpIni); 
WORD WINAPI CheckValidCh(void); 
WORD WINAPI CheckChType(WORD wChnlNo); 
BOOL WINAPI IsSupportCallerID(void); 
 
long WINAPI EnableCard(WORD wUsedCh, WORD wFileBufLen); 
void WINAPI DisableCard(void); 
void WINAPI SetPackRate ( WORD wPackRate ); 
 
 
void WINAPI PUSH_PLAY (void); 
 
BOOL WINAPI RingDetect(WORD wChnlNo); 
BOOL WINAPI CheckPolarity(WORD wChnlNo); 
void WINAPI OffHook(WORD wChnlNo); 
void WINAPI HangUp(WORD wChnlNo); 
 
long WINAPI SetLink ( WORD wOne, WORD wAnother ); 
long WINAPI ClearLink ( WORD wOne, WORD wAnother ); 
long WINAPI LinkOneToAnother ( WORD wOne, WORD wAnother ); 
long WINAPI ClearOneFromAnother ( WORD wOne, WORD wAnother ); 
long WINAPI LinkThree( WORD wOne, WORD wTwo, WORD wThree); 
long WINAPI ClearThree( WORD wOne, WORD wTwo, WORD wThree); 
 
void WINAPI InitDtmfBuf(WORD wChnlNo); 
short WINAPI GetDtmfCode( WORD wChnlNo); 
BOOL WINAPI DtmfHit(WORD wChnlNo); 
 
void WINAPI StartSigCheck ( WORD wChnlNo ); 
void WINAPI StopSigCheck ( WORD wChnlNo ); 
WORD WINAPI ReadCheckResult(WORD wChnlNo, WORD wMode); 
WORD WINAPI ReadBusyCount(void); 
 
void WINAPI SetBusyPara( WORD BusyLen ); 
void WINAPI SetDialPara ( WORD RingBack1, WORD RingBack0, WORD BusyLen, WORD RingTimes ); 
void WINAPI ReadSigBuf ( WORD wChnlNo, WORD *pwStartPoint, WORD *pwCount, BYTE *SigBuf ); 
 
void WINAPI StartPlay ( WORD wChnlNo, char *PlayBuf, DWORD dwStartPos, DWORD dwPlayLen); 
void WINAPI StopPlay ( WORD wChnlNo); 
BOOL WINAPI CheckPlayEnd ( WORD wChnlNo ); 
void WINAPI ReadStatus ( WORD wChnlNo, TPD_RPB *TmpRead ); 
 
BOOL WINAPI StartPlayFile ( WORD wChnlNo, LPSTR FileName, DWORD StartPos ); 
void WINAPI StopPlayFile (WORD wChnlNo); 
 
// index play file 
void WINAPI RsetIndexPlayFile(WORD Line); 
BOOL WINAPI AddIndexPlayFile(WORD Line, char *FileName); 
BOOL WINAPI StartIndexPlayFile( WORD wChnlNo); 
BOOL WINAPI CheckIndexPlayFile(WORD ChnlNo); 
void WINAPI StopIndexPlayFile(WORD wChnlNo); 
 
void WINAPI ResetIndex (void); 
BOOL WINAPI SetIndex ( char *VocBuf, DWORD dwVocLen); 
void WINAPI StartPlayIndex( WORD wChnlNo, WORD *pIndexTable, WORD wIndexLen); 
 
void WINAPI SendDtmfBuf(WORD wChnlNo, LPSTR DialNum); 
BOOL WINAPI CheckSendEnd(WORD wChnlNo); 
 
//static WORD StopRecord(WORD wChnlNo); 
BOOL WINAPI StartRecordFile ( WORD wChnlNo, LPSTR FileName, DWORD dwRecordLen ); 
BOOL WINAPI CheckRecordEnd ( WORD wChnlNo ); 
void WINAPI StopRecordFile (WORD wChnlNo); 
 
 
void WINAPI FeedSigFunc ( void ); 
void WINAPI StartTimer(WORD wChnlNo, WORD ClockType); 
long WINAPI ElapseTime ( WORD wChnlNo, WORD ClockType ); 
void WINAPI StartPlaySignal (WORD wChnlNo, WORD SigType ); 
void WINAPI StartHangUpDetect ( WORD wChnlNo ); 
WORD WINAPI HangUpDetect ( WORD wChnlNo ); 
void WINAPI FeedRing(WORD wChnlNo); 
void WINAPI FeedRealRing(WORD wChnlNo); 
void WINAPI FeedPower(WORD wChnlNo); 
BOOL WINAPI OffHookDetect(WORD wChnlNo); 
BOOL WINAPI ReadGenerateSigBuf (LPSTR lpFileName); 
 
// caller-id 
void WINAPI ResetCallerIDBuffer(WORD wChnlNo); 
WORD WINAPI GetCallerIDRawStr (WORD wChnlNo, LPSTR IDRawStr); 
WORD WINAPI GetCallerIDStr (WORD wChnlNo, LPSTR IDStr); 
 
BOOL WINAPI StartRecordFileNew ( WORD wChnlNo, LPSTR FileName,  
	DWORD dwRecordLen,DWORD dwRecordStartPos ); 
long WINAPI NewReadPass ( WORD wCardNo ); 
long WINAPI CheckSilence(WORD wChnlNo, WORD wCheckNum); 
 
// add about fast send dtmf 
int WINAPI SetSendPara ( int ToneLen, int SilenceLen ); 
void WINAPI NewSendDtmfBuf(int ChannelNo, LPSTR DialNum); 
int WINAPI NewCheckSendEnd(int ChannelNo); 
 
// add for T5-REC-NT card 
#define FREQWIDTH_ALL   0 
#define FREQWIDTH_WIDE  1 
 
#define SENSVAL_1_OF_16 00 
#define SENSVAL_1_OF_8  01 
#define SENSVAL_1_OF_4  02 
#define SENSVAL_1_OF_2  03 
 
#define SPEAKER_VOL_NONE        0 
#define SPEAKER_VOL_1           1 
#define SPEAKER_VOL_2           2 
#define SPEAKER_VOL_3           3 
#define SPEAKER_VOL_4           4 
#define SPEAKER_VOL_5           5 
#define SPEAKER_VOL_6           6 
#define SPEAKER_VOL_7           7 
#define SPEAKER_VOL_8           8 
 
void WINAPI LinkZeroTo ( WORD wChnlNo ); 
void WINAPI ClearZeroLink (void); 
void WINAPI SetSpkVol ( WORD wVol ); 
//end of add 
 
 
 
//----------- add for convert FAX 
int WINAPI DJCvt_ClientStartConvert( WORD wFaxChnl, char *NowTxtName, char *NowFaxName, BYTE cbResolution, BYTE cbPageLineNo); 
int WINAPI DJCvt_ClientStopConvert( WORD wFaxChnl ); 
int WINAPI DJCvt_ClientCheckCvt ( WORD wFaxChnl ); 
 
// add for new-d160a 
#define	WORK_MODE_DTMF				0 
	#define	DTMF_MODE_VAL_NORMAL			0 
	#define	DTMF_MODE_VAL_QUICK				1 
#define WORK_MODE_TEST_DTMF			1 
#define	WORK_MODE_TEST_FAX			2 
#define	WORK_MODE_SET_SIG_PARA		3 
#define	WORK_MODE_CHECK_RING		4 
	#define	CHECK_RING_MODE_VAL_NEW			0 
	#define	CHECK_RING_MODE_VAL_OLD			1 
#define	WORK_MODE_REC_AGC			5 
	#define	REC_AGC_MODE_VAL_DISABLE		0 
	#define	REC_AGC_MODE_VAL_ENABLE			1 
void WINAPI D_SetWorkMode  ( WORD wChnl, char cbWorkMode, char cbModeVal ); 
 
// more info function 
typedef struct { 
	WORD wMemAddr; 
 
	WORD wCardNum; 
	BYTE cbCardType[MAX_CARD_NO];		// add for D160A, also mean Channel of this card type 
	BYTE cbCardNeiWai[MAX_CARD_NO];		// add for D160A, TRUNK or USER 
 
	WORD wChnlNum; 
	BYTE cbChType[MAX_CHANNEL_NO]; 
	BYTE cbChnlCardNo[MAX_CHANNEL_NO]; 
	BYTE cbChnlInternal[MAX_CHANNEL_NO]; 
	BYTE cbConnectChnl[MAX_CHANNEL_NO]; 
	BYTE cbConnectStream[MAX_CHANNEL_NO]; 
	BYTE cbDtmfModeVal[MAX_CHANNEL_NO]; 
	BYTE cbIsSupportCallerID[MAX_CHANNEL_NO]; 
} TC_INI_TYPE_MORE; 
 
#define	CARD_TYPE_D160A		16 
#define	CARD_TYPE_D080A		8 
 
 
WORD WINAPI D_GetSysInfoMore( TC_INI_TYPE_MORE *TmpMore); 
// end of add 
 
#define	VOL_ADJUST_RECORD		0 
#define	VOL_ADJUST_PLAY			1 
 
int WINAPI D_AdjustVocVol_ForVB ( WORD wChnl, WORD wMode, WORD wVolAdjust ); 
int WINAPI D_AdjustVocVol ( WORD wChnl, char cMode, char cVolAdjust ); 
 
 
// add for D160A or D080A card 
void WINAPI ReadSigBufAll ( WORD wChnlNo, WORD *pwStartPoint, WORD *pwCount, BYTE *SigBuf ); 
void WINAPI SetSigFreqAll ( WORD wIndex, WORD wFreq ); 
// end 
 
// add for-vr 
int	WINAPI VR_SetRefreshSize ( WORD wSize ); 
void WINAPI VR_StartRecord ( WORD wChnlNo ); 
void WINAPI VR_StopRecord(WORD wChnlNo); 
int	WINAPI	VR_GetRecordData ( WORD wChnlNo, char *pBuffer ); 
void WINAPI VR_ReadSigBuf ( WORD wChnlNo, WORD *pwStartPoint, WORD *pwCount, BYTE *SigBuf ); 
void WINAPI VR_SetEcrMode ( WORD wChnl, BYTE cbEnableFlag, WORD wParam1, WORD wParam2 ); 
// end 
 
//for-tts 
int	WINAPI	IsNowSupportTTS(void); 
 
// for hn, dyq, 2000.09.06 
void WINAPI NewSetBusyPara( WORD Busy1Low, WORD Busy1High,WORD Busy0Low, WORD Busy0High ); 
 
// add for zyb, 2000.09.07 
BOOL WINAPI AddIndexPlayFile_ZYB(WORD Line, char *FileName, int DNum ); 
 
//YY ADD FOR PCI 2000.11.26 
int GetPciInfo(); 
//YY ADD FOR PCI 2000.11.26 
 
// add for HZARKJ, 2000.10.19 
int WINAPI HZ_inp (WORD wPort); 
void WINAPI HZ_outp(WORD wPort, int DataByte ); 
// end 
 
// add for-FSK, 2000.11.14 
WORD WINAPI D_GetFSKRawStr (WORD wChnlNo, LPSTR FSKRawStr); 
WORD WINAPI D_GetFSKStr (WORD wChnlNo, LPSTR IDStr); 
 
// add for SWT, 2001.04.28 
DWORD WINAPI NewReadPass_SWT ( WORD wCardNo ); 
 
//YY ADD FOR FSK 2001.7.2 
WORD WINAPI FSK_InitForFSK(void); 
void WINAPI FSK_ResetCallerIDBuffer(WORD wChnlNo); 
WORD WINAPI FSK_GetFSKRawStr (WORD wChnlNo, LPSTR FSKRawStr); 
//YY ADD FOR FSK 2001.7.2 
 
//YY ADD FOR BELL 103 2001.7.9 
WORD WINAPI Bell103_SetWorkMode(WORD wChnlNo, WORD wWorkMode); 
WORD WINAPI Bell103_GetRecvData(WORD wHandle, char * pData); 
WORD WINAPI Bell103_SendData(WORD wHandle, char * pData, WORD nLen); 
WORD WINAPI Bell103_Stop(WORD wHandle); 
//YY ADD FOR BELL 103 2001.7.9 
 
//YY ADD FOR DFM 2001.8.16 
WORD WINAPI D160PCI_GetTimeSlot(WORD wD160AChnl); 
WORD WINAPI D160PCI_ConnectFromTS(WORD wD160AChnl, WORD wChnlTS); 
WORD WINAPI D160PCI_DisconnectTS(WORD wD160AChnl); 
//YY ADD FOR DFM 2001.8.16 
 
// add for BJMR£¬2002.11.26 
WORD WINAPI D160PCI_CT_Connect_CT ( WORD wD160AChnl, BYTE input_stream, BYTE input_slot ); 
 
// YY ADD for RealTime Memory Play, 2001.10.17 
void WINAPI SYS_StartLoopPlay ( WORD wChnlNo, DWORD dwPlayLen, DWORD dwStartPos ); 
void WINAPI SYS_MoveBufToSys ( WORD wChnlNo, char *p, DWORD dwMoveLen, DWORD dwSysStartPos ); 
// end of add 
 
// YY ADD for DFM support NADK, 2002.01.09 
int	WINAPI	DFM_Fax_GetTimeSlot ( int	DFM_Fax_ChnlID ); 
int	WINAPI	DFM_Fax_ConnectFromTS ( int DFM_Fax_ChnlID, int iTS ); 
int	WINAPI	DFM_Fax_DisconnectTS ( int DFM_Fax_ChnlID ); 
// end of add 
 
// HJN ADD FOR D160A-REV2 RECORD MODULE, 2002.06.28 
WORD WINAPI CheckChTypeNew(WORD wChnlNo); 
BOOL WINAPI DRec_OffHookDetect(WORD wChnlNo); 
// END OF ADD 
 
// add next function in 2003.04.21, just for "New M2R module, you can adjust threshold voltage" 
#define		NREC_MAX_VOLTAGE_LEVEL		52 
 
BOOL WINAPI DRec_IsVoltageAdjust(WORD wChnlNo); 
BOOL WINAPI DRec_SetVoltageLevel(WORD wChnlNo, BYTE cbVoltageVal); 
BYTE WINAPI DRec_GetVoltageLevel(WORD wChnlNo); 
 
// add in 2003.05.21 
BYTE WINAPI DRec_FetchVoltageValue(WORD wChnlNo); 
// end of add 
 
// add next 2 function in 2003.04.30 
BOOL WINAPI StartRecordFile_Ex ( WORD wChnlNo, LPSTR FileName, DWORD dwRecordLen, BOOL IsShareOpen ); 
BOOL WINAPI StartRecordFileNew_Ex ( WORD wChnlNo, LPSTR FileName,  
	DWORD dwRecordLen,DWORD dwRecordStartPos, BOOL IsShareOpen ); 
// end of add 
 
#ifdef __cplusplus 
} 
#endif 
 
 
#endif