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

GetDigOp.cpp

Go to the documentation of this file.
00001 /*
00002  * GetDigOp.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 <bogotel/portability.h>
00011 #include <bogotel/getdigop.h>
00012 #include <bogotel/TermParms.h>
00013 
00014 #include <sys/stat.h>
00015 #include <sys/types.h>
00016 
00017 #include <bogotel/BgtErrors.h>
00018 
00019 namespace bogotel {
00020 
00021     const char *CGetDigOp::s_szName = "CGetDigOp";
00022 
00023     CGetDigOp::CGetDigOp(CVoiceDev* pVD, const DV_TPT* pTPT, DV_DIGIT *pDigit)
00024         throw (std::invalid_argument) :
00025         CIOOp(pVD),
00026         m_pTermParms(NULL),
00027         m_pDigit(pDigit)
00028     {
00029         char method[] = "CGetDigOp::CGetDigOp";
00030         if (pTPT != NULL) {
00031             try {
00032                 m_pTermParms = new CTermParms(pVD, this, pTPT);
00033             } catch (std::invalid_argument& except) {
00034                 log(3, "%s: new CTermParms threw exception", method, except.what());
00035                 throw;
00036             }
00037         }
00038     }
00039 
00040     CGetDigOp::~CGetDigOp()
00041     {
00042         delete m_pTermParms;
00043         CIOOp::~CIOOp();
00044     }
00045 
00046     void CGetDigOp::start() 
00047     {
00048         if (m_pTermParms) {
00049             m_pTermParms->start();
00050         }
00051     }
00052 
00053     std::string CGetDigOp::toString()
00054     {
00055         return CTimerTarget::toString() + " " + s_szName;
00056     }
00057 
00058     void CGetDigOp::terminate(long lTermMsk)
00059     {
00060         // get (and remove from there) the requested number of DTMFs from the device
00061         m_pVD->getDigits(m_pDigit, m_pTermParms->getNumberDtmfsPressed());
00062 
00063         CIOOp::terminate(lTermMsk);
00064     }
00065 
00066     long CGetDigOp::terminationEvent()
00067     {
00068         return TDX_GETDIG;
00069     }
00070 
00071     void CGetDigOp::_timerExpired(int timerType, int stateId)
00072     {
00073         char method[] = "CGetDigOp::_timerExpired";
00074         switch (timerType) {
00075         case CTermParms::timerType::MaxSil:
00076         case CTermParms::timerType::MaxTime:
00077         case CTermParms::timerType::IddTime:
00078             m_pTermParms->timerExpired(timerType, stateId);
00079             break;
00080         default:
00081             log(3, "%s: Invalid timerType %d", method, timerType);
00082             break;
00083         }
00084     }
00085 }

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