00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _BOGOTEL_BGTRT_H
00011 #define _BOGOTEL_BGTRT_H
00012
00013 #include <string>
00014 #include <map>
00015 #include <set>
00016
00017 #include <windows.h>
00018 #include <gclib.h>
00019
00020 #include <boost/thread/mutex.hpp>
00021
00022 #include <bogotel/EvtQueue.h>
00023 #include <bogotel/DlgEvtHdlr.h>
00024
00025 namespace bogotel {
00026
00027 typedef std::map<long, void*, std::less<long> > MAP_LONG2PTR;
00028 typedef std::set<std::string> SET_STRING;
00029
00030 class CMsg;
00031 class CSignalDev;
00032
00033 class CBgtRt
00034 {
00035 private:
00036 CBgtRt();
00037 static CBgtRt* _instance;
00038
00039 int m_iGcResult;
00040 int m_iCcLibId;
00041 long m_lCcLibResult;
00042
00043 public:
00048 static CBgtRt* Instance();
00049 static int resultMsg(int iCcLibId, long lResultCode, char **pszMsg);
00050 static int resultMsg(int iGcValue, char** pszGcMsg, int iCcValue, char** pszCcMsg);
00051 static int ccLibIDToName(long lCcLibId, char**pszCcLibName);
00052
00053 virtual ~CBgtRt();
00054 int setMode(long parmid, void *valuep);
00055 int enableHandler(long dev, unsigned long event_type, CDlgEvtHdlr::ptr_evt_hndlr hdlr);
00056 int disableHandler(long dev, unsigned long event_type, CDlgEvtHdlr::ptr_evt_hndlr hdlr);
00057 int openSignalDev(LINEDEV *linedevp, char *devicename, void *usrattr);
00058 int openVoiceDev(int *piHandle, const char *szName);
00059 int getVoiceTimeslot(int iVoiceHandle, long *plTimeslot);
00060 int getSignalTimeslot(LINEDEV hSignal, SC_TSINFO *pScTsInfo);
00061 int listenVoiceTimeslot(LINEDEV hSignal, SC_TSINFO *pScTsInfo);
00062 int listenSignalTimeslot(LINEDEV lVoiceHandle, long lTimeslot);
00063 int registerCrn(CSignalDev *pSig, CRN crn);
00064 int deregisterCrn(CRN crn);
00065 int addEvent(CEvt *pEvt);
00066 int waitEvent(long lTimeout, long *plRemaining);
00067 int incomingMsg(CMsg *pMsg);
00068 int getEvtUsrAttr(unsigned long evt_handle, void **ppData);
00069 int getEvtDevHandle(unsigned long evt_handle, long *plHandle);
00070 int getEvtVoiceDevHandle(unsigned long evt_handle, long *plHandle);
00071 int getEvtSignalDevHandle(unsigned long evt_handle, long *plHandle);
00072 int getEvtType(unsigned long evt_handle, long *plType);
00073 int getEvtFlags(unsigned long *pulFlags);
00074 int getEvtCrn(CRN *pCrn);
00075 int putEvt(long dev, unsigned long event_type, long len, void *pData, long err);
00076 int getUsrAttr(LINEDEV linedev, void **usr_attrp);
00077 int waitCall(LINEDEV hSignal, CRN *pCrn, int iTimeout, unsigned long ulMode);
00078 int makeCall(LINEDEV hSignal, CRN *pCrn, char *szNumber, GC_MAKECALL_BLK *pMakecall, int iTimeout, unsigned long ulMode);
00079 int setCallingNum(LINEDEV hSignal, char *szCallingNum);
00080 int getDnis(CRN crn, char *szDnis);
00081 int getAni(CRN crn, char *szAni);
00082 int acceptCall(CRN crn, int iRings, unsigned long ulMode);
00083 int answerCall(CRN crn, int iRings, unsigned long ulMode);
00084 int dropCall(CRN crn, int iCause, unsigned long ulMode);
00085 int releaseCall(CRN crn, unsigned long ulMode);
00086 int resultValue(METAEVENT *pMetaEvent, int *piGcResult, int *pCcLibId, long *pCcLibResult);
00087 int errorValue(int *piGcResult, int *pCcLibId, long *pCcLibResult);
00088 int resetLineDev(LINEDEV hSignal, unsigned long ulMode);
00089
00090 int mediaFileOpen(int *piHandle, const char *szFilename, int iFlags);
00091 int mediaFileClose(int iHandle);
00092 int mediaFilePlay(int iVoiceHandle,DX_IOTT *pIott,const DV_TPT *pTpt, const DX_XPB *pXpb,unsigned short usMode);
00093 int stopVoice(int iVoiceHandle, unsigned short usMode);
00094 int clearDigitBuffer(int iVoiceHandle);
00095 int getDigit(int iVoiceHandle, const DV_TPT *pTpt, DV_DIGIT *pDigit, unsigned short usMode);
00096 int dial(int iHandle, const char *szDialStr, const DX_CAP *pCAP, unsigned short usMode);
00097 int getTermMsk(INT iVoiceHandle, long *lMask);
00098
00099 void setGcResult(int iGcResult);
00100 void setCcLibId(int m_iCcLibId);
00101 void setCcLibResult(long m_lCcLibResult);
00102
00103 protected:
00104 CDlgEvtHdlr* m_pDlgHdlr;
00105 CEvtQueue* m_pQueue;
00106 CEvt* m_pLatestEvt;
00107 long m_lMode;
00108 HANDLE m_hEvent;
00109 MAP_LONG2PTR m_mapVoiceDev;
00110 MAP_LONG2PTR m_mapSignalDev;
00111 MAP_LONG2PTR m_mapCrn2SignalDev;
00112 MAP_LONG2PTR m_mapScTsVoiceDev;
00113 MAP_LONG2PTR m_mapScTsSignalDev;
00114 SET_STRING m_setVoiceDevNames;
00115 SET_STRING m_setSignalDevNames;
00116 long m_lNextSCbusTimeslot;
00117 long m_lNextSignalHandle;
00118 long m_lNextVoiceHandle;
00119
00120
00121 boost::mutex m_mtxFilenameMap;
00122
00123 static const std::string astrCcResultMsgs[1];
00124 static const std::string astrGcResultMsgs[2];
00125 static const std::string astrCcLibNames[1];
00126 };
00127
00128 }
00129
00130 #endif // ! _BOGOTEL_BGTRT_H