telephonyserverplugins/simatktsy/src/csateventdownloadtsy.cpp
changeset 0 3553901f7fa8
child 19 630d2f34d719
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Name        : CSatEventDownloadTsy.cpp
       
    15 // Part of     : Common SIM ATK TSY / commonsimatktsy
       
    16 // EventDownload-related functionality of Sat Tsy
       
    17 // Version     : 1.0
       
    18 //
       
    19 
       
    20 
       
    21 
       
    22 #include <satcs.h>                  // Etel SAT IPC definitions
       
    23 #include "CSatDataPackage.h"        // Parameter packing 
       
    24 #include "CSatEventDownloadTsy.h"   // Class header
       
    25 #include "CSatTsy.h"                // Sat Tsy class
       
    26 #include "cmmmessagemanagerbase.h"  // Message manager class for forwarding req.
       
    27 #include "TfLogger.h"               // For TFLOGSTRING
       
    28 #include "CBerTlv.h"                // Ber Tlv
       
    29 #include "TTlv.h"					// TTlv class
       
    30 #include "MSatTsy_IPCDefs.h"        // Sat Tsy internal request types
       
    31 #include "CSatNotificationsTsy.h"  	// KTonNpiBit8
       
    32 
       
    33 // -----------------------------------------------------------------------------
       
    34 // CSatEventDownloadTsy::NewL
       
    35 // Two-phased constructor.
       
    36 // -----------------------------------------------------------------------------
       
    37 //
       
    38 CSatEventDownloadTsy* CSatEventDownloadTsy::NewL
       
    39         (    
       
    40         CSatTsy* aSatTsy  
       
    41         )
       
    42     { 
       
    43     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::NewL" );
       
    44     CSatEventDownloadTsy* const satEventDownloadTsy = 
       
    45         new ( ELeave ) CSatEventDownloadTsy();
       
    46     CleanupStack::PushL( satEventDownloadTsy );
       
    47     satEventDownloadTsy->iSatTsy = aSatTsy;
       
    48     satEventDownloadTsy->ConstructL();
       
    49     CleanupStack::Pop( satEventDownloadTsy );
       
    50     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::NewL, end of method" );
       
    51     return satEventDownloadTsy;
       
    52     }
       
    53 
       
    54 // -----------------------------------------------------------------------------
       
    55 // CSatEventDownloadTsy::~CSatEventDownloadTsy
       
    56 // Destructor
       
    57 // -----------------------------------------------------------------------------
       
    58 //    
       
    59 CSatEventDownloadTsy::~CSatEventDownloadTsy
       
    60         (    
       
    61         void   
       
    62         )
       
    63     {
       
    64     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::~CSatEventDownloadTsy" );
       
    65     // Unregister.
       
    66     iSatTsy->MessageManager()->RegisterTsyObject(
       
    67 		CMmMessageManagerBase::ESatEventDownloadTsyObjType, NULL );
       
    68     }
       
    69 
       
    70 // -----------------------------------------------------------------------------
       
    71 // CSatEventDownloadTsy::CSatEventDownloadTsy
       
    72 // C++ constructor
       
    73 // -----------------------------------------------------------------------------
       
    74 //
       
    75 CSatEventDownloadTsy::CSatEventDownloadTsy
       
    76         (
       
    77         void
       
    78         )
       
    79     {
       
    80     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CSatEventDownloadTsy" );
       
    81     }
       
    82 
       
    83 // -----------------------------------------------------------------------------
       
    84 // CSatEventDownloadTsy::ConstructL
       
    85 // Symbian 2nd phase constructor. Initialises internal attributes.
       
    86 // -----------------------------------------------------------------------------
       
    87 //    
       
    88 void CSatEventDownloadTsy::ConstructL
       
    89         (    
       
    90         void
       
    91         )
       
    92     {
       
    93     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::ConstructL" );
       
    94     // Register .
       
    95     iSatTsy->MessageManager()->RegisterTsyObject(
       
    96 		CMmMessageManagerBase::ESatEventDownloadTsyObjType, this );
       
    97 	iSetUpCallOngoing = EFalse; 
       
    98 	iForceLocationStatusEnvelope = EFalse;
       
    99     }
       
   100     
       
   101 // -----------------------------------------------------------------------------
       
   102 // CSatEventDownloadTsy::DoExtFuncL
       
   103 // Handles event download IPC requests originating from ETel
       
   104 // -----------------------------------------------------------------------------
       
   105 //
       
   106 TInt CSatEventDownloadTsy::DoExtFuncL
       
   107         (
       
   108         const TTsyReqHandle aTsyReqHandle, 
       
   109         const TInt /*aIpc*/, 
       
   110         const TDataPackage& aPackage 
       
   111         )
       
   112     {
       
   113     TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::DoExtFuncL\
       
   114         . Handle:%d", aTsyReqHandle );
       
   115 
       
   116     TInt ret ( KErrNotSupported );
       
   117 
       
   118     // Get parameters (eventList, eventInfo) from package
       
   119     RSat::TEventDownloadBaseV2Pckg* eventInfoPckg =
       
   120         (RSat::TEventDownloadBaseV2Pckg*)aPackage.Des2n();
       
   121     RSat::TEventDownloadBaseV2& eventInfo = (*eventInfoPckg)();
       
   122     RSat::TEventList& singleEvent = *(RSat::TEventList*)aPackage.Ptr1();
       
   123 
       
   124     if ( RSat::KSatV2 == eventInfo.ExtensionId() )
       
   125         {
       
   126         // Branch and do whatever is necessary according to the event type..
       
   127         switch ( singleEvent )
       
   128             {
       
   129             case RSat::KUserActivity:
       
   130                 {
       
   131                 ret = CreateUserActivityEnvelopeL();
       
   132                 break;
       
   133                 }
       
   134             case RSat::KIdleScreenAvailable:
       
   135                 {
       
   136                 ret = CreateIdleScreenAvailableEnvelopeL();
       
   137                 break;
       
   138                 }
       
   139             case RSat::KBrowserTermination:
       
   140                 {
       
   141                 ret = CreateBrowserTerminationEnvelopeL(
       
   142                     ( ( RSat::TBrowserTerminationEventV2* )&eventInfo )->iCause );
       
   143                 break;
       
   144                 }
       
   145             case RSat::KLanguageSelection:
       
   146                 {
       
   147                 ret = CreateLanguageSelectionEnvelopeL(
       
   148                     ( ( RSat::TLanguageSelectionEventV2* )&eventInfo )->iLanguage );
       
   149                 break;
       
   150                 }
       
   151             case RSat::KDataAvailable:
       
   152             	{            	
       
   153                 // DataAvailable will trigger a ReceiveData PCmd
       
   154                 ret = CreateDataAvailableEnvelopeL(
       
   155                     ( ( RSat::TDataAvailableEventV2* )&eventInfo )->iStatus,
       
   156                     ( ( RSat::TDataAvailableEventV2* )&eventInfo )->iLength );
       
   157                 break;
       
   158             	}
       
   159             case RSat::KChannelStatus:
       
   160             	{
       
   161                 // When the ME detects one of the following changes:
       
   162                 // -	a link is error, or
       
   163                 // -	any other error,
       
   164                 // which is not resulting from the execution of a proactive 
       
   165                 // command, the ME shall inform the SIM that this has occurred.
       
   166                 ret = CreateChannelStatusEnvelopeL(
       
   167                     ( ( RSat::TChannelStatusEventV2* )&eventInfo )->iStatus );
       
   168                 break;
       
   169             	}
       
   170             // TSY is responsible for these events
       
   171             // but they are not reported to ETel
       
   172             //case RSat::KMTCall:
       
   173             //case RSat::KCallConnected:
       
   174             //case RSat::KCallDisconnected:
       
   175             //case RSat::KLocationStatus:
       
   176             //case RSat::KAccessTechnologyChange:
       
   177 
       
   178             // Events that can be reported by client, but are not supported by TSY
       
   179             //case RSat::KCardReaderStatus:
       
   180             //case RSat::KDisplayParamsChanges:
       
   181             //case RSat::KLocalConnection:
       
   182             default:
       
   183                 {
       
   184                 ret = KErrNotSupported;
       
   185                 TFLOGSTRING( "CSAT: CSatEventDownloadTsy::DoExtFuncL, not supported" );
       
   186                 break;
       
   187                 }
       
   188             } // End switch  
       
   189 
       
   190         } // End if extensionid.
       
   191 
       
   192     // Complete the request
       
   193     iSatTsy->ReqCompleted( aTsyReqHandle, ret );
       
   194 
       
   195     return KErrNone;
       
   196     }
       
   197     
       
   198 // -----------------------------------------------------------------------------
       
   199 // CSatEventDownloadTsy::SetUpEventList
       
   200 // Sets up event list 
       
   201 // -----------------------------------------------------------------------------
       
   202 //  
       
   203 void CSatEventDownloadTsy::SetUpEventList
       
   204         (
       
   205         TUint32 aEvents        // Bit mask of enabled events
       
   206         )
       
   207     {
       
   208     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::SetUpEventList" );
       
   209     iEventList.SetEventList( aEvents );
       
   210         
       
   211     // Force sending of envelope at least once, if location status event set
       
   212     if ( iEventList.IsEnabled( RSat::KLocationStatus ) )
       
   213         {
       
   214         iForceLocationStatusEnvelope = ETrue;
       
   215         }
       
   216     // Reset flag if removal of event list or not location status event
       
   217     else
       
   218         {
       
   219         iForceLocationStatusEnvelope = EFalse;
       
   220         }
       
   221     }
       
   222 
       
   223 // -----------------------------------------------------------------------------
       
   224 // CSatEventDownloadTsy::SetSetUpCallStatus
       
   225 // Set SetUpCall status
       
   226 // -----------------------------------------------------------------------------
       
   227 //
       
   228 void CSatEventDownloadTsy::SetSetUpCallStatus
       
   229         (
       
   230         const TBool aStatus // SetUpCall status
       
   231         )
       
   232     {
       
   233     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::SetSetUpCallStatus" );
       
   234     iSetUpCallOngoing = aStatus;
       
   235     }
       
   236 
       
   237 // -----------------------------------------------------------------------------
       
   238 // CSatEventDownloadTsy::CancelService
       
   239 // Since event download is served at once 
       
   240 // we don't have to do anything here
       
   241 // -----------------------------------------------------------------------------
       
   242 //
       
   243 TInt CSatEventDownloadTsy::CancelService
       
   244         (
       
   245         const TInt /*aIpc*/,
       
   246         const TTsyReqHandle /*aTsyReqHandle*/
       
   247         )
       
   248     {
       
   249     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CancelService" );
       
   250     // Since event download is served at once, there's anything to do here
       
   251     return KErrNone;
       
   252     }
       
   253 
       
   254 // -----------------------------------------------------------------------------
       
   255 // CSatEventDownloadTsy::CompleteMTCallL
       
   256 // Creates MT call envelope to NAA
       
   257 // Not supported yet
       
   258 // -----------------------------------------------------------------------------
       
   259 //
       
   260 TInt CSatEventDownloadTsy::CompleteMTCallL
       
   261         (
       
   262         const CSatDataPackage* aDataPackage
       
   263         )
       
   264     {
       
   265     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL" );    
       
   266     TInt ret( KErrNone );
       
   267 
       
   268     if ( iEventList.IsEnabled( RSat::KMTCall ) )
       
   269         {
       
   270 		TMTCallEnvelope* mTCallEnvelope;
       
   271     	aDataPackage->UnPackData( &mTCallEnvelope );        
       
   272         // Create envelope
       
   273         TTlv envelope;
       
   274         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   275 
       
   276         // Event list
       
   277         envelope.AddTag ( KTlvEventListTag );
       
   278         envelope.AddByte( KEventMTCall );
       
   279 
       
   280         // Device identities
       
   281         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   282         envelope.AddByte( KNetwork );
       
   283         envelope.AddByte( KSim );
       
   284 
       
   285         // Transaction identifier
       
   286         envelope.AddTag ( KTlvTransactionIdentifierTag );
       
   287         envelope.AddByte( mTCallEnvelope->iCmdNumber );
       
   288 
       
   289         if ( NULL != mTCallEnvelope->iTONandNPI )
       
   290             {
       
   291             // Bits 1 - 4 are NPI, bits 5 - 7 TON
       
   292             // Bit 8 always 1 -> OR'd to be sure of that
       
   293             // See 3GPP TS 11.11 10.5.1
       
   294             // and 3GPP 04.08 figure 10.5.91
       
   295             mTCallEnvelope->iTONandNPI |= KTonNpiBit8;
       
   296 
       
   297             envelope.AddTag ( KTlvAddressTag );
       
   298             envelope.AddByte( mTCallEnvelope->iTONandNPI );
       
   299 
       
   300             if ( mTCallEnvelope->iDiallingNumber.Length() )
       
   301                 {
       
   302                 // Optional dialling number
       
   303                 envelope.AddData( mTCallEnvelope->iDiallingNumber );
       
   304                 }
       
   305             else
       
   306             	{
       
   307             	TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL,\
       
   308             	    Dialling number missing" );
       
   309             	}
       
   310             }            
       
   311 		else
       
   312         	{	
       
   313         	TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL,\
       
   314             	TON and NPI missing" );
       
   315         	}
       
   316         	
       
   317         // If subaddress present
       
   318         if ( mTCallEnvelope->iCalledPartySubAddress.Length() )
       
   319             {
       
   320             // Optional called party subaddress
       
   321             envelope.AddTag( KTlvSubaddressTag );
       
   322             envelope.AddData( mTCallEnvelope->iCalledPartySubAddress );
       
   323             }
       
   324         else
       
   325         	{
       
   326         	TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL,\
       
   327             	Subaddress missing" );
       
   328         	}
       
   329 
       
   330         // Prepare data
       
   331         TPtrC8 data = envelope.End();
       
   332         // Pack data
       
   333         CSatDataPackage dataPackage;
       
   334 	    dataPackage.PackData( &data );
       
   335         // Forward request to the DOS
       
   336         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   337 		    ESatEventDownload, &dataPackage );
       
   338         }
       
   339 	else
       
   340     	{
       
   341         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteMTCallL\
       
   342             Event not enabled" );
       
   343         }
       
   344 
       
   345     return ret;
       
   346     }
       
   347 
       
   348 // -----------------------------------------------------------------------------
       
   349 // CSatEventDownloadTsy::CompleteCallConnectedL
       
   350 // Creates Call connected envelope to NAA
       
   351 // -----------------------------------------------------------------------------
       
   352 //
       
   353 TInt CSatEventDownloadTsy::CompleteCallConnectedL
       
   354         (
       
   355         const CSatDataPackage* aDataPackage
       
   356         )
       
   357     {
       
   358     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallConnectedL" );    
       
   359     TInt ret = KErrNone;
       
   360     
       
   361     if ( iEventList.IsEnabled( RSat::KCallConnected ) )
       
   362         {
       
   363 	    TUint8 cmdNumber;
       
   364 	    TBool nearEnd;
       
   365 	    aDataPackage->UnPackData( cmdNumber, nearEnd );
       
   366 	    
       
   367 	    TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::CompleteCallConnectedL \
       
   368 	        ( cmdNumber=%d )", ( TInt )cmdNumber ); 
       
   369 	               
       
   370         // Create envelope
       
   371         TTlv envelope;
       
   372         envelope.Begin( KBerTlvEventDownloadTag );
       
   373 
       
   374         // Event list
       
   375         envelope.AddTag( KTlvEventListTag );
       
   376         envelope.AddByte( KEventCallConnected );
       
   377         // Device identities
       
   378         envelope.AddTag( KTlvDeviceIdentityTag );
       
   379         envelope.AddByte( nearEnd ? KMe : KNetwork );
       
   380         envelope.AddByte( KSim );
       
   381         // Transaction identifier
       
   382         envelope.AddTag( KTlvTransactionIdentifierTag );
       
   383         envelope.AddByte( cmdNumber );
       
   384         // Prepare data
       
   385         TPtrC8 data = envelope.End();
       
   386         // Pack data
       
   387         CSatDataPackage dataPackage;
       
   388 	    dataPackage.PackData( &data );
       
   389         // Check if the call is SetUpCall originated and it's an MO call
       
   390         if ( iSetUpCallOngoing && !nearEnd )
       
   391             {
       
   392             // Forward data to CNotifySetUpCall it will be send after a 
       
   393             // terminal resp of set up call.  
       
   394             iSatTsy->StoreCallConnectedEvent( envelope.End() );
       
   395             }
       
   396         else
       
   397             {
       
   398             // Forward request to the DOS
       
   399              ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   400 		        ESatEventDownload, &dataPackage );
       
   401             }
       
   402         }
       
   403     else
       
   404         {
       
   405         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallConnectedL,\
       
   406             Event not enabled" );
       
   407         }
       
   408     return ret;
       
   409     }
       
   410 
       
   411 // -----------------------------------------------------------------------------
       
   412 // CSatEventDownloadTsy::CompleteCallDisconnectedL
       
   413 // Creates Call disconnected envelope to NAA
       
   414 // -----------------------------------------------------------------------------
       
   415 //
       
   416 TInt CSatEventDownloadTsy::CompleteCallDisconnectedL
       
   417         (
       
   418         const CSatDataPackage* aDataPackage
       
   419         )
       
   420     {
       
   421     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallDisconnectedL" );
       
   422     TInt ret = KErrNone;
       
   423 
       
   424     if ( iEventList.IsEnabled( RSat::KCallDisconnected ) )
       
   425         {
       
   426 	    TCallDisconnectedEnvelope* callDisconnectedEnvelope;
       
   427     	// Unpack data
       
   428     	aDataPackage->UnPackData( &callDisconnectedEnvelope );
       
   429     	// Unpack structure 
       
   430     	TUint8 cmdNumber = callDisconnectedEnvelope->iCmdNumber;
       
   431     	TBool nearEnd = callDisconnectedEnvelope->iNearEnd;
       
   432     	TBool causeGiven = callDisconnectedEnvelope->iCauseGiven;
       
   433     	const TDesC8& cause = callDisconnectedEnvelope->iCause; 
       
   434     	TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::CompleteCallDisconnectedL \
       
   435         	( cmdNumber=%d )", ( TInt )cmdNumber );    	       
       
   436         // Create envelope
       
   437         TTlv envelope;
       
   438         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   439         // Event list
       
   440         envelope.AddTag ( KTlvEventListTag );
       
   441         envelope.AddByte( KEventCallDisconnected );
       
   442         // Device identities
       
   443         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   444         envelope.AddByte( nearEnd ? KMe : KNetwork );
       
   445         envelope.AddByte( KSim );
       
   446         // Transaction identifier
       
   447         envelope.AddTag ( KTlvTransactionIdentifierTag );
       
   448         envelope.AddByte( cmdNumber );
       
   449         // Cause
       
   450         if ( causeGiven )
       
   451             {
       
   452             envelope.AddTag ( KTlvCauseTag );
       
   453             envelope.AddData( cause );
       
   454             }
       
   455         else
       
   456             {
       
   457             TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   458                 CompleteCallDisconnectedL, cause not given" );
       
   459             }
       
   460         // Prepare data
       
   461         TPtrC8 data = envelope.End();
       
   462         // Pack data
       
   463         CSatDataPackage dataPackage;
       
   464 	    dataPackage.PackData( &data );
       
   465         // Forward request to the DOS
       
   466         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   467 		    ESatEventDownload, &dataPackage );
       
   468         }
       
   469     else
       
   470         {
       
   471         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteCallDisconnectedL,\
       
   472             Event not enabled" );
       
   473         }
       
   474     return ret;
       
   475     }
       
   476 
       
   477 
       
   478 // -----------------------------------------------------------------------------
       
   479 // CSatEventDownloadTsy::CompleteLocationStatusL
       
   480 // Creates Location status envelope to NAA
       
   481 // -----------------------------------------------------------------------------
       
   482 //
       
   483 TInt CSatEventDownloadTsy::CompleteLocationStatusL
       
   484         (
       
   485         const CSatDataPackage* aDataPackage
       
   486         )
       
   487 	{
       
   488 	TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CompleteLocationStatusL" );	       	
       
   489     TInt ret( KErrNone );
       
   490 
       
   491     if ( iEventList.IsEnabled( RSat::KLocationStatus ) )
       
   492         {
       
   493 	    CSatTsy::TLocationStatusEnvelope* locationStatusEnvelope;
       
   494 	    // Unpack data
       
   495 	    aDataPackage->UnPackData( &locationStatusEnvelope );
       
   496 	    // Unpack structure 
       
   497 	    TUint8 locationStatus = locationStatusEnvelope->iLocationStatus;
       
   498 	    TBuf8<KCountryCodeLength> operatorCode = 
       
   499 	        locationStatusEnvelope->iCountryCode;
       
   500 	    TUint16 locationAreaCode = locationStatusEnvelope->iLocationAreaCode;
       
   501 	    TUint16 cellId = locationStatusEnvelope->iCellId;
       
   502 
       
   503 	    TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::CompleteLocationStatusL \
       
   504 	        ( locationStatus=%d )", ( TInt )locationStatus );
       
   505                 
       
   506         // Send location status envelope only if there
       
   507         // have been changes or we're sending first
       
   508         // envelope after setup event list pcmd
       
   509         if ( ( iLocationStatus != locationStatus ) ||
       
   510              ( iOperatorCode   != operatorCode ) ||
       
   511              ( iLocationaAreaCode != locationAreaCode )||
       
   512              ( iCellId != cellId ) || 
       
   513              iForceLocationStatusEnvelope ) 
       
   514             {
       
   515             TFLOGSTRING( "CSAT: CSatEventDownload::\
       
   516                 CompleteLocationStatusEnvelopeL, -- saving" );
       
   517 
       
   518             // Cache values
       
   519             iLocationStatus = locationStatus;
       
   520             iOperatorCode = operatorCode;
       
   521             iLocationaAreaCode  = locationAreaCode;
       
   522             iCellId = cellId;
       
   523 
       
   524             // Create envelope
       
   525             TTlv envelope;
       
   526             envelope.Begin  ( KBerTlvEventDownloadTag );
       
   527             // Event list
       
   528             envelope.AddTag ( KTlvEventListTag );
       
   529             envelope.AddByte( KEventLocationStatus );
       
   530             // Device identities
       
   531             envelope.AddTag ( KTlvDeviceIdentityTag );
       
   532             envelope.AddByte( KMe );
       
   533             envelope.AddByte( KSim );
       
   534             // Locationstatus
       
   535             envelope.AddTag ( KTlvLocationStatusTag );
       
   536             envelope.AddByte( TUint8(locationStatus) );
       
   537 
       
   538             // Location information, this is included only if status indicates 
       
   539             // normal service
       
   540             if ( KLocationStatusNormalService == locationStatus )
       
   541                 {
       
   542                 TFLOGSTRING( "CSAT: CSatEventDownload::CompleteLocationStatusEnvelopeL\
       
   543                     -- sending" );
       
   544                 envelope.AddTag ( KTlvLocationInformationTag );
       
   545                 envelope.AddData( operatorCode );        
       
   546                 // Mobile country & network codes
       
   547                 envelope.AddByte( TUint8( locationAreaCode >> 8 ) );// Hi byte
       
   548                 envelope.AddByte( TUint8( locationAreaCode >> 0 ) );// Lo byte
       
   549                 envelope.AddByte( TUint8( cellId >> 8 ) );          // Hi byte
       
   550                 envelope.AddByte( TUint8( cellId >> 0 ) );          // Lo byte
       
   551                 }
       
   552             else
       
   553                 {
       
   554                 // Do nothing
       
   555                 }
       
   556             
       
   557             // Reset the flag
       
   558             iForceLocationStatusEnvelope = EFalse;
       
   559 
       
   560             // Prepare data
       
   561             TPtrC8 data = envelope.End();
       
   562             // Pack data
       
   563             CSatDataPackage dataPackage;
       
   564 	        dataPackage.PackData( &data );
       
   565             // Forward request to the DOS
       
   566             ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   567 		        ESatEventDownload, &dataPackage );
       
   568             }
       
   569         else
       
   570             {
       
   571             // Do nothing
       
   572             }
       
   573         }
       
   574     else
       
   575         {
       
   576         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   577             CompleteLocationStatusEnvelopeL, Event not enabled" );
       
   578         }             
       
   579 
       
   580     return ret;
       
   581     }
       
   582 
       
   583 // -----------------------------------------------------------------------------
       
   584 // CSatEventDownloadTsy::CompleteAccessTechnologyChangeL
       
   585 // Creates access technology change envelope to NAA
       
   586 // -----------------------------------------------------------------------------
       
   587 //
       
   588 TInt CSatEventDownloadTsy::CompleteAccessTechnologyChangeL
       
   589         (
       
   590 		const CSatDataPackage* aDataPackage
       
   591         )
       
   592     {
       
   593     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   594     		CompleteAccessTechnologyChangeEnvelopeL" );
       
   595     TInt ret( KErrNone );
       
   596 
       
   597     if ( iEventList.IsEnabled( RSat::KAccessTechnologyChange ) )
       
   598         {
       
   599 	    TUint8 accTechChange; 
       
   600 		aDataPackage->UnPackData( accTechChange );        
       
   601         // create envelope
       
   602         TTlv envelope;
       
   603         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   604 
       
   605         // event list
       
   606         envelope.AddTag ( KTlvEventListTag );
       
   607         envelope.AddByte( KEventAccessTechnologyChange );
       
   608 
       
   609         // device identities
       
   610         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   611         envelope.AddByte( KMe );
       
   612         envelope.AddByte( KSim );
       
   613 
       
   614         // channel status
       
   615         envelope.AddTag( KTlvAccessTechnologyTag );
       
   616         envelope.AddByte( accTechChange );
       
   617         
       
   618         // Prepare data
       
   619         TPtrC8 data = envelope.End();
       
   620         // Pack data
       
   621         CSatDataPackage dataPackage;
       
   622         dataPackage.PackData( &data );
       
   623         // Forward request to the DOS
       
   624         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   625 	        ESatEventDownload, &dataPackage );
       
   626         }
       
   627     else
       
   628         {
       
   629         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   630             CompleteAccessTechnologyChangeL, Event not enabled" );
       
   631         }        
       
   632 
       
   633     return ret;
       
   634     }
       
   635 // -----------------------------------------------------------------------------
       
   636 // CSatEventDownloadTsy::CreateUserActivityEnvelopeL
       
   637 // Send user activity envelope to NAA
       
   638 // -----------------------------------------------------------------------------
       
   639 //
       
   640 TInt CSatEventDownloadTsy::CreateUserActivityEnvelopeL
       
   641         (
       
   642         // None
       
   643         )
       
   644     {
       
   645     TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateUserActivityEnvelopeL" );
       
   646     TInt ret = KErrNone;
       
   647     if ( iEventList.IsEnabled( RSat::KUserActivity ) )
       
   648         {
       
   649         // Create envelope
       
   650         TTlv envelope;
       
   651         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   652         // Event list
       
   653         envelope.AddTag ( KTlvEventListTag );
       
   654         envelope.AddByte( KEventUserActivity );
       
   655         // Device identities
       
   656         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   657         envelope.AddByte( KMe );
       
   658         envelope.AddByte( KSim );
       
   659         // Prepare data
       
   660         TPtrC8 data = envelope.End();
       
   661         // Pack data
       
   662         CSatDataPackage dataPackage;
       
   663 	    dataPackage.PackData( &data );
       
   664         // Forward request to the DOS
       
   665         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   666 		    ESatEventDownload, &dataPackage );
       
   667         
       
   668         // Remove from event list
       
   669         iEventList.RemoveFromEventList( RSat::KUserActivity );
       
   670         }
       
   671     else
       
   672         {
       
   673         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateUserActivityEnvelopeL,\
       
   674             Event not enabled" );
       
   675         }
       
   676     return ret;
       
   677     }
       
   678 
       
   679 // -----------------------------------------------------------------------------
       
   680 // CSatEventDownloadTsy::CreateIdleScreenAvailableEnvelopeL
       
   681 // Send idle screen available envelope to NAA
       
   682 // -----------------------------------------------------------------------------
       
   683 //
       
   684 TInt CSatEventDownloadTsy::CreateIdleScreenAvailableEnvelopeL
       
   685         (
       
   686         // None
       
   687         )
       
   688     {
       
   689     TFLOGSTRING("CSAT: CSatEventDownloadTsy::\
       
   690         CreateIdleScreenAvailableEnvelopeL");
       
   691     TInt ret = KErrNone;
       
   692 
       
   693     if ( iEventList.IsEnabled( RSat::KIdleScreenAvailable ) )
       
   694         {
       
   695         // Create envelope
       
   696         TTlv envelope;
       
   697         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   698         // Event list
       
   699         envelope.AddTag ( KTlvEventListTag );
       
   700         envelope.AddByte( KEventIdleScreenAvailable );
       
   701         // Device identities
       
   702         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   703         envelope.AddByte( KDisplay );
       
   704         envelope.AddByte( KSim );       
       
   705         // Prepare data
       
   706         TPtrC8 data = envelope.End();        
       
   707         // Pack data
       
   708         CSatDataPackage dataPackage;
       
   709 	    dataPackage.PackData( &data );
       
   710         // Forward request to the DOS
       
   711         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   712 		    ESatEventDownload, &dataPackage );
       
   713         
       
   714         if ( KErrNone == ret )
       
   715             {
       
   716             // Remove from event list
       
   717             iEventList.RemoveFromEventList( RSat::KIdleScreenAvailable );
       
   718             }
       
   719         else
       
   720             {
       
   721             TFLOGSTRING("CSAT: CSatEventDownloadTsy::\
       
   722                 CreateIdleScreenAvailableEnvelopeL, Error in forwarding req.");
       
   723             }
       
   724         }
       
   725     else
       
   726         {
       
   727         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   728             CreateIdleScreenAvailableEnvelopeL, Event not enabled" );
       
   729         }
       
   730     return ret;
       
   731     }
       
   732 
       
   733 // -----------------------------------------------------------------------------
       
   734 // CSatEventDownloadTsy::CreateBrowserTerminationEnvelopeL
       
   735 // Send browser termination envelope to NAA
       
   736 // -----------------------------------------------------------------------------
       
   737 //
       
   738 TInt CSatEventDownloadTsy::CreateBrowserTerminationEnvelopeL
       
   739         (
       
   740         const RSat::TBrowserTerminationCause aCause
       
   741         )
       
   742     {
       
   743     TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::\
       
   744         CreateBrowserTerminationEnvelopeL, ( cause=%d )",( TInt )aCause );
       
   745 
       
   746     TInt ret = KErrNone;
       
   747 
       
   748     if ( iEventList.IsEnabled( RSat::KBrowserTermination ) )
       
   749         {
       
   750         // Create envelope
       
   751         TTlv envelope;
       
   752         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   753         // Event list
       
   754         envelope.AddTag ( KTlvEventListTag );
       
   755         envelope.AddByte( KEventBrowserTermination );
       
   756         // Device identities
       
   757         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   758         envelope.AddByte( KMe );
       
   759         envelope.AddByte( KSim );
       
   760         // Cause
       
   761         envelope.AddTag( KTlvBrowserTerminationCauseTag );
       
   762         envelope.AddByte(
       
   763             TUint8( ( RSat::EUserTermination == aCause ) ?
       
   764             KBrowserTerminationUser : KBrowserTerminationError ) );
       
   765         // Prepare data
       
   766         TPtrC8 data = envelope.End();        
       
   767         // Pack data
       
   768         CSatDataPackage dataPackage;
       
   769 	    dataPackage.PackData( &data );        
       
   770         // Forward request to the DOS
       
   771         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   772 		    ESatEventDownload, &dataPackage );
       
   773         }
       
   774     else
       
   775         {
       
   776         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   777             CreateBrowserTerminationEnvelopeL, Event not enabled" );
       
   778         }
       
   779 
       
   780     return ret;
       
   781     }
       
   782 
       
   783 
       
   784 // -----------------------------------------------------------------------------
       
   785 // CSatEventDownloadTsy::CreateLanguageSelectionEnvelopeL
       
   786 // Send Language selection envelope to NAA
       
   787 // -----------------------------------------------------------------------------
       
   788 //
       
   789 TInt CSatEventDownloadTsy::CreateLanguageSelectionEnvelopeL
       
   790         (
       
   791         const TUint16 aLanguage
       
   792         )
       
   793     {
       
   794     TFLOGSTRING2( "CSAT: CSatEventDownloadTsy::\
       
   795         CreateLanguageSelectionEnvelopeL, (language=%d)", ( TInt )aLanguage );
       
   796     
       
   797     TInt ret = KErrNone;
       
   798 
       
   799     if ( iEventList.IsEnabled(RSat::KLanguageSelection ) )
       
   800         {
       
   801         // Create envelope
       
   802         TTlv envelope;
       
   803         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   804         // Event list
       
   805         envelope.AddTag ( KTlvEventListTag );
       
   806         envelope.AddByte( KEventLanguageSelection );
       
   807         // Device identities
       
   808         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   809         envelope.AddByte( KMe );
       
   810         envelope.AddByte( KSim );
       
   811         // Language
       
   812         envelope.AddTag( KTlvLanguageTag );
       
   813         envelope.AddByte( TUint8( ( aLanguage >> 8 ) & 0x7f ) );// MSB
       
   814         envelope.AddByte( TUint8( ( aLanguage >> 0 ) & 0x7f ) );// LSB    
       
   815         // Prepare data
       
   816         TPtrC8 data = envelope.End();        
       
   817         // Pack data
       
   818         CSatDataPackage dataPackage;
       
   819 	    dataPackage.PackData( &data );        
       
   820         
       
   821         // Forward request to the DOS
       
   822         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   823 		    ESatEventDownload, &dataPackage );
       
   824         }
       
   825     else
       
   826     	{
       
   827         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::\
       
   828             CreateLanguageSelectionEnvelopeL, Event not enabled" );	
       
   829     	}
       
   830     return ret;
       
   831     }
       
   832 
       
   833 // -----------------------------------------------------------------------------
       
   834 // CSatEventDownloadTsy::CreateDataAvailableEnvelopeL
       
   835 // Create data available envelope to NAA
       
   836 // -----------------------------------------------------------------------------
       
   837 //
       
   838 TInt CSatEventDownloadTsy::CreateDataAvailableEnvelopeL
       
   839         (
       
   840         const RSat::TChannelStatus aStatus,
       
   841 		const TInt8 aLength    
       
   842         )
       
   843     {
       
   844     TFLOGSTRING("CSAT: CSatEventDownload::CreateDataAvailableEnvelopeL");
       
   845 
       
   846     TInt ret = KErrNone;
       
   847 
       
   848     if ( iEventList.IsEnabled( RSat::KDataAvailable ) )
       
   849         {
       
   850         // Create envelope
       
   851         TTlv envelope;
       
   852         envelope.Begin( KBerTlvEventDownloadTag );
       
   853         // Event list
       
   854         envelope.AddTag( KTlvEventListTag );
       
   855         envelope.AddByte( KEventDataAvailable );
       
   856         // Device identities
       
   857         envelope.AddTag( KTlvDeviceIdentityTag );
       
   858         envelope.AddByte( KMe );
       
   859         envelope.AddByte( KSim );
       
   860         // Channel status
       
   861         envelope.AddTag( KTlvChannelStatusTag );
       
   862         envelope.AddData( aStatus );
       
   863         // Channel data length
       
   864         envelope.AddTag( KTlvChannelDataLengthTag );
       
   865         envelope.AddByte( aLength );
       
   866         // Prepare data
       
   867         TPtrC8 data = envelope.End();
       
   868         // Pack data
       
   869         CSatDataPackage dataPackage;
       
   870 	    dataPackage.PackData( &data );        
       
   871         // Forward request to the DOS
       
   872         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   873 		    ESatEventDownload, &dataPackage );
       
   874         }
       
   875     else
       
   876     	{
       
   877         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateDataAvailableEnvelopeL\
       
   878             Event not enabled" );	
       
   879     	}
       
   880     return ret;
       
   881     }
       
   882 
       
   883 // -----------------------------------------------------------------------------
       
   884 // CSatEventDownloadTsy::CreateChannelStatusEnvelopeL
       
   885 // Create channel status envelope to NAA
       
   886 // -----------------------------------------------------------------------------
       
   887 //
       
   888 TInt CSatEventDownloadTsy::CreateChannelStatusEnvelopeL
       
   889         (
       
   890         const RSat::TChannelStatus aStatus
       
   891         )
       
   892     {
       
   893     TFLOGSTRING("CSAT: CSatEventDownloadTsy::CreateChannelStatusEnvelopeL");
       
   894     
       
   895     TInt ret( KErrNone );
       
   896 
       
   897     if ( iEventList.IsEnabled( RSat::KChannelStatus ) )
       
   898         {
       
   899         // Create envelope
       
   900         TTlv envelope;
       
   901         envelope.Begin  ( KBerTlvEventDownloadTag );
       
   902         // Event list
       
   903         envelope.AddTag ( KTlvEventListTag );
       
   904         envelope.AddByte( KEventChannelStatus );
       
   905         // Device identities
       
   906         envelope.AddTag ( KTlvDeviceIdentityTag );
       
   907         envelope.AddByte( KMe );
       
   908         envelope.AddByte( KSim );
       
   909         // Channel status
       
   910         envelope.AddTag( KTlvChannelStatusTag );
       
   911         envelope.AddData( aStatus );   
       
   912         // Prepare data
       
   913         TPtrC8 data = envelope.End();        
       
   914         // Pack data
       
   915         CSatDataPackage dataPackage;
       
   916 	    dataPackage.PackData( &data );                
       
   917         // Forward request to the DOS
       
   918         ret = iSatTsy->MessageManager()->HandleRequestL( 
       
   919 		    ESatEventDownload, &dataPackage );
       
   920         }
       
   921     else
       
   922     	{
       
   923         TFLOGSTRING( "CSAT: CSatEventDownloadTsy::CreateChannelStatusEnvelopeL\
       
   924             Event not enabled" );	
       
   925     	}        
       
   926 
       
   927     return ret;
       
   928     }
       
   929   
       
   930 //  End of File 
       
   931