Main Page   Namespace List   Class Hierarchy   Data Structures   File List   Namespace Members   Data Fields   Globals   Related Pages  

LibBogoTel.cpp

Go to the documentation of this file.
00001 /*
00002  * LibBogoTel.cpp
00003  *
00004  * Copyright 2003, MobileSpear Inc. (www.mobilespear.com). All rights reserved.
00005  * Copyright 2003, David Resnick. All rights reserved.
00006  *
00007  * See the file doc\license.txt for the terms of usage and distribution.
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 // SRL API's
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     // DX API's
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     // GC API's
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         // this will delete the BgtRt singleton
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             // return that all libraries are configured
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     // DTI API's
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 }

Generated on Tue Aug 12 12:41:29 2003 for bogotel by doxygen 1.3. Hosted by SourceForge.net Logo