phoneplugins/csplugin/src/cspcall.cpp
changeset 50 377c906a8701
parent 45 6b911d05207e
child 60 1eef62f5c541
equal deleted inserted replaced
46:bc5a64e5bc3c 50:377c906a8701
  1009 TBool CSPCall::IsCallForwarded( ) const
  1009 TBool CSPCall::IsCallForwarded( ) const
  1010     {
  1010     {
  1011     CSPLOGSTRING(CSPREQIN, "CSPCall::IsCallForwarded <");
  1011     CSPLOGSTRING(CSPREQIN, "CSPCall::IsCallForwarded <");
  1012     TBool ret( EFalse );
  1012     TBool ret( EFalse );
  1013     TInt err( KErrNone );
  1013     TInt err( KErrNone );
  1014     RMobileCall::TMobileCallInfoV3 callInfo;
  1014     RMobileCall::TMobileCallInfoV3Pckg pck( iEtelCallInfo );
  1015     RMobileCall::TMobileCallInfoV3Pckg pck( callInfo );
       
  1016     err = iCall.GetMobileCallInfo( pck );
  1015     err = iCall.GetMobileCallInfo( pck );
  1017     if (err == KErrNone )
  1016     if (err == KErrNone )
  1018         {
  1017         {
  1019         ret = callInfo.iForwarded;
  1018         ret = iEtelCallInfo.iForwarded;
  1020         }
  1019         }
  1021     
  1020     
  1022     CSPLOGSTRING2(CSPREQIN, 
  1021     CSPLOGSTRING2(CSPREQIN, 
  1023             "CSPCall::IsCallForwarded > forwarder: %d", ret );
  1022             "CSPCall::IsCallForwarded > forwarder: %d", ret );
  1024     
  1023     
  1388     // If COLP number is different from original dialled number
  1387     // If COLP number is different from original dialled number
  1389     // it is available in connected state of a MO call.
  1388     // it is available in connected state of a MO call.
  1390     // TSY does not send notification so number must be fetched.
  1389     // TSY does not send notification so number must be fetched.
  1391     if ( IsMobileOriginated() )
  1390     if ( IsMobileOriginated() )
  1392         {
  1391         {
  1393         RMobileCall::TMobileCallInfoV3 callInfo;
  1392         RMobileCall::TMobileCallInfoV3Pckg callInfoPckg( iEtelCallInfo );
  1394         RMobileCall::TMobileCallInfoV3Pckg callInfoPckg( callInfo );
  1393         GetMobileCallInfo( callInfoPckg );
  1395     
  1394         if ( iEtelCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() )
  1396         GetMobileCallInfo( callInfoPckg );    
  1395             {
  1397         callInfo = callInfoPckg();
       
  1398     
       
  1399         if ( callInfo.iRemoteParty.iRemoteNumber.iTelNumber.Length() )
       
  1400             {     
       
  1401             NotifyRemotePartyInfoChanged( KNullDesC(),
  1396             NotifyRemotePartyInfoChanged( KNullDesC(),
  1402                 callInfo.iRemoteParty.iRemoteNumber.iTelNumber);        
  1397                 iEtelCallInfo.iRemoteParty.iRemoteNumber.iTelNumber);        
  1403             }
  1398             }
  1404         }
  1399         }
       
  1400 
  1405     }
  1401     }
  1406 
  1402 
  1407 
  1403 
  1408 // ---------------------------------------------------------------------------
  1404 // ---------------------------------------------------------------------------
  1409 // CSPCall::CreateCallHandlersL
  1405 // CSPCall::CreateCallHandlersL
  1764 TInt CSPCall::ExitCodeError() const
  1760 TInt CSPCall::ExitCodeError() const
  1765     {
  1761     {
  1766     CSPLOGSTRING2(CSPINT, "CSPCall::ExitCodeError < this: %x", 
  1762     CSPLOGSTRING2(CSPINT, "CSPCall::ExitCodeError < this: %x", 
  1767                     this );
  1763                     this );
  1768     TInt callError;
  1764     TInt callError;
  1769     RMobileCall::TMobileCallInfoV3 callInfo;
  1765     RMobileCall::TMobileCallInfoV3Pckg pck( iEtelCallInfo );
  1770     RMobileCall::TMobileCallInfoV3Pckg pck( callInfo );
       
  1771     TInt getErr = iCall.GetMobileCallInfo( pck );
  1766     TInt getErr = iCall.GetMobileCallInfo( pck );
  1772     // Is there value in higher 16 bits
  1767     // Is there value in higher 16 bits
  1773     if ( KErrNone == getErr && (callInfo.iExitCode & 0xFFFF0000) ) 
  1768     if ( KErrNone == getErr && (iEtelCallInfo.iExitCode & 0xFFFF0000) ) 
  1774         {
  1769         {
  1775         CSPLOGSTRING2(CSPINT, "CSPCall::ExitCodeError callInfo.iExitCode %d", 
  1770         CSPLOGSTRING2(CSPINT, "CSPCall::ExitCodeError callInfo.iExitCode %d", 
  1776             callInfo.iExitCode );
  1771             iEtelCallInfo.iExitCode );
  1777         callError = ( callInfo.iExitCode >> KTimesToSplitValue ); 
  1772         callError = ( iEtelCallInfo.iExitCode >> KTimesToSplitValue ); 
  1778         
  1773         
  1779         if ( callError > KErrEtelGsmBase ) 
  1774         if ( callError > KErrEtelGsmBase ) 
  1780             // Not in valid exteded range
  1775             // Not in valid exteded range
  1781             {
  1776             {
  1782             // Ignore invalid extented code
  1777             // Ignore invalid extented code
  1783             if ( ( callInfo.iExitCode & 0x0000FFFF ) == KErrNone ) 
  1778             if ( ( iEtelCallInfo.iExitCode & 0x0000FFFF ) == KErrNone ) 
  1784                 // core error is zero
  1779                 // core error is zero
  1785                 {
  1780                 {
  1786                 callError = KErrNone;
  1781                 callError = KErrNone;
  1787                 }
  1782                 }
  1788             else
  1783             else
  1789                 {
  1784                 {
  1790                 callError = ( ( callInfo.iExitCode & 0x0000FFFF ) 
  1785                 callError = ( ( iEtelCallInfo.iExitCode & 0x0000FFFF ) 
  1791                     | 0xFFFF0000 ); 
  1786                     | 0xFFFF0000 ); 
  1792                 }
  1787                 }
  1793             }
  1788             }
  1794         }
  1789         }
  1795     // Higher and lower 16 bits are zero
  1790     // Higher and lower 16 bits are zero
  1796     else if ( !( callInfo.iExitCode & 0xFFFFFFFF ) ) 
  1791     else if ( !( iEtelCallInfo.iExitCode & 0xFFFFFFFF ) ) 
  1797         {
  1792         {
  1798         callError = KErrNone;
  1793         callError = KErrNone;
  1799         }
  1794         }
  1800     else 
  1795     else 
  1801         {
  1796         {
  1802         // No extended error, expand value to full range
  1797         // No extended error, expand value to full range
  1803         callError = ( callInfo.iExitCode | 0xFFFF0000 );
  1798         callError = ( iEtelCallInfo.iExitCode | 0xFFFF0000 );
  1804         }
  1799         }
  1805         
  1800         
  1806     CSPLOGSTRING2(CSPINT, "CSPCall::ExitCodeError > err: %d", callError);
  1801     CSPLOGSTRING2(CSPINT, "CSPCall::ExitCodeError > err: %d", callError);
  1807         
  1802         
  1808     return callError;
  1803     return callError;