telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmstsy.cpp
branchRCL_3
changeset 7 fe8b59ab9fa0
parent 5 7ef16719d8cb
child 19 630d2f34d719
equal deleted inserted replaced
6:fc69e1e37771 7:fe8b59ab9fa0
    32 #include <etelsat.h>  // for Sat MO SM Control error values
    32 #include <etelsat.h>  // for Sat MO SM Control error values
    33 
    33 
    34 
    34 
    35 // ======== MEMBER FUNCTIONS ========
    35 // ======== MEMBER FUNCTIONS ========
    36 
    36 
    37 CMmSmsTsy::CMmSmsTsy()
    37 CMmSmsTsy::CMmSmsTsy():
       
    38     iReqHandleType(EMultimodeSmsReqHandleUnknown)
    38     {
    39     {
    39 TFLOGSTRING("TSY: CMmSmsTsy::CMmSmsTsy: constructor");
    40 TFLOGSTRING("TSY: CMmSmsTsy::CMmSmsTsy: constructor");
    40     }
    41     }
    41 
    42 
    42 void CMmSmsTsy::ConstructL()
    43 void CMmSmsTsy::ConstructL()
   283                 ret = ReadSmspListPhase2( aTsyReqHandle, reinterpret_cast< 
   284                 ret = ReadSmspListPhase2( aTsyReqHandle, reinterpret_cast< 
   284                     RMobilePhone::TClientId*>( dataPtr ), aPackage.Des2n() );
   285                     RMobilePhone::TClientId*>( dataPtr ), aPackage.Des2n() );
   285                 break;
   286                 break;
   286             // SMS messaging requests that need trapping
   287             // SMS messaging requests that need trapping
   287             default:
   288             default:
   288                 // reset last tsy request type
   289                 // Ensure the ReqHandleType is unset.
   289                 iReqHandleType = EMultimodeSmsReqHandleUnknown; 
   290                 // This will detect cases where this method indirectly calls itself
       
   291                 // (e.g. servicing a client call that causes a self-reposting notification to complete and thus repost).
       
   292                 // Such cases are not supported because iReqHandleType is in the context of this class instance,
       
   293                 // not this request, and we don't want the values set by the inner request and the outer request
       
   294                 // interfering with each other.
       
   295                 __ASSERT_DEBUG(iReqHandleType==EMultimodeSmsReqHandleUnknown, User::Invariant());
   290 
   296 
   291                 TInt leaveCode( KErrNone );
   297                 TInt leaveCode( KErrNone );
   292                 TRAP( leaveCode, ret = DoExtFuncL( aTsyReqHandle, aIpc, 
   298                 TRAP( leaveCode, ret = DoExtFuncL( aTsyReqHandle, aIpc, 
   293                     aPackage ); );
   299                     aPackage ); );
   294 
   300 
   306 #else
   312 #else
   307                     //Never comes here. See SetTypeOfResponse.
   313                     //Never comes here. See SetTypeOfResponse.
   308                     iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, 
   314                     iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, 
   309                         aTsyReqHandle );
   315                         aTsyReqHandle );
   310 #endif // REQHANDLE_TIMER
   316 #endif // REQHANDLE_TIMER
       
   317                     // We've finished with this value now. Clear it so it doesn't leak
       
   318                     //  up to any other instances of this method down the call stack
       
   319                     iReqHandleType = EMultimodeSmsReqHandleUnknown;
   311                     }
   320                     }
   312                 break;
   321                 break;
   313             }
   322             }
   314         }
   323         }
   315 
   324 
   743         if ( iNotifyReceiveModeChangePtr )
   752         if ( iNotifyReceiveModeChangePtr )
   744 			{
   753 			{
   745 			*iNotifyReceiveModeChangePtr = iMobileSmsReceiveMode;
   754 			*iNotifyReceiveModeChangePtr = iMobileSmsReceiveMode;
   746 			}
   755 			}
   747         ReqCompleted( reqHandle, KErrNone );
   756         ReqCompleted( reqHandle, KErrNone );
   748         iNotifyReceiveModeChangePtr = NULL;
       
   749         }
   757         }
   750     }
   758     }
   751 
   759 
   752 //---------------------------------------------------------------------------- 
   760 //---------------------------------------------------------------------------- 
   753 // CMmSmsTsy::ReceiveMessageL 
   761 // CMmSmsTsy::ReceiveMessageL 
  1325     TTsyReqHandle reqHandle = iTsyReqHandleStore->ResetTsyReqHandle( 
  1333     TTsyReqHandle reqHandle = iTsyReqHandleStore->ResetTsyReqHandle( 
  1326         EMultimodeSmsAckStored );     
  1334         EMultimodeSmsAckStored );     
  1327     if ( reqHandle )
  1335     if ( reqHandle )
  1328         {
  1336         {
  1329         ReqCompleted( reqHandle, aError );
  1337         ReqCompleted( reqHandle, aError );
       
  1338         }
       
  1339 
       
  1340     if (aError != KErrNone)
       
  1341         {
       
  1342         // Ack error from LTSY. Need to reject receive messege request, to force the client to repost it.
       
  1343         reqHandle = iTsyReqHandleStore->ResetTsyReqHandle(EMultimodeSmsReceiveMessage);
       
  1344         if( reqHandle != 0 )
       
  1345             {
       
  1346             ReqCompleted(reqHandle,  KErrGeneral);
       
  1347             }
       
  1348         iServerRoutingActivity = ERoutingNotActivated;
  1330         }
  1349         }
  1331     }   
  1350     }   
  1332 
  1351 
  1333 //---------------------------------------------------------------------------- 
  1352 //---------------------------------------------------------------------------- 
  1334 // CMmSmsTsy::NackSmsStored 
  1353 // CMmSmsTsy::NackSmsStored 
  1462         EMultimodeSmsNackStored );
  1481         EMultimodeSmsNackStored );
  1463     if ( reqHandle )
  1482     if ( reqHandle )
  1464         {
  1483         {
  1465         ReqCompleted( reqHandle, aError );
  1484         ReqCompleted( reqHandle, aError );
  1466         }
  1485         }
       
  1486 
       
  1487     if (aError != KErrNone)
       
  1488         {
       
  1489         // Nack error from LTSY. Need to reject receive messege request, to force the client to repost it.
       
  1490         reqHandle = iTsyReqHandleStore->ResetTsyReqHandle(EMultimodeSmsReceiveMessage);
       
  1491         if( reqHandle != 0 )
       
  1492             {
       
  1493             ReqCompleted(reqHandle,  KErrGeneral);
       
  1494             }
       
  1495         iServerRoutingActivity = ERoutingNotActivated;
       
  1496         }
  1467     }
  1497     }
  1468 
  1498 
  1469 //---------------------------------------------------------------------------- 
  1499 //---------------------------------------------------------------------------- 
  1470 // CMmSmsTsy::ResumeSmsReception 
  1500 // CMmSmsTsy::ResumeSmsReception 
  1471 // Notify SMS Server, that client have again free memory for incoming SMSes
  1501 // Notify SMS Server, that client have again free memory for incoming SMSes
  2785     TInt timeOut( 0 );
  2815     TInt timeOut( 0 );
  2786 
  2816 
  2787     switch ( aReqHandleType )
  2817     switch ( aReqHandleType )
  2788         {
  2818         {
  2789         // SMS specific requests
  2819         // SMS specific requests
  2790         case EMultimodeSmsSetReceiveMode:
       
  2791             timeOut = KMmSmsSetReceiveMode;
       
  2792             break;
       
  2793         case EMultimodeSmsAckStored:
  2820         case EMultimodeSmsAckStored:
  2794         case EMultimodeSmsNackStored:
  2821         case EMultimodeSmsNackStored:
  2795             timeOut = KMmSmsAckNackMessage;
  2822             timeOut = KMmSmsAckNackMessage;
  2796             break;
  2823             break;
  2797         case EMultimodeSmsSendMessage:
  2824         case EMultimodeSmsSendMessage: