diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simatktsy/src/csateventdownloadtsy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/simatktsy/src/csateventdownloadtsy.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,931 @@ +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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: +// Name : CSatEventDownloadTsy.cpp +// Part of : Common SIM ATK TSY / commonsimatktsy +// EventDownload-related functionality of Sat Tsy +// Version : 1.0 +// + + + +#include // Etel SAT IPC definitions +#include "CSatDataPackage.h" // Parameter packing +#include "CSatEventDownloadTsy.h" // Class header +#include "CSatTsy.h" // Sat Tsy class +#include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. +#include "TfLogger.h" // For TFLOGSTRING +#include "CBerTlv.h" // Ber Tlv +#include "TTlv.h" // TTlv class +#include "MSatTsy_IPCDefs.h" // Sat Tsy internal request types +#include "CSatNotificationsTsy.h" // KTonNpiBit8 + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CSatEventDownloadTsy* CSatEventDownloadTsy::NewL + ( + CSatTsy* aSatTsy + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::NewL" ); + CSatEventDownloadTsy* const satEventDownloadTsy = + new ( ELeave ) CSatEventDownloadTsy(); + CleanupStack::PushL( satEventDownloadTsy ); + satEventDownloadTsy->iSatTsy = aSatTsy; + satEventDownloadTsy->ConstructL(); + CleanupStack::Pop( satEventDownloadTsy ); + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::NewL, end of method" ); + return satEventDownloadTsy; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::~CSatEventDownloadTsy +// Destructor +// ----------------------------------------------------------------------------- +// +CSatEventDownloadTsy::~CSatEventDownloadTsy + ( + void + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::~CSatEventDownloadTsy" ); + // Unregister. + iSatTsy->MessageManager()->RegisterTsyObject( + CMmMessageManagerBase::ESatEventDownloadTsyObjType, NULL ); + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CSatEventDownloadTsy +// C++ constructor +// ----------------------------------------------------------------------------- +// +CSatEventDownloadTsy::CSatEventDownloadTsy + ( + void + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CSatEventDownloadTsy" ); + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::ConstructL +// Symbian 2nd phase constructor. Initialises internal attributes. +// ----------------------------------------------------------------------------- +// +void CSatEventDownloadTsy::ConstructL + ( + void + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::ConstructL" ); + // Register . + iSatTsy->MessageManager()->RegisterTsyObject( + CMmMessageManagerBase::ESatEventDownloadTsyObjType, this ); + iSetUpCallOngoing = EFalse; + iForceLocationStatusEnvelope = EFalse; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::DoExtFuncL +// Handles event download IPC requests originating from ETel +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::DoExtFuncL + ( + const TTsyReqHandle aTsyReqHandle, + const TInt /*aIpc*/, + const TDataPackage& aPackage + ) + { + TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::DoExtFuncL\ + . Handle:%d", aTsyReqHandle ); + + TInt ret ( KErrNotSupported ); + + // Get parameters (eventList, eventInfo) from package + RSat::TEventDownloadBaseV2Pckg* eventInfoPckg = + (RSat::TEventDownloadBaseV2Pckg*)aPackage.Des2n(); + RSat::TEventDownloadBaseV2& eventInfo = (*eventInfoPckg)(); + RSat::TEventList& singleEvent = *(RSat::TEventList*)aPackage.Ptr1(); + + if ( RSat::KSatV2 == eventInfo.ExtensionId() ) + { + // Branch and do whatever is necessary according to the event type.. + switch ( singleEvent ) + { + case RSat::KUserActivity: + { + ret = CreateUserActivityEnvelopeL(); + break; + } + case RSat::KIdleScreenAvailable: + { + ret = CreateIdleScreenAvailableEnvelopeL(); + break; + } + case RSat::KBrowserTermination: + { + ret = CreateBrowserTerminationEnvelopeL( + ( ( RSat::TBrowserTerminationEventV2* )&eventInfo )->iCause ); + break; + } + case RSat::KLanguageSelection: + { + ret = CreateLanguageSelectionEnvelopeL( + ( ( RSat::TLanguageSelectionEventV2* )&eventInfo )->iLanguage ); + break; + } + case RSat::KDataAvailable: + { + // DataAvailable will trigger a ReceiveData PCmd + ret = CreateDataAvailableEnvelopeL( + ( ( RSat::TDataAvailableEventV2* )&eventInfo )->iStatus, + ( ( RSat::TDataAvailableEventV2* )&eventInfo )->iLength ); + break; + } + case RSat::KChannelStatus: + { + // When the ME detects one of the following changes: + // - a link is error, or + // - any other error, + // which is not resulting from the execution of a proactive + // command, the ME shall inform the SIM that this has occurred. + ret = CreateChannelStatusEnvelopeL( + ( ( RSat::TChannelStatusEventV2* )&eventInfo )->iStatus ); + break; + } + // TSY is responsible for these events + // but they are not reported to ETel + //case RSat::KMTCall: + //case RSat::KCallConnected: + //case RSat::KCallDisconnected: + //case RSat::KLocationStatus: + //case RSat::KAccessTechnologyChange: + + // Events that can be reported by client, but are not supported by TSY + //case RSat::KCardReaderStatus: + //case RSat::KDisplayParamsChanges: + //case RSat::KLocalConnection: + default: + { + ret = KErrNotSupported; + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::DoExtFuncL, not supported" ); + break; + } + } // End switch + + } // End if extensionid. + + // Complete the request + iSatTsy->ReqCompleted( aTsyReqHandle, ret ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::SetUpEventList +// Sets up event list +// ----------------------------------------------------------------------------- +// +void CSatEventDownloadTsy::SetUpEventList + ( + TUint32 aEvents // Bit mask of enabled events + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::SetUpEventList" ); + iEventList.SetEventList( aEvents ); + + // Force sending of envelope at least once, if location status event set + if ( iEventList.IsEnabled( RSat::KLocationStatus ) ) + { + iForceLocationStatusEnvelope = ETrue; + } + // Reset flag if removal of event list or not location status event + else + { + iForceLocationStatusEnvelope = EFalse; + } + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::SetSetUpCallStatus +// Set SetUpCall status +// ----------------------------------------------------------------------------- +// +void CSatEventDownloadTsy::SetSetUpCallStatus + ( + const TBool aStatus // SetUpCall status + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::SetSetUpCallStatus" ); + iSetUpCallOngoing = aStatus; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CancelService +// Since event download is served at once +// we don't have to do anything here +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CancelService + ( + const TInt /*aIpc*/, + const TTsyReqHandle /*aTsyReqHandle*/ + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CancelService" ); + // Since event download is served at once, there's anything to do here + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CompleteMTCallL +// Creates MT call envelope to NAA +// Not supported yet +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CompleteMTCallL + ( + const CSatDataPackage* aDataPackage + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL" ); + TInt ret( KErrNone ); + + if ( iEventList.IsEnabled( RSat::KMTCall ) ) + { + TMTCallEnvelope* mTCallEnvelope; + aDataPackage->UnPackData( &mTCallEnvelope ); + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventMTCall ); + + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KNetwork ); + envelope.AddByte( KSim ); + + // Transaction identifier + envelope.AddTag ( KTlvTransactionIdentifierTag ); + envelope.AddByte( mTCallEnvelope->iCmdNumber ); + + if ( NULL != mTCallEnvelope->iTONandNPI ) + { + // Bits 1 - 4 are NPI, bits 5 - 7 TON + // Bit 8 always 1 -> OR'd to be sure of that + // See 3GPP TS 11.11 10.5.1 + // and 3GPP 04.08 figure 10.5.91 + mTCallEnvelope->iTONandNPI |= KTonNpiBit8; + + envelope.AddTag ( KTlvAddressTag ); + envelope.AddByte( mTCallEnvelope->iTONandNPI ); + + if ( mTCallEnvelope->iDiallingNumber.Length() ) + { + // Optional dialling number + envelope.AddData( mTCallEnvelope->iDiallingNumber ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL,\ + Dialling number missing" ); + } + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL,\ + TON and NPI missing" ); + } + + // If subaddress present + if ( mTCallEnvelope->iCalledPartySubAddress.Length() ) + { + // Optional called party subaddress + envelope.AddTag( KTlvSubaddressTag ); + envelope.AddData( mTCallEnvelope->iCalledPartySubAddress ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL,\ + Subaddress missing" ); + } + + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL\ + Event not enabled" ); + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CompleteCallConnectedL +// Creates Call connected envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CompleteCallConnectedL + ( + const CSatDataPackage* aDataPackage + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallConnectedL" ); + TInt ret = KErrNone; + + if ( iEventList.IsEnabled( RSat::KCallConnected ) ) + { + TUint8 cmdNumber; + TBool nearEnd; + aDataPackage->UnPackData( cmdNumber, nearEnd ); + + TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::CompleteCallConnectedL \ + ( cmdNumber=%d )", ( TInt )cmdNumber ); + + // Create envelope + TTlv envelope; + envelope.Begin( KBerTlvEventDownloadTag ); + + // Event list + envelope.AddTag( KTlvEventListTag ); + envelope.AddByte( KEventCallConnected ); + // Device identities + envelope.AddTag( KTlvDeviceIdentityTag ); + envelope.AddByte( nearEnd ? KMe : KNetwork ); + envelope.AddByte( KSim ); + // Transaction identifier + envelope.AddTag( KTlvTransactionIdentifierTag ); + envelope.AddByte( cmdNumber ); + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Check if the call is SetUpCall originated and it's an MO call + if ( iSetUpCallOngoing && !nearEnd ) + { + // Forward data to CNotifySetUpCall it will be send after a + // terminal resp of set up call. + iSatTsy->StoreCallConnectedEvent( envelope.End() ); + } + else + { + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallConnectedL,\ + Event not enabled" ); + } + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CompleteCallDisconnectedL +// Creates Call disconnected envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CompleteCallDisconnectedL + ( + const CSatDataPackage* aDataPackage + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallDisconnectedL" ); + TInt ret = KErrNone; + + if ( iEventList.IsEnabled( RSat::KCallDisconnected ) ) + { + TCallDisconnectedEnvelope* callDisconnectedEnvelope; + // Unpack data + aDataPackage->UnPackData( &callDisconnectedEnvelope ); + // Unpack structure + TUint8 cmdNumber = callDisconnectedEnvelope->iCmdNumber; + TBool nearEnd = callDisconnectedEnvelope->iNearEnd; + TBool causeGiven = callDisconnectedEnvelope->iCauseGiven; + const TDesC8& cause = callDisconnectedEnvelope->iCause; + TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::CompleteCallDisconnectedL \ + ( cmdNumber=%d )", ( TInt )cmdNumber ); + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventCallDisconnected ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( nearEnd ? KMe : KNetwork ); + envelope.AddByte( KSim ); + // Transaction identifier + envelope.AddTag ( KTlvTransactionIdentifierTag ); + envelope.AddByte( cmdNumber ); + // Cause + if ( causeGiven ) + { + envelope.AddTag ( KTlvCauseTag ); + envelope.AddData( cause ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CompleteCallDisconnectedL, cause not given" ); + } + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallDisconnectedL,\ + Event not enabled" ); + } + return ret; + } + + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CompleteLocationStatusL +// Creates Location status envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CompleteLocationStatusL + ( + const CSatDataPackage* aDataPackage + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteLocationStatusL" ); + TInt ret( KErrNone ); + + if ( iEventList.IsEnabled( RSat::KLocationStatus ) ) + { + CSatTsy::TLocationStatusEnvelope* locationStatusEnvelope; + // Unpack data + aDataPackage->UnPackData( &locationStatusEnvelope ); + // Unpack structure + TUint8 locationStatus = locationStatusEnvelope->iLocationStatus; + TBuf8 operatorCode = + locationStatusEnvelope->iCountryCode; + TUint16 locationAreaCode = locationStatusEnvelope->iLocationAreaCode; + TUint16 cellId = locationStatusEnvelope->iCellId; + + TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::CompleteLocationStatusL \ + ( locationStatus=%d )", ( TInt )locationStatus ); + + // Send location status envelope only if there + // have been changes or we're sending first + // envelope after setup event list pcmd + if ( ( iLocationStatus != locationStatus ) || + ( iOperatorCode != operatorCode ) || + ( iLocationaAreaCode != locationAreaCode )|| + ( iCellId != cellId ) || + iForceLocationStatusEnvelope ) + { + TFLOGSTRING( "CSAT: CSatEventDownload::\ + CompleteLocationStatusEnvelopeL, -- saving" ); + + // Cache values + iLocationStatus = locationStatus; + iOperatorCode = operatorCode; + iLocationaAreaCode = locationAreaCode; + iCellId = cellId; + + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventLocationStatus ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + // Locationstatus + envelope.AddTag ( KTlvLocationStatusTag ); + envelope.AddByte( TUint8(locationStatus) ); + + // Location information, this is included only if status indicates + // normal service + if ( KLocationStatusNormalService == locationStatus ) + { + TFLOGSTRING( "CSAT: CSatEventDownload::CompleteLocationStatusEnvelopeL\ + -- sending" ); + envelope.AddTag ( KTlvLocationInformationTag ); + envelope.AddData( operatorCode ); + // Mobile country & network codes + envelope.AddByte( TUint8( locationAreaCode >> 8 ) );// Hi byte + envelope.AddByte( TUint8( locationAreaCode >> 0 ) );// Lo byte + envelope.AddByte( TUint8( cellId >> 8 ) ); // Hi byte + envelope.AddByte( TUint8( cellId >> 0 ) ); // Lo byte + } + else + { + // Do nothing + } + + // Reset the flag + iForceLocationStatusEnvelope = EFalse; + + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + // Do nothing + } + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CompleteLocationStatusEnvelopeL, Event not enabled" ); + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CompleteAccessTechnologyChangeL +// Creates access technology change envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CompleteAccessTechnologyChangeL + ( + const CSatDataPackage* aDataPackage + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CompleteAccessTechnologyChangeEnvelopeL" ); + TInt ret( KErrNone ); + + if ( iEventList.IsEnabled( RSat::KAccessTechnologyChange ) ) + { + TUint8 accTechChange; + aDataPackage->UnPackData( accTechChange ); + // create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + + // event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventAccessTechnologyChange ); + + // device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + + // channel status + envelope.AddTag( KTlvAccessTechnologyTag ); + envelope.AddByte( accTechChange ); + + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CompleteAccessTechnologyChangeL, Event not enabled" ); + } + + return ret; + } +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CreateUserActivityEnvelopeL +// Send user activity envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CreateUserActivityEnvelopeL + ( + // None + ) + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateUserActivityEnvelopeL" ); + TInt ret = KErrNone; + if ( iEventList.IsEnabled( RSat::KUserActivity ) ) + { + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventUserActivity ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + + // Remove from event list + iEventList.RemoveFromEventList( RSat::KUserActivity ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateUserActivityEnvelopeL,\ + Event not enabled" ); + } + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CreateIdleScreenAvailableEnvelopeL +// Send idle screen available envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CreateIdleScreenAvailableEnvelopeL + ( + // None + ) + { + TFLOGSTRING("CSAT: CSatEventDownloadTsy::\ + CreateIdleScreenAvailableEnvelopeL"); + TInt ret = KErrNone; + + if ( iEventList.IsEnabled( RSat::KIdleScreenAvailable ) ) + { + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventIdleScreenAvailable ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KDisplay ); + envelope.AddByte( KSim ); + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + + if ( KErrNone == ret ) + { + // Remove from event list + iEventList.RemoveFromEventList( RSat::KIdleScreenAvailable ); + } + else + { + TFLOGSTRING("CSAT: CSatEventDownloadTsy::\ + CreateIdleScreenAvailableEnvelopeL, Error in forwarding req."); + } + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CreateIdleScreenAvailableEnvelopeL, Event not enabled" ); + } + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CreateBrowserTerminationEnvelopeL +// Send browser termination envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CreateBrowserTerminationEnvelopeL + ( + const RSat::TBrowserTerminationCause aCause + ) + { + TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::\ + CreateBrowserTerminationEnvelopeL, ( cause=%d )",( TInt )aCause ); + + TInt ret = KErrNone; + + if ( iEventList.IsEnabled( RSat::KBrowserTermination ) ) + { + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventBrowserTermination ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + // Cause + envelope.AddTag( KTlvBrowserTerminationCauseTag ); + envelope.AddByte( + TUint8( ( RSat::EUserTermination == aCause ) ? + KBrowserTerminationUser : KBrowserTerminationError ) ); + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CreateBrowserTerminationEnvelopeL, Event not enabled" ); + } + + return ret; + } + + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CreateLanguageSelectionEnvelopeL +// Send Language selection envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CreateLanguageSelectionEnvelopeL + ( + const TUint16 aLanguage + ) + { + TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::\ + CreateLanguageSelectionEnvelopeL, (language=%d)", ( TInt )aLanguage ); + + TInt ret = KErrNone; + + if ( iEventList.IsEnabled(RSat::KLanguageSelection ) ) + { + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventLanguageSelection ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + // Language + envelope.AddTag( KTlvLanguageTag ); + envelope.AddByte( TUint8( ( aLanguage >> 8 ) & 0x7f ) );// MSB + envelope.AddByte( TUint8( ( aLanguage >> 0 ) & 0x7f ) );// LSB + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\ + CreateLanguageSelectionEnvelopeL, Event not enabled" ); + } + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CreateDataAvailableEnvelopeL +// Create data available envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CreateDataAvailableEnvelopeL + ( + const RSat::TChannelStatus aStatus, + const TInt8 aLength + ) + { + TFLOGSTRING("CSAT: CSatEventDownload::CreateDataAvailableEnvelopeL"); + + TInt ret = KErrNone; + + if ( iEventList.IsEnabled( RSat::KDataAvailable ) ) + { + // Create envelope + TTlv envelope; + envelope.Begin( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag( KTlvEventListTag ); + envelope.AddByte( KEventDataAvailable ); + // Device identities + envelope.AddTag( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + // Channel status + envelope.AddTag( KTlvChannelStatusTag ); + envelope.AddData( aStatus ); + // Channel data length + envelope.AddTag( KTlvChannelDataLengthTag ); + envelope.AddByte( aLength ); + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateDataAvailableEnvelopeL\ + Event not enabled" ); + } + return ret; + } + +// ----------------------------------------------------------------------------- +// CSatEventDownloadTsy::CreateChannelStatusEnvelopeL +// Create channel status envelope to NAA +// ----------------------------------------------------------------------------- +// +TInt CSatEventDownloadTsy::CreateChannelStatusEnvelopeL + ( + const RSat::TChannelStatus aStatus + ) + { + TFLOGSTRING("CSAT: CSatEventDownloadTsy::CreateChannelStatusEnvelopeL"); + + TInt ret( KErrNone ); + + if ( iEventList.IsEnabled( RSat::KChannelStatus ) ) + { + // Create envelope + TTlv envelope; + envelope.Begin ( KBerTlvEventDownloadTag ); + // Event list + envelope.AddTag ( KTlvEventListTag ); + envelope.AddByte( KEventChannelStatus ); + // Device identities + envelope.AddTag ( KTlvDeviceIdentityTag ); + envelope.AddByte( KMe ); + envelope.AddByte( KSim ); + // Channel status + envelope.AddTag( KTlvChannelStatusTag ); + envelope.AddData( aStatus ); + // Prepare data + TPtrC8 data = envelope.End(); + // Pack data + CSatDataPackage dataPackage; + dataPackage.PackData( &data ); + // Forward request to the DOS + ret = iSatTsy->MessageManager()->HandleRequestL( + ESatEventDownload, &dataPackage ); + } + else + { + TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateChannelStatusEnvelopeL\ + Event not enabled" ); + } + + return ret; + } + +// End of File +