Hi,
I have a voice card,but asterisk can’t support it! I want use it,
how do it!
head file contant:
#ifndef SHCTI_CONST
#define SHCTI_CONST
//-----------------------------------------------------------------------
// definition of channel type, which can be retrieved by invoking
// function “SsmGetFlag()” and set by invoking “SsmSetFlag()”
//-----------------------------------------------------------------------
enum{
F_RCVDTMFSENS=1, //接收DTMF敏感度
F_TXDTMFAMP=2, //发送DTMF信号强度
F_RCVPHONUMHOLDUP=3, //被叫号码拦截标记
// Added by xxb for 模拟电话线被叫摘机检测新算法,2003.2.27
F_RELATIVEENGYHOOKDETECT=4, //是否启用模拟电话线被叫摘机检测新算法
//Added by xxb,for 一号信令R2滤波点数不可调,2003.3.7
F_RXR2FILTERTIME=5, //R2接收滤波时间
F_RECTOFILEA_CALLBACKTIME = 6, //Appended by xxb, for SsmRecToFileA回调时间可调, 2003.06.24
F_CALLERIDSTYLE=7,
F_InVoiceToBus=8, //Added by xxb,for 来话上总线 DTMF切音,2004.04.19
F_ClearInVoiceOnRcvDtmf=9, //Added by xxb,for 来话上总线 DTMF切音,2004.04.19
F_MixerResToBus=10, //added by xxb,for 混音源上总线,2004.06.02
F_HighAndLowFreqEnScale=11, //appended by cqb for 过滤语音中误判的DTMF , 2004.11.01
F_DualAndAllFreqEnScale=12 //appended by cqb for 过滤语音中误判的DTMF , 2004.11.01
};
//-----------------------------------------------------------------------
// definition of channel type, which can be retrieved by invoking
// function “SsmGetChType()”
//-----------------------------------------------------------------------
#if !defined(MCONST_H__F9FCDFC0_116C_11d7_A073_00E04C68629B__INCLUDED_)
enum{
ANALOG_CH=0,
INTER_CH=1,
USER_CH=2,
REC_CH=3,
SS1_CH=4,
FAX_CH=5,
TUP_CH=6,
ISDN_USER_CH=7,
ISDN_NET_CH = 8,
SOFTFAX_CH = 9,
MAGNET_CH = 10,
ISUP_CH = 11,
IDLE_CH = 20,
};
#endif
//-----------------------------------------------------------------------
// definition of blocking reason, which can be retrieved by invoking
// function “SsmGetBlockReason()”
//-----------------------------------------------------------------------
enum{
BLOCKBY_NULL,
BLOCKBY_TupRcvMGB,
BLOCKBY_TupRcvHGB,
BLOCKBY_TupRcvSGB,
BLOCKBY_TupWaitRLGTimeout,
BLOCKBY_TupBlockByApp,
};
//-----------------------------------------------------------------------
// Definition of status on blocking remote circuit or circuit groups,
// which might be used by following functions
// 1. “SsmChkBlockRemoteXXX()”
// 2. “SsmChkBlockRemoteXXX()”
//-----------------------------------------------------------------------
#define BLOCKREMOTE_Unblocked 0 // no block-signal is issued
#define BLOCKREMOTE_Blocked 1 // is in blocked state now
#define BLOCKREMOTE_WaitBlockAck 2 // waiting for acknowledgement signal after sending block-signal
#define BLOCKREMOTE_WaitUnblockAck 3 // waiting for acknowledgement signal after sending unblock-signal
//-----------------------------------------------------------------------
// Definition of local blocking status on circuit or circuit groups,
// which might be used by following functions
// “SsmQueryLocalXXXBlockState()”
//-----------------------------------------------------------------------
#define BLOCK_AppBlockCic 0x00000001 // channel is blocked by invoking SsmBlockLocalCh()
#define BLOCK_TupRcvBLO 0x00000002 // channel is blocked by received BLO
#define BLOCK_TupRcvSGB 0x00000004 // channel is blocked by received SGB
#define BLOCK_TupRcvHGB 0x00000008 // channel is blocked by received HGB
#define BLOCK_TupRcvMGB 0x00000010 // channel is blocked by received MGB
#define BLOCK_AppBlockPCM 0x00000020 // channel is blocked by invoking SsmBlockLocalPCM()
//-----------------------------------------------------------------------
// Definition of channel unavailable reason
//-----------------------------------------------------------------------
#define UNAVAILABLE_PcmSyncLos 0x00000001
#define UNAVAILABLE_Mtp3Unusuable 0x00000002
//-----------------------------------------------------------------------
// 函数调用失败原因的常量定义,用于函数SsmGetLastErrCode()返回值
//-----------------------------------------------------------------------
enum{
C_ERROR_INIT_FAILURE =0,
C_ERROR_SSMAPI_UNOPENED =1,
C_ERROR_INVALID_APPCH =2,
C_ERROR_UNSUPPORTED_OP =3,
C_ERROR_INDEX_UNOPENED =4,
C_ERROR_INVALID_BUSCH =5,
C_ERROR_OP_UNOPENED =6,
C_ERROR_INVALID_FORMAT =7,
C_ERROR_INVALID_PARAMETER =8,
C_ERROR_FILEOP_FAILURE =9,
C_ERROR_MEMORY_FAILURE =10,
C_ERROR_RESOURCE_USEUP =11,
C_ERROR_SYSTEM =12,
C_ERROR_IdleChNotFound =13, // appended by cxg for SS7,10.22,2001
C_ERROR_OP_FAILURE =14, //appended by xxb, for 停录放音会出现句柄无效,2003.7.18
C_ERROR_INVALID_APPSPYCIC =15,
//++++start++++ fax error code
C_ERROR_FAX_NOFILE = 16
//++++end++++ fax error code
};
//-----------------------------------------------------------------------
// 自动拨号任务失败的常量定义,用于函数SsmGetAutoDialFailureReason()返回值
//-----------------------------------------------------------------------
enum{
ATDL_NULL=0, // 没有呼出任务
ATDL_Cancel=1, // 应用程序主动取消
ATDL_WaitDialAnsTimeout=2, // 等待被叫应答超时
ATDL_WaitRemotePickupTimeout=3, // 等待被叫摘机超时
ATDL_PcmSyncLos=4, // PCM链路基本祯失步超过100ms
ATDL_Mtp3Unusable=10, // No.7信令:信令不可用
ATDL_RcvSSB=11, // No.7信令:收到SSB
ATDL_RcvSLB=12, // No.7信令:收到SLB
ATDL_RcvSTB=13, // No.7信令:收到STB
ATDL_RcvUNN=14, // No.7信令:收到UNN
ATDL_RcvSEC=15, // No.7信令:收到SEC
ATDL_RcvCGC=16, // No.7信令:收到CGC
ATDL_RcvNNC=17, // No.7信令:收到NNC
ATDL_RcvCFL=18, // No.7信令:收到CFL
ATDL_RcvLOS=19, // No.7信令:收到LOS
ATDL_RcvSST=20, // No.7信令:收到SST
ATDL_RcvACB=21, // No.7信令:收到ACB
ATDL_RcvDPN=22, // No.7信令:收到DPN
ATDL_RcvEUM=23, // No.7信令:收到EUM
ATDL_RcvADI=24, // No.7信令:收到ADI
ATDL_RcvBLO=25, // No.7信令:收到BLO
ATDL_DoubleOccupy=26, // No.7信令:检出同抢
ATDL_CircuitReset=27, // No.7信令:收到电路/群复原信号
ATDL_BlockedByRemote=28, // No.7信令:电路被对端交换机闭塞
ATDL_SS1WaitOccupyAckTimeout=40, // No.1信令:等待占用应答信号超时
ATDL_SS1RcvCAS_HANGUP=41, // No.1信令:收到后向拆线信号
ATDL_SS1RcvA4=42, // No.1信令:收到A4信号(机键拥塞)
ATDL_SS1RcvA5=43, // No.1信令:收到A5信号(空号)
ATDL_SS1RcvUndefinedAx=44, // No.1信令:收到未定义的后向A组信号
ATDL_SS1RcvUndefinedAxOnTxCallerId=45, // No.1信令:送主叫时收到未定义的后向A组信号
ATDL_SS1WaitAxTimeout=46, // No.1信令:等候接收后向A组信号超时
ATDL_SS1WaitAxStopTimeout=47, // No.1信令:等候后向A组信号停发超时
ATDL_SS1WaitAxTimeoutOnTxCallerId=48, // No.1信令:送主叫时等候后向A组信号超时
ATDL_SS1WaitAxStopTimeoutOnTxCallerId=49, // No.1信令:送主叫时等候后向A组信号停发超时
ATDL_SS1RcvKB2=50, // No.1信令:收到KB2信号(用户“市忙”)
ATDL_SS1RcvKB3=51, // No.1信令:收到KB3信号(用户“长忙”)
ATDL_SS1RcvKB4=52, // No.1信令:收到KB4信号(机键拥塞)
ATDL_SS1RcvKB5=53, // No.1信令:收到KB5信号(空号)
ATDL_SS1RcvUndefinedKB=54, // No.1信令:收到未定义的KB信号
ATDL_SS1WaitKBTimeout=55, // No.1信令:接收后向KB信号超时
ATDL_SS1WaitKBStopTimeout=56, // No.1信令:等候被叫方停发后向KB信号超时
ATDL_ISDNNETISBUS = 60, //ISDN:网络忙
ATDL_ISDNEMPTYNO = 61, //ISDN:所拨的是空号.
ATDL_IllegalMessage = 65, //SS7:非法消息
ATDL_RcvREL = 66, //ISUP:收到释放消息
};
//-----------------------------------------------------------------------
// 自动拨号任务执行情况的常量定义,函数SsmChkAutoDial()的返回值
//-----------------------------------------------------------------------
enum{
DIAL_STANDBY = 0, // 没有自动拨号任务
DIAL_DIALING = 1, // 正在自动拨号
DIAL_ECHOTONE = 2, // 发送完被叫号码后检测到了回铃音
DIAL_NO_DIALTONE = 3, // 没有拨号音,自动拨号失败。
DIAL_BUSYTONE = 4, // 被叫用户忙,自动拨号结束
DIAL_ECHO_NOVOICE = 5, // 模拟外线通道拨号结束并收到回铃音后出现无声,自动拨号结束
DIAL_NOVOICE = 6, // 模拟外线通道拨号结束后在指定时间内没有检测到任何声音,自动拨号结束
DIAL_VOICE = 7, // 被叫用户摘机,自动拨号结束
DIAL_VOICEF1 = 8, // 被叫用户摘机且收到频率F1的声音(模拟外线通道),自动拨号结束
DIAL_VOICEF2 = 9, // 被叫用户摘机且收到频率F2的声音(模拟外线通道),自动拨号结束
DIAL_NOANSWER = 10, // 无人接听,自动拨号失败
DIAL_FAILURE = 11, // 自动拨号失败
DIAL_INVALID_PHONUM = 12, // 空号,自动拨号结束
};
//-----------------------------------------------------------------------
// 通道挂起原因常量定义,函数SsmGetPendingReason()的返回值
//-----------------------------------------------------------------------
enum{
ANALOGOUT_NO_DIALTONE=0, // 模拟通道:自动拨号时没有检测到拨号音,自动拨号失败。
ANALOGOUT_BUSYTONE=1, // 模拟通道:自动拨号结束后检测到拨号音,自动拨号失败。
ANALOGOUT_ECHO_NOVOICE=2, // 模拟通道:自动拨号结束后并检测到回铃后出现无。
ANALOGOUT_NOANSWER=3, // 模拟通道:自动拨号结束后检测到回铃信号但在指定的时间内没有应答。
ANALOGOUT_TALKING_REMOTE_HANGUPED=4, // 模拟通道:在"通话"状态时检测对方挂机
ANALOGOUT_NOVOICE=5, // 模拟通道:自动拨号结束后检测到线路上出现无声
PEND_WaitBckStpMsg=10, // 数字中继通道:等待应用程序设置被叫用户状态
SS1IN_BWD_KB5=11, // No.1信令通道:等待主叫拆线
PEND_RemoteHangupOnTalking=12, // 数字中继通道:自动呼入进入通话后检测到主叫用户先挂机
PEND_AutoDialFailed=13, // 数字中继通道:自动拨号失败
PEND_SsxUnusable=14, // 数字中继通道:信令不可用
PEND_CircuitReset=15, // 数字中继通道:电路复原
PEND_PcmSyncLos=16, // 数字中继通道:基本祯同步丢失时间超过100ms
SS1OUT_TALKING_REMOTE_HANGUPED=20, // 数字中继通道:自动呼出进入通话后检测到被叫用户先挂机
PEND_CalleeHangupOnTalking=20, // 数字中继通道:自动呼出进入通话后检测到被叫用户先挂机
SS1OUT_NOANSWER=21, // No.1信令通道:等待被叫用户摘机超时
SS1OUT_NOBWDACK=22, // No.1信令通道:等待占用应答信号超时
SS1OUT_DIALING_BWD_HANGUP=23, // No.1信令通道:收到后向拆线信号
SS1OUT_BWD_A5=24, // No.1信令通道:收到A=5(空号)信号
SS1OUT_BWD_KB5=25, // No.1信令通道:收到KB=5(空号)信号
SS1OUT_BWD_KB2=26, // No.1信令通道:用户“市忙”
SS1OUT_BWD_KB3=27, // No.1信令通道:用户”长忙“
SS1OUT_BWD_A4=28, // No.1信令通道:机键拥塞
SS1OUT_BWD_KB4=29, // No.1信令通道:收到KB=4(机键拥塞)信号
SS1OUT_TIMEOUT_BWD_A=30, // No.1信令通道:等候接收后向A组信号超时
SS1OUT_TIMEOUT_BWD_A_STOP=31, // No.1信令通道:等候后向A组信号停发超时
SS1OUT_TIMEOUT_BWD_KB=32, // No.1信令通道:接收后向KB信号超时
SS1OUT_TIMEOUT_BWD_KB_STOP=33, // No.1信令通道:等候被叫方停发后向KB信号超时
SS1OUT_TIMEOUT_CALLERID_BWD_A1=34, // No.1信令通道:收到未定义的后向A组信号
SS1OUT_TIMEOUT_CALLERID_BWD_A1_STOP=35, // No.1信令通道:发送CALLERID时等候后向A组信号停发超时
SS1OUT_UNDEFINED_CALLERID_BWD_A=36, // No.1信令通道:发送主叫号码时收到未定义的后向A组信号
SS1OUT_UNDEFINED_BWD_A=37, // No.1信令通道:收到未定义的后向A组信号
SS1OUT_UNDEFINED_BWD_KB=38, // No.1信令通道:收到未定义的KB信号
ISDN_CALLOVER = 41, //呼叫结束,对方先挂机.
ISDN_WAIT_RELEASE = 42, //等待释放
ISDN_HANGING = 43, //拆线中
ISDN_RELEASING = 44, //正在释放
ISDN_UNALLOCATED_NUMBER = 45, //ISDN,未分配的号码
ISDN_NETWORK_BUSY = 46, //ISDN, 网络忙。
ISDN_CIRCUIT_NOT_AVAILABLE= 47, //ISDN, 指定的电路不可用。
PEND_CalleeHangupOnWaitRemotePickUp=48, // added by cqb for SHCTI030902 数字中继通道:自动呼出后等待被叫挂机时检测到被叫用户先挂机
ISUP_HardCircuitBlock = 49,
ISUP_RemoteSuspend = 50,
PEND_RcvHGBOrSGB = 51,//Appended by xxb,for 接收到对端交换机SGB/HGB后驱动错误处理,2003.11.27
ISDN_NO_ANSWER =52, //ISDN, 无应答
ISDN_CALL_REJ =53, //ISDN, 呼叫拒绝
};
//-----------------------------------------------------------------------
// 通道状态常量定义,函数SsmGetChState()的返回值
//-----------------------------------------------------------------------
enum{
S_CALL_STANDBY =0, //“空闲”状态
S_CALL_PICKUPED=1, //“摘机”状态
S_CALL_RINGING =2, //“振铃”状态
S_CALL_TALKING =3, //“通话”状态
S_CALL_ANALOG_WAITDIALTONE =4, // “等待拨号音”状态 (模拟通道)
S_CALL_ANALOG_TXPHONUM =5, // “拨号”状态 (模拟通道)
S_CALL_ANALOG_WAITDIALRESULT=6, // “等待拨号结果”状态(模拟通道)
S_CALL_PENDING =7, // “挂起”状态
S_CALL_OFFLINE =8, // “断线”状态 (录音通道)
S_CALL_WAIT_REMOTE_PICKUP =9, // “等待被叫摘机”状态
S_CALL_ANALOG_CLEAR =10, // **内部状态** (模拟通道)
S_CALL_UNAVAILABLE =11, // “通道不可用”状态
S_CALL_LOCKED =12, // “呼出锁定”状态
S_CALL_RemoteBlock =19, // “对端闭塞”状态
S_CALL_LocalBlock =20, // “本端闭塞”状态
S_CALL_Ss1InWaitPhoNum =30, // “等待接收被叫号码”状态 (No.1信令呼入)
S_CALL_Ss1InWaitFwdStop =31, // “等待前向停发”状态 (No.1信令呼入)
S_CALL_Ss1InWaitCallerID=32, // “等待接收CALLERID号码”状态 (No.1信令呼入)
S_CALL_Ss1InWaitKD =33, // “等待接收KD信号”状态 (No.1信令呼入)
S_CALL_Ss1InWaitKDStop =34, // “等待KD信号停发”状态 (No.1信令呼入)
S_CALL_SS1_SAYIDLE =35, // “发送示闲信令”状态 (No.1信令)
S_CALL_SS1WaitIdleCAS =36, // “等待对端示闲”状态 (No.1信令)
S_CALL_SS1PhoNumHoldup =37, // “冗余号码拦截”状态 (No.1信令)
S_CALL_Ss1InWaitStopSendA3p=38, // “等待停发A3p信号”状态 (No.1信令)
S_CALL_Ss1OutWaitBwdAck =40, // “等待后向占用证实信令”状态 (No.1信令呼出)
S_CALL_Ss1OutTxPhoNum =41, // “发送被叫号码”状态 (No.1信令呼出)
S_CALL_Ss1OutWaitAppendPhoNum =42, // “等待应用程序追加电话号码”状态 (No.1信令呼出)
S_CALL_Ss1OutTxCallerID =43, // “发送主叫号码”状态 (No.1信令呼出)
S_CALL_Ss1OutWaitKB =44, // “等待接收KB信号”状态 (No.1信令呼出)
S_CALL_Ss1OutDetectA3p =45, // “检测A3p信号(脉冲)”状态 (No.1信令呼出)
S_FAX_Wait = S_CALL_STANDBY, // “空闲”状态 (传真通道)
S_FAX_ROUND = 50, // “状态转移过程中”状态 (传真通道)
S_FAX_PhaseA = 51, // “传真呼叫建立”状态 (传真通道)
S_FAX_PhaseB = 52, // “传真报文前处理”状态 (传真通道)
S_FAX_SendDCS = 53, // “传真发送中向接收方发送DCS信号”状态 (传真通道)
S_FAX_Train = 54, // “传真报文传输前传输训练”状态 (传真通道)
S_FAX_PhaseC = 55, // “传真报文传输中”状态 (传真通道)
S_FAX_PhaseD = 56, // “传真报文后处理”状态 (传真通道)
S_FAX_NextPage= 57, // “传真报文传输下一页”状态 (传真通道)
S_FAX_AllSent = 58, // “传真发送中报文传输结束”状态 (传真通道)
S_FAX_PhaseE = 59, // “传真呼叫释放”状态 (传真通道)
S_FAX_Reset = 60, // “复位MODEM”状态 (传真通道)
S_FAX_Init = 61, // “初始化MODEM”状态 (传真通道)
S_FAX_RcvDCS = 62, // “传真接收中接收发方的DCS信号”状态 (传真通道)
S_FAX_SendFTT = 63, // “传真接收中向发方发送训练失败信号FTT”状态 (传真通道)
S_FAX_SendCFR = 64, // “传真接收中向发方发送可接受的证实信号CFR”状态 (传真通道)
S_TUP_WaitPcmReset = 70, // “等待电路群复原”状态 (No.7信令TUP协议)
S_TUP_WaitSAM = 71, // “等待后续地址消息”状态 (No.7信令TUP协议)
S_TUP_WaitGSM = 72, // “等待GSM消息”状态 (No.7信令TUP协议)
S_TUP_WaitCLF = 73, // “等待主叫拆线信号”状态 (No.7信令TUP协议)
S_TUP_WaitPrefix = 74, // “等待接收入局字冠”状态 (No.7信令TUP协议)
S_TUP_WaitDialAnswer = 75, // “等待拨号结果”状态 (No.7信令TUP协议)
S_TUP_WaitRLG = 76, // “等待释放监护信号”状态 (No.7信令TUP协议)
S_TUP_WaitSetCallerID = 77,
S_ISDN_OUT_WAIT_NET_RESPONSE = 81, //ISDN:等待网络响应
S_ISDN_OUT_PLS_APPEND_NO = 82, //ISDN:请追加号码
S_ISDN_IN_CHK_CALL_IN = 83, //ISDN:检测到呼入
S_ISDN_IN_RCVING_NO = 84, //ISDN:正在接收号码
S_ISDN_IN_WAIT_TALK = 85, //ISDN:准备进入通话
S_ISDN_OUT_WAIT_ALERT = 86, //ISDN: 等待对方发提醒信号
S_ISDN_CALL_BEGIN = 87, //ISDN:呼出时为刚发起呼叫,呼入时为刚检测到呼入
S_ISDN_WAIT_HUANGUP = 88, //ISDN:等待释放完成
S_CALL_SENDRING = 100, //磁石模块正在发送振铃
S_SPY_STANDBY = S_CALL_STANDBY, //监控:空闲
S_SPY_RCVPHONUM = 105, //监控:接收号码
S_SPY_RINGING = S_CALL_RINGING, //监控:振铃
S_SPY_TALKING = S_CALL_TALKING, //监控:通话
S_SPY_SS1RESET = 110, //SS1监控:复原
S_SPY_SS1WAITBWDACK = 111, //SS1监控:等待后向证实
S_SPY_SS1WAITKB = 112, //SS1监控:等待KB
S_ISUP_WaitSAM = 120,// ISUP:等待后继号码
S_ISUP_WaitRLC = 121,// ISUP:等待释放完成消息
S_ISUP_WaitReset = 122,// ISUP:电路复原
S_ISUP_LocallyBlocked = 123,// ISUP:本地闭塞,即本地闭塞远端呼出
S_ISUP_RemotelyBlocked = 124,// ISUP:远端闭塞,即远端闭塞本端呼出
S_ISUP_WaitDialAnswer = 125,// ISUP:等待呼出结果
S_ISUP_WaitINF = 126,// ISUP:等待主叫号码
S_ISUP_WaitSetCallerID = 127,
};
#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 void VOID;
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;
typedef void *PVOID; // masked by cqb for Linux Transplant
#endif // end of #ifndef TYPEDEF_H
#endif // end of #ifndef OS_LINUX
#if !defined(EVENT_H__1CBCD5C7_E3D1_457d_A287_DD3F338090BC__INCLUDED_)
enum {
//语音识别
E_PROC_Recognize, //0x0000 //语音识别结束事件
//ISDN呼叫
E_CHG_ISDNStatus, //0x0001 //ISDN底层状态改变事件
//ss7
E_RCV_Ss7Msu, //0x0002 //SS7 MSU接收通知事件
E_CHG_Mtp3State, //0x0003 //Mtp3状态改变事件
//传真
E_CHG_FaxChState, //0x0004 //传真通道传真状态改变事件
E_CHG_FaxPages, //0x0005 //传真接收/发送页结束事件
E_PROC_FaxEnd, //0x0006 //传真结束事件
//PCM线路同步状态
E_CHG_PcmLinkStatus, //0x0007 //PCM线路同步状态改变事件
//录音通道
E_CHG_LineVoltage, //0x0008 //录音通道线路电压变化事件
//ss1
E_RCV_CAS, //0x0009 //接收到的CAS值有变化
E_RCV_R2, //0x000A //收到新的R2 值
//DTMF接收
E_PROC_WaitDTMF, //0x000B //WaitDTMF任务结束事件
E_CHG_RcvDTMF, //0x000C
//DTMF发送
E_PROC_SendDTMF, //0x000D //发送DTMF任务结束事件
//发送闪断
E_PROC_SendFlash, //0x000E //发送闪断任务结束事件
//放音
E_PROC_PlayEnd, //0x000F //放音任务结束
E_PROC_PlayFile, //0x0010 //文件放音进程指示
E_PROC_PlayFileList, //0x0011 //文件列表放音进程指示
E_PROC_PlayMem, //0x0012 //内存放音进程指示
//录音
E_PROC_RecordEnd, //0x0013 //录音任务结束
E_PROC_RecordFile, //0x0014 //文件录音任务进展指示
E_PROC_RecordMem, //0x0015 //内存录音任务进展指示
//FSK发送
E_PROC_SendFSK, //0x0016 //发送FSK任务结束事件
//FSK接收
E_PROC_RcvFSK, //0x0017 //RcvFSK任务结束
//呼叫控制
E_CHG_ChState, //0x0018 //通道状态发生变化
E_PROC_AutoDial, //0x0019 //AutoDial任务有进展
E_CHG_RemoteChBlock, //0x001A
E_CHG_RemotePCMBlock, //0x001B
E_SYS_ActualPickup, //0x001C //外线通道实际摘机
E_CHG_RingFlag, //0x001D //铃流电平变化
E_CHG_RingCount, //0x001E //振铃计数变化
E_CHG_CIDExBuf, //0x001F //CID扩展接收缓冲区变化
E_CHG_RxPhoNumBuf, //0x0020 //被叫号码接收缓冲区变化
E_CHG_PolarRvrsCount, //0x0021 //外线通道极性反转
E_SYS_RemotePickup, //0x0022 //模拟电话线相对能量算法检测被叫摘机
//座席
E_CHG_FlashCount, //0x0023 //flash计数发生变化
E_CHG_HookState, //0x0024 //Hook状态发生变化
//信号音检测
E_CHG_ToneAnalyze, //0x0025 //信号音分析结果变化事件
E_OverallEnergy, //0x0026
E_CHG_OvrlEnrgLevel, //0x0027 //全频能量标识输出事件
E_CHG_BusyTone, //0x0028 //忙音计数变化事件
E_CHG_BusyToneEx, //0x0029 //松散忙音变化
E_CHG_VocFxFlag, //0x002A //单音频信号音电平变化
E_CHG_ToneValue, //0x002B //信号音电平变化
E_CHG_RingEchoToneTime, //0x002C
E_CHG_PeakFrq, //0x002D //PeakFrq有变化
E_SYS_BargeIn, //0x003E //检测到BargeIn
E_SYS_NoSound, //0x002F //检测到NoSound
//定时器
E_SYS_TIMEOUT, //0x0030 //定时器事件
//信令监控
E_CHG_SpyState, //0x0031 //被监控电路的接续状态通知事件
E_CHG_SpyLinkStatus, //0x0032 //被监控的PCM链路状态通知事件
};
enum {
TIMER_ONE,
TIMER_PERIODIC
};
enum {
NO_EVENT, // 无事件方式
EVENT_POLLING, //事件轮询
EVENT_CALLBACK, //事件回调
EVENT_MESSAGE //windows消息
};
//文件放音进程指示输出参数类型.
enum {
PLAYPERCENT,
PLAYTIME,
DATABYTESPLAYED,
DATABYTESTOPLAY
};
//内存录放音进程指示输出参数类型.
enum {
END_HALF_BUFFER,
END_BUFFER,
MEM_OFFSET
};
//文件录音进程指示输出参数类型.
enum
{
RECORD_TIME,
RECORD_BYTES
};
typedef struct _MESSAGE_INFO
{
WORD wEventCode;
int nReference;
DWORD dwParam; //输出参数
} MESSAGE_INFO, *PMESSAGE_INFO;
typedef struct _EVENT_SET_INFO
{
DWORD dwWorkMode;
LPVOID lpHandlerParam;
DWORD dwOutCondition;
DWORD dwOutParamVal;
DWORD dwUser;
} EVENT_SET_INFO, *PEVENT_SET_INFO;
typedef struct tagFAX_FILE_SCT
{
char szFileName[256];
int nStartPage;
int nEndPage;
int nReserve1;
int nReserve2;
}FAX_FILE_SCT, *PFAX_FILE_SCT;
#endif
#endif // end SHCTI_CONST
#ifndef WINAPI
#define WINAPI
#endif
//++++START++++ appended by cqb for Linux Transplant
#ifndef CALLBACK
#define CALLBACK
#endif
//++++END++++ appended by cqb for Linux Transplant
#endif // end of #ifndef WIN32
#ifndef SHCTI_CALLBACK
#define SHCTI_CALLBACK
typedef void (WINAPI *RXDTMFHANDLER) (int ch, char cDtmf, int nDTStatus, PVOID pV);
typedef BOOL (WINAPI *RECORDMEMBLOCKHANDLER) (int ch, int nEndReason, PUCHAR pucBuf, DWORD dwStopOffset, PVOID pV);
typedef BOOL (WINAPI *PLAYMEMBLOCKHANDLER) (int ch, int nEndReason, PUCHAR pucBuf, DWORD dwStopOffset, PVOID pV);
typedef void (CALLBACK *LPRECTOMEM) (int ch, LPBYTE lpData, DWORD dwDataLen); //appended by xxb,2002.12.02
typedef int (CALLBACK *LPFNEVENTCALLBACK) (WORD wEvent, int nReference, DWORD dwParam, DWORD dwUser);
#endif
#ifdef __cplusplus
extern “C” {
#endif
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@ INITIALIZATION OPERATION @@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmStartCti(LPSTR lpSsmCfgFileName, LPSTR lpIndexCfgFileName);
int WINAPI SsmCloseCti();
void WINAPI SsmGetLastErrMsg(LPSTR szErrMsgBuf);
char *WINAPI SsmGetLastErrMsgA(void);
int WINAPI SsmGetLastErrCode();
int WINAPI SsmGetMaxUsableBoard();
int WINAPI SsmGetMaxCfgBoard();
int WINAPI SsmGetRxDtmfBufSize();
int WINAPI SsmGetAccreditId(int nBId);
int WINAPI SsmGetMaxCh(void);
int WINAPI SsmGetChType(int ch);
int WINAPI SsmSetMaxIdxSeg(WORD wMaxIdxSeg);
int WINAPI SsmLoadIndexData(int nSegNo, LPSTR pAlias, int nCodec, LPSTR pVocFile, long lStartPos, long lLen);
int WINAPI SsmFreeIndexData(int nSegNo);
int WINAPI SsmGetTotalIndexSeg();
int WINAPI SsmPauseCard();
int WINAPI SsmRestartCard();
int WINAPI SsmGetAccreditIdEx(int nBId);
int WINAPI SsmGetBoardModel(int nBId);
void WINAPI SsmSetDV(BOOL bEnable);
BOOL WINAPI SsmGetDV(void);
DWORD WINAPI SsmGetPciSerialNo(int nBId);
DWORD WINAPI SsmGetIntCount();
int WINAPI SsmSetListenMode(int nMode);
int WINAPI SsmStartBoard(int nBId); //add by wangjiang for cPCI 2003.4.23
int WINAPI SsmStopBoard(int nBId); //add by wangjiang for cPCI 2003.4.23
int WINAPI SsmGetChHdInfo(int ch, int * pnBId, int * pnBCh);
int WINAPI SsmGetAppChId(int * AppchId, int BrdId, int BrdChId); //add by JK Shi 2003.9.25
int WINAPI SsmSetChState(int ch, int nState);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PLAY OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmSetPlayVolume(int ch, int nVolume);
int WINAPI SsmSetDtmfStopPlay(int ch, BOOL bDspf);
int WINAPI SsmGetDtmfStopPlayFlag(int ch);
int WINAPI SsmSetBargeinStopPlay(int ch, BOOL bBispf);
int WINAPI SsmGetBargeinStopPlayFlag(int ch);
int WINAPI SsmPlayFile(int ch, LPSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwLen);
int WINAPI SsmStopPlay(int ch);
int WINAPI SsmStopPlayFile(int ch);
int WINAPI SsmPausePlay(int ch);
int WINAPI SsmRestartPlay(int ch);
int WINAPI SsmFastFwdPlay(int ch);
int WINAPI SsmFastBwdPlay(int ch);
int WINAPI SsmSetPlayTime(int ch, DWORD dwTime);
long WINAPI SsmGetPlayedTimeEx(int ch); // added by cqb for SHCTI030902
int WINAPI SsmGetPlayingFileInfo(int ch , int *pnFormat , long *pnTotalTime); // added by cqb for SHCTI030902
int WINAPI SsmSetPlayPrct(int ch, DWORD dwPercentage);
long WINAPI SsmGetPlayedTime(int ch);
int WINAPI SsmGetPlayedPercentage(int ch);
long WINAPI SsmGetDataBytesToPlay(int ch);
int WINAPI SsmCheckPlay(int ch);
int WINAPI SsmGetPlayType(int ch);
int WINAPI SsmPlayIndexString(int ch, LPSTR pszIdxStr);
int WINAPI SsmPlayIndexList(int ch, WORD wIdxListLen, PWORD pwIdxList);
int WINAPI SsmStopPlayIndex(int ch);
int WINAPI SsmClearFileList(int ch);
int WINAPI SsmAddToFileList(int ch, LPSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwLen);
int WINAPI SsmPlayFileList(int ch);
int WINAPI SsmStopPlayFileList(int ch);
int WINAPI SsmPlayMem(int ch, int nFormat, LPBYTE pBuf, DWORD dwBufSize, DWORD dwStartOffset, DWORD dwStopOffset);
int WINAPI SsmGetPlayOffset(int ch, DWORD* pdwPlayOffset);
int WINAPI SsmSetStopPlayOffset(int ch, DWORD dwStopPlayOffset);
int WINAPI SsmStopPlayMem(int ch);
int WINAPI SsmClearPlayMemList(void);
int WINAPI SsmAddToPlayMemList(LPBYTE pBuf, DWORD dwDataLen, int nFormat);
int WINAPI SsmPlayMemList(int ch, PWORD pMemList, WORD wMemListLen);
int WINAPI SsmStopPlayMemList(int ch);
//appended by xxb for 恒生,01.09,2002 +++++
int WINAPI SsmSetDTMFStopPlayCharSet(int ch, LPSTR lpstrDtmfCharSet);
int WINAPI SsmGetDTMFStopPlayCharSet(int ch, LPSTR lpstrDtmfCharSet);
int WINAPI SsmSetHangupStopPlayFlag(int ch, BOOL bHangupStopRecFlag );
int WINAPI SsmPlayMemBlock(int ch,
int nFormat,
LPBYTE pBuf,
DWORD dwBufSize,
PLAYMEMBLOCKHANDLER OnPlayMemBlockDone,
PVOID pV);
int WINAPI SsmStopPlayMemBlock(int ch);
//appended by xxb for 恒生,01.09,2002 -----
long WINAPI SsmGetDataBytesPlayed(int ch); //add by wangjiang 2002.12.25
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ RECORD OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmSetRecVolume(int ch, int nVolume);
int WINAPI SsmGetRecType(int ch);
int WINAPI SsmRecToFile(int ch, LPSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask);
int WINAPI SsmRecToFileA(int ch, LPSTR pszFileName, int nFormat,
DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
LPRECTOMEM pfnRecToMem);
int WINAPI SsmRecToFileEx(int ch, LPSTR pszFileName, int nFormat,
DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
BOOL bSaveToFileOnBargin, DWORD dwRollbackTime);
int WINAPI SsmPauseRecToFile(int ch);
int WINAPI SsmRestartRecToFile(int ch);
long WINAPI SsmGetRecTime(int ch);
long WINAPI SsmGetDataBytesToRecord(int ch);
int WINAPI SsmStopRecToFile(int ch);
int WINAPI SsmChkRecToFile(int ch);
int WINAPI SsmRecToMem(int ch, int nFormat, LPBYTE pBuf, DWORD dwBufSize, DWORD dwStartOffset);
int WINAPI SsmStopRecToMem(int ch);
long WINAPI SsmGetRecOffset(int ch);
int WINAPI SsmGetRecAGCSwitch(int ch);
int WINAPI SsmSetRecAGC(int ch, BOOL bEnable);
int WINAPI SsmQueryOpRecMixer(int ch);
int WINAPI SsmSetRecMixer(int ch, BOOL bEnRecMixer, int nMixerVolume);
int WINAPI SsmGetRecMixerState(int ch, int* pnEnRecMixer, int* pnMixerVolume);
int WINAPI SsmSetPrerecord(int ch, BOOL bEnable, int nMode, WORD wInsertTime, int nFormat);
int WINAPI SsmSetTruncateTail(int ch, DWORD dwTime);
long WINAPI SsmGetTruncateTailTime(int ch);
int WINAPI SsmGetPrerecordState(int ch, int* pnMode, PWORD pwInsertTime, int* pnFormat);
//appended by xxb for 恒生,01.09,2002 +++++
int WINAPI SsmSetDTMFStopRecCharSet(int ch, LPSTR lpstrDtmfCharSet);
int WINAPI SsmGetDTMFStopRecCharSet(int ch, LPSTR lpstrDtmfCharSet);
int WINAPI SsmSetHangupStopRecFlag(int ch, BOOL bHangupStopRecFlag );
int WINAPI SsmCheckRecord(int ch);
int WINAPI SsmRecordMemBlock(int ch, int nFormat, LPBYTE pBuf,
DWORD dwBufSize, RECORDMEMBLOCKHANDLER OnRecMemBlockDone, PVOID pV);
int WINAPI SsmStopRecordMemBlock(int ch);
//appended by xxb for 恒生,01.09,2002 -----
int WINAPI SsmSetNoModuleChBusRec(int ch, int nRec);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ RxDTMF OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmEnableRxDtmf(int ch, BOOL bRun);
int WINAPI SsmClearRxDtmfBuf(int ch);
int WINAPI SsmGetDtmfStr(int ch, LPSTR pszDtmf);
char* WINAPI SsmGetDtmfStrA(int ch);
int WINAPI SsmGetRxDtmfLen(int ch);
int WINAPI SsmGet1stDtmf(int ch, char* pcDtmf);
int WINAPI SsmGet1stDtmfClr(int ch, char* pcDtmf);
int WINAPI SsmGetLastDtmf(int ch, char* pcDtmf);
int WINAPI SsmSetWaitDtmf(int ch, WORD wTimeOut, WORD wMaxLen, char cEndChar, BOOL bWithEndChar);
int WINAPI SsmChkWaitDtmf(int ch, LPSTR pszDtmf);
int WINAPI SsmCancelWaitDtmf(int ch);
int WINAPI SsmSetWaitDtmfEx(int ch, WORD wTimeOut, WORD wMaxLen, char cEndChar, BOOL bWithEndChar);
//appended by xxb for 恒生,01.09,2002 +++++
// 设置接收DTMF字符回调函数:
int WINAPI SsmSetRxDtmfHandler(int ch, RXDTMFHANDLER OnRcvDtmf, PVOID pV);
//appended by xxb for 恒生,01.09,2002 -----
int WINAPI SsmSetWaitDtmfExA(int ch, WORD wTimeOut, WORD wMaxLen, char* szEndChar, BOOL bWithEndChar);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@ TXDTMF OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmQueryTxDtmf(int ch, LPSTR pszDtmf);
int WINAPI SsmQueryTxFlash(int ch, LPSTR pszDtmf);
int WINAPI SsmSetTxDtmfPara(int ch, WORD wOnTime, WORD wOffTime);
int WINAPI SsmGetTxDtmfPara(int ch, PWORD pwOnTime, PWORD pwOffTime);
int WINAPI SsmTxDtmf(int ch, LPSTR pszDtmf);
int WINAPI SsmStopTxDtmf(int ch);
int WINAPI SsmChkTxDtmf(int ch);
int WINAPI SsmTxFlash(int ch, WORD time);
int WINAPI SsmChkTxFlash(int ch);
int WINAPI SsmSetTxFlashCharTime(int ch, WORD time); //appended by LM for 上海刘锦宏,2001.11.02
int WINAPI SsmGetTxFlashCharTime(int ch); //appended by LM for 上海刘锦宏,2001.11.02
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@ INTER-CH OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmSetLocalFlashTime(int nFlashTime);
int WINAPI SsmSetASDT(int ch, BOOL bEnAutoSendDialTone);
int WINAPI SsmGetASDT(int ch);
int WINAPI SsmSetASTOD(int ch, BOOL bEnAutoSendDialTone);
int WINAPI SsmGetASTOD(int ch);
int WINAPI SsmGetFlashCount(int ch);
int WINAPI SsmClearFlashCount(int ch);
int WINAPI SsmGetHookState(int ch);
int WINAPI SsmStartRing(int ch);
int WINAPI SsmStopRing(int ch);
int WINAPI SsmStartRingWithFskCID(int ch, LPSTR pBuf, DWORD dwMaxBit, DWORD dw1stRingOffDelay);
int WINAPI SsmStartRingWithCIDStr(int ch, LPSTR pBuf, DWORD dwLen, DWORD dw1stRingOffDelay);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@ SEND TONE OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmQueryOpSendTone(int ch);
int WINAPI SsmSendTone(int ch, int nToneType);
int WINAPI SsmSendToneEx(int ch, DWORD dwOnTime, DWORD dwOffTime);
int WINAPI SsmStopSendTone(int ch);
int WINAPI SsmSetTxTonePara(int ch, int nFreq1, int nVolume1, int nFreq2, int nVolume2);
int WINAPI SsmGetTxTonePara(int ch, int* pnFreq1, int* pnVolume1, int* pnFreq2, int* pnVolume2);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@ TONE ANALYZE OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmQueryOpToneAnalyze(int ch);
int WINAPI SsmClearToneAnalyzeResult(int ch);
int WINAPI SsmStartToneAnalyze(int ch);
int WINAPI SsmCloseToneAnalyze(int ch);
long WINAPI SsmGetOverallEnergy(int ch);
int WINAPI SsmGetVocFxFlag(int ch, int nSelFx, BOOL bClear);
int WINAPI SsmGetToneAnalyzeResult(int ch);
int WINAPI SsmGetBusyToneLen(int ch);
int WINAPI SsmGetBusyToneCount(int ch);
int WINAPI SsmGetRingEchoToneTime(int ch);
//++++START++++ appended by CXG for 放宽背靠背忙音检测条件,2001.11.22
int WINAPI SsmGetBusyToneEx(int ch);
//++++END++++ appended by LM for 放宽背靠背忙音检测条件,2001.11.22
int WINAPI SsmSetTonePara(int ch, WORD wToneFreq1,WORD wToneBW1,WORD wToneFreq2,WORD wToneBW2,DWORD dwIsToneRatio);
int WINAPI SsmSetIsDialToneDtrTime(int ch, WORD wIsDialToneDtrTime);
int WINAPI SsmSetBusyTonePeriod(int ch, WORD wBusyTonePeriod);
int WINAPI SsmSetIsBusyToneDtrCnt(int ch, WORD wIsBusyToneDtrCnt);
int WINAPI SsmSetRingEchoTonePara(int ch, WORD wRingEchoOnTime,WORD wRingEchoOffTime);
int WINAPI SsmSetVoiceFxPara(int ch, WORD wSelFx, WORD wFx,WORD wFxBW, DWORD dwIsVocFxRatio, WORD wIsVocFxDtrTime);
int WINAPI SsmSetVoiceOnDetermineTime(int ch, WORD wIsVocDtrTime);
int WINAPI SsmSetMinVocDtrEnergy(int ch, DWORD dwMinVocDtrEnergy);
int WINAPI SsmGetTonePara(int ch, PWORD pwToneFreq1, PWORD pwToneBW1,PWORD pwToneFreq2,PWORD pwToneBW2,PDWORD pdwIsToneRatio);
int WINAPI SsmGetIsDialToneDtrTime(int ch, PWORD pwIsDialToneDtrTime);
int WINAPI SsmGetBusyTonePeriod(int ch, PWORD pwBusyTonePeriod);
int WINAPI SsmGetIsBusyToneDtrCnt(int ch, PWORD pwIsBusyToneDtrCnt);
int WINAPI SsmGetRingEchoTonePara(int ch, PWORD pwRingEchoOnTime, PWORD pwRingEchoOffTime);
int WINAPI SsmGetIsNoVocDtrmTime(int ch, PWORD pwIsNoVocDtrmTime);
int WINAPI SsmGetVoiceFxPara(int ch, WORD wSelFx, PWORD pwFx,PWORD pwFxBW, PDWORD pdwIsVocFxRatio, PWORD pwIsVocFxDtrTime);
int WINAPI SsmGetVoiceOnDetermineTime(int ch, PWORD pwIsVocDtrTime);
int WINAPI SsmGetMinVocDtrEnergy(int ch, PDWORD pdwMinVocDtrEnergy);
int WINAPI SsmQueryOpPeakFrqDetect(int ch);
int WINAPI SsmSetPeakFrqDetectBW(int ch, WORD nPeakBW);
int WINAPI SsmGetPeakFrqDetectBW(int ch);
long WINAPI SsmGetPeakFrqEnergy(int ch);
int WINAPI SsmGetPeakFrq(int ch);
int WINAPI SsmStart2ndToneAnalyzer(int ch, BOOL bEn);
int WINAPI SsmGet2ndToneAnalyzerState(int ch);
int WINAPI SsmSet2ndTonePara(int ch, WORD wToneFreq1,WORD wToneBW1,WORD wToneFreq2,WORD wToneBW2,DWORD dwIsToneRatio);
int WINAPI SsmGet2ndTonePara(int ch, PWORD pwToneFreq1, PWORD pwToneBW1,PWORD pwToneFreq2,PWORD pwToneBW2,PDWORD pdwIsToneRatio);
int WINAPI SsmGet2ndToneAnalyzeResult(int ch);
int WINAPI SsmClear2ndToneAnalyzeResult(int ch);
int WINAPI SsmGet2ndBusyToneLen(int ch);
int WINAPI SsmGet2ndBusyToneCount(int ch);
int WINAPI SsmSet2ndBusyTonePeriod(int ch, WORD wBusyTonePeriod);
int WINAPI SsmGet2ndBusyTonePeriod(int ch, PWORD pwBusyTonePeriod);
int WINAPI SsmSet2ndIsBusyToneDtrCnt(int ch, WORD wIsBusyToneDtrCnt);
int WINAPI SsmGet2ndIsBusyToneDtrCnt(int ch, PWORD pwIsBusyToneDtrCnt);
int WINAPI SsmSet2ndIsDialToneDtrTime(int ch, WORD wIsDialToneDtrTime);
int WINAPI SsmGet2ndIsDialToneDtrTime(int ch, PWORD pwIsDialToneDtrTime);
int WINAPI SsmSet2ndRingEchoTonePara(int ch, WORD wRingEchoOnTime,WORD wRingEchoOffTime);
int WINAPI SsmGet2ndRingEchoTonePara(int ch, PWORD pwRingEchoOnTime, PWORD pwRingEchoOffTime);
int WINAPI SsmSetBusyTonePeriodEx(int ch, int nType, WORD wMax, PWORD pwPeriod); //appended by LM for 上海刘锦宏,2001.11.02
int WINAPI SsmGetBusyTonePeriodEx(int ch, int nType, PWORD pwPeriod); //appended by LM for 上海刘锦宏,2001.11.02
WORD WINAPI SsmGetToneValue(int ch);
int WINAPI SsmSetToneValue(int ch,WORD value);
int WINAPI SsmGetOverallEnergyAllCh(int nBeginCh, int nChNum, PDWORD pdwEnergyTable); //add by wangjiang 2002.12.28 for open conference
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@ BARGEIN OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmSetNoSoundDtrmTime(int ch, DWORD dwIsNoSoundDtrTime);
int WINAPI SsmSetIsBargeInDtrmTime(int ch, WORD wIsBargeInDtrmTime);
int WINAPI SsmSetBargeInSens(int ch, int nBargeInSens);
long WINAPI SsmGetNoSoundTime(int ch);
long WINAPI SsmGetNoSoundDtrmTime(int ch);
int WINAPI SsmGetIsBargeInDtrmTime(int ch);
int WINAPI SsmGetBargeInSens(int ch);
int WINAPI SsmDetectBargeIn(int ch);
int WINAPI SsmDetectNoSound(int ch);
//设置模拟电话线相对能量被叫摘机检测参数
//返回值 0:操作成功, -1:操作失败
int WINAPI SsmSetCalleeHookDetectP(int ch, // 通道号
WORD wMulti, //预定倍数
WORD wValidTime); //有效时间
//读取模拟电话线相对能量被叫摘机检测参数
//返回值 0:操作成功, -1:操作失败
int WINAPI SsmGetCalleeHookDetectP(int ch, // 通道号
PWORD pwMulti, //预定倍数
PWORD pwValidTime); //有效时间
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@ RING DETECT OPERATION @@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmQueryOpRingDetect(int ch);
int WINAPI SsmGetRingFlag(int ch);
int WINAPI SsmGetRingCount(int ch);
int WINAPI SsmClearRingCount(int ch);
int WINAPI SsmChkOpCallerId(int ch);
int WINAPI SsmGetCallerId(int ch, LPSTR szCallerId);
char* WINAPI SsmGetCallerIdA(int ch);
int WINAPI SsmGetCallerIdEx(int ch, LPSTR szCallerIdEx);
int WINAPI SsmClearCallerId(int ch);
int WINAPI SsmClearCallerIdEx(int ch);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@ CALL OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmPickup(int ch);
int WINAPI SsmCheckActualPickup(int ch);
int WINAPI SsmSetPickupNow(int ch, BOOL bFlag);
int WINAPI SsmHangup(int ch);
int WINAPI SsmAutoDial(int ch, LPSTR szPhoNum);
int WINAPI SsmAutoDialEx(int ch, LPSTR szPhoNum , WORD wParam);
int WINAPI SsmChkAutoDial(int ch);
int WINAPI SsmGetAutoDialFailureReason(int ch);
int WINAPI SsmGetBlockReason(int ch);
int WINAPI SsmGetChState(int ch);
int WINAPI SsmSetPlayDest(int ch, int nSelDest);
int WINAPI SsmSetRecBack(int ch, int nRecBack);
int WINAPI SsmSearchIdleCallOutCh(WORD wSearchMode, DWORD dwPrecedence);
int WINAPI SsmSetAutoCallDirection(int ch, BOOL bEnAutoCall, int nDirection);
int WINAPI SsmGetAutoCallDirection(int ch, int* pnDirection);
int WINAPI SsmAppendPhoNum(int ch, LPSTR szPhoNum);
int WINAPI SsmGetPendingReason(int ch);
long WINAPI SsmGetChStateKeepTime(int ch);
int WINAPI SsmGetPhoNumStr(int ch, LPSTR pszPhoNum);
char* WINAPI SsmGetPhoNumStrA(int ch);
int WINAPI SsmGetPhoNumLen(int ch);
int WINAPI SsmGet1stPhoNumStr(int ch, LPSTR pszPhoNum);
char* WINAPI SsmGet1stPhoNumStrA(int ch);
int WINAPI SsmGet1stPhoNumLen(int ch);
int WINAPI SsmEnableAutoSendKB(int ch, BOOL bEnable);
int WINAPI SsmGetAutoSendKBFlag(int ch);
int WINAPI SsmSetKB(int ch, BYTE btSigKB);
int WINAPI SsmSetKD(int ch, BYTE btSigKD);
int WINAPI SsmSetKA(int ch, BYTE btSigKA);
int WINAPI SsmSetTxCallerId(int ch, LPSTR pszTxCallerId);
int WINAPI SsmGetTxCallerId(int ch, LPSTR pszTxCallerId);
int WINAPI SsmGetKA(int ch);
int WINAPI SsmGetKB(int ch);
int WINAPI SsmGetKD(int ch);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Following functions are newly appended by cxg for applications using SS7
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int WINAPI SsmBlockLocalCh(int ch);
int WINAPI SsmUnblockLocalCh(int ch);
int WINAPI SsmQueryLocalChBlockState(int ch, PDWORD pdwBlockState);
int WINAPI SsmBlockLocalPCM(int nLocalPcmNo);
int WINAPI SsmUnblockLocalPCM(int nLocalPcmNo);
int WINAPI SsmQueryLocalPCMBlockState(int nLocalPcmNo, PDWORD pdwBlockState);
int WINAPI SsmQueryOpBlockRemoteCh(int ch);
int WINAPI SsmBlockRemoteCh(int ch);
int WINAPI SsmUnblockRemoteCh(int ch);
int WINAPI SsmGetRemoteChBlockStatus(int ch);
int WINAPI SsmBlockRemotePCM(int nLocalPcmNo, DWORD dwBlockMode);
int WINAPI SsmUnblockRemotePCM(int nLocalPcmNo, DWORD dwUnblockMode);
int WINAPI SsmGetRemotePCMBlockStatus(int nLocalPcmNo, DWORD dwBlockMode);
BOOL WINAPI SsmGetWaitAutoDialAnswerTime(WORD * pwSeconds);
BOOL WINAPI SsmSetWaitAutoDialAnswerTime(WORD wSeconds);
//Ver3.5.26.
//+++BEGIN+++ Added by xxb for 模拟电话线相对能量算法检测被叫摘机不适用于调用SsmTxDtmf()外拨及二次拨号,2003.3.7
int WINAPI SsmStartPickupAnalyze(int ch);
int WINAPI SsmGetPickup(int ch);
//+++END+++ Added by xxb for 模拟电话线相对能量算法检测被叫摘机不适用于调用SsmTxDtmf()外拨及二次拨号,2003.3.7
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@ ADAPTIVE FILTER OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmQueryOpEchoCanceller(int ch);
int WINAPI SsmSetEchoCanceller(int ch, BOOL bRun);
int WINAPI SsmGetEchoCancellerState(int ch);
int WINAPI SsmSetEchoCancellerStudy(int ch, BOOL bRun);
int WINAPI SsmGetEchoCancellerStudyState(int ch);
int WINAPI SsmGetEchoCancellerRatio(int ch);
int WINAPI SsmSaveEchoCancellerPara(int ch);
int WINAPI SsmSetEchoCancelDelaySize(int ch,WORD wSize);
WORD WINAPI SsmGetEchoCancelDelaySize(int ch);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@ CT-BUS OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//int WINAPI SsmGetChBusInfo(int ch, PBUS_OP* p);
int WINAPI SsmListenTo(int ch1,int ch2);
int WINAPI SsmListenToEx(int ch1, int nVolume1, int ch2);
int WINAPI SsmStopListenTo(int ch1,int ch2);
int WINAPI SsmTalkWith(int ch1,int ch2);
int WINAPI SsmTalkWithEx(int ch1, int nVlm1, int ch2, int nVlm2);
int WINAPI SsmStopTalkWith(int ch1,int ch2);
void WINAPI PlayListen(DWORD dwBId, DWORD ch);
void WINAPI PlayListenNew(DWORD dwSpeakerCh, DWORD dwMonitorCh);
void WINAPI StopListen(DWORD dwBId);
void WINAPI StopListenNew(DWORD dwSpeakerCh);
int WINAPI SsmLinkFrom(int ch1,int ch2); //add by wangjiang 2002.12.28 for open conference
int WINAPI SsmStopLinkFrom(int ch1,int ch2); //add by wangjiang 2002.12.28 for open conference
int WINAPI SsmLinkFromEx(int ch1, int nVolume1, int ch2); //add by wangjiang 2002.12.28 for open conference
int WINAPI SsmLinkFromAllCh(int ch, int nVolume, int*nListenerTable,int nListenerNum); //add by wangjiang 2002.12.28 for open conference
int WINAPI SsmUnLinkFromAllCh(int ch, int*nListenerTable,int nListenerNum); //add by wangjiang 2002.12.28 for open conference
int WINAPI SsmLinkToBus(int ch,int ts);
int WINAPI SsmUnLinkToBus(int ch,int ts);
int WINAPI SsmLinkFromBus(int ts,int ch);
int WINAPI SsmLinkFromBusEx(int ts, int ch, int vlm);
int WINAPI SsmUnLinkFromBus(int ts,int ch);
int WINAPI SsmListenToPlay(int ch1, int vlm1, int ch2);
int WINAPI SsmUnListenToPlay(int ch1, int ch2);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CONFERENCE OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
int WINAPI SsmCreateConfGroup(int nMaxMember, int nMaxSpeaker, int nMaxSpeaking, int nMaxSilenceTime);
int WINAPI SsmFreeConfGroup(int nGrpId);
int WINAPI SsmJoinConfGroup(int nGrpId, int ch, WORD wJoinMode, int nMixerVolume, BOOL bCreateAlways, BOOL bExitGrpAlways);
int WINAPI SsmExitConfGroup(int ch, BOOL bFreeGrpAlways);
int WINAPI SsmGetConfCfgInfo(PWORD pwMaxMember, PWORD pwMaxSpeaker, PWORD pwMaxSpeaking, PWORD pwMaxSilenceTime);
int WINAPI SsmGetTotalConfGroup();
int WINAPI SsmGetConfGrpId(int* pnGrpId);
int WINAPI SsmGetConfGrpCfgInfo(int nGrpId, PWORD pwMaxMember, PWORD pwMaxSpeaker, PWORD pwMaxSpeaking, PWORD pwMaxSilenceTime);
int WINAPI SsmGetConfGrpInfo(int nGrpId, PWORD pwTotalMember, PWORD pwTotalSpeaker, PWORD pwTotalSpeaking);
int WINAPI SsmGetConfGrpMmbrId(int nGrpId, int* pnMmbrId);
int WINAPI SsmGetConfGrpMmbrInfo(int nGrpId, int nMmbrId, int* pnAppCh, PWORD pwJoinMode, PWORD pwIsSpeaking, PDWORD pdwSilenceTime);
int WINAPI SsmGetConfChInfo(int ch, int * pnGrpId, int * pnMmbrId, PWORD pwJoinMode, PWORD pwIsSpeaking, PDWORD pdwSilenceTime);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@ DRIVER Ver. 1.x COMPATIBLE FUNCTIONS @@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DWORD WINAPI InitCard(DWORD add1,DWORD add2,DWORD add3,DWORD add4,DWORD add5,
DWORD add6,DWORD