📄 tvcdrvapi.h
字号:
#ifndef _TVC_DRVAPI_H_
#define _TVC_DRVAPI_H_
#ifndef WIN32
#ifndef OS_LINUX
#ifndef TYPEDEF_H
#define TYPEDEF_H
typedef char CHAR;
typedef float FLOAT;
typedef int BOOL;
typedef int INT;
typedef long LONG;
typedef unsigned char BYTE;
typedef unsigned char UCHAR;
typedef unsigned int UINT;
typedef unsigned long DWORD;
typedef unsigned long ULONG;
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef BOOL *LPBOOL;
typedef BYTE *LPBYTE;
typedef BYTE *PBYTE;
typedef CHAR *LPSTR;
typedef CHAR *LPTSTR;
typedef CHAR *PCHAR;
typedef DWORD *LPDWORD;
typedef DWORD *PDWORD;
typedef WORD *LPWORD;
typedef WORD *PWORD;
typedef UCHAR *PUCHAR;
typedef long *LPLONG;
typedef long *PLONG;
typedef void *LPVOID;
typedef const CHAR *LPCSTR;
typedef const CHAR *LPCTSTR;
typedef const void *LPCVOID;
#endif
#endif
#endif
#ifndef WINAPI
#define WINAPI __stdcall
#endif
typedef void (CALLBACK* EVENTCALLBACKPROC)(WORD wEvent, int nReference, DWORD dwParam);
typedef void (CALLBACK* WAITDTMFPROC)(int ch,char *szWaitStr,int nWaitEndResult,char *szRxDtmfStr);
typedef void (CALLBACK* DUALBUFFRECORDPROC)(int ch,UCHAR ucRecStopReason,LPBYTE pBuff,DWORD dwBytes,PVOID pParam);
typedef void (CALLBACK* TVCRECMEMPROC) (int ch, LPBYTE lpData, DWORD dwDataLen) ;
// 会议属性
//////////////////////////////////////////////////////////////////////////
#define CONF_ATTRIB_DTMFNOTONBUS 0x00000001 // 成员通道按键音是否上总线
#define CONF_ATTRIB_TONENOTONBUS 0x00000002 // 成员通道信号音是否上总线
//////////////////////////////////////////////////////////////////////////
// 通道标志
#define CH_FLAG_DTMFSTOPPLAY 0x00000001 // 有Dtmf时停止放音
#define CH_FLAG_DTMFSTOPSENDTONE 0x00000002 // 有Dtmf时停止发送信号音
#define CH_FLAG_HANGUPSTOPPLAY 0x00000004 // 挂机时停止放音
#define CH_FLAG_BARGEINSTOPPLAY 0x00000008 // 有人说话时停止放音
#define CH_FLAG_AUTOSENDDIALTONE 0x00000010 // 坐席通道摘机时是否自动发送拨号音
#define CH_FLAG_PLAYTOBUS 0x00000040 //放音是否上总线
#define CH_FLAG_HANGUPSTOPREC 0x00000080 //挂机时停止录音
//////////////////////////////////////////////////////////////////////////
//----------------------------------------事件轮询BG------------------------------//
enum{
APIPcm_NOSIG=0,
APIPcm_SS1,
APIPcm_ISDNU,
APIPcm_ISDNN,
APIPcm_TUP,
APIPcm_ISUP
};
enum
{
NO_EVENT, // 无事件方式
EVENT_POLLING, //事件轮询
EVENT_CALLBACK, //事件回调
EVENT_MESSAGE //windows消息
};
typedef struct {
DWORD dwWorkMode;
LPVOID lpHandlerParam;
DWORD dwOutCondition;
DWORD dwOutParamVal;
}EVENT_SET,*PEVENT_SET;
typedef struct{
WORD wEventCode; //事件代码
int nReference; //通道号(...)
DWORD dwParam; //通道状态.输出参数(...)
}TVCEVENTMSG,*PTVCEVENTMSG;
//
////过滤事件队列
//typedef struct {
// TVCEVENTMSG TvcMsg;
// bool bEnable;
//}FILTEREVENT,*PFILTEREVENT;
//主要事件
enum
{
//Dtmf接收
TvcE_Dtmf_Geted=0x0000, //Dtmf字符接收缓冲写入了新的Dtmf字符
TvcE_WaitDtmf_End=0x0001, //接收指定Dtmf字符串的任务结束
//Dtmf发送
TvcE_SendDtmf_End=0x0002, //发送Dtmf任务结束
//发送闪断
TvcE_SendFlash_End=0x0003, //发送闪断任务结束事件
//放音
TvcE_Play_End=0x0004, //放音任务结束
//录音
TvcE_Record_End=0x0005, //录音任务结束
//FSK发送
TvcE_SendFSK_End=0x0006, //发送FSK任务结束事件
TvcE_LineVoltage_Changed=0x0007, //线路电压变化
//呼叫控制
TvcE_ChState_Changed=0x0008, //道状态发生变化
TvcE_RingDt_Changed=0x0009, //铃流电平变化
TvcE_RingCount_Changed=0x000a, //振铃计数变化
TvcE_CallerID_Geted=0x000b, //接收主叫号码
TvcE_CalleeID_Geted=0x000c, //被叫号码变化
TvcE_Remote_Pickup=0x000d, //模拟电话线相对能量算法检测被叫摘机
//坐席
TvcE_FlashCount_Changed=0x000e, //flash计数发生变化
TvcE_HookState_Changed=0x000f, //内线Hook(摘机、挂机)状态发生变化
//信号音检测
TvcE_BusyTone_Changed=0x0010, //忙音计数变化
TvcE_EchoTone_Changed=0x0011, //检测到一个完整的回铃音周期
TvcE_DialTone_Detected=0x0012, //发现拨号音
TvcE_BargeIn_Detected=0x0013, //检测到BargeIn(检测到 BargeIn TvcGetNoSoundTime 将重新计数)
TvcE_NoSound_Found=0x0014, //检测到线路无声
TvcE_SpecFreq_Found=0x0015, //指定检测的频率发现
TvcE_Last_Api_Event=0x0100,
};
//----------------------------------------事件轮询ED------------------------------//
enum{
plyrec_always,
plyrec_stopbytime,
plyrec_stopbybyte,
};
enum
{
tvc_voc_alaw = 0x1,
tvc_voc_ulaw = 0x2,
tvc_voc_adpcm = 0x4,
tvc_voc_pcm16 = 0x5, //线性16位语音格式
tvc_voc_pcm8 = 0x6, //线性8位语音格式
tvc_voc_gsm = 0x31,
};
enum _CH_TYPE_{
ANALOG_REC = 0,
ANALOG_USER = 1,
ANALOG_TRK = 2,
DIGITAL_SS1 = 3,
DIGITAL_ISDNU = 4,
DIGITAL_ISDNN = 5,
DIGITAL_SS7TUP = 6,
DIGITAL_SS7ISUP = 7,
DIGITAL_NOSIG = 8,
EX_SOFTFAX = 0x80, //外部的传真通道
CH_NULL = 0xff,
};
enum _TONE_TYPE_{
DIAL_TONE=0, // 0: 拨号音;
BUSY_TONE,
ECHO_TONE,
HANG_TONE,
USER_SELF_TONE=0xff,
};
enum _CH_STATE_{
ch_free=0x0, // 空闲
ch_pickuped, // 摘机
ch_talking, // 通话
ch_ringing, // 振铃
ch_empty, // 断线
ch_wait_talk, // 等对方摘机
ch_dialout, // 外拨拨号
ch_dialfail, // 外拨失败
ch_callin, // 数字通道有呼入
ch_waithangup, // 数字通道等待挂机
ch_waitrelease, // 数字通道等待释放
ch_localblock, // 本地闭塞
ch_remoteblock, // 远方闭塞
ch_tup_reset, //电路复位
ch_waitappset, //等等待应用程序设置KB
};
enum DIAL_STEP{
adial_silence=0x100, //无声
adial_silnceafterecho, //回铃后无声
adial_busy, //对方忙
adial_nodialtone, //没有拨号音
adial_timeout, //拨号超时
adial_nobody, //无人接听
adial_unavailable,
adial_signal_error, //收到未定义的信号
adial_remote_refuse, //呼出时对方挂机
adial_code_empty, //空号
adial_pbx_busy, //一号信令中的机键拥塞 ,ISND表示网络忙,TUP中表示交换机忙
adial_ss1_mfc_timeout=0x180, //MFC互控超时
adial_ss1_waitack_timeout, //等待对端应答超时
adial_tup_waitack_timeout=0x1a0,
adial_tup_cgc,
adial_tup_adail_fial, //其它原因的呼叫失败
adial_tup_blo,
adial_tup_rsc, //电路复原信号
adial_tup_stb, //用户长话忙
adial_tup_slb, //用户市话忙
adial_tup_sec, //机键拥塞
adial_tup_unn, //空号
adial_tup_adi, //地址消息不全
adial_tup_los, //LOS
adial_tup_acb, //
adial_tup_noreply,
};
// 等待挂机原因
enum WAIT_HANGUP_REASON{
WH_NULL,
WH_Busy, // 忙音
WH_CallerHangupWhenTalking, // 通话中主叫挂机
WH_CalleeHangupWhenTalking, // SS7 通话中被叫挂机
WH_ChNotAvailable, //通道不可用
WH_NetTimeout,
WH_RelTimeout,
WR_ConTimeout,
};
// 主叫接收模式
enum{
DTMF_MODE,
FSK_MODE,
AUTO_MODE,
};
// 通道加入电话会议的模式
enum CONF_MODE{
CONF_SPEAK_ALWAYS, // 总是具有发言权
CONF_SPEAK_DYNAMIC, // 具有动态发言权
CONF_SPEAK_ONLY, // 只有发言权,听不到其他通道的声音,用于对会议放音
CONF_LISTEN, // 没有发言权(听众)
CONF_SPEAK_DTMF, // 按键发言
CONF_MAXMODE,
};
typedef struct _API_SYSTEM_INFO_{
short wTotalCh;
unsigned char ucMaxCfgBoard;
unsigned char ucMaxUseableBoard;
short wVerMajor; // 主版本号
short wVerMinor; // 辅版本号
}APISYSTEMINFO,*PAPISYSTEMINFO;
typedef struct _API_BOARD_INFO_{
unsigned short ucBoardModel; // 板卡类型
short wAccreditId; // 客户ID
short wChunnelOnBoard; // 板卡上的总数
unsigned long uBoardSerial; // 序列号
char szBoardSerial[9]; // 板卡序列号
}APIBOARDINFO,*PAPIBOARDINFO;
typedef struct {
UCHAR mask; // 0--一直录音,1--时间为准,2--字节为准
int dwRecStopTime; // 单位字节
int dwRecStopBytes; // 音位毫秒
UCHAR ucRecFormat; // 录音格式
UCHAR ucWaveFileHead; // 录音文件是否要WAVE HEAD
UCHAR ucStopRecWhenHangUp; // 当挂机时自动停止录音
UCHAR ucRecVol; // 录音音量
}RECORDCONFIG,*PRECORDCONFIG;
enum{
V08PCI=0x100,
V08BPCI=0x180,
V16PCI=0x200,
V30PCI=0x300,
V30PCI_SS1=0x320,
V30PCI_ISDN=0x360,
V30PCI_SS7=0x380,
V60PCI=0x400,
V60PCI_SS1=0x420,
V60PCI_ISDN=0x460,
V60PCI_SS7=0x480,
V120PCI=0x500,
V120PCI_SS1=0x520,
V120PCI_ISDN=0x560,
V120PCI_SS7=0x580,
};
int WINAPI TvcLoadDrv(char *szIniFile,char *szIndexFile);
int WINAPI TvcLoadDrvA();
void WINAPI TvcFreeDrv(void);
int WINAPI TvcGetBoardInfo(int nBoardId,PAPIBOARDINFO pInfo);
int WINAPI TvcGetDrvInfo(PAPISYSTEMINFO pInfo);
int WINAPI TvcGetChType(int ch);
int WINAPI TvcGetDtmfStr(int ch,PUCHAR pucDtmf,int Wanted ,UCHAR bisClr);
int WINAPI TvcClrRxDtmfBuf(int ch);
int WINAPI TvcCheckTxDtmf(int ch);
int WINAPI TvcStopTxDtmf(int ch);
int WINAPI TvcStartTxDtmf(int ch,char *szDtmf);
int WINAPI TvcSetTxDtmfPara(int ch,int iOnTime,int iOffTime);
int WINAPI TvcGetTxDtmfPara(int ch,int *iOnTime,int *iOffTime);
int WINAPI TvcSetRxDtmfDWLDT(int ch,UCHAR bDisplay);
int WINAPI TvcSetRxDtmfIsOmitABCD(int ch,UCHAR bisOmit);
int WINAPI TvcSetRxDtmfSensitive(int ch,int wLevel);
int WINAPI TvcSetTxTonePara(int ch,int wFreq1,int wFreq2);
int WINAPI TvcStopSendTone(int ch);
int WINAPI TvcStartSendTone(int ch,int nToneType,int OnTime,int OffTime);
int WINAPI TvcGetBusyCount(int ch);
int WINAPI TvcGetEchoCount(int ch);
int WINAPI TvcSetRxToneFreqPara(int ch,int wFreq1,int wFreq2,int wBand1,int wBand2,int wRatio);
int WINAPI TvcSetBusyToneTimePara(int ch,int TimePeriod);
int WINAPI TvcSetEchoToneTimePara(int ch,int OnTime,int OffTime);
int WINAPI TvcClearBusyCount(int ch);
int WINAPI TvcClearEchoCount(int ch);
int WINAPI TvcGetBusyTime(int ch);
int WINAPI TvcGetEchoTime(int ch);
int WINAPI TvcPickUp(int ch);
int WINAPI TvcHangUp(int ch);
int WINAPI TvcGetChState(int ch);
int WINAPI TvcGetCallDirection(int ch);
int WINAPI TvcGetRingCount(int ch);
int WINAPI TvcGetRingDT(int ch);
int WINAPI TvcClearRingCount(int ch);
int WINAPI TvcGetChStateKeepTime(int ch);
int WINAPI TvcIsBargeIn(int ch);
int WINAPI TvcIsSound(int ch);
int WINAPI TvcGetNoSoundTime(int ch);
int WINAPI TvcGetNoSoundDtrTime(int ch);
int WINAPI TvcSetNoSoundDtrTime(int ch,int NoSoundTime);
int WINAPI TvcSetBargeInSensitive(int ch,int Sensitive);
int WINAPI TvcGetPolarCount(int ch);
int WINAPI TvcClearPolarCount(int ch);
int WINAPI TvcGetPolarState(int ch);
int WINAPI TvcSetPickupDtmrVoltage(int ch,int Voltage);
int WINAPI TvcSetOfflineDtmrVoltage(int ch,int Voltage);
int WINAPI TvcGetOfflineDtmrVoltage(int ch);
int WINAPI TvcGetPickUpDtmrVoltage(int ch);
int WINAPI TvcGetLineVoltage(int ch);
int WINAPI TvcSetIsIgnoreVoltage(int ch,UCHAR ucIsIgnore);
int WINAPI TvcGetCallerId(int ch,char *szBuf,int want);
int WINAPI TvcGetCallerIdLen(int ch);
int WINAPI TvcClrCallerIdBuf(int ch);
int WINAPI TvcSetCIDMode(int ch ,int Mode);
int WINAPI TvcSetLocalVol(int nBoard,int Vol);
int WINAPI TvcSetPreRecordPara(int ch,UCHAR nRecType,UCHAR nVol,int dwTime );
int WINAPI TvcCheckRecord(int ch);
int WINAPI TvcStopRecord(int ch);
int WINAPI TvcStartFileRecord(int ch,char *szMasterFile,char *szSlaveFile);
int WINAPI TvcSetRecordPara(int ch,PRECORDCONFIG Rec);
int WINAPI TvcPauseRecord(int ch);
int WINAPI TvcRestartRecord(int ch);
int WINAPI TvcGetRecordTime(int ch);
int WINAPI TvcGetRecordBytes(int ch);
int WINAPI TvcSetRecAgc(int ch,UCHAR ucEnable);
int WINAPI TvcStartMemoryRecord(int ch,char *pBuf,int BlockSize,int StartOffset,int StopBytes);
int WINAPI TvcGetRecordOffset(int ch);
int WINAPI TvcStartFileRecordA(int ch,char *szMasterFile,char *szSlaveFile, int nRecFormat,DWORD dwStopBytes,DWORD dwStoptime,int nMask);
int WINAPI TvcSetRecVol(int ch,int Vol);
int WINAPI TvcSetDefaultRecFormat(int ch,int nFormat);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -