telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmstsy.cpp
branchRCL_3
changeset 74 9200f38b1324
parent 66 07a122eea281
child 82 042fd2753b8f
equal deleted inserted replaced
70:4814c5a49428 74:9200f38b1324
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
   299                     aPackage ); );
   299                     aPackage ); );
   300 
   300 
   301                 if ( KErrNone != leaveCode )
   301                 if ( KErrNone != leaveCode )
   302                     {
   302                     {
   303 TFLOGSTRING3("CMmSmsTsy: Leave trapped!, IPC=%d, error value:%d", aIpc, leaveCode );
   303 TFLOGSTRING3("CMmSmsTsy: Leave trapped!, IPC=%d, error value:%d", aIpc, leaveCode );
   304                     ReqCompleted( aTsyReqHandle, leaveCode );
   304                     //reset request handle to indicate the request is no longer ongoing
       
   305 					iTsyReqHandleStore->FindAndResetTsyReqHandle( aTsyReqHandle );
       
   306 					ReqCompleted( aTsyReqHandle, leaveCode );
   305                     }
   307                     }
   306 
   308 
   307                 //save request handle
   309                 //save request handle
   308                 if ( EMultimodeSmsReqHandleUnknown != iReqHandleType )
   310                 else if ( EMultimodeSmsReqHandleUnknown != iReqHandleType )
   309                     {
   311                     {
   310 #ifdef REQHANDLE_TIMER
   312 #ifdef REQHANDLE_TIMER
   311                     SetTypeOfResponse( iReqHandleType, aTsyReqHandle );
   313                     SetTypeOfResponse( iReqHandleType, aTsyReqHandle );
   312 #else
   314 #else
   313                     //Never comes here. See SetTypeOfResponse.
   315                     //Never comes here. See SetTypeOfResponse.
   314                     iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, 
   316                     iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, 
   315                         aTsyReqHandle );
   317                         aTsyReqHandle );
   316 #endif // REQHANDLE_TIMER
   318 #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;
       
   320                     }
   319                     }
       
   320                 // We've finished with this value now. Clear it so it doesn't leak
       
   321                 //  up to any other instances of this method down the call stack
       
   322                 iReqHandleType = EMultimodeSmsReqHandleUnknown;
   321                 break;
   323                 break;
   322             }
   324             }
   323         }
   325         }
   324 
   326 
   325     return ret;
   327     return ret;
  1791         RMobileSmsMessaging::TMobileSmsSendAttributesV1& msgAttr = 
  1793         RMobileSmsMessaging::TMobileSmsSendAttributesV1& msgAttr = 
  1792             ( *attsPckg )();
  1794             ( *attsPckg )();
  1793         
  1795         
  1794         // structure for all sms parameters and data
  1796         // structure for all sms parameters and data
  1795         TSendSmsDataAndAttributes sendData;
  1797         TSendSmsDataAndAttributes sendData;
  1796         
  1798         TSmsRequestTypes reqType;
       
  1799 
  1797         sendData.iAttributes = &msgAttr;
  1800         sendData.iAttributes = &msgAttr;
  1798         sendData.iMsgData = aMsgData;
  1801         sendData.iMsgData = aMsgData;
  1799   
  1802   
  1800         if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
  1803         if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
  1801             {
  1804             {
  1802             //set ipc
  1805             //set ipc
  1803             sendData.iIpc = EMobileSmsMessagingSendMessageNoFdnCheck;    
  1806             sendData.iIpc = EMobileSmsMessagingSendMessageNoFdnCheck; 
  1804             }
  1807             reqType = EMultimodeSmsSendMessageNoFdnCheck;
  1805         if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed )
  1808             }
       
  1809         else //(iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed)
  1806             {
  1810             {
  1807             //set ipc
  1811             //set ipc
  1808             sendData.iIpc = EMobileSmsMessagingSendMessage;        
  1812             sendData.iIpc = EMobileSmsMessagingSendMessage;
       
  1813             reqType = EMultimodeSmsSendMessage;
  1809             }
  1814             }
  1810 
  1815 
  1811         // Pack parameters
  1816         // Pack parameters
  1812         package.PackData( &sendData );
  1817         package.PackData( &sendData );
  1813 
  1818 
  1814         CSmsSendRequest* smsSendReq = new (ELeave) CSmsSendRequest();
  1819         iSmsSendReq = new (ELeave) CSmsSendRequest();
  1815         smsSendReq->SetSmsDataAndAttributes( sendData );
  1820         iSmsSendReq->SetSmsDataAndAttributes( sendData );
  1816 
  1821 
  1817         // save send request
  1822         TFLOGSTRING("TSY: CMmSmsTsy::SendMessageL: Send request saved");
  1818         iSmsSendReq = smsSendReq;
  1823 
  1819 TFLOGSTRING("TSY: CMmSmsTsy::SendMessageL: Send request saved");
  1824 #ifdef REQHANDLE_TIMER
  1820 
  1825         SetTypeOfResponse( reqType, aTsyReqHandle );
       
  1826 #else
       
  1827         iTsyReqHandleStore->SetTsyReqHandle( reqType, aTsyReqHandle );
       
  1828 #endif // REQHANDLE_TIMER
       
  1829 
       
  1830         TInt leaveCode( KErrNone );
  1821         // send request to DOS
  1831         // send request to DOS
  1822         // packed parameter: TSendSmsDataAndAttributes
  1832         // packed parameter: TSendSmsDataAndAttributes
  1823         if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
  1833         TRAP(leaveCode, ret = iMmPhone->MessageManager()->HandleRequestL(sendData.iIpc, &package ););
  1824             {
  1834 
  1825             ret = iMmPhone->MessageManager()->HandleRequestL( 
  1835         if ( (leaveCode != KErrNone) || (ret != KErrNone) )
  1826                 EMobileSmsMessagingSendMessageNoFdnCheck, &package );
  1836             {
  1827             }
  1837             iTsyReqHandleStore->ResetTsyReqHandle( reqType );
  1828         if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed )
  1838             delete iSmsSendReq;              // Delete object
  1829             {
       
  1830             ret = iMmPhone->MessageManager()->HandleRequestL( 
       
  1831                 EMobileSmsMessagingSendMessage, &package );
       
  1832             }
       
  1833 
       
  1834         if ( KErrNone == ret )
       
  1835             {  
       
  1836             if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
       
  1837                 {
       
  1838                 //set request type
       
  1839                 iReqHandleType = EMultimodeSmsSendMessageNoFdnCheck;    
       
  1840                 }
       
  1841             if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed )
       
  1842                 {
       
  1843                 //set request type
       
  1844                 iReqHandleType = EMultimodeSmsSendMessage;    
       
  1845                 }            
       
  1846             smsSendReq->IncreaseSendCounter();
       
  1847             }
       
  1848         else 
       
  1849             {
       
  1850             // Phonet returned error
       
  1851             delete smsSendReq;              // Delete object
       
  1852             iSmsSendReq = NULL; // Reset pointer
  1839             iSmsSendReq = NULL; // Reset pointer
  1853             // Message construction failed or phonet sender returned error
       
  1854             ReqCompleted( aTsyReqHandle, ret );
       
  1855             // reset pointer to client memory
  1840             // reset pointer to client memory
  1856             iSendMessageMsgAttrPckgPtr = NULL;
  1841             iSendMessageMsgAttrPckgPtr = NULL;
  1857             
       
  1858             iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;
  1842             iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;
       
  1843             if (leaveCode != KErrNone)
       
  1844                 {
       
  1845                 ReqCompleted( aTsyReqHandle, leaveCode );
       
  1846                 }
       
  1847             else
       
  1848                 {
       
  1849                 ReqCompleted( aTsyReqHandle, ret );
       
  1850                 }
       
  1851             }
       
  1852         else
       
  1853             {
       
  1854             iSmsSendReq->IncreaseSendCounter();
  1859             }
  1855             }
  1860         }
  1856         }
  1861 
  1857 
  1862     return KErrNone;
  1858     return KErrNone;
  1863     }
  1859     }
  1930             iSmsSendReq = NULL;   // Reset pointer
  1926             iSmsSendReq = NULL;   // Reset pointer
  1931             }
  1927             }
  1932         // reset req handle and complete request
  1928         // reset req handle and complete request
  1933         TTsyReqHandle reqHandle = iTsyReqHandleStore->ResetTsyReqHandle( 
  1929         TTsyReqHandle reqHandle = iTsyReqHandleStore->ResetTsyReqHandle( 
  1934                    EMultimodeSmsSendMessage );
  1930                    EMultimodeSmsSendMessage );
  1935         ReqCompleted( reqHandle, extendedError );
  1931         if ( EMultimodeSmsReqHandleUnknown < reqHandle )
  1936         // reset pointer to client memory
  1932             {
  1937         iSendMessageMsgAttrPckgPtr = NULL;
  1933             ReqCompleted( reqHandle, extendedError );
  1938         iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;
  1934             // reset pointer to client memory
       
  1935             iSendMessageMsgAttrPckgPtr = NULL;
       
  1936             iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;        
       
  1937             }
  1939         }        
  1938         }        
  1940     else if ( ( KErrNone != aError ) && ( KErrTimedOut != aError ) 
  1939     else if ( ( KErrNone != aError ) && ( KErrTimedOut != aError ) 
  1941         && ( KErrGsmSMSOperationNotAllowed != 
  1940         && ( KErrGsmSMSOperationNotAllowed != 
  1942             CMmCommonStaticUtility::ExtendedErrorCode ( aError ) )
  1941             CMmCommonStaticUtility::ExtendedErrorCode ( aError ) )
  1943             // FDB check failed
  1942             // FDB check failed