mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
changeset 20 b67dd1fc57c5
parent 19 4a629bc82c5e
child 21 2ed61feeead6
equal deleted inserted replaced
19:4a629bc82c5e 20:b67dd1fc57c5
   145 // -----------------------------------------------------------------------------
   145 // -----------------------------------------------------------------------------
   146 // TMSCallCSAdpt::InitStream
   146 // TMSCallCSAdpt::InitStream
   147 //
   147 //
   148 // -----------------------------------------------------------------------------
   148 // -----------------------------------------------------------------------------
   149 //
   149 //
   150 gint TMSCallCSAdpt::InitStreamL(TMSCallType /*callType*/,
   150 gint TMSCallCSAdpt::InitStream(TMSCallType /*callType*/, TMSStreamType strmType,
   151         TMSStreamType strmType, gint strmId, TMSFormatType /*frmtType*/,
   151         gint strmId, TMSFormatType /*frmtType*/, const RMessage2& message)
   152         const RMessage2& aMessage)
       
   153     {
   152     {
   154     TRACE_PRN_FN_ENT;
   153     TRACE_PRN_FN_ENT;
   155     gint status(TMS_RESULT_SUCCESS);
   154     gint status(TMS_RESULT_SUCCESS);
   156 
   155 
   157     switch (strmType)
   156     switch (strmType)
   158         {
   157         {
   159         case TMS_STREAM_UPLINK:
   158         case TMS_STREAM_UPLINK:
       
   159             {
   160             if (strmId == iUplinkStreamId)
   160             if (strmId == iUplinkStreamId)
   161                 {
   161                 {
   162                 // Open message queue handling client-server communication
   162                 // Open message queue handling client-server communication
   163                 if (iMsgQueueUp.Handle() <= 0)
   163                 if (iMsgQueueUp.Handle() <= 0)
   164                     {
   164                     {
   165                     // Third argument in TMSCallProxy::InitStream
   165                     // Third argument in TMSCallProxy::InitStream
   166                     status = iMsgQueueUp.Open(aMessage, 1);
   166                     status = iMsgQueueUp.Open(message, 1);
   167                     }
   167                     }
   168                 if (status == TMS_RESULT_SUCCESS)
   168                 if (status == TMS_RESULT_SUCCESS)
   169                     {
   169                     {
   170                     TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
   170                     TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
   171 
   171 
   172                     if (status == TMS_RESULT_SUCCESS)
   172                     if (status == TMS_RESULT_SUCCESS)
   173                         {
   173                         {
   174                         iDTMFUplinkPlayer =  TMSDTMFProvider::NewL();
   174                         TRAP(status, iDTMFUplinkPlayer =
   175                         iDTMFUplinkPlayer->AddObserverL(*this);
   175                                 TMSDTMFProvider::NewL());
   176                         if(!iDTMFNotifier)
   176                         iDTMFUplinkPlayer->AddObserver(*this);
       
   177                         if (!iDTMFNotifier)
   177                             {
   178                             {
   178                             iDTMFNotifier = TMSDtmfNotifier::NewL();
   179                             TRAP(status, iDTMFNotifier =
       
   180                                     TMSDtmfNotifier::NewL());
   179                             }
   181                             }
   180                         }
   182                         }
   181                     }
   183                     }
   182                 iStrmtype = TMS_STREAM_UPLINK;
   184                 iStrmtype = TMS_STREAM_UPLINK;
   183                 }
   185                 }
   184             else
   186             else
   185                 {
   187                 {
   186                 status = TMS_RESULT_DOES_NOT_EXIST;
   188                 status = TMS_RESULT_DOES_NOT_EXIST;
   187                 }
   189                 }
   188             break;
   190             break;
       
   191             }
   189         case TMS_STREAM_DOWNLINK:
   192         case TMS_STREAM_DOWNLINK:
       
   193             {
   190             if (strmId == iDnlinkStreamId)
   194             if (strmId == iDnlinkStreamId)
   191                 {
   195                 {
   192                 // Open message queue handling client-server communication
   196                 // Open message queue handling client-server communication
   193                 if (iMsgQueueDn.Handle() <= 0)
   197                 if (iMsgQueueDn.Handle() <= 0)
   194                     {
   198                     {
   195                     // Third argument in TMSCallProxy::InitStream
   199                     // Third argument in TMSCallProxy::InitStream
   196                     status = iMsgQueueDn.Open(aMessage, 1);
   200                     status = iMsgQueueDn.Open(message, 1);
   197                     }
   201                     }
   198                 if (status == TMS_RESULT_SUCCESS)
   202                 if (status == TMS_RESULT_SUCCESS)
   199                     {
   203                     {
   200                     TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
   204                     TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
   201                     if (status == TMS_RESULT_SUCCESS)
   205                     if (status == TMS_RESULT_SUCCESS)
   202                         {
   206                         {
   203                         TRAP(status, iRouting =
   207                         TRAP(status, iRouting =
   204                              CTelephonyAudioRouting::NewL(*this));
   208                                 CTelephonyAudioRouting::NewL(*this));
   205                         if (status == TMS_RESULT_SUCCESS)
   209                         if (status == TMS_RESULT_SUCCESS)
   206                             {
   210                             {
   207                             iTarSettings = TMSTarSettings::NewL();
   211                             TRAP(status, iTarSettings = TMSTarSettings::NewL());
   208                             }
   212                             }
   209                         if (status == TMS_RESULT_SUCCESS)
   213                         if (status == TMS_RESULT_SUCCESS)
   210                             {
   214                             {
   211                             TRAP(status, iDTMFDnlinkPlayer =
   215                             TRAP(status, iDTMFDnlinkPlayer =
   212                                  TMSAudioDtmfTonePlayer::NewL(*this,
   216                                     TMSAudioDtmfTonePlayer::NewL(*this,
   213                                  KAudioPrefKeyDownDTMF,
   217                                     KAudioDTMFString,
   214                                  KAudioPriorityDtmfKeyPress));
   218                                     KAudioPriorityDTMFString));
   215                             if(!iDTMFNotifier)
   219 
       
   220                             if (!iDTMFNotifier)
   216                                 {
   221                                 {
   217                                 iDTMFNotifier = TMSDtmfNotifier::NewL();
   222                                 TRAP(status, iDTMFNotifier =
       
   223                                         TMSDtmfNotifier::NewL());
   218                                 }
   224                                 }
   219                             }
   225                             }
   220                         }
   226                         }
   221                     }
   227                     }
   222                 iStrmtype = TMS_STREAM_DOWNLINK;
   228                 iStrmtype = TMS_STREAM_DOWNLINK;
   224             else
   230             else
   225                 {
   231                 {
   226                 status = TMS_RESULT_DOES_NOT_EXIST;
   232                 status = TMS_RESULT_DOES_NOT_EXIST;
   227                 }
   233                 }
   228             break;
   234             break;
       
   235             }
   229         default:
   236         default:
       
   237             {
   230             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
   238             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
   231             break;
   239             break;
       
   240             }
   232         }
   241         }
   233 
   242 
   234     TRACE_PRN_IF_ERR(status);
   243     TRACE_PRN_IF_ERR(status);
   235     TRACE_PRN_FN_EXT;
   244     TRACE_PRN_FN_EXT;
   236     return status;
   245     return status;
   923         count = numOfItems;
   932         count = numOfItems;
   924         for (guint i = 0; i < numOfItems; i++)
   933         for (guint i = 0; i < numOfItems; i++)
   925             {
   934             {
   926             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   935             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
   927             stream.WriteUint32L(tmsoutput);
   936             stream.WriteUint32L(tmsoutput);
   928             //TRACE_PRN_N1(_L("TMS->CallIPAdpt: outputs: [%d]"), availableOutputs[i]);
       
   929             }
   937             }
   930 
   938 
   931         CleanupStack::PopAndDestroy(&stream);
   939         CleanupStack::PopAndDestroy(&stream);
   932         status = TMS_RESULT_SUCCESS;
   940         status = TMS_RESULT_SUCCESS;
   933         }
   941         }
   954             {
   962             {
   955             iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
   963             iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
   956             }
   964             }
   957 
   965 
   958         dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
   966         dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
   959         //TMS_EVENT_DTMF_TONE_STARTED;
   967         dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted;
   960         dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
       
   961         if (iDTMFNotifier)
   968         if (iDTMFNotifier)
   962             {
   969             {
   963             iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
   970             iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
   964             }
   971             }
   965         }
   972         }
   970             {
   977             {
   971             status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
   978             status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
   972             }
   979             }
   973 
   980 
   974         dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
   981         dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
   975         //TMS_EVENT_DTMF_TONE_STARTED;
   982         dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
   976         dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
       
   977 
   983 
   978         if (iDTMFNotifier)
   984         if (iDTMFNotifier)
   979             {
   985             {
   980             iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
   986             iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
   981             }
   987             }
  1012 // -----------------------------------------------------------------------------
  1018 // -----------------------------------------------------------------------------
  1013 // TMSCallCSAdpt::ContinueDTMF
  1019 // TMSCallCSAdpt::ContinueDTMF
  1014 //
  1020 //
  1015 // -----------------------------------------------------------------------------
  1021 // -----------------------------------------------------------------------------
  1016 //
  1022 //
  1017 gint TMSCallCSAdpt::ContinueDTMF(TBool continuesending)
  1023 gint TMSCallCSAdpt::ContinueDTMF(gboolean continuesending)
  1018     {
  1024     {
  1019     TRACE_PRN_FN_ENT;
  1025     TRACE_PRN_FN_ENT;
  1020     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
  1026     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
  1021 
  1027 
  1022     if (iDTMFUplinkPlayer)
  1028     if (iDTMFUplinkPlayer)
  1033 // -----------------------------------------------------------------------------
  1039 // -----------------------------------------------------------------------------
  1034 // TMSCallCSAdpt::DTMFInitCompleted
  1040 // TMSCallCSAdpt::DTMFInitCompleted
  1035 //
  1041 //
  1036 // -----------------------------------------------------------------------------
  1042 // -----------------------------------------------------------------------------
  1037 //
  1043 //
  1038 void TMSCallCSAdpt::DTMFInitCompleted(TInt /*error*/)
  1044 void TMSCallCSAdpt::DTMFInitCompleted(gint /*error*/)
  1039     {
  1045     {
  1040     TRACE_PRN_FN_ENT;
  1046     TRACE_PRN_FN_ENT;
       
  1047     // TODO: process error
  1041     TRACE_PRN_FN_EXT;
  1048     TRACE_PRN_FN_EXT;
  1042     }
  1049     }
  1043 
  1050 
  1044 // -----------------------------------------------------------------------------
  1051 // -----------------------------------------------------------------------------
  1045 // TMSCallCSAdpt::DTMFToneFinished
  1052 // TMSCallCSAdpt::DTMFToneFinished
  1046 //
  1053 //
  1047 // -----------------------------------------------------------------------------
  1054 // -----------------------------------------------------------------------------
  1048 //
  1055 //
  1049 void TMSCallCSAdpt::DTMFToneFinished(TInt error)
  1056 void TMSCallCSAdpt::DTMFToneFinished(gint error)
  1050     {
  1057     {
  1051     TRACE_PRN_FN_ENT;
  1058     TRACE_PRN_FN_ENT;
  1052     TmsMsgBufPckg dtmfpckg;
  1059     TmsMsgBufPckg dtmfpckg;
  1053 
  1060 
  1054     if (error == KErrUnderflow || error == KErrInUse)
  1061     if (error == KErrUnderflow || error == KErrInUse)
  1055         {
  1062         {
  1056         error = TMS_RESULT_SUCCESS;
  1063         error = TMS_RESULT_SUCCESS;
  1057         }
  1064         }
  1058 
  1065 
  1059     dtmfpckg().iStatus = TMSUtility::TMSResult(error);
  1066     dtmfpckg().iStatus = TMSUtility::TMSResult(error);
  1060     //TMS_EVENT_DTMF_TONE_STOPPED
       
  1061     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
  1067     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
  1062     if (iDTMFNotifier)
  1068     if (iDTMFNotifier)
  1063         {
  1069         {
  1064         iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
  1070         iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
  1065         }
  1071         }
  1071 // TMSCallCSAdpt::HandleDTMFEvent
  1077 // TMSCallCSAdpt::HandleDTMFEvent
  1072 //
  1078 //
  1073 // -----------------------------------------------------------------------------
  1079 // -----------------------------------------------------------------------------
  1074 //
  1080 //
  1075 void TMSCallCSAdpt::HandleDTMFEvent(
  1081 void TMSCallCSAdpt::HandleDTMFEvent(
  1076         const TMSDTMFObserver::TCCPDtmfEvent aEvent, const TInt aError,
  1082         const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError,
  1077         const TChar /*aTone*/)
  1083         const TChar /*aTone*/)
  1078     {
  1084     {
  1079     TRACE_PRN_FN_ENT;
  1085     TRACE_PRN_FN_ENT;
  1080     TmsMsgBufPckg dtmfpckg;
  1086     TmsMsgBufPckg dtmfpckg;
  1081 
  1087 
  1083 
  1089 
  1084     dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(aError);
  1090     dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(aError);
  1085 
  1091 
  1086     switch (aEvent)
  1092     switch (aEvent)
  1087         {
  1093         {
  1088             /** Unknown */
  1094 
  1089         case ECCPDtmfUnknown:
  1095         case ECCPDtmfUnknown:               //Unknown
  1090             break;
  1096             break;
  1091             /** DTMF sending started manually */
  1097         case ECCPDtmfManualStart:           //DTMF sending started manually
  1092         case ECCPDtmfManualStart:
  1098         case ECCPDtmfSequenceStart:         //Automatic DTMF sending initialized
  1093             /** Automatic DTMF sending initialized */
  1099             dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
  1094         case ECCPDtmfSequenceStart:
  1100             break;
  1095             //TMS_EVENT_DTMF_TONE_STARTED
  1101         case ECCPDtmfManualStop:            //DTMF sending stopped manually
  1096             dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
  1102         case ECCPDtmfManualAbort:           //DTMF sending aborted manually
  1097             break;
  1103         case ECCPDtmfSequenceStop:          //Automatic DTMF sending stopped
  1098 
  1104         case ECCPDtmfSequenceAbort:         //Automatic DTMF sending aborted
  1099             /** DTMF sending stopped manually */
  1105         case ECCPDtmfStopInDtmfString:      //There was stop mark in DTMF string
  1100         case ECCPDtmfManualStop:
  1106         case ECCPDtmfStringSendingCompleted: //DTMF sending success
  1101             //break;
       
  1102             /** DTMF sending aborted manually */
       
  1103         case ECCPDtmfManualAbort:
       
  1104             //break;
       
  1105             /** Automatic DTMF sending stopped */
       
  1106         case ECCPDtmfSequenceStop:
       
  1107             //break;
       
  1108             /** Automatic DTMF sending aborted */
       
  1109         case ECCPDtmfSequenceAbort:
       
  1110             //break;
       
  1111             /** There was stop mark in DTMF string */
       
  1112         case ECCPDtmfStopInDtmfString:
       
  1113             //break;
       
  1114             /** DTMF sending completed succesfully */
       
  1115         case ECCPDtmfStringSendingCompleted:
       
  1116             //TMS_EVENT_DTMF_TONE_STOPPED
       
  1117             dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
  1107             dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
  1118             break;
  1108             break;
  1119         default:
  1109         default:
  1120             break;
  1110             break;
  1121         }
  1111         }
  1132 // -----------------------------------------------------------------------------
  1122 // -----------------------------------------------------------------------------
  1133 // TMSCallCSAdpt::DownlinkInitCompleted
  1123 // TMSCallCSAdpt::DownlinkInitCompleted
  1134 //
  1124 //
  1135 // -----------------------------------------------------------------------------
  1125 // -----------------------------------------------------------------------------
  1136 //
  1126 //
  1137 void TMSCallCSAdpt::DownlinkInitCompleted(TInt status)
  1127 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
  1138     {
  1128     {
  1139     TRACE_PRN_FN_ENT;
  1129     TRACE_PRN_FN_ENT;
  1140     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
  1130     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
  1141     TRACE_PRN_FN_EXT;
  1131     TRACE_PRN_FN_EXT;
  1142     }
  1132     }
  1144 // -----------------------------------------------------------------------------
  1134 // -----------------------------------------------------------------------------
  1145 // TMSCallCSAdpt::UplinkInitCompleted
  1135 // TMSCallCSAdpt::UplinkInitCompleted
  1146 //
  1136 //
  1147 // -----------------------------------------------------------------------------
  1137 // -----------------------------------------------------------------------------
  1148 //
  1138 //
  1149 void TMSCallCSAdpt::UplinkInitCompleted(TInt status)
  1139 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
  1150     {
  1140     {
  1151     TRACE_PRN_FN_ENT;
  1141     TRACE_PRN_FN_ENT;
  1152     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
  1142     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
  1153     TRACE_PRN_FN_EXT;
  1143     TRACE_PRN_FN_EXT;
  1154     }
  1144     }
  1247     pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
  1237     pckg().iOutput = TOTMSOUTPUT(aTelephonyAudioRouting.Output());
  1248     if (iTarSettings)
  1238     if (iTarSettings)
  1249         {
  1239         {
  1250         iTarSettings->SetTar(pckg, ETrue);
  1240         iTarSettings->SetTar(pckg, ETrue);
  1251         }
  1241         }
  1252     //TRACE_PRN_IF_ERR(aError);
       
  1253     TRACE_PRN_FN_EXT;
  1242     TRACE_PRN_FN_EXT;
  1254     }
  1243     }
  1255 
  1244 
  1256 // -----------------------------------------------------------------------------
  1245 // -----------------------------------------------------------------------------
  1257 // TMSCallCSAdpt::NotifyClient
  1246 // TMSCallCSAdpt::NotifyClient
  1258 //
  1247 //
  1259 // -----------------------------------------------------------------------------
  1248 // -----------------------------------------------------------------------------
  1260 //
  1249 //
  1261 void TMSCallCSAdpt::NotifyClient(const gint strmId, const gint aCommand,
  1250 void TMSCallCSAdpt::NotifyClient(const gint strmId, const gint command,
  1262         const gint aStatus, const gint64 /*aInt64*/)
  1251         const gint status, const gint64 /*int64*/)
  1263     {
  1252     {
  1264     iMsgBuffer.iRequest = aCommand;
  1253     iMsgBuffer.iRequest = command;
  1265     iMsgBuffer.iStatus = aStatus;
  1254     iMsgBuffer.iStatus = status;
  1266 
  1255 
  1267     if (strmId == iUplinkStreamId)
  1256     if (strmId == iUplinkStreamId)
  1268         {
  1257         {
  1269         iMsgQueueUp.Send(iMsgBuffer);
  1258         iMsgQueueUp.Send(iMsgBuffer);
  1270         }
  1259         }