mmserv/tms/tmscallserver/src/tmsdtmfprovider.cpp
changeset 20 b67dd1fc57c5
parent 14 80975da52420
equal deleted inserted replaced
19:4a629bc82c5e 20:b67dd1fc57c5
    54     iServer.Close();
    54     iServer.Close();
    55     TRACE_PRN_FN_EXT;
    55     TRACE_PRN_FN_EXT;
    56     }
    56     }
    57 
    57 
    58 // -----------------------------------------------------------------------------
    58 // -----------------------------------------------------------------------------
       
    59 // Constructs the requester.
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 TMSDTMFProvider::TMSDTMFProvider() :
       
    63     CActive(EPriorityStandard)
       
    64     {
       
    65     TRACE_PRN_FN_ENT;
       
    66     CActiveScheduler::Add(this);
       
    67     TRACE_PRN_FN_EXT;
       
    68     }
       
    69 
       
    70 // -----------------------------------------------------------------------------
       
    71 // Constructs the requester in the second phase.
       
    72 // -----------------------------------------------------------------------------
       
    73 //
       
    74 void TMSDTMFProvider::ConstructL()
       
    75     {
       
    76     TRACE_PRN_FN_ENT;
       
    77 
       
    78     CleanupClosePushL(iServer);
       
    79     User::LeaveIfError(iServer.Connect());
       
    80 
       
    81     TRACE_PRN_N(_L("**TMS ETel iServer.Connect"));
       
    82 
       
    83     iServer.GetTsyName(0, iTsyname);
       
    84 
       
    85     //Load in the phone device driver
       
    86     User::LeaveIfError(iServer.LoadPhoneModule(iTsyname));
       
    87 
       
    88     TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule"));
       
    89 
       
    90     //Find the number of phones available from the tel server
       
    91     gint numberPhones;
       
    92     User::LeaveIfError(iServer.EnumeratePhones(numberPhones));
       
    93 
       
    94     TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones"));
       
    95 
       
    96     //Check there are available phones
       
    97     if (numberPhones < 1)
       
    98         {
       
    99         User::Leave(KErrNotFound);
       
   100         }
       
   101 
       
   102     //Get info about the first available phone
       
   103     RTelServer::TPhoneInfo info;
       
   104     User::LeaveIfError(iServer.GetPhoneInfo(0, info));
       
   105 
       
   106     TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo"));
       
   107 
       
   108     CleanupClosePushL(iPhone);
       
   109     User::LeaveIfError(iPhone.Open(iServer, info.iName));
       
   110 
       
   111     TRACE_PRN_N(_L("**TMS ETel iPhone.Open"));
       
   112 
       
   113     RMobilePhone::TLineInfo lineInfo;
       
   114     User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo));
       
   115 
       
   116     TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo"));
       
   117 
       
   118     gint errorCode = iMmCustom.Open(iPhone);
       
   119 
       
   120     if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle())
       
   121         {
       
   122         User::Leave(KErrArgument);
       
   123         }
       
   124     iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom);
       
   125     iMonitor->StartMonitoring();
       
   126     iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone);
       
   127     // iStopMonitor->StartMonitoring();
       
   128 
       
   129     CleanupStack::Pop(2);//telserver,phone
       
   130     TRACE_PRN_FN_EXT;
       
   131     }
       
   132 
       
   133 // -----------------------------------------------------------------------------
    59 // Notifies observers about a DTMF event
   134 // Notifies observers about a DTMF event
    60 // -----------------------------------------------------------------------------
   135 // -----------------------------------------------------------------------------
    61 //
   136 //
    62 void TMSDTMFProvider::NotifyDTMFEvent(
   137 void TMSDTMFProvider::NotifyDTMFEvent(
    63         const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError,
   138         const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError,
    77 
   152 
    78 // -----------------------------------------------------------------------------
   153 // -----------------------------------------------------------------------------
    79 // Cancel DTMF string sending
   154 // Cancel DTMF string sending
    80 // -----------------------------------------------------------------------------
   155 // -----------------------------------------------------------------------------
    81 //
   156 //
    82 TInt TMSDTMFProvider::CancelDtmfStringSending()
   157 gint TMSDTMFProvider::CancelDtmfStringSending()
    83     {
   158     {
    84     TRACE_PRN_FN_ENT;
   159     TRACE_PRN_FN_ENT;
    85     gint ret(KErrAlreadyExists);
   160     gint ret(KErrAlreadyExists);
    86     if (IsActive())
   161     if (IsActive())
    87         {
   162         {
    94 
   169 
    95 // -----------------------------------------------------------------------------
   170 // -----------------------------------------------------------------------------
    96 // Starts DTMF string sending
   171 // Starts DTMF string sending
    97 // -----------------------------------------------------------------------------
   172 // -----------------------------------------------------------------------------
    98 //
   173 //
    99 TInt TMSDTMFProvider::StartDtmfTone(const TChar aTone)
   174 gint TMSDTMFProvider::StartDtmfTone(const TChar aTone)
   100     {
   175     {
   101     TRACE_PRN_FN_ENT;
   176     TRACE_PRN_FN_ENT;
   102     gint ret(KErrAlreadyExists);
   177     gint ret(KErrAlreadyExists);
   103     if (!IsActive())
   178     if (!IsActive())
   104         {
   179         {
   110 
   185 
   111 // -----------------------------------------------------------------------------
   186 // -----------------------------------------------------------------------------
   112 // Stop DTMF tone
   187 // Stop DTMF tone
   113 // -----------------------------------------------------------------------------
   188 // -----------------------------------------------------------------------------
   114 //
   189 //
   115 TInt TMSDTMFProvider::StopDtmfTone()
   190 gint TMSDTMFProvider::StopDtmfTone()
   116     {
   191     {
   117     TRACE_PRN_FN_ENT;
   192     TRACE_PRN_FN_ENT;
   118     gint ret(KErrAlreadyExists);
   193     gint ret(KErrAlreadyExists);
   119     if (!IsActive())
   194     if (!IsActive())
   120         {
   195         {
   126 
   201 
   127 // -----------------------------------------------------------------------------
   202 // -----------------------------------------------------------------------------
   128 // Send DTMF string
   203 // Send DTMF string
   129 // -----------------------------------------------------------------------------
   204 // -----------------------------------------------------------------------------
   130 //
   205 //
   131 TInt TMSDTMFProvider::SendDtmfToneString(const TDesC& aString)
   206 gint TMSDTMFProvider::SendDtmfToneString(const TDesC& aString)
   132     {
   207     {
   133     TRACE_PRN_FN_ENT;
   208     TRACE_PRN_FN_ENT;
   134     gint ret = KErrInUse;
   209     gint ret = KErrInUse;
   135     if (!IsActive())
   210     if (!IsActive())
   136         {
   211         {
   145 
   220 
   146 // -----------------------------------------------------------------------------
   221 // -----------------------------------------------------------------------------
   147 // Continue DTMF string sending
   222 // Continue DTMF string sending
   148 // -----------------------------------------------------------------------------
   223 // -----------------------------------------------------------------------------
   149 //
   224 //
   150 TInt TMSDTMFProvider::ContinueDtmfStringSending(const TBool aContinue)
   225 gint TMSDTMFProvider::ContinueDtmfStringSending(const gboolean aContinue)
   151     {
   226     {
   152     TRACE_PRN_FN_ENT;
   227     TRACE_PRN_FN_ENT;
   153     gint status = iPhone.ContinueDTMFStringSending(aContinue);
   228     gint status = iPhone.ContinueDTMFStringSending(aContinue);
   154     TRACE_PRN_FN_EXT;
   229     TRACE_PRN_FN_EXT;
   155     return status;
   230     return status;
   157 
   232 
   158 // -----------------------------------------------------------------------------
   233 // -----------------------------------------------------------------------------
   159 // Adds observer.
   234 // Adds observer.
   160 // -----------------------------------------------------------------------------
   235 // -----------------------------------------------------------------------------
   161 //
   236 //
   162 void TMSDTMFProvider::AddObserverL(const TMSDTMFObserver& aObserver)
   237 void TMSDTMFProvider::AddObserver(const TMSDTMFObserver& aObserver)
   163     {
   238     {
   164     TRACE_PRN_FN_ENT;
   239     TRACE_PRN_FN_ENT;
   165     if (iObservers.Find(&aObserver) == KErrNotFound)
   240     if (iObservers.Find(&aObserver) == KErrNotFound)
   166         {
   241         {
   167         iObservers.Append(&aObserver);
   242         iObservers.Append(&aObserver);
   171 
   246 
   172 // -----------------------------------------------------------------------------
   247 // -----------------------------------------------------------------------------
   173 // Removes given observer.
   248 // Removes given observer.
   174 // -----------------------------------------------------------------------------
   249 // -----------------------------------------------------------------------------
   175 //
   250 //
   176 TInt TMSDTMFProvider::RemoveObserver(const TMSDTMFObserver& aObserver)
   251 gint TMSDTMFProvider::RemoveObserver(const TMSDTMFObserver& aObserver)
   177     {
   252     {
   178     TRACE_PRN_FN_ENT;
   253     TRACE_PRN_FN_ENT;
   179     gint ret = KErrNotFound;
   254     gint ret = KErrNotFound;
   180     gint found = iObservers.Find(&aObserver);
   255     gint found = iObservers.Find(&aObserver);
   181     if (found != KErrNotFound)
   256     if (found != KErrNotFound)
   208             {
   283             {
   209             TMSDTMFObserver::TCCPDtmfEvent event =
   284             TMSDTMFObserver::TCCPDtmfEvent event =
   210                     TMSDTMFObserver::ECCPDtmfStringSendingCompleted;
   285                     TMSDTMFObserver::ECCPDtmfStringSendingCompleted;
   211             NotifyDTMFEvent(event, error, NULL);
   286             NotifyDTMFEvent(event, error, NULL);
   212             }
   287             }
   213         else
   288         // Cancel is not notified
   214             {
       
   215             // Cancel is not notified
       
   216             }
       
   217         }
   289         }
   218     TRACE_PRN_FN_EXT;
   290     TRACE_PRN_FN_EXT;
   219     }
   291     }
   220 
   292 
   221 // -----------------------------------------------------------------------------
   293 // -----------------------------------------------------------------------------
   224 // -----------------------------------------------------------------------------
   296 // -----------------------------------------------------------------------------
   225 //
   297 //
   226 void TMSDTMFProvider::DoCancel()
   298 void TMSDTMFProvider::DoCancel()
   227     {
   299     {
   228     TRACE_PRN_FN_ENT;
   300     TRACE_PRN_FN_ENT;
   229     if (iStatus == KRequestPending)
   301     iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones);
   230         {
       
   231         iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones);
       
   232         }
       
   233     TRACE_PRN_FN_EXT;
       
   234     }
       
   235 
       
   236 // -----------------------------------------------------------------------------
       
   237 // Constructs the requester.
       
   238 // -----------------------------------------------------------------------------
       
   239 //
       
   240 TMSDTMFProvider::TMSDTMFProvider() :
       
   241     CActive(EPriorityStandard)
       
   242     {
       
   243     TRACE_PRN_FN_ENT;
       
   244     CActiveScheduler::Add(this);
       
   245     TRACE_PRN_FN_EXT;
       
   246     }
       
   247 
       
   248 // -----------------------------------------------------------------------------
       
   249 // Constructs the requester in the second phase.
       
   250 // -----------------------------------------------------------------------------
       
   251 //
       
   252 void TMSDTMFProvider::ConstructL()
       
   253     {
       
   254     TRACE_PRN_FN_ENT;
       
   255 
       
   256     CleanupClosePushL(iServer);
       
   257     User::LeaveIfError(iServer.Connect());
       
   258 
       
   259     TRACE_PRN_N(_L("**TMS ETel iServer.Connect"));
       
   260 
       
   261     iServer.GetTsyName(0, iTsyname);
       
   262 
       
   263     //Load in the phone device driver
       
   264     User::LeaveIfError(iServer.LoadPhoneModule(iTsyname));
       
   265 
       
   266     TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule"));
       
   267 
       
   268     //Find the number of phones available from the tel server
       
   269     gint numberPhones;
       
   270     User::LeaveIfError(iServer.EnumeratePhones(numberPhones));
       
   271 
       
   272     TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones"));
       
   273 
       
   274     //Check there are available phones
       
   275     if (numberPhones < 1)
       
   276         {
       
   277         User::Leave(KErrNotFound);
       
   278         }
       
   279 
       
   280     //Get info about the first available phone
       
   281     RTelServer::TPhoneInfo info;
       
   282     User::LeaveIfError(iServer.GetPhoneInfo(0, info));
       
   283 
       
   284     TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo"));
       
   285 
       
   286     CleanupClosePushL(iPhone);
       
   287     User::LeaveIfError(iPhone.Open(iServer, info.iName));
       
   288 
       
   289     TRACE_PRN_N(_L("**TMS ETel iPhone.Open"));
       
   290 
       
   291     RMobilePhone::TLineInfo lineInfo;
       
   292     User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo));
       
   293 
       
   294     TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo"));
       
   295 
       
   296     gint errorCode = iMmCustom.Open(iPhone);
       
   297 
       
   298     if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle())
       
   299         {
       
   300         User::Leave(KErrArgument);
       
   301         }
       
   302     iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom);
       
   303     iMonitor->StartMonitoring();
       
   304     iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone);
       
   305     // iStopMonitor->StartMonitoring();
       
   306 
       
   307     CleanupStack::Pop(2);//telserver,phone
       
   308     TRACE_PRN_FN_EXT;
   302     TRACE_PRN_FN_EXT;
   309     }
   303     }
   310 
   304 
   311 //  End of File
   305 //  End of File