--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/simatktsy_dll/src/satmessaging.cpp Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,2258 @@
+/*
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "satmessaging.h" // csatmessaging class
+#include "satcc.h" // sat call control class
+#include "sattimer.h" // sat timer class
+#include "sateventdownload.h" // sat event download class
+#include "satdatadownload.h" // sat data download class
+#include "saticon.h" // sat icon class
+#include "satmosmsctrl.h" // sat mo sms control class
+#include "satnotifications.h" // sat notifications class
+#include "ber_tlv.h" // sat ber-tlv classes
+#include "satutil.h" // sat utility class
+#include "satflightmodestatus.h"// sat flight mode status class
+#include "satnumberofslots.h" // multimode tsy slot definitions
+
+#include <satcs.h> // etel sat ipc request definitions
+#include <ctsy/serviceapi/cmmsmsutility.h> // ton/npi constants, tsendsmsdataandattributes
+#include "cmmmessagerouter.h" // cmessagerouter class of nokiatsy component
+#include <ctsy/pluginapi/cmmdatapackage.h> // parameter packing
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h> // for ipc
+#include <tisi.h> // isi message
+#include <infoisi.h> // isa cellmo info server
+#include <uiccisi.h> // UICC server
+
+#include "osttracedefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "satmessagingtraces.h"
+#endif
+
+#if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
+#include <cmmsmstsy.h> // sms functionality
+#define __TFLOGGER_H__
+#include <cmmphonetsy.h>
+
+#undef __TFLOGGER_H__
+#endif //NCP_COMMON_S60_VERSION_SUPPORT
+
+// EXTERNAL DATA STRUCTURES
+ //None
+
+// EXTERNAL FUNCTION PROTOTYPES
+ //None
+
+// CONSTANTS
+const TUint8 KHelp = 1;
+const TUint8 KNoHelp = 0;
+
+// MACROS
+ //None
+
+// LOCAL CONSTANTS AND MACROS
+ //None
+
+// MODULE DATA STRUCTURES
+ //None
+
+// LOCAL FUNCTION PROTOTYPES
+ //None
+
+// FORWARD DECLARATIONS
+ //None
+
+// ============================= LOCAL FUNCTIONS ===============================
+ //None
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::CTsySatMessaging
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+#if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
+CTsySatMessaging::CTsySatMessaging
+ (
+ CMmPhoneTsy* aMmPhone,
+ CMmPhoNetSender* aPnSend,
+ CMmPhoNetReceiver* aPnReceive,
+ TName aName
+ ) : CTsySatMessagingBase(),
+ iMmPhone( aMmPhone ),
+ iPnSend( aPnSend ),
+ iPnReceive( aPnReceive ),
+ iSatAppName( aName ),
+ iSendSmsTsyReqHandle( NULL )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_CTSYSATMESSAGING, "CTsySatMessaging::CTsySatMessaging" );
+ TFLOGSTRING("TSY: CTsySatMessaging::CTsySatMessaging");
+ /* None */
+ }
+#else
+CTsySatMessaging::CTsySatMessaging
+ (
+ CMmPhoNetSender* aPnSend,
+ CMmPhoNetReceiver* aPnReceive,
+ CMmMessageRouter* aRouter
+ )
+
+ {
+ OstTrace0( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_CTSYSATMESSAGING, "CTsySatMessaging::CTsySatMessaging" );
+
+ iPnSend = aPnSend;
+ iPnReceive = aPnReceive;
+ iRouter = aRouter;
+ iSendSmsTsyReqHandle = NULL;
+
+ TFLOGSTRING("TSY: CTsySatMessaging::CTsySatMessaging");
+ /* None */
+ }
+#endif //NCP_COMMON_S60_VERSION_SUPPORT
+
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::ConstructL()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_CONSTRUCTL, "CTsySatMessaging::ConstructL" );
+ TFLOGSTRING("TSY: CTsySatMessaging::ConstructL");
+
+ // Create message handler object, to receive ISI messages from ISA CellMo
+ iSatMessHandler = CSatMessHandler::NewL( this, iPnSend );
+
+ // Phonet receiver has to know the SatMessHandler.
+ iPnReceive->SetSatMessHandler( iSatMessHandler );
+
+ // Initialize Flight Mode Status handler
+ iSatFlightModeStatus = CSatFlightModeStatus::NewL( iSatMessHandler, this );
+
+ // Initialize SAT Notifications objects
+ iNotifyMoSmControlRequest =
+ new( ELeave )CSatNotifyMoSmControlRequest( iSatMessHandler, this );
+ iNotifyDisplayText =
+ new( ELeave )CSatNotifyDisplayText( iSatMessHandler, this );
+ iNotifyGetInkey =
+ new( ELeave )CSatNotifyGetInkey( iSatMessHandler, this );
+ iNotifyGetInput =
+ new( ELeave )CSatNotifyGetInput( iSatMessHandler, this );
+ iNotifyPlayTone =
+ new( ELeave )CSatNotifyPlayTone( iSatMessHandler, this );
+ iNotifySetUpMenu =
+ new( ELeave )CSatNotifySetUpMenu( iSatMessHandler, this );
+ iNotifySelectItem =
+ new( ELeave )CSatNotifySelectItem( iSatMessHandler, this );
+ iNotifySendSm =
+ new( ELeave )CSatNotifySendSm( iSatMessHandler, this );
+ iNotifySendSs =
+ new( ELeave )CSatNotifySendSs( iSatMessHandler, this );
+ iNotifySendUssd =
+ new( ELeave )CSatNotifySendUssd( iSatMessHandler, this );
+ iNotifySetUpCall =
+ new( ELeave )CSatNotifySetUpCall( iSatMessHandler, this );
+ iNotifyRefresh =
+ new( ELeave )CSatNotifyRefresh( iSatMessHandler, this );
+ iNotifySimSessionEnd =
+ new( ELeave )CSatNotifySimSessionEnd( iSatMessHandler, this );
+ iNotifySetUpIdleModeText =
+ new( ELeave )CSatNotifySetUpIdleModeText( iSatMessHandler, this );
+ iNotifyLaunchBrowser =
+ new( ELeave )CSatNotifyLaunchBrowser( iSatMessHandler, this );
+ iNotifyCallControlRequest =
+ new( ELeave )CSatNotifyCallControlRequest( iSatMessHandler, this );
+ iNotifyPollInterval =
+ new( ELeave )CSatNotifyPollInterval( iSatMessHandler, this );
+ iNotifySendDtmf =
+ new( ELeave )CSatNotifySendDtmf( iSatMessHandler, this );
+ iNotifySetUpEventList =
+ new( ELeave )CSatNotifySetUpEventList( iSatMessHandler, this );
+ iNotifyPollingOff =
+ new( ELeave )CSatNotifyPollingOff( iSatMessHandler, this );
+ iNotifyLocalInfo =
+ new( ELeave )CSatNotifyLocalInfo( iSatMessHandler, this );
+ iNotifyTimerMgmt =
+ new( ELeave )CSatNotifyTimerMgmt( iSatMessHandler, this );
+ iNotifyMoreTime =
+ new( ELeave )CSatNotifyMoreTime( iSatMessHandler, this );
+ iNotifyOpenChannel =
+ new( ELeave )CSatNotifyOpenChannel( iSatMessHandler, this );
+ iNotifyLanguageNotification =
+ new( ELeave )CSatNotifyLanguageNotification( iSatMessHandler, this );
+ iNotifyGetChannelStatus =
+ new( ELeave )CSatNotifyGetChannelStatus( iSatMessHandler, this );
+ iNotifyCloseChannel =
+ new( ELeave )CSatNotifyCloseChannel( iSatMessHandler, this );
+ iNotifyReceiveData =
+ new( ELeave )CSatNotifyReceiveData( iSatMessHandler, this );
+ iNotifySendData =
+ new( ELeave )CSatNotifySendData( iSatMessHandler, this );
+
+ // Transaction id handling
+ iTransIdMsg = new( ELeave )TTransIdMessage();
+
+ // Initialize event download handler
+ iEventDownload = CSatEventDownload::NewL( iSatMessHandler, this );
+
+ // Initialize data download handler
+ iSatDataDownload = CSatDataDownload::NewL( iSatMessHandler, this );
+
+ // Initialize call control handler
+ iSatCC = CSatCC::NewL( iSatMessHandler, this );
+
+ // Initialize MO-SMS Control handler
+ iSatMoSmsCtrl = CSatMoSmsCtrl::NewL( iSatMessHandler, this );
+
+ // Initialize timer, this is used for implementing timer management
+ iSatTimer = CSatTimer::NewL( iSatMessHandler, this );
+
+ // Initialize SAT icon support implementation
+ iSatIcon = CSatIcon::NewL( iSatMessHandler, this );
+
+ // Request IMEI code. Needed in provide local info proactive command.
+ iSatMessHandler->InfoSerialNumberReadReq(
+ GetTransactionId(), INFO_SB_SN_IMEI_PLAIN );
+
+ // Request Network status
+ iSatMessHandler->NetCellInfoGetReq(
+ GetTransactionId() );
+
+ //Initalize flag, this is used to check if proactiveCommand is ongoing
+ iSatTimer->SetProactiveCommandOnGoingStatus( EFalse );
+
+ // Request access technology type
+ iSatMessHandler->NetRatReq( GetTransactionId() );
+
+#ifdef INFO_PP_SIM_OLD_POLL_INTERVAL
+ // Check old poll interval is supported by ME's Product Profile
+ iSatMessHandler->InfoPpReadReq( INFO_PP_SIM_OLD_POLL_INTERVAL );
+#endif
+
+#ifdef INFO_PP_ENHANCED_NETWORK_SELECTION
+ // Check INFO_PP_ENHANCED_NETWORK_SELECTION status in product profile
+ iSatMessHandler->InfoPpReadReq( INFO_PP_ENHANCED_NETWORK_SELECTION );
+#endif
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+#if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
+EXPORT_C CTsySatMessaging* CTsySatMessaging::NewL
+ (
+ CMmPhoneTsy* aMmPhone,
+ CMmMessageRouterBase* aRouter,
+ TName aName
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NEWL, "CTsySatMessaging::NewL" );
+
+ TFLOGSTRING("TSY: CTsySatMessaging::NewL");
+ // First check that given arguments are not NULL pointers
+ if ( ( NULL == aMmPhone ) || ( NULL == aRouter ) )
+ {
+ TFLOGSTRING("TSY: CTsySatMessaging::NewL, NULL pointers were given \
+ leaving!");
+ OstTrace0( TRACE_NORMAL, DUP2_CTSYSATMESSAGING_NEWL, "CTsySatMessaging::NewL, NULL pointers were given leaving!" );
+
+ User::Leave( KErrArgument );
+ }
+ CMmPhoNetSender* pnSend = NULL;
+ CMmPhoNetReceiver* pnReceive = NULL;
+ // Get the ISI message router (to handle ISA CellMo messages)
+ CMmMessageRouter* licenseeMessageRouter =
+ static_cast<CMmMessageRouter*>( aRouter );
+ // Get the ISI message sender
+ pnSend = licenseeMessageRouter->GetPhoNetSender();
+ // Get the ISI message receivde
+ pnReceive = licenseeMessageRouter->GetPhoNetReceiver();
+
+ if ( ( NULL == pnSend ) || ( NULL == pnReceive ) )
+ {
+ // PhoNet is not correctly initialized. No conditions to survive.
+ // This may happen if LicenseeTSY stub is used with real SIM_ATK_TSY
+ TFLOGSTRING("TSY: CTsySatMessaging::NewL, Construction failed \
+ PhoNet is not initialized, leaving!");
+ OstTrace0( TRACE_NORMAL, DUP5_CTSYSATMESSAGING_NEWL, "CTsySatMessaging::NewL, Construction failed PhoNet is not initialized, leaving!" );
+
+ User::Leave( KErrArgument );
+ }
+ // Create a SatMessaging session
+ CTsySatMessaging* subsession = new (ELeave) CTsySatMessaging( aMmPhone,
+ pnSend, pnReceive, aName );
+ CleanupStack::PushL( subsession );
+ subsession->ConstructL();
+ CleanupStack::Pop( subsession );
+ return subsession;
+ }
+#else
+EXPORT_C CTsySatMessaging* CTsySatMessaging::NewL
+ (
+ CMmMessageRouter* aRouter
+ )
+ {
+ OstTrace0( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_NEWL, "CTsySatMessaging::NewL" );
+
+ TFLOGSTRING("TSY: CTsySatMessaging::NewL");
+ // First check that given arguments are not NULL pointers
+ if ( NULL == aRouter )
+ {
+ TFLOGSTRING("TSY: CTsySatMessaging::NewL, NULL pointers were given \
+ leaving!");
+ OstTrace0( TRACE_NORMAL, DUP3_CTSYSATMESSAGING_NEWL, "CTsySatMessaging::NewL, NULL pointers were given leaving!" );
+
+ User::Leave( KErrArgument );
+ }
+ CMmPhoNetSender* pnSend = NULL;
+ CMmPhoNetReceiver* pnReceive = NULL;
+ // Get the ISI message router (to handle ISA CellMo messages)
+
+ // Get the ISI message sender
+ pnSend = aRouter->GetPhoNetSender();
+ // Get the ISI message receivde
+ pnReceive = aRouter->GetPhoNetReceiver();
+
+ if ( ( NULL == pnSend ) || ( NULL == pnReceive ) )
+ {
+ // PhoNet is not correctly initialized. No conditions to survive.
+ // This may happen if LicenseeTSY stub is used with real SIM_ATK_TSY
+ TFLOGSTRING("TSY: CTsySatMessaging::NewL, Construction failed \
+ PhoNet is not initialized, leaving!");
+ OstTrace0( TRACE_NORMAL, DUP4_CTSYSATMESSAGING_NEWL, "CTsySatMessaging::NewL, Construction failed PhoNet is not initialized, leaving!" );
+
+ User::Leave( KErrArgument );
+ }
+ // Create a SatMessaging session
+ CTsySatMessaging* subsession = new (ELeave) CTsySatMessaging(
+ pnSend, pnReceive, aRouter );
+ CleanupStack::PushL( subsession );
+ subsession->ConstructL();
+ CleanupStack::Pop( subsession );
+ return subsession;
+ }
+#endif //NCP_COMMON_S60_VERSION_SUPPORT
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::~CTsySatMessaging
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CTsySatMessaging::~CTsySatMessaging()
+ {
+ OstTrace0( TRACE_NORMAL, DUP2_CTSYSATMESSAGING_CTSYSATMESSAGING, "CTsySatMessaging::~CTsySatMessaging" );
+ TFLOGSTRING("TSY: CTsySatMessaging::~CTsySatMessaging");
+
+ // Delete message handler object, SAT SMS sending
+ delete iSatMessHandler;
+
+ // Set pointer value to Null
+ if( iPnReceive )
+ {
+ iPnReceive->SetSatMessHandler( NULL );
+ }
+
+ // Delete internal components
+ delete iSatFlightModeStatus;
+ delete iTransIdMsg;
+ delete iEventDownload;
+ delete iSatDataDownload;
+ delete iSatCC;
+ delete iSatMoSmsCtrl;
+ delete iSatTimer;
+ delete iSatIcon;
+
+ // Delete Notifications objects
+ delete iNotifyMoSmControlRequest;
+ delete iNotifyDisplayText;
+ delete iNotifyGetInkey;
+ delete iNotifyGetInput;
+ delete iNotifyPlayTone;
+ delete iNotifySetUpMenu;
+ delete iNotifySelectItem;
+ delete iNotifySendSm;
+ delete iNotifySendSs;
+ delete iNotifySendUssd;
+ delete iNotifySetUpCall;
+ delete iNotifyRefresh;
+ delete iNotifySimSessionEnd;
+ delete iNotifySetUpIdleModeText;
+ delete iNotifyLaunchBrowser;
+ delete iNotifyCallControlRequest;
+ delete iNotifyPollInterval;
+ delete iNotifySendDtmf;
+ delete iNotifySetUpEventList;
+ delete iNotifyPollingOff;
+ delete iNotifyLocalInfo;
+ delete iNotifyTimerMgmt;
+ delete iNotifyMoreTime;
+ delete iNotifyOpenChannel;
+ delete iNotifyLanguageNotification;
+ delete iNotifyGetChannelStatus;
+ delete iNotifyCloseChannel;
+ delete iNotifyReceiveData;
+ delete iNotifySendData;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::OpenNewObjectByNameL
+// Opens a new object identified by a name.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CTelObject* CTsySatMessaging::OpenNewObjectByNameL
+ (
+ const TDesC& /* aName */ // Name of the object
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_OPENNEWOBJECTBYNAMEL, "CTsySatMessaging::OpenNewObjectByNameL" );
+ TFLOGSTRING("TSY: CTsySatMessaging::OpenNewObjectByNameL");
+ User::Leave( KErrNotSupported );
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::OpenNewObjectL
+// Opens a new object identified by new name. Can leave. Not in use.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CTelObject* CTsySatMessaging::OpenNewObjectL
+ (
+ TDes& /*aNewName*/ // Name of the new object
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_OPENNEWOBJECTL, "CTsySatMessaging::OpenNewObjectL" );
+ TFLOGSTRING("TSY: CTsySatMessaging::OpenNewObjectL");
+ User::Leave( KErrNotSupported );
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::ExtFunc
+// Command handler for ETel server messages. The IPC identifies
+// the command to be executed if supported.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::ExtFunc
+ (
+ const TTsyReqHandle aTsyReqHandle, // Request handle
+ const TInt aIpc, // IPC number of request
+ const TDataPackage& aPackage // Contains parameters for request
+ )
+ {
+ OstTraceExt2( TRACE_NORMAL, CTSYSATMESSAGING_EXTFUNC, "CTsySatMessaging::ExtFunc ReqHandle: %d IPC: %d", TInt(aTsyReqHandle), aIpc );
+
+ TFLOGSTRING3("TSY: CTsySatMessaging::ExtFunc ReqHandle=%d IPC=%d",
+ aTsyReqHandle, aIpc);
+ // some SAT functions need trapping, use two level function where
+ // first one is just a trap harness
+ // It is responsibility of IPC handling functions to always handle
+ // calling ReqComplete, ( it must either call it, or arrange it to
+ // be called in some way), except in the case of Leave. It is also
+ // assumed that after IPC handling function has called ReqComplete
+ // it doesn't Leave.
+ TInt trapError( KErrNone );
+ TRAP( trapError, DoExtFuncL( aTsyReqHandle, aIpc, aPackage ) );
+ if ( trapError != KErrNone )
+ {
+ ReqCompleted( aTsyReqHandle, trapError );
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::DoExtFuncL
+// Handles extended ETel SAT client requests, received from ExtFunc
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::DoExtFuncL
+ (
+ const TTsyReqHandle aTsyReqHandle, // Request handle
+ const TInt aIpc, // IPC number of request
+ const TDataPackage& aPackage // Contains parameters for request
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_DOEXTFUNCL, "CTsySatMessaging::DoExtFuncL" );
+ TFLOGSTRING("TSY: CTsySatMessaging::DoExtFuncL");
+ TAny* dataPtr=aPackage.Ptr1();
+ TAny* dataPtr2=aPackage.Ptr2();
+ switch ( aIpc )
+ {
+ case ESatNotifyDisplayTextPCmd:
+ {
+ iNotifyDisplayText->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySelectItemPCmd:
+ {
+ iNotifySelectItem->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyGetInkeyPCmd:
+ {
+ iNotifyGetInkey->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyGetInputPCmd:
+ {
+ iNotifyGetInput->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyPlayTonePCmd:
+ {
+ iNotifyPlayTone->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySetUpMenuPCmd:
+ {
+ iNotifySetUpMenu->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySendSmPCmd:
+ {
+ iNotifySendSm->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySendSsPCmd:
+ {
+ iNotifySendSs->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySendUssdPCmd:
+ {
+ iNotifySendUssd->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySetUpCallPCmd:
+ {
+ iNotifySetUpCall->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyRefreshPCmd:
+ {
+ iNotifyRefresh->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyRefreshRequiredParam:
+ {
+ iNotifyRefresh->NotifyRefreshRequired( aTsyReqHandle,
+ aPackage.Des1n() );
+ break;
+ }
+ case ESatRefreshAllowed:
+ {
+ ReqCompleted( aTsyReqHandle,
+ iNotifyRefresh->RefreshAllowed( aPackage.Des1n() ) );
+ break;
+ }
+ case ESatNotifyProactiveSimSessionEnd:
+ {
+ iNotifySimSessionEnd->Notify( aTsyReqHandle, NULL );
+ break;
+ }
+ case ESatNotifySetUpIdleModeTextPCmd:
+ {
+ iNotifySetUpIdleModeText->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyLaunchBrowserPCmd:
+ {
+ iNotifyLaunchBrowser->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyCallControlRequest:
+ {
+ iNotifyCallControlRequest->Notify( aTsyReqHandle,
+ aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySendDtmfPCmd:
+ {
+ iNotifySendDtmf->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySetUpEventListPCmd:
+ {
+ iNotifySetUpEventList->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyOpenChannelPCmd:
+ {
+ iNotifyOpenChannel->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyCloseChannelPCmd:
+ {
+ iNotifyCloseChannel->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyReceiveDataPCmd:
+ {
+ iNotifyReceiveData->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifySendDataPCmd:
+ {
+ iNotifySendData->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatEventDownload:
+ {
+ iEventDownload->ExtFunc( aTsyReqHandle, aPackage );
+ break;
+ }
+ // All IPC functions could be done the same way as Notifies are done:
+ // a class instead of a bare function.
+ case ESatTerminalRsp:
+ {
+ TerminalResponse( REINTERPRET_CAST( RSat::TPCmd*, dataPtr ),
+ aPackage.Des2n(),
+ aTsyReqHandle );
+ break;
+ }
+ case ESatMenuSelection:
+ {
+ MenuSelection( aPackage.Des1n(), aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyCbDownload:
+ {
+ NotifyCbDownload( aPackage.Des1n(), aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySmsPpDownload:
+ {
+ NotifySmsPpDownload( aPackage.Des1n(), aTsyReqHandle );
+ break;
+ }
+ case ESatSendMessageNoLogging:
+ {
+ SendMessageNoLoggingL( aPackage.Des1n(),
+ REINTERPRET_CAST( TUint16*, dataPtr2 ),
+ aTsyReqHandle );
+ break;
+ }
+ case ESatGetIcon:
+ {
+ iSatIcon->GetIcon( REINTERPRET_CAST( TUint8*, dataPtr ),
+ REINTERPRET_CAST( RSat::TIcon*, dataPtr2 ),
+ aTsyReqHandle );
+ break;
+ }
+ case ESatGetImageInstance:
+ {
+ iSatIcon->GetImageInstance( aPackage.Des1n(),
+ aPackage.Des2n(), aTsyReqHandle );
+ break;
+ }
+ case ESatGetClut:
+ {
+ iSatIcon->GetClut(
+ REINTERPRET_CAST( RSat::TInstanceNumberAndOffset*, dataPtr ),
+ aPackage.Des2n(),
+ aTsyReqHandle);
+ break;
+ }
+ case ESatNotifyLanguageNotificationPCmd:
+ {
+ iNotifyLanguageNotification->Notify( aTsyReqHandle,
+ aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyLocalInfoPCmd:
+ {
+ iNotifyLocalInfo->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyGetChannelStatusPCmd:
+ {
+ iNotifyGetChannelStatus->Notify( aTsyReqHandle, aPackage.Des1n() );
+ break;
+ }
+ case ESatNotifyMoSmControlRequest:
+ {
+ iNotifyMoSmControlRequest->Notify( aTsyReqHandle,
+ aPackage.Des1n() );
+ break;
+ }
+ case ESatUsatClientReadyIndication:
+ {
+ UsatClientReadyIndication( aTsyReqHandle );
+ break;
+ }
+ // Set ret to KErrNotSupported, function not supported
+ default:
+ {
+ TFLOGSTRING2("TSY: CTsySatMessaging::DoExtFuncL unsupported IPC %d", aIpc);
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_DOEXTFUNCL, "CTsySatMessaging::DoExtFuncL unsupported IPC %d", aIpc );
+
+ ReqCompleted( aTsyReqHandle, KErrNotSupported );
+ break;
+ }
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::CancelService
+// Cancels the ongoing service
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::CancelService
+ (
+ const TInt aIpc, // IPC number of request
+ const TTsyReqHandle aTsyReqHandle // Request handle
+ )
+ {
+ OstTraceExt2( TRACE_NORMAL, CTSYSATMESSAGING_CANCELSERVICE, "CTsySatMessaging::CancelService ReqHandle=%d, IPC=%d", TInt(aTsyReqHandle), aIpc );
+ TFLOGSTRING3("TSY: CTsySatMessaging::CancelService ReqHandle=%d IPC=%d",aTsyReqHandle, aIpc);
+ TInt ret( KErrNone );
+ switch ( aIpc )
+ {
+ case ESatNotifyDisplayTextPCmd:
+ {
+ ret = iNotifyDisplayText->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyGetInkeyPCmd:
+ {
+ ret = iNotifyGetInkey->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyGetInputPCmd:
+ {
+ ret = iNotifyGetInput->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyPlayTonePCmd:
+ {
+ ret = iNotifyPlayTone->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySetUpMenuPCmd:
+ {
+ ret = iNotifySetUpMenu->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySelectItemPCmd:
+ {
+ ret = iNotifySelectItem->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySendSmPCmd:
+ {
+ ret = iNotifySendSm->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySendSsPCmd:
+ {
+ ret = iNotifySendSs->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySendUssdPCmd:
+ {
+ ret = iNotifySendUssd->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySetUpCallPCmd:
+ {
+ ret = iNotifySetUpCall->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyRefreshPCmd:
+ {
+ ret = iNotifyRefresh->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyRefreshRequiredParam:
+ {
+ ret = iNotifyRefresh->CancelRefreshRequiredNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyProactiveSimSessionEnd:
+ {
+ ret = iNotifySimSessionEnd->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySetUpIdleModeTextPCmd:
+ {
+ ret = iNotifySetUpIdleModeText->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyLaunchBrowserPCmd:
+ {
+ ret = iNotifyLaunchBrowser->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyCallControlRequest:
+ {
+ ret = iNotifyCallControlRequest->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySendDtmfPCmd:
+ {
+ ret = iNotifySendDtmf->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySetUpEventListPCmd:
+ {
+ ret = iNotifySetUpEventList->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyLanguageNotificationPCmd:
+ {
+ ret = iNotifyLanguageNotification->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyLocalInfoPCmd:
+ {
+ ret = iNotifyLocalInfo->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyOpenChannelPCmd:
+ {
+ iNotifyOpenChannel->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyMoSmControlRequest:
+ {
+ ret = iNotifyMoSmControlRequest->CancelNotification(
+ aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyCloseChannelPCmd:
+ {
+ iNotifyCloseChannel->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyReceiveDataPCmd:
+ {
+ iNotifyReceiveData->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifySendDataPCmd:
+ {
+ iNotifySendData->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatNotifyGetChannelStatusPCmd:
+ {
+ iNotifyGetChannelStatus->CancelNotification( aTsyReqHandle );
+ break;
+ }
+ case ESatEventDownload:
+ {
+ ret = iEventDownload->Cancel( aTsyReqHandle );
+ break;
+ }
+ case ESatTerminalRsp:
+ case ESatMenuSelection:
+ case ESatSendMessageNoLogging:
+ case ESatUsatClientReadyIndication:
+ {
+ ret = KErrNone;
+ break;
+ }
+ // Following functions are not supported, hence they are completed
+ // by DoExtFuncL function at once.
+ // ETel server will not pass cancel function to MMSAT, because the
+ // request is not 'ON' in ETel.
+ // They are listed here for future reference.
+ //
+ // ESatGetMeSideSatProfile
+ default:
+ {
+ TFLOGSTRING2("TSY: CTsySatMessaging::CancelService invalid IPC %d",aIpc);
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_CANCELSERVICE, "CTsySatMessaging::CancelService invalid IPC %d", aIpc );
+
+ ret = KErrGeneral;
+ break;
+ }
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::ReqModeL
+// ReqMode method for checking what modes this component supports
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CTelObject::TReqMode CTsySatMessaging::ReqModeL
+ (
+ const TInt aIpc // IPC number of request
+ )
+ {
+ OstTrace1( TRACE_NORMAL, CTSYSATMESSAGING_REQMODEL, "CTsySatMessaging::ReqModeL, IPC=%d", aIpc );
+ TFLOGSTRING2("TSY: CTsySatMessaging::ReqModeL, IPC = %d",aIpc);
+ CTelObject::TReqMode ret = 0;
+ switch ( aIpc )
+ {
+ // Multiple Completion Services
+ case ESatNotifyDisplayTextPCmd:
+ case ESatNotifyGetInkeyPCmd:
+ case ESatNotifyGetInputPCmd:
+ case ESatNotifyPlayTonePCmd:
+ case ESatNotifySetUpMenuPCmd:
+ case ESatNotifySelectItemPCmd:
+ case ESatNotifySendSmPCmd:
+ case ESatNotifySendSsPCmd:
+ case ESatNotifySendUssdPCmd:
+ case ESatNotifySetUpCallPCmd:
+ case ESatNotifyRefreshPCmd:
+ case ESatNotifyCallControlRequest:
+ case ESatNotifySendDtmfPCmd:
+ case ESatNotifyMoSmControlRequest:
+ case ESatNotifySetUpEventListPCmd:
+ case ESatNotifySetUpIdleModeTextPCmd:
+ case ESatNotifyProactiveSimSessionEnd:
+ case ESatNotifyLaunchBrowserPCmd:
+ case ESatNotifyPollingIntervalPCmd:
+ case ESatNotifyPollingOffPCmd:
+ case ESatNotifyLanguageNotificationPCmd:
+ case ESatNotifyLocalInfoPCmd:
+ case ESatNotifyOpenChannelPCmd:
+ case ESatNotifyCloseChannelPCmd:
+ case ESatNotifyReceiveDataPCmd:
+ case ESatNotifySendDataPCmd:
+ case ESatNotifyGetChannelStatusPCmd:
+ case ESatNotifyRefreshRequiredParam:
+ case ESatRefreshAllowed:
+ {
+ ret = KReqModeMultipleCompletionEnabled;
+ break;
+ }
+ // Non-flow Controlled Services
+ case ESatTerminalRsp:
+ case ESatMenuSelection:
+ case ESatEventDownload:
+ case ESatGetIcon:
+ case ESatGetImageInstance:
+ case ESatGetClut:
+ case ESatGetMeSideSatProfile:
+ case ESatClientSatProfileIndication:
+ case ESatSendMessageNoLogging:
+ case ESatUsatClientReadyIndication:
+ {
+ break;
+ }
+ default:
+ {
+ TFLOGSTRING2( "TSY: CTsySatMessaging::ReqModeL unsupported IPC %d", aIpc );
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_REQMODEL, "CTsySatMessaging::ReqModeL unsupported IPC %d", aIpc );
+
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::Init
+// Initializer method that is called by ETel Server
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::Init()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_INIT, "CTsySatMessaging::Init" );
+ TFLOGSTRING("TSY: CTsySatMessaging::Init");
+ // none
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::RegisterNotification
+// Register given command, checks if the given command is supported
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::RegisterNotification
+ (
+ const TInt aIpc // IPC number of request
+ )
+ {
+ OstTrace1( TRACE_NORMAL, CTSYSATMESSAGING_REGISTERNOTIFICATION, "CTsySatMessaging::RegisterNotification, IPC = %d", aIpc );
+ TFLOGSTRING2("TSY: CTsySatMessaging::RegisterNotification, IPC = %d",aIpc);
+ // Initialize return value
+ TInt ret( KErrNone );
+ switch ( aIpc )
+ {
+ case ESatNotifyDisplayTextPCmd:
+ case ESatNotifyGetInkeyPCmd:
+ case ESatNotifyGetInputPCmd:
+ case ESatNotifyPlayTonePCmd:
+ case ESatNotifySetUpMenuPCmd:
+ case ESatNotifySelectItemPCmd:
+ case ESatNotifySendSmPCmd:
+ case ESatNotifySendSsPCmd:
+ case ESatNotifySendUssdPCmd:
+ case ESatNotifySetUpCallPCmd:
+ case ESatNotifyRefreshPCmd:
+ case ESatNotifyProactiveSimSessionEnd:
+ case ESatNotifySetUpIdleModeTextPCmd:
+ case ESatNotifyLaunchBrowserPCmd:
+ case ESatNotifyCallControlRequest:
+ case ESatNotifySendDtmfPCmd:
+ case ESatNotifySetUpEventListPCmd:
+ case ESatNotifyLanguageNotificationPCmd:
+ case ESatNotifyLocalInfoPCmd:
+ case ESatNotifyOpenChannelPCmd:
+ case ESatNotifyCloseChannelPCmd:
+ case ESatNotifyReceiveDataPCmd:
+ case ESatNotifySendDataPCmd:
+ case ESatNotifyGetChannelStatusPCmd:
+ case ESatNotifyMoSmControlRequest:
+ case ESatNotifyRefreshRequiredParam:
+ case ESatRefreshAllowed:
+ // ret already set to KErrNone
+ break;
+ // Following notifications are not supported,
+ // hence listed here for future reference.
+ //
+ default:
+ {
+ // Unknown or invalid IPC
+ TFLOGSTRING2("TSY: CTsySatMessaging::RegisterNotification, unsupported IPC %d", aIpc);
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_REGISTERNOTIFICATION, "CTsySatMessaging::RegisterNotification unsupported IPC %d", aIpc );
+
+ ret = KErrNotSupported;
+ break;
+ }
+ }
+ return ret;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::DeregisterNotification
+// DeRegister given command, checks if the given command is supported
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::DeregisterNotification
+ (
+ const TInt aIpc // IPC number of request
+ )
+ {
+ OstTrace1( TRACE_NORMAL, CTSYSATMESSAGING_DEREGISTERNOTIFICATION, "CTsySatMessaging::DeregisterNotification, IPC = %d", aIpc );
+ TFLOGSTRING2( "TSY: CTsySatMessaging::DeregisterNotification\
+ IPC = %d", aIpc );
+ // Initialize return value
+ TInt ret( KErrNone );
+ switch ( aIpc )
+ {
+ case ESatNotifyDisplayTextPCmd:
+ case ESatNotifyGetInkeyPCmd:
+ case ESatNotifyGetInputPCmd:
+ case ESatNotifyPlayTonePCmd:
+ case ESatNotifySetUpMenuPCmd:
+ case ESatNotifySelectItemPCmd:
+ case ESatNotifySendSmPCmd:
+ case ESatNotifySendSsPCmd:
+ case ESatNotifySendUssdPCmd:
+ case ESatNotifySetUpCallPCmd:
+ case ESatNotifyRefreshPCmd:
+ case ESatNotifyProactiveSimSessionEnd:
+ case ESatNotifySetUpIdleModeTextPCmd:
+ case ESatNotifyLaunchBrowserPCmd:
+ case ESatNotifyCallControlRequest:
+ case ESatNotifySendDtmfPCmd:
+ case ESatNotifySetUpEventListPCmd:
+ case ESatNotifyLanguageNotificationPCmd:
+ case ESatNotifyLocalInfoPCmd:
+ case ESatNotifyOpenChannelPCmd:
+ case ESatNotifyCloseChannelPCmd:
+ case ESatNotifyReceiveDataPCmd:
+ case ESatNotifySendDataPCmd:
+ case ESatNotifyGetChannelStatusPCmd:
+ case ESatNotifyMoSmControlRequest:
+ case ESatNotifyRefreshRequiredParam:
+ case ESatRefreshAllowed:
+ // ret already set to KErrNone
+ break;
+ // Following notifications are not supported,
+ // hence listed here for future reference.
+ //
+ default:
+ {
+ // Unknown or invalid IPC
+ TFLOGSTRING2("TSY: CTsySatMessaging::DeregisterNotification \
+ unsupported IPC %d", aIpc);
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_DEREGISTERNOTIFICATION, "CTsySatMessaging::DeregisterNotification unsupported IPC %d", aIpc );
+
+ ret = KErrNotSupported;
+ break;
+ }
+ }
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NumberOfSlotsL
+// Returns number of slots to be used for given IPC
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::NumberOfSlotsL
+ (
+ const TInt aIpc // IPC number of request
+ )
+ {
+ OstTrace1( TRACE_NORMAL, CTSYSATMESSAGING_NUMBEROFSLOTSL, "CTsySatMessaging::NumberOfSlotsL IPC %d", aIpc );
+ TFLOGSTRING2("TSY: CTsySatMessaging::NumberOfSlotsL IPC %d", aIpc);
+ TInt numberOfSlots( 1 );
+ switch ( aIpc )
+ {
+ case ESatNotifyDisplayTextPCmd:
+ numberOfSlots = KSatNotifyDisplayTextPCmdSlots;
+ break;
+ case ESatNotifyGetInkeyPCmd:
+ numberOfSlots = KSatNotifyGetInkeyPCmdSlots;
+ break;
+ case ESatNotifyGetInputPCmd:
+ numberOfSlots = KSatNotifyGetInputPCmdSlots;
+ break;
+ case ESatNotifyPlayTonePCmd:
+ numberOfSlots = KSatNotifyPlayTonePCmdSlots;
+ break;
+ case ESatNotifySetUpMenuPCmd:
+ numberOfSlots = KSatNotifySetUpMenuPCmdSlots;
+ break;
+ case ESatNotifySelectItemPCmd:
+ numberOfSlots = KSatNotifySelectItemPCmdSlots;
+ break;
+ case ESatNotifySendSmPCmd:
+ numberOfSlots = KSatNotifySendSmPCmdSlots;
+ break;
+ case ESatNotifySendSsPCmd:
+ numberOfSlots = KSatNotifySendSsPCmdSlots;
+ break;
+ case ESatNotifySendUssdPCmd:
+ numberOfSlots = KSatNotifySendUssdPCmdSlots;
+ break;
+ case ESatNotifySetUpCallPCmd:
+ numberOfSlots = KSatNotifySetUpCallPCmdSlots;
+ break;
+ case ESatNotifyRefreshPCmd:
+ numberOfSlots = KSatNotifyRefreshPCmdSlots;
+ break;
+ case ESatNotifyProactiveSimSessionEnd:
+ numberOfSlots = KSatNotifyProactiveSimSessionEndSlots;
+ break;
+ case ESatNotifySetUpIdleModeTextPCmd:
+ numberOfSlots = KSatNotifySetUpIdleModeTextPCmdSlots;
+ break;
+ case ESatNotifyLaunchBrowserPCmd:
+ numberOfSlots = KSatNotifyLaunchBrowserSlots;
+ break;
+ case ESatNotifyCallControlRequest:
+ numberOfSlots = KSatNotifyCallControlRequestSlots;
+ break;
+ case ESatNotifySendDtmfPCmd:
+ numberOfSlots = KSatNotifySendDtmfSlots;
+ break;
+ case ESatNotifySetUpEventListPCmd:
+ numberOfSlots = KSatNotifySetUpEventListSlots;
+ break;
+ case ESatNotifyLanguageNotificationPCmd:
+ numberOfSlots = KSatNotifySetUpEventListSlots;
+ break;
+ case ESatNotifyLocalInfoPCmd:
+ case ESatNotifyOpenChannelPCmd:
+ case ESatNotifyCloseChannelPCmd:
+ case ESatNotifyReceiveDataPCmd:
+ case ESatNotifySendDataPCmd:
+ case ESatNotifyGetChannelStatusPCmd:
+ case ESatNotifyMoSmControlRequest:
+ numberOfSlots = KSatNotifySetUpEventListSlots;
+ break;
+ case ESatNotifyRefreshRequiredParam:
+ case ESatRefreshAllowed:
+ // default value: 1 slot
+ break;
+ // Following notifications are not supported,
+ // hence listed here for future reference.
+ //
+ // For above, use numberOfSlots = 2
+ default:
+ {
+ // Unknown or invalid IPC
+ TFLOGSTRING2( "TSY: CTsySatMessaging::NumberOfSlotsL\
+ unsupported IPC %d", aIpc );
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_NUMBEROFSLOTSL, "CTsySatMessaging::NumberOfSlotsL unsupported IPC %d", aIpc );
+
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ }
+ return numberOfSlots;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetSatMessHandler
+// Returns pointer to the SatMessHandler instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatMessHandler* CTsySatMessaging::GetSatMessHandler()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETSATMESSHANDLER, "CTsySatMessaging::GetSatMessHandler" );
+ TFLOGSTRING("TSY:CTsySatMessaging::GetSatMessHandler");
+ // Pointer to SAT message handler
+ return iSatMessHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetSatFlightModeStatus
+// Returns pointer to the CSatFlightModeStatus instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatFlightModeStatus* CTsySatMessaging::GetSatFlightModeStatus()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETSATFLIGHTMODESTATUS, "CTsySatMessaging::GetSatFlightModeStatus" );
+ TFLOGSTRING("TSY:CTsySatMessaging::GetSatFlightModeStatus");
+ // Pointer to SAT flight mode status
+ return iSatFlightModeStatus;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::CompleteSendSmsMessage
+// Completes a SAT Originated SMS sending request to Etel SAT client
+// with the corresponding outcome.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::CompleteSendSmsMessage
+ (
+ TInt aStatus // Message sending status from MMSMS
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_COMPLETESENDSMSMESSAGE, "CTsySatMessaging::CompleteSendSmsMessage" );
+ TFLOGSTRING("TSY: CTsySatMessaging::CompleteSendSmsMessage, entered");
+ if ( iSendSmsTsyReqHandle )
+ {
+ ReqCompleted( iSendSmsTsyReqHandle, aStatus );
+ iSendSmsTsyReqHandle = NULL;
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::MenuSelection
+// Menu selection command handler from ETel SAT client application.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::MenuSelection
+ (
+ TDes8* aSelection, // Contains menu selection parameters
+ TTsyReqHandle aTsyReqHandle // Request handle
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_MENUSELECTION, "CTsySatMessaging::MenuSelection" );
+ TFLOGSTRING("TSY:CTsySatMessaging::MenuSelection");
+ TInt ret( KErrNone );
+ RSat::TMenuSelectionV1Pckg* aPckg =
+ REINTERPRET_CAST( RSat::TMenuSelectionV1Pckg*, aSelection );
+ RSat::TMenuSelectionV1& selectionV1 = ( *aPckg ) ();
+ TFLOGSTRING3("TSY:CTsySatMessaging::MenuSelection, iItemId %x, Help: %c",
+ selectionV1.iItemId, selectionV1.iHelp );
+ OstTraceExt1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_MENUSELECTION, "CTsySatMessaging::MenuSelection iItemId: %hhu", selectionV1.iItemId );
+ OstTrace1( TRACE_NORMAL, DUP2_CTSYSATMESSAGING_MENUSELECTION, "CTsySatMessaging::MenuSelection Help: %{THelpRequest}", selectionV1.iHelp );
+
+ // Creating the menu selection message
+ if ( selectionV1.iHelp == RSat::EHelpRequested )
+ {
+ // Help requested
+ iSatMessHandler->MenuSelectionInd(
+ GetTransactionId(),
+ selectionV1.iItemId, KHelp ); // KHelp: 1
+ }
+ else
+ {
+ // No help requested
+ iSatMessHandler->MenuSelectionInd(
+ GetTransactionId(),
+ selectionV1.iItemId, KNoHelp ); // KNoHelp: 0
+ }
+ ReqCompleted( aTsyReqHandle, ret );
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NotifyCbDownload
+// Cell broadcast data download from ETel SAT client application. Not in use.
+// CellBroadcast DDL is handled in CSatDataDownload class.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::NotifyCbDownload
+ (
+ TDes8* /*aPackage*/, //package containing pointer to client
+ TTsyReqHandle aTsyReqHandle //tsy request handle
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NOTIFYCBDOWNLOAD, "CTsySatMessaging::NotifyCbDownload" );
+ TFLOGSTRING("TSY:CTsySatMessaging::NotifyCbDownload");
+ TInt ret( KErrNone );
+ ReqCompleted( aTsyReqHandle, ret );
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NotifySmsPpDownload
+// Sms-Pp data download from ETel SAT client application. Not in use.
+// Sms-Pp DDL is handled in CSatDataDownload class.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::NotifySmsPpDownload
+ (
+ TDes8* /*aPackage*/, //package containing pointer to client
+ TTsyReqHandle aTsyReqHandle //tsy request handle
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NOTIFYSMSPPDOWNLOAD, "CTsySatMessaging::NotifySmsPpDownload" );
+ TFLOGSTRING("TSY:CTsySatMessaging::NotifySmsPpDownload");
+ TInt ret( KErrNone );
+ ReqCompleted( aTsyReqHandle, ret );
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SendMessageNoLoggingL
+// Send SMS No Logging command handler from client application.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::SendMessageNoLoggingL
+ (
+ TDes8* aMsg, // Pointer to message
+ TUint16* /*aMsgRef*/, // Message reference
+ TTsyReqHandle aTsyReqHandle // Request handle
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SENDMESSAGENOLOGGINGL, "CTsySatMessaging::SendMessageNoLoggingL" );
+ TFLOGSTRING("TSY: CTsySatMessaging::SendMessageNoLoggingL");
+ TInt ret( KErrNone );
+ // Save Reqhandle for CompleteSendSmsMessage
+ iSendSmsTsyReqHandle = aTsyReqHandle;
+ RSat::TSatSmsV1Pckg* aPckg = REINTERPRET_CAST( RSat::TSatSmsV1Pckg*, aMsg );
+ RSat::TSatSmsV1& satSmsV1 = ( *aPckg ) ();
+ // SMS GSM extension checks that SCA length is not over the max limit
+ // that SMS allows
+ // Check that we have a SCA address
+ if ( 0x0 < satSmsV1.iServiceCenter.iTelNumber.Length() )
+ {
+ // SCA number conversion from unicode to GSM 3.40 format
+ // is done by MMSMS dll
+ // Set SCA pointer
+ TDes16* sca;
+ sca = &satSmsV1.iServiceCenter.iTelNumber;
+ // Type of Number, mapping from ETelSat format to MMETel format
+ RMobilePhone::TMobileTON numberType;
+ switch ( satSmsV1.iServiceCenter.iTypeOfNumber )
+ {
+ case RSat::ETypeOfNumberNotSet:
+ case RSat::EUnknownNumber:
+ numberType = RMobilePhone::EUnknownNumber;
+ break;
+ case RSat::EInternationalNumber:
+ numberType = RMobilePhone::EInternationalNumber;
+ break;
+ case RSat::ENationalNumber:
+ numberType = RMobilePhone::ENationalNumber;
+ break;
+ case RSat::ENetworkSpecificNumber:
+ numberType = RMobilePhone::ENetworkSpecificNumber;
+ break;
+ case RSat::EDedicatedNumber:
+ numberType = RMobilePhone::ESubscriberNumber;
+ break;
+ default:
+ // Unknown or invalid Type of Number
+ numberType = RMobilePhone::EUnknownNumber;
+ break;
+ }
+ // Numbering Plan, mapping from ETelSat format to MMETel format
+ RMobilePhone::TMobileNPI numberPlan;
+ switch ( satSmsV1.iServiceCenter.iNumberPlan )
+ {
+ case RSat::ENumberingPlanNotSet:
+ case RSat::EUnknownNumberingPlan:
+ numberPlan = RMobilePhone::EUnknownNumberingPlan;
+ break;
+ case RSat::EIsdnNumberPlan:
+ numberPlan = RMobilePhone::EIsdnNumberPlan;
+ break;
+ case RSat::EDataNumberPlan:
+ numberPlan = RMobilePhone::EDataNumberPlan;
+ break;
+ case RSat::ETelexNumberPlan:
+ numberPlan = RMobilePhone::ETelexNumberPlan;
+ break;
+ case RSat::ENationalNumberPlan:
+ numberPlan = RMobilePhone::ENationalNumberPlan;
+ break;
+ case RSat::EPrivateNumberPlan:
+ numberPlan = RMobilePhone::EPrivateNumberPlan;
+ break;
+ default:
+ // Unknown or invalid Numbering Plan
+ numberPlan = RMobilePhone::EUnknownNumberingPlan;
+ break;
+ }
+ // SMS message, Packet Data Unit
+ TDes8* pdu;
+ pdu = &satSmsV1.iBuf;
+
+ #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
+ // Get SMS messaging class pointer for sending sms messages
+ CMmSmsTsy* mmSmsTsy = iMmPhone->SmsSession();
+ TFLOGSTRING2("TSY: CTsySatMessaging::SendMessageNoLoggingL, \
+ mmSmsTsy: %x", mmSmsTsy );
+ OstTrace1( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_SENDMESSAGENOLOGGINGL, "CTsySatMessaging::SendMessageNoLoggingL, mmSmsTsy: %x", mmSmsTsy );
+
+ if ( mmSmsTsy ) // Check that SMS session exist
+ {
+ // Call SMS sending function from MMSMS
+ ret = mmSmsTsy->SendSatMessage( this, pdu, sca, &numberType,
+ &numberPlan, EFalse, aTsyReqHandle );
+ TFLOGSTRING2("TSY: CTsySatMessaging::SendMessageNoLoggingL, \
+ SendSmsMessage done, ret: %x", ret );
+ OstTrace1( TRACE_NORMAL, DUP2_CTSYSATMESSAGING_SENDMESSAGENOLOGGINGL, "CTsySatMessaging::SendMessageNoLoggingL, SendSmsMessage done, ret: %d", ret );
+ }
+ else
+ {
+ // No SMS session.
+ ret = KErrNotReady;
+ TFLOGSTRING("TSY: CTsySatMessaging::SendMessageNoLoggingL, \
+ no SMS session!");
+ OstTrace0( TRACE_NORMAL, DUP3_CTSYSATMESSAGING_SENDMESSAGENOLOGGINGL, "CTsySatMessaging::SendMessageNoLoggingL, no SMS session!" );
+ }
+ #else //NCP_COMMON_S60_VERSION_SUPPORT
+ // Deliver attributes to message handler by using
+ // TMobileSmsSendAttributesV1 class.
+ RMobileSmsMessaging::TMobileSmsSendAttributesV1 msgAttrib;
+
+ msgAttrib.iFlags = ( RMobileSmsMessaging::KSmsDataFormat |
+ RMobileSmsMessaging::KGsmServiceCentre |
+ RMobileSmsMessaging::KMoreToSend );
+
+ msgAttrib.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu;
+
+ // if service center address length > 20 digits plus "+" sign
+ if ( sca->Length() > ( KMaxAmountOfDigits + 1 ) )
+ {
+ ret = KErrArgument;
+ }
+ else
+ {
+ msgAttrib.iGsmServiceCentre.iTelNumber.Copy( *sca );
+ msgAttrib.iGsmServiceCentre.iTypeOfNumber = numberType;
+ msgAttrib.iGsmServiceCentre.iNumberPlan = numberPlan;
+
+ msgAttrib.iMore = EFalse;
+ // create package
+ CMmDataPackage package;
+
+ // structure for all sms parameters and data
+ TSendSmsDataAndAttributes sendData;
+
+ sendData.iAttributes = &msgAttrib;
+ sendData.iMsgData = pdu;
+ sendData.iIpc = EMmTsySmsSendSatMessage;
+
+ // Pack parameters
+ package.PackData( &sendData );
+
+ // send request to NTSY
+ ret = iRouter->ExtFuncL( EMmTsySmsSendSatMessage, &package );
+ }
+ #endif //NCP_COMMON_S60_VERSION_SUPPORT
+ }
+ else // SCA missing
+ {
+ ret = KErrGeneral;
+ TFLOGSTRING("TSY: CTsySatMessaging::SendMessageNoLoggingL, \
+ SCA missing");
+ OstTrace0( TRACE_NORMAL, DUP4_CTSYSATMESSAGING_SENDMESSAGENOLOGGINGL, "CTsySatMessaging::SendMessageNoLoggingL, SCA missing" );
+
+ }
+ // Failure in sending of SAT SMS, call complete method
+ if ( KErrNone != ret )
+ {
+ CompleteSendSmsMessage( ret );
+ TFLOGSTRING("TSY: CTsySatMessaging::SendMessageNoLoggingL, \
+ failure sending SAT SMS, complete");
+ OstTrace0( TRACE_NORMAL, DUP5_CTSYSATMESSAGING_SENDMESSAGENOLOGGINGL, "CTsySatMessaging::SendMessageNoLoggingL, failure sending SAT SMS, complete" );
+
+ }
+ return ret;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::TerminalResponse
+// Terminal response command handler from ETel SAT client application.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::TerminalResponse
+ (
+ RSat::TPCmd* aPCmd, // SAT command identifier
+ TDes8* aRsp, // Response
+ TTsyReqHandle aTsyReqHandle // Request handle
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_TERMINALRESPONSE, "CTsySatMessaging::TerminalResponse" );
+ TFLOGSTRING("TSY: CTsySatMessaging::TerminalResponse");
+ TInt ret( KErrNone );
+ switch ( *aPCmd )
+ {
+ case RSat::EDisplayText:
+ ret = iNotifyDisplayText->TerminalResponse( aRsp );
+ break;
+ case RSat::EGetInkey:
+ ret = iNotifyGetInkey->TerminalResponse( aRsp );
+ break;
+ case RSat::EGetInput:
+ ret = iNotifyGetInput->TerminalResponse( aRsp );
+ break;
+ case RSat::EPlayTone:
+ ret = iNotifyPlayTone->TerminalResponse( aRsp );
+ break;
+ case RSat::ESetUpMenu:
+ ret = iNotifySetUpMenu->TerminalResponse( aRsp );
+ break;
+ case RSat::ESelectItem:
+ ret = iNotifySelectItem->TerminalResponse( aRsp );
+ break;
+ case RSat::ESendSm:
+ ret = iNotifySendSm->TerminalResponse( aRsp );
+ break;
+ case RSat::ESendSs:
+ ret = iNotifySendSs->TerminalResponse( aRsp );
+ break;
+ case RSat::ESendUssd:
+ ret = iNotifySendUssd->TerminalResponse( aRsp );
+ break;
+ case RSat::ESetUpCall:
+ ret = iNotifySetUpCall->TerminalResponse( aRsp );
+ break;
+ case RSat::ERefresh:
+ ret = iNotifyRefresh->TerminalResponse( aRsp );
+ break;
+ case RSat::ESetUpIdleModeText:
+ ret = iNotifySetUpIdleModeText->TerminalResponse(aRsp );
+ break;
+ case RSat::ELaunchBrowser:
+ ret = iNotifyLaunchBrowser->TerminalResponse( aRsp );
+ break;
+ case RSat::ESendDtmf:
+ ret = iNotifySendDtmf->TerminalResponse( aRsp );
+ break;
+ case RSat::ESetUpEventList:
+ ret = iNotifySetUpEventList->TerminalResponse( aRsp );
+ break;
+ case RSat::ELocalInfo:
+ ret = iNotifyLocalInfo->TerminalResponse( aRsp );
+ break;
+ case RSat::ELanguageNotification:
+ ret = iNotifyLanguageNotification->TerminalResponse( aRsp );
+ break;
+ case RSat::EOpenChannelCs:
+ case RSat::EOpenChannelGprs:
+ case RSat::EOpenChannelLocal:
+ ret = this->iNotifyOpenChannel->TerminalResponse( aRsp );
+ break;
+ case RSat::EGetChannelStatus:
+ ret = iNotifyGetChannelStatus->TerminalResponse( aRsp );
+ break;
+ case RSat::ECloseChannel:
+ ret = iNotifyCloseChannel->TerminalResponse( aRsp );
+ break;
+ case RSat::EReceiveData:
+ ret = iNotifyReceiveData->TerminalResponse( aRsp );
+ break;
+ case RSat::ESendData:
+ ret = iNotifySendData->TerminalResponse( aRsp );
+ break;
+ default:
+ TFLOGSTRING("TSY: CTsySatMessaging::TerminalResponse, \
+ PCmd not supported");
+ OstTrace0( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_TERMINALRESPONSE, "CTsySatMessaging::TerminalResponse, PCmd not supported" );
+
+ ret = KErrGeneral;
+ break;
+ }
+ ReqCompleted( aTsyReqHandle, ret );
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::PCmdReceivedL
+// Handles an incoming proactive command from ISA CellMo SIM server
+// Called by CSatMessHandler when it receives proactive command ISI msg
+// originated by ISA CellMo SIM server.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::PCmdReceivedL( const TIsiReceiveC& aIsiMessage )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_PCMDRECEIVEDL, "CTsySatMessaging::PCmdReceivedL" );
+ TFLOGSTRING("TSY: CTsySatMessaging::PCmdReceivedL");
+ CBerTlv berTlv;
+ berTlv.BerTlv( aIsiMessage );
+ CTlv commandDetails;
+ berTlv.TlvByTagValue( &commandDetails, KTlvCommandDetailsTag );
+ //set flag on to indicate that proactive command is ongoing
+ iSatTimer->SetProactiveCommandOnGoingStatus( ETrue );
+ // Routes to a suitable MessageReceived method, in order to
+ // process the PCmd ISI message.
+ switch( commandDetails.GetShortInfo( ETLV_TypeOfCommand ) )
+ {
+ case KDisplayText:
+ iNotifyDisplayText->MessageReceived( aIsiMessage );
+ break;
+ case KGetInkey:
+ iNotifyGetInkey->MessageReceived( aIsiMessage );
+ break;
+ case KGetInput:
+ iNotifyGetInput->MessageReceived( aIsiMessage );
+ break;
+ case KPlayTone:
+ iNotifyPlayTone->MessageReceived( aIsiMessage );
+ break;
+ case KSetUpMenu:
+ iNotifySetUpMenu->MessageReceived( aIsiMessage );
+ break;
+ case KSelectItem:
+ iNotifySelectItem->MessageReceived( aIsiMessage );
+ break;
+ case KSendShortMessage:
+ iNotifySendSm->MessageReceived( aIsiMessage );
+ break;
+ case KSendSs:
+ iNotifySendSs->MessageReceived( aIsiMessage );
+ break;
+ case KSendUssd:
+ iNotifySendUssd->MessageReceived( aIsiMessage );
+ break;
+ case KSetUpCall:
+ iNotifySetUpCall->MessageReceived( aIsiMessage );
+ break;
+ case KRefresh:
+ iNotifyRefresh->MessageReceived( aIsiMessage );
+ break;
+ case KSetUpIdleModeText:
+ iNotifySetUpIdleModeText->MessageReceived( aIsiMessage );
+ break;
+ case KPollInterval:
+ iNotifyPollInterval->MessageReceived( aIsiMessage );
+ break;
+ case KSendDtmf:
+ iNotifySendDtmf->MessageReceived( aIsiMessage );
+ break;
+ case KSetUpEventList:
+ iNotifySetUpEventList->MessageReceived( aIsiMessage );
+ break;
+ case KPollingOff:
+ iNotifyPollingOff->MessageReceived( aIsiMessage );
+ break;
+ case KProvideLocalInformation:
+ iNotifyLocalInfo->MessageReceived( aIsiMessage );
+ break;
+ case KTimerManagement:
+ iNotifyTimerMgmt->MessageReceived( aIsiMessage );
+ break;
+ case KMoreTime:
+ iNotifyMoreTime->MessageReceived( aIsiMessage );
+ break;
+ case KLaunchBrowser:
+ iNotifyLaunchBrowser->MessageReceived( aIsiMessage );
+ break;
+ case KLanguageNotification:
+ iNotifyLanguageNotification->MessageReceived( aIsiMessage );
+ break;
+ case KGetChannelStatus:
+ iNotifyGetChannelStatus->MessageReceived( aIsiMessage );
+ break;
+ case KOpenChannel:
+ iNotifyOpenChannel->MessageReceived( aIsiMessage );
+ break;
+ case KCloseChannel:
+ iNotifyCloseChannel->MessageReceived( aIsiMessage );
+ break;
+ case KReceiveData:
+ iNotifyReceiveData->MessageReceived( aIsiMessage );
+ break;
+ case KSendData:
+ iNotifySendData->MessageReceived( aIsiMessage );
+ break;
+ default:
+ {
+ TFLOGSTRING("TSY: CTsySatMessaging::PCmdReceivedL, PCmd not supported");
+ OstTrace0( TRACE_NORMAL, DUP1_CTSYSATMESSAGING_PCMDRECEIVEDL, "CTsySatMessaging::PCmdReceivedL, PCmd not supported" );
+
+ // If proactive command is not supported, terminal response
+ // with "Command is beyond ME's capabilities" information
+ // will be send. ProactiveCommandOngoing status will be set
+ // to EFalse in SendTerminalResponseL().
+ TBuf8<5> cmdDetails;
+ cmdDetails.Copy( commandDetails.Data() );
+ TTlv tlvSpecificData;
+ // Create General Result TLV here
+ tlvSpecificData.AddTag( KTlvResultTag );
+ // General result
+ tlvSpecificData.AddByte( KCommandBeyondMeCapabilities );
+ iSatMessHandler->UiccCatReqTerminalResponse(
+ cmdDetails,
+ tlvSpecificData.GetDataWithoutTopLevelTag() ,
+ aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) );
+ break;
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::TimerExpiration
+// Timer Expiration handler
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::TimerExpiration
+ (
+ TInt aTimerId,
+ TUint32 aTimerValue
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_TIMEREXPIRATION, "CTsySatMessaging::TimerExpiration" );
+ TFLOGSTRING("TSY: CTsySatMessaging::TimerExpiration");
+ TUint8 time[3] = {0, 0, 0};
+ TInt num[3];
+ num[0] = aTimerValue/3600; //hours
+ num[1] = ( aTimerValue%3600 )/60; //minutes
+ num[2] = ( aTimerValue%3600 )%60; //seconds
+ for ( TInt i = 0; i < 3; i++)
+ {
+ //convert to semi-octet
+ time[i] = TSatUtility::ConvertToSemiOctet( num[i] );
+ }
+ return iSatMessHandler->TimerExpirationInd(
+ GetTransactionId(),
+ (TUint8)aTimerId,
+ time );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetSatTimer
+// Returns pointer to the SatTimer instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatTimer* CTsySatMessaging::GetSatTimer()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETSATTIMER, "CTsySatMessaging::GetSatTimer" );
+ // Pointer to SAT timer
+ return iSatTimer;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetNotifyRefresh
+// Returns pointer to the CSatNotifyRefresh instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatNotifyRefresh* CTsySatMessaging::GetNotifyRefresh()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETNOTIFYREFRESH, "CTsySatMessaging::GetNotifyRefresh" );
+ return iNotifyRefresh;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetDataDownload
+// Returns pointer to the CSatDataDownload instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatDataDownload* CTsySatMessaging::GetDataDownload()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETDATADOWNLOAD, "CTsySatMessaging::GetDataDownload" );
+ return iSatDataDownload;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetNotifyPollInterval
+// Returns pointer to the NotifyPollInterval instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatNotifyPollInterval* CTsySatMessaging::GetNotifyPollInterval()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETNOTIFYPOLLINTERVAL, "CTsySatMessaging::GetNotifyPollInterval" );
+ return iNotifyPollInterval;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetMoSmsCtrl
+// Returns pointer to the CSatMoSmsCtrl instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatMoSmsCtrl* CTsySatMessaging::GetMoSmsCtrl()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETMOSMSCTRL, "CTsySatMessaging::GetMoSmsCtrl" );
+ return iSatMoSmsCtrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetEventDownload
+// Returns pointer to the CSatEventDownload instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatEventDownload* CTsySatMessaging::GetEventDownload()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETEVENTDOWNLOAD, "CTsySatMessaging::GetEventDownload" );
+ return iEventDownload;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetNotifyPollingOff
+// Returns pointer to the NotifyPollingOff instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatNotifyPollingOff* CTsySatMessaging::GetNotifyPollingOff()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETNOTIFYPOLLINGOFF, "CTsySatMessaging::GetNotifyPollingOff" );
+ return iNotifyPollingOff;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetNotifyLocalInfo
+// Returns pointer to the NotifyLocalInfo instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatNotifyLocalInfo* CTsySatMessaging::GetNotifyLocalInfo()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETNOTIFYLOCALINFO, "CTsySatMessaging::GetNotifyLocalInfo" );
+ return iNotifyLocalInfo;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::EventDownloadReceived
+// Processes ISI messages that are relevant for event download
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::EventDownloadReceived
+ (
+ const TIsiReceiveC& aIsiMessage //Event download message
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_EVENTDOWNLOADRECEIVED, "CTsySatMessaging::EventDownloadReceived" );
+ iEventDownload->MessageReceived( aIsiMessage );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SetUpEventList
+// Set up requested events that have to be reported to the SIM
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::SetUpEventList
+ (
+ TUint32 aEvents //events to be monitored
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SETUPEVENTLIST, "CTsySatMessaging::SetUpEventList" );
+ iEventDownload->SetUpEventList( aEvents );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SessionEnd
+// Notifies client about end of session
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::SessionEnd
+ (
+ const TIsiReceiveC& aIsiMessage //message ending session
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SESSIONEND, "CTsySatMessaging::SessionEnd" );
+ iNotifySimSessionEnd->MessageReceived( aIsiMessage );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NotifyClientAboutCallControlEvent
+// Notifies Etel SAT client about call control event
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::NotifyClientAboutCallControlEvent
+ (
+ TDesC& aAlphaId, //Alpha id of call control event
+ RSat::TControlResult aResult
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NOTIFYCLIENTABOUTCALLCONTROLEVENT, "CTsySatMessaging::NotifyClientAboutCallControlEvent" );
+ iNotifyCallControlRequest->CompleteNotification( aAlphaId, aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NotifyClientAboutCallControlEventL
+// Notifies Etel SAT client about call control event
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::NotifyClientAboutCallControlEventL
+ (
+ const TUint8 aCcResult,
+ TPtrC8 aEnvelopeResponse
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NOTIFYCLIENTABOUTCALLCONTROLEVENTL, "CTsySatMessaging::NotifyClientAboutCallControlEventL" );
+ iNotifyCallControlRequest->CompleteNotificationL( aCcResult, aEnvelopeResponse );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NotifyClientAboutGprsCallControlEvent
+// Notifies Etel SAT client about GPRS call control event
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::NotifyClientAboutGprsCallControlEvent
+ (
+ const TDesC& aAlphaId,
+ const RSat::TControlResult aResult
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NOTIFYCLIENTABOUTGPRSCALLCONTROLEVENT, "CTsySatMessaging::NotifyClientAboutGprsCallControlEvent" );
+ iNotifyCallControlRequest->CompleteNotification(
+ aAlphaId,
+ aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::NotifyClientAboutMoSmControlEvent
+// Notifies client about Mo-Sms control event
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::NotifyClientAboutMoSmControlEvent
+ (
+ TDesC& aAlphaId, //Alpha id of MO-SMS control event
+ RSat::TControlResult aResult
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_NOTIFYCLIENTABOUTMOSMCONTROLEVENT, "CTsySatMessaging::NotifyClientAboutMoSmControlEvent" );
+ iNotifyMoSmControlRequest->CompleteNotification( aAlphaId, aResult );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetTransactionId
+// Get new transaction id
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TUint8 CTsySatMessaging::GetTransactionId()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETTRANSACTIONID, "CTsySatMessaging::GetTransactionId" );
+ return iTransIdMsg->GetTransactionId( );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SatReady
+// Sat ready indication
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::SatReady
+ (
+ TUint8 aMsg // Message to be retrieved
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SATREADY, "CTsySatMessaging::SatReady" );
+ return iPnReceive->SatReady( aMsg );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::ClearCCArrays
+// Clears the array containing call control event data, due to
+// a refresh PCmd.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::ClearCCArrays()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_CLEARCCARRAYS, "CTsySatMessaging::ClearCCArrays" );
+ iSatCC->ClearArraysForRefresh();
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::CallControlReceivedL
+// Processes ISI messages that are relevant for call control
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::CallControlReceivedL
+ (
+ const TIsiReceiveC& aIsiMessage
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_CALLCONTROLRECEIVEDL, "CTsySatMessaging::CallControlReceivedL" );
+ iSatCC->MessageReceivedL( aIsiMessage );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::DataDownloadReceivedL
+// Processes ISI messages that are relevant for call control
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::DataDownloadReceivedL
+ (
+ const TIsiReceiveC& aIsiMessage
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_DATADOWNLOADRECEIVEDL, "CTsySatMessaging::DataDownloadReceivedL" );
+ iSatDataDownload->MessageReceivedL( aIsiMessage );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::MoSmsControlReceived
+// Processes ISI messages that are relevant for MoSm control
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::MoSmsControlReceived
+ (
+ const TIsiReceiveC& aIsiMessage
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_MOSMSCONTROLRECEIVED, "CTsySatMessaging::MoSmsControlReceived" );
+ if ( iSatMoSmsCtrl->IsActivated() )
+ {
+ iSatMoSmsCtrl->MessageReceived( aIsiMessage );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::IsMoSmControlBySimActivated
+// This methods returns ETrue if MoSmControl
+// is activated. Otherwise, it returns EFalse
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TBool CTsySatMessaging::IsMoSmControlBySimActivated()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_ISMOSMCONTROLBYSIMACTIVATED, "CTsySatMessaging::IsMoSmControlBySimActivated" );
+ return iSatMoSmsCtrl->IsActivated();
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetSatIcon
+// Returns pointer to the SatIcon instance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSatIcon* CTsySatMessaging::GetSatIcon()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETSATICON, "CTsySatMessaging::GetSatIcon" );
+ // Pointer to SAT timer
+ return iSatIcon;
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::StoreCallConnectedEvent
+// Cache call connected envelope
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::StoreCallConnectedEvent
+ (
+ const TDesC8& aEnvelope
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_STORECALLCONNECTEDEVENT, "CTsySatMessaging::StoreCallConnectedEvent" );
+ iNotifySetUpCall->StoreCallConnectedEvent( aEnvelope );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SetSetUpCallStatus
+// Updates the status of SetUpCall command in SatEventDownload instance.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::SetSetUpCallStatus
+ (
+ const TBool aStatus
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SETSETUPCALLSTATUS, "CTsySatMessaging::SetSetUpCallStatus" );
+ iEventDownload->SetSetUpCallStatus( aStatus );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SetStatusOfUssdSupport
+// Set CSatCC internal flag according to EF-SimServiceTable.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::SetStatusOfUssdSupport
+ (
+ const TBool aStatus
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SETSTATUSOFUSSDSUPPORT, "CTsySatMessaging::SetStatusOfUssdSupport" );
+ iSatCC->SetStatusOfUssdSupport( aStatus );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::SetTonNpi
+// Set CSatCC internal Ton and Npi
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::SetTonNpi
+ (
+ const TUint8 aTonNpi
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_SETTONNPI, "CTsySatMessaging::SetTonNpi" );
+ iSatCC->SetTonNpi( aTonNpi );
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::StoreSms
+// Request the storing of SMS from CommonTsy
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CTsySatMessaging::StoreSmsL
+ (
+ RMobileSmsStore::TMobileGsmSmsEntryV1& aSmsEntry
+ )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_STORESMSL, "CTsySatMessaging::StoreSmsL" );
+ #if ( NCP_COMMON_S60_VERSION_SUPPORT == S60_VERSION_32 )
+ RMobileSmsStore::TMobileGsmSmsEntryV1Pckg smsPckg( aSmsEntry );
+
+ // Pack data and forward request to DOS
+ TDesC8* data = reinterpret_cast<TDesC8*>( &smsPckg );
+
+ CMmDataPackage package;
+ package.PackData( &data, &aSmsEntry.iIndex );
+
+ TRAPD( ret, ret = iMmPhone->MessageManager()->HandleRequestL(
+ EMobilePhoneStoreWrite, &package ) );
+
+ // Return leave code or return status of method.
+ return ret;
+ #else
+ RMobileSmsStore::TMobileGsmSmsEntryV1Pckg smsPckg( aSmsEntry );
+ TInt ret = KErrNone;
+
+ // Pack data and forward request to DOS
+ TDesC8* data = reinterpret_cast<TDesC8*>( &smsPckg );
+
+ CMmDataPackage package;
+ package.PackData( &data, &aSmsEntry.iIndex );
+
+ ret = iRouter->ExtFuncL( EMobilePhoneStoreWrite, &package );
+
+ return ret;
+ #endif //NCP_COMMON_S60_VERSION_SUPPORT
+ }
+
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::UsatClientReadyIndication
+// Inform SIMSON that (U)SAT client has sent all notifications and is ready to
+// receive proactive commands or that flight mode is on and (U)SAT client cannot
+// receive proactive commands.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CTsySatMessaging::UsatClientReadyIndication( TTsyReqHandle aTsyReqHandle )
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_USATCLIENTREADYINDICATION, "CTsySatMessaging::UsatClientReadyIndication" );
+ TFLOGSTRING("TSY: CTsySatMessaging::UsatClientReadyIndication");
+
+ // Set SAT ready flag in satmesshandler
+ iSatMessHandler->SetSatReadyStatus( ETrue );
+
+ // If UICC server is ready, send command to enable or disable proactive
+ // commands
+ if ( iSatMessHandler->GetTerminalProfileStatus() )
+ {
+ if ( ! iSatFlightModeStatus->FlightModeStatusValue() )
+ {
+ iSatMessHandler->UiccCatReq( UICC_CAT_ENABLE );
+ }
+ else
+ {
+ iSatMessHandler->UiccCatReq( UICC_CAT_DISABLE );
+ }
+ }
+
+ // Complete ReqHandle immediately for preventing blocking of Etel server
+ // Client do not care about return value
+ ReqCompleted( aTsyReqHandle, KErrNone );
+ }
+
+#if ( NCP_COMMON_S60_VERSION_SUPPORT >= S60_VERSION_50 )
+// -----------------------------------------------------------------------------
+// CTsySatMessaging::GetMessageRouter
+// Returns pointer to message router
+// (other items were commented in a header)
+// -----------------------------------------------------------------------------
+//
+CMmMessageRouter* CTsySatMessaging::GetMessageRouter()
+ {
+ OstTrace0( TRACE_NORMAL, CTSYSATMESSAGING_GETMESSAGEROUTER, "CTsySatMessaging::GetMessageRouter" );
+ return iRouter;
+ }
+#endif
+
+// ================= OTHER EXPORTED FUNCTIONS ==================================
+
+// End of File