00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <stdio.h>
00011 #include <stdlib.h>
00012
00013 #include <bogotel/Portability.h>
00014 #include <bogotel/BgtRt.h>
00015 #include <bogotel/BgtErrors.h>
00016
00017 #include <bogotel/LibBogoTel.h>
00018
00020
00022
00023 namespace bogotel {
00024
00025 LIBBOGOTEL_API int sr_enbhdlr(long dev, unsigned long event_type, long (*hdlr)(unsigned long parm))
00026 {
00027 return CBgtRt::Instance()->enableHandler(dev, event_type, hdlr);
00028 }
00029
00030 LIBBOGOTEL_API int sr_dishdlr(long dev, unsigned long event_type, long (*hdlr)(unsigned long parm))
00031 {
00032 return CBgtRt::Instance()->disableHandler(dev, event_type, hdlr);
00033 }
00034
00035 LIBBOGOTEL_API int sr_setparm(long parmid, void* valuep)
00036 {
00037 return CBgtRt::Instance()->setMode(parmid, valuep);
00038 }
00039
00040 LIBBOGOTEL_API int sr_waitevt(long tmout, long *plRemaining)
00041 {
00042 return CBgtRt::Instance()->waitEvent(tmout, plRemaining);
00043 }
00044
00045 LIBBOGOTEL_API int sr_getevtdatap(unsigned long evt_handle, void **ppData)
00046 {
00047 (*ppData) = NULL;
00048 return resultSUCCESS;
00049 }
00050
00051 LIBBOGOTEL_API int sr_getevtdev(unsigned long evt_handle, long *plHandle)
00052 {
00053 return CBgtRt::Instance()->getEvtDevHandle(evt_handle, plHandle);
00054 }
00055
00056 LIBBOGOTEL_API int sr_getevttype(unsigned long evt_handle, long *plType)
00057 {
00058 return CBgtRt::Instance()->getEvtType(evt_handle, plType);
00059 }
00060
00061 LIBBOGOTEL_API int sr_getevtlen(unsigned long evt_handle, long *plLen)
00062 {
00063 (*plLen) = 0;
00064 return resultSUCCESS;
00065 }
00066
00067 LIBBOGOTEL_API int sr_putevt(long dev, unsigned long event_type, long len, void *pData, long err)
00068 {
00069 return CBgtRt::Instance()->putEvt(dev, event_type, len, pData, err);
00070 }
00071
00073
00075
00076 LIBBOGOTEL_API int dx_open(int *piHandle, const char *szName)
00077 {
00078 return CBgtRt::Instance()->openVoiceDev(piHandle, szName);
00079 }
00080
00081 LIBBOGOTEL_API int dx_getxmitslot(int iVoiceHandle, long *plTimeslot)
00082 {
00083 return CBgtRt::Instance()->getVoiceTimeslot(iVoiceHandle, plTimeslot);
00084 }
00085
00086 LIBBOGOTEL_API int dx_listen(int iVoiceHandle, long lTimeslot)
00087 {
00088 return CBgtRt::Instance()->listenSignalTimeslot(iVoiceHandle, lTimeslot);
00089 }
00090
00091 LIBBOGOTEL_API int dx_fileopen(int *iHandle, const char *szFilename, int iFlags)
00092 {
00093 return CBgtRt::Instance()->mediaFileOpen(iHandle, szFilename, iFlags);
00094 }
00095
00096 LIBBOGOTEL_API int dx_fileclose(int iHandle)
00097 {
00098 return CBgtRt::Instance()->mediaFileClose(iHandle);
00099 }
00100
00101 LIBBOGOTEL_API int dx_playiottdata(int iVoiceHandle,DX_IOTT *pIott,const DV_TPT *pTpt, const DX_XPB *pXpb,unsigned short usMode)
00102 {
00103 return CBgtRt::Instance()->mediaFilePlay(iVoiceHandle,pIott,pTpt,pXpb,usMode);
00104 }
00105
00106 LIBBOGOTEL_API int dx_stopch(int iVoiceHandle, unsigned short usMode)
00107 {
00108 return CBgtRt::Instance()->stopVoice(iVoiceHandle,usMode);
00109 }
00110
00111 LIBBOGOTEL_API int dx_clrdigbuf(int iVoiceHandle)
00112 {
00113 return CBgtRt::Instance()->clearDigitBuffer(iVoiceHandle);
00114 }
00115
00116 LIBBOGOTEL_API int dx_getdig(int iVoiceHandle, const DV_TPT *pTpt, DV_DIGIT *pDigit, unsigned short usMode)
00117 {
00118 return CBgtRt::Instance()->getDigit(iVoiceHandle, pTpt, pDigit, usMode);
00119 }
00120
00121 LIBBOGOTEL_API int dx_dial(int iHandle, const char *pDialStr, const DX_CAP *pCAP, unsigned short usMode)
00122 {
00123 return CBgtRt::Instance()->dial(iHandle, pDialStr, pCAP, usMode);
00124 }
00125
00126 LIBBOGOTEL_API int ATDX_TERMMSK(INT iVoiceHandle, long *lMask)
00127 {
00128 return CBgtRt::Instance()->getTermMsk(iVoiceHandle, lMask);
00129 }
00130
00132
00134
00135 LIBBOGOTEL_API int gc_Start()
00136 {
00137 if (CBgtRt::Instance() == NULL) {
00138 return resultERROR;
00139 }
00140 return resultSUCCESS;
00141 }
00142
00143 LIBBOGOTEL_API int gc_Stop()
00144 {
00145
00146 delete CBgtRt::Instance();
00147 return resultSUCCESS;
00148 }
00149
00150 LIBBOGOTEL_API int gc_OpenEx(LINEDEV *pHandle, char *szName, void *pUsrattr)
00151 {
00152 return CBgtRt::Instance()->openSignalDev(pHandle, szName, pUsrattr);
00153 }
00154
00155 LIBBOGOTEL_API int gc_Open(LINEDEV *pHandle, char *szName)
00156 {
00157 return CBgtRt::Instance()->openSignalDev(pHandle, szName, NULL);
00158 }
00159
00160 LIBBOGOTEL_API int gc_GetMetaEvent(METAEVENT *pMetaevent)
00161 {
00162 int rc;
00163 if ((rc = CBgtRt::Instance()->getEvtVoiceDevHandle(0, &pMetaevent->evtdev)) != resultSUCCESS) {
00164 return rc;
00165 }
00166 if ((rc = CBgtRt::Instance()->getEvtSignalDevHandle(0, &pMetaevent->linedev)) != resultSUCCESS) {
00167 return rc;
00168 }
00169 if ((rc = CBgtRt::Instance()->getEvtUsrAttr(0, &pMetaevent->usrattr)) != resultSUCCESS) {
00170 return rc;
00171 }
00172 if ((rc = CBgtRt::Instance()->getEvtType(0, &pMetaevent->evttype)) != resultSUCCESS) {
00173 return rc;
00174 }
00175 if ((rc = CBgtRt::Instance()->getEvtFlags(&pMetaevent->flags)) != resultSUCCESS) {
00176 return rc;
00177 }
00178 if ((rc = CBgtRt::Instance()->getEvtCrn(&pMetaevent->crn)) != resultSUCCESS) {
00179 return rc;
00180 }
00181 pMetaevent->evtdatap = NULL;
00182 pMetaevent->evtlen = 0;
00183 return resultSUCCESS;
00184 }
00185
00186 LIBBOGOTEL_API int gc_GetCRN(CRN *pCrn, METAEVENT *pMetaevent)
00187 {
00188 (*pCrn) = pMetaevent->crn;
00189 return resultSUCCESS;
00190 }
00191
00192 LIBBOGOTEL_API int gc_GetXmitSlot(LINEDEV hSignal, SC_TSINFO *pScTsInfo)
00193 {
00194 return CBgtRt::Instance()->getSignalTimeslot(hSignal, pScTsInfo);
00195 }
00196
00197 LIBBOGOTEL_API int gc_Listen(LINEDEV hSignal, SC_TSINFO *pScTsInfo)
00198 {
00199 return CBgtRt::Instance()->listenVoiceTimeslot(hSignal, pScTsInfo);
00200 }
00201
00202 LIBBOGOTEL_API int gc_GetUsrAttr(LINEDEV linedev, void **usr_attrp)
00203 {
00204 return CBgtRt::Instance()->getUsrAttr(linedev, usr_attrp);
00205 }
00206
00207 LIBBOGOTEL_API int gc_WaitCall(LINEDEV hSignal, CRN *pCrn, GC_WAITCALL_BLK *pWaitcall,int iTimeout, unsigned long ulMode)
00208 {
00209 return CBgtRt::Instance()->waitCall(hSignal, pCrn, iTimeout, ulMode);
00210 }
00211
00212 LIBBOGOTEL_API int gc_GetANI(CRN crn, char *szAni)
00213 {
00214 return CBgtRt::Instance()->getAni(crn, szAni);
00215 }
00216
00217 LIBBOGOTEL_API int gc_GetDNIS(CRN crn, char *szDnis)
00218 {
00219 return CBgtRt::Instance()->getDnis(crn, szDnis);
00220 }
00221
00222 LIBBOGOTEL_API int gc_MakeCall(LINEDEV hSignal, CRN *pCrn, char *szNumber, GC_MAKECALL_BLK *pMakecall, int iTimeout, unsigned long ulMode)
00223 {
00224 return CBgtRt::Instance()->makeCall(hSignal, pCrn, szNumber, pMakecall, iTimeout, ulMode);
00225 }
00226
00227 LIBBOGOTEL_API int gc_SetCallingNum(LINEDEV hSignal, char *szCallingNum)
00228 {
00229 return CBgtRt::Instance()->setCallingNum(hSignal, szCallingNum);
00230 }
00231
00232 LIBBOGOTEL_API int gc_AcceptCall(CRN crn, int iRings, unsigned long ulMode)
00233 {
00234 return CBgtRt::Instance()->acceptCall(crn, iRings, ulMode);
00235 }
00236
00237 LIBBOGOTEL_API int gc_AnswerCall(CRN crn, int iRings, unsigned long ulMode)
00238 {
00239 return CBgtRt::Instance()->answerCall(crn, iRings, ulMode);
00240 }
00241
00242 LIBBOGOTEL_API int gc_DropCall(CRN crn, int iCause, unsigned long ulMode)
00243 {
00244 return CBgtRt::Instance()->dropCall(crn, iCause, ulMode);
00245 }
00246
00247 LIBBOGOTEL_API int gc_ReleaseCallEx(CRN crn, unsigned long ulMode)
00248 {
00249 return CBgtRt::Instance()->releaseCall(crn, ulMode);
00250 }
00251
00252 LIBBOGOTEL_API int gc_ResultValue(METAEVENT *pMetaEvent, int *piGcResult, int *pCcLibId, long *pCcLibResult)
00253 {
00254 return CBgtRt::Instance()->resultValue(pMetaEvent, piGcResult, pCcLibId, pCcLibResult);
00255 }
00256
00257 LIBBOGOTEL_API int gc_ResetLineDev(LINEDEV hSignal, unsigned long mode)
00258 {
00259 return CBgtRt::Instance()->resetLineDev(hSignal, mode);
00260 }
00261
00262 LIBBOGOTEL_API int gc_CCLibStatusEx(char *szCcLibName, void *pCcLibInfo)
00263 {
00264 if (! strcmp(szCcLibName, "GC_ALL_LIB")) {
00265 GC_CCLIB_STATUSALL* pCcLib = static_cast<GC_CCLIB_STATUSALL*>(pCcLibInfo);
00266 char szTemp[20];
00267
00268
00269 for (int i = 0; i < GC_TOTAL_CCLIBS; i++) {
00270 sprintf(szTemp, "Lib %d", i);
00271 strcpy(pCcLib->cclib_state[i].name, szTemp);
00272 pCcLib->cclib_state[i].state = GC_CCLIB_CONFIGURED;
00273 }
00274 } else {
00275 int* iState = static_cast<int*>(pCcLibInfo);
00276 (*iState) = GC_CCLIB_CONFIGURED;
00277 }
00278 return resultSUCCESS;
00279 }
00280
00281 LIBBOGOTEL_API int gc_ResultInfo(METAEVENT *pMetaevent, GC_INFO *pGcInfo)
00282 {
00283 int rc;
00284 if ((rc = CBgtRt::Instance()->resultValue(pMetaevent, &pGcInfo->gcValue, &pGcInfo->ccLibId,
00285 &pGcInfo->ccValue)) != resultSUCCESS) {
00286 return rc;
00287 }
00288 if ((rc = CBgtRt::resultMsg(pGcInfo->gcValue, &pGcInfo->gcMsg,
00289 pGcInfo->ccValue, &pGcInfo->ccMsg)) != resultSUCCESS) {
00290 return rc;
00291 }
00292 if ((rc = CBgtRt::ccLibIDToName(pGcInfo->ccLibId, &pGcInfo->ccLibName)) != resultSUCCESS) {
00293 return rc;
00294 }
00295 return resultSUCCESS;
00296 }
00297
00298 LIBBOGOTEL_API int gc_ErrorInfo(GC_INFO *pGcInfo)
00299 {
00300 int rc;
00301 if ((rc = CBgtRt::Instance()->errorValue(&pGcInfo->gcValue, &pGcInfo->ccLibId,
00302 &pGcInfo->ccValue)) != resultSUCCESS) {
00303 return rc;
00304 }
00305 if ((rc = CBgtRt::resultMsg(pGcInfo->gcValue, &pGcInfo->gcMsg,
00306 pGcInfo->ccValue, &pGcInfo->ccMsg)) != resultSUCCESS) {
00307 return rc;
00308 }
00309 if ((rc = CBgtRt::ccLibIDToName(pGcInfo->ccLibId, &pGcInfo->ccLibName)) != resultSUCCESS) {
00310 return rc;
00311 }
00312 return resultSUCCESS;
00313 }
00314
00315 LIBBOGOTEL_API int gc_ErrorValue(int *piError, int *piCcLib, long *plCcLibErr)
00316 {
00317 return CBgtRt::Instance()->errorValue(piError, piCcLib, plCcLibErr);
00318 }
00319
00320 LIBBOGOTEL_API int gc_CCLibIDToName(int iCcLibId, char **pszCcLibName)
00321 {
00322 return CBgtRt::ccLibIDToName(iCcLibId, pszCcLibName);
00323 }
00324
00325 LIBBOGOTEL_API int gc_ResultMsg(int iCcLibId, long lResultCode, char **pszMsg)
00326 {
00327 return CBgtRt::resultMsg(iCcLibId, lResultCode, pszMsg);
00328 }
00329
00331
00333
00334 LIBBOGOTEL_API int dt_getxmitslot(LINEDEV hSignal, SC_TSINFO *pScTsInfo)
00335 {
00336 return CBgtRt::Instance()->getSignalTimeslot(hSignal, pScTsInfo);
00337 }
00338
00339 LIBBOGOTEL_API int dt_listen(LINEDEV hSignal, SC_TSINFO *pScTsInfo)
00340 {
00341 return CBgtRt::Instance()->listenVoiceTimeslot(hSignal, pScTsInfo);
00342 }
00343
00344 }