--- a/telephonyserverplugins/simatktsy/src/CSatNotifyTimerMgmt.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/simatktsy/src/CSatNotifyTimerMgmt.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,380 +1,380 @@
-// Copyright (c) 2005-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 : CSatNotifyTimerMgmt.cpp
-// Part of : Common SIM ATK TSY / commonsimatktsy
-// Timer management notification functionality of Sat Tsy
-// Version : 1.0
-//
-
-
-
-//INCLUDES
-#include <satcs.h> // Etel SAT IPC definitions
-#include "CSatTsy.h" // Tsy class header
-#include "CSatNotifyTimerMgmt.h" // Class header
-#include "CSatNotificationsTsy.h" // Tsy class header
-#include "CBerTlv.h" // Ber Tlv data handling
-#include "TTlv.h" // TTlv class
-#include "CSatDataPackage.h" // Parameter packing
-#include "TfLogger.h" // For TFLOGSTRING
-#include "TSatUtility.h" // Utilities
-#include "cmmmessagemanagerbase.h" // Message manager class for forwarding req.
-#include "MSatTsy_IPCDefs.h" // Sat Tsy internal request types
-
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSatNotifyTimerMgmt* CSatNotifyTimerMgmt::NewL
- (
- CSatNotificationsTsy* aNotificationsTsy
- )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::NewL");
- CSatNotifyTimerMgmt* const satNotifyTimerMgmt =
- new ( ELeave ) CSatNotifyTimerMgmt( aNotificationsTsy );
- CleanupStack::PushL( satNotifyTimerMgmt );
- satNotifyTimerMgmt->ConstructL();
- CleanupStack::Pop( satNotifyTimerMgmt );
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::NewL, end of method");
- return satNotifyTimerMgmt;
- }
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::~CSatNotifyTimerMgmt
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CSatNotifyTimerMgmt::~CSatNotifyTimerMgmt
- (
- // None
- )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::~CSatNotifyTimerMgmt");
- }
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::CSatNotifyTimerMgmt
-// Default C++ constructor
-// -----------------------------------------------------------------------------
-//
-CSatNotifyTimerMgmt::CSatNotifyTimerMgmt
- (
- CSatNotificationsTsy* aNotificationsTsy
- ) : iNotificationsTsy ( aNotificationsTsy )
- {
- // None
- }
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::ConstructL
-// Symbian 2nd phase constructor
-// -----------------------------------------------------------------------------
-//
-void CSatNotifyTimerMgmt::ConstructL
- (
- // None
- )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::ConstructL, does nothing");
- }
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::CompleteNotifyL
-// This method completes a NotifyTimerMgmt request by sending terminal response.
-// -----------------------------------------------------------------------------
-//
-TInt CSatNotifyTimerMgmt::CompleteNotifyL
- (
- CSatDataPackage* aDataPackage,
- TInt aErrorCode
- )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::CompleteNotifyL");
-
- TInt ret( KErrNone );
- TInt returnValue( KErrNone );
- TUint8 generalResult ( RSat::KSuccess );
-
- // Unpack parameters
- TPtrC8* data;
- aDataPackage->UnPackData( &data );
- // Get ber tlv
- CBerTlv berTlv;
- berTlv.SetData( *data );
-
- // Get command details tlv
- CTlv commandDetails;
- berTlv.TlvByTagValue( &commandDetails, KTlvCommandDetailsTag );
- // Store command details tlv
- iNotificationsTsy->iTerminalRespData.iCommandDetails.Copy(
- commandDetails.Data() );
-
- // Get command qualifier
- TUint8 cmdQualifier( commandDetails.GetShortInfo(
- ETLV_CommandQualifier ) );
-
- TUint8 pCmdNumber( commandDetails.GetShortInfo( ETLV_CommandNumber ) );
-
- // Don't do anything if error has occured, otherwise continue..
- if ( KErrNone == aErrorCode )
- {
- // Get timer id tlv
- CTlv timerId;
- returnValue = berTlv.TlvByTagValue( &timerId, KTlvTimerIdentifierTag );
-
- // Initalize
- iTimerId = 0;
- for( TInt i = 0; i < 3; i++ )
- {
- iTimerValue[i] = 0;
- }
-
- if ( KErrNone == returnValue )
- {
- iTimerId = timerId.GetShortInfo( ETLV_TimerIdentifier );
- // The Timer Identifier can take 8 different values
- if ( ( RSat::KTimer8 < iTimerId )
- || ( RSat::KTimer1 > iTimerId ) )
- {
- generalResult = RSat::KCmdDataNotUnderstood;
- }
- else
- {
- // if operation type is startTimer = 0x00;
- if ( !cmdQualifier )
- {
- // Get timer value tlv
- CTlv timerValue;
- returnValue = berTlv.TlvByTagValue( &timerValue,
- KTlvTimerValueTag );
-
- if ( KErrNotFound != returnValue )
- {
- TPtrC8 temp;
- TUint32 timeValue( 0 );
-
- // Value of a timer, expressed using
- // the format hour, minute, second
- // Semi-octec presentation used (23.040)
- temp.Set( timerValue.GetData( ETLV_TimerValue ) );
-
- // Convert to seconds
- timeValue = ConvertToSeconds( temp );
-
- // The possible duration of a timer is
- // between 1 second and 24 hours
- if ( KMinTimerValue < timeValue &&
- KMaxTimerValueInSeconds >= timeValue )
- {
- ret = iNotificationsTsy->GetSatTimer()->Start(
- iTimerId, timeValue );
-
- if ( KErrNone != ret )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
- CompleteNotifyL, Unable to process cmd");
- generalResult = RSat::KMeUnableToProcessCmd;
- }
- }
- else
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
- CompleteNotifyL, Data not understood");
- generalResult = RSat::KCmdDataNotUnderstood;
- }
- }
- else
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
- CompleteNotifyL, Timer value missing");
- generalResult = RSat::KErrorRequiredValuesMissing;
- }
- }
- // If operation type is KDeactivateTimer or KGetTimerValue
- else if ( ( KDeactivateTimer == cmdQualifier ) ||
- ( KGetTimerValue == cmdQualifier ) )
- {
- TInt retValue( KErrNone );
-
- // Get current value of the timer
- ret = iNotificationsTsy->GetSatTimer()->
- CurrentValueOfTimerById( iTimerId );
-
- if ( ( KErrNotFound != ret ) && ( KDeactivateTimer ==
- cmdQualifier ) )
- {
- // Deactivate timer
- retValue = iNotificationsTsy->GetSatTimer()->
- DeleteTimerById( iTimerId );
- }
-
- // If timer is found convert timer value to semi-octets
- if ( ( KErrNotFound != ret ) && ( KErrNotFound !=
- retValue ) )
- {
- generalResult = RSat::KSuccess;
-
- TInt num[3];
- num[0] = ret/3600; //hours
- num[1] = ( ret%3600 )/60; //minutes
- num[2] = ( ret%3600 )%60; //seconds
-
- TInt i( 0 );
- for ( i = 0; i < 3; i++ )
- {
- //convert to semi-octet
- iTimerValue[i] =
- TSatUtility::ConvertToSemiOctet( num[i] );
- }
- }
- else
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
- CompleteNotifyL, Contradiction with timer state");
- generalResult = RSat::KContradictionWithTimerState;
- }
- }
- else
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
- CompleteNotifyL, Cmd type not understood");
- generalResult = RSat::KCmdTypeNotUnderstood;
- }
- }
- }
- else
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
- CompleteNotifyL, Required values missing");
- generalResult = RSat::KErrorRequiredValuesMissing;
- }
-
- CreateTerminalRespL( pCmdNumber, generalResult );
-
- } // End of if (KErrNone)
-
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::CreateTerminalRespL
-// Constructs LocalInfo specific part of terminal response and calls
-// DOS to send the actual message.
-// -----------------------------------------------------------------------------
-//
-TInt CSatNotifyTimerMgmt::CreateTerminalRespL
- (
- TUint8 aPCmdNumber,
- TUint8 aGeneralResult
- )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::CreateTerminalRespL");
-
- // Create and append response data
- TTlv tlvSpecificData;
- // Create General Result TLV here
- tlvSpecificData.AddTag( KTlvResultTag );
-
- // General result
- tlvSpecificData.AddByte( aGeneralResult );
-
- // Include timer value and id only when command is performed successfully
- if( RSat::KSuccess == aGeneralResult )
- {
- // Timer Id
- // Value KTlvTimerIdentifierTagCRBitOn ( 0xA4 ) is added,
- // because used KTlvTimerIdentifierTag ( 0x24 ) doesn't
- // include comprehension bit in tag the value and it is expected
- // to be present in indications and terminal responses.
- tlvSpecificData.AddTag( KTlvTimerIdentifierTagCRBitOn );
-
- tlvSpecificData.AddByte( iTimerId );
-
- // Timer value is included when the Command Qualifier is indicating
- // "deactivate" or "get the current value of the timer"
- if ( iNotificationsTsy->iTerminalRespData.iCommandDetails[4] )
- {
- tlvSpecificData.AddTag( KTlvTimerValueTag );
- // Timer value in semi-octets
- tlvSpecificData.AddByte( iTimerValue[0] ); // Hours
- tlvSpecificData.AddByte( iTimerValue[1] ); // Minutes
- tlvSpecificData.AddByte( iTimerValue[2] ); // Seconds
- }
- }
- else if( ( RSat::KContradictionWithTimerState != aGeneralResult ) &&
- ( RSat::KErrorRequiredValuesMissing != aGeneralResult ) &&
- ( RSat::KCmdDataNotUnderstood != aGeneralResult ) &&
- ( RSat::KCmdTypeNotUnderstood != aGeneralResult ) )
- {
- tlvSpecificData.AddByte( KNoCause );
- }
- else
- {
- // None.
- }
-
- // Prepare data
- iNotificationsTsy->iTerminalRespData.iPCmdNumber = aPCmdNumber;
- TPtrC8 data = tlvSpecificData.GetDataWithoutTopLevelTag();
-
- // Pack data
- CSatDataPackage dataPackage;
- dataPackage.PackData( &iNotificationsTsy->iTerminalRespData, &data );
-
- // Forward request to the DOS
- return iNotificationsTsy->iSatTsy->MessageManager()->HandleRequestL(
- ESatTerminalRsp, &dataPackage );
- }
-
-// -----------------------------------------------------------------------------
-// CSatNotifyTimerMgmt::ConvertToSeconds
-// Converts to seconds semi-octet presented value of timer, expressed using
-// the format hour, minute, second
-// -----------------------------------------------------------------------------
-//
-TUint32 CSatNotifyTimerMgmt::ConvertToSeconds
- (
- TPtrC8 time
- )
- {
- TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::ConvertToSeconds");
- TUint32 timeValue( 0 );
- // Value of a timer, expressed using
- // the format hour, minute, second
- // Semi-octec presentation used (23.040)
- // time[0] is hours
- // time[1] is minutes
- // time[2] is seconds
- TInt i( 0 );
- for ( i = 0; i < 3; i++ )
- {
- TUint value = ( time[i] & 0x0F )*10 + ( ( time[i] & 0xF0 ) >> 4 );
- timeValue = timeValue * 60 + value;
- }
- return timeValue;
- }
-
-// End of file
-
-
-
-
-
-
-
-
-
+// Copyright (c) 2005-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 : CSatNotifyTimerMgmt.cpp
+// Part of : Common SIM ATK TSY / commonsimatktsy
+// Timer management notification functionality of Sat Tsy
+// Version : 1.0
+//
+
+
+
+//INCLUDES
+#include <satcs.h> // Etel SAT IPC definitions
+#include "CSatTsy.h" // Tsy class header
+#include "CSatNotifyTimerMgmt.h" // Class header
+#include "CSatNotificationsTsy.h" // Tsy class header
+#include "CBerTlv.h" // Ber Tlv data handling
+#include "TTlv.h" // TTlv class
+#include "CSatDataPackage.h" // Parameter packing
+#include "TfLogger.h" // For TFLOGSTRING
+#include "TSatUtility.h" // Utilities
+#include "cmmmessagemanagerbase.h" // Message manager class for forwarding req.
+#include "MSatTsy_IPCDefs.h" // Sat Tsy internal request types
+
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSatNotifyTimerMgmt* CSatNotifyTimerMgmt::NewL
+ (
+ CSatNotificationsTsy* aNotificationsTsy
+ )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::NewL");
+ CSatNotifyTimerMgmt* const satNotifyTimerMgmt =
+ new ( ELeave ) CSatNotifyTimerMgmt( aNotificationsTsy );
+ CleanupStack::PushL( satNotifyTimerMgmt );
+ satNotifyTimerMgmt->ConstructL();
+ CleanupStack::Pop( satNotifyTimerMgmt );
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::NewL, end of method");
+ return satNotifyTimerMgmt;
+ }
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::~CSatNotifyTimerMgmt
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CSatNotifyTimerMgmt::~CSatNotifyTimerMgmt
+ (
+ // None
+ )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::~CSatNotifyTimerMgmt");
+ }
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::CSatNotifyTimerMgmt
+// Default C++ constructor
+// -----------------------------------------------------------------------------
+//
+CSatNotifyTimerMgmt::CSatNotifyTimerMgmt
+ (
+ CSatNotificationsTsy* aNotificationsTsy
+ ) : iNotificationsTsy ( aNotificationsTsy )
+ {
+ // None
+ }
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::ConstructL
+// Symbian 2nd phase constructor
+// -----------------------------------------------------------------------------
+//
+void CSatNotifyTimerMgmt::ConstructL
+ (
+ // None
+ )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::ConstructL, does nothing");
+ }
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::CompleteNotifyL
+// This method completes a NotifyTimerMgmt request by sending terminal response.
+// -----------------------------------------------------------------------------
+//
+TInt CSatNotifyTimerMgmt::CompleteNotifyL
+ (
+ CSatDataPackage* aDataPackage,
+ TInt aErrorCode
+ )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::CompleteNotifyL");
+
+ TInt ret( KErrNone );
+ TInt returnValue( KErrNone );
+ TUint8 generalResult ( RSat::KSuccess );
+
+ // Unpack parameters
+ TPtrC8* data;
+ aDataPackage->UnPackData( &data );
+ // Get ber tlv
+ CBerTlv berTlv;
+ berTlv.SetData( *data );
+
+ // Get command details tlv
+ CTlv commandDetails;
+ berTlv.TlvByTagValue( &commandDetails, KTlvCommandDetailsTag );
+ // Store command details tlv
+ iNotificationsTsy->iTerminalRespData.iCommandDetails.Copy(
+ commandDetails.Data() );
+
+ // Get command qualifier
+ TUint8 cmdQualifier( commandDetails.GetShortInfo(
+ ETLV_CommandQualifier ) );
+
+ TUint8 pCmdNumber( commandDetails.GetShortInfo( ETLV_CommandNumber ) );
+
+ // Don't do anything if error has occured, otherwise continue..
+ if ( KErrNone == aErrorCode )
+ {
+ // Get timer id tlv
+ CTlv timerId;
+ returnValue = berTlv.TlvByTagValue( &timerId, KTlvTimerIdentifierTag );
+
+ // Initalize
+ iTimerId = 0;
+ for( TInt i = 0; i < 3; i++ )
+ {
+ iTimerValue[i] = 0;
+ }
+
+ if ( KErrNone == returnValue )
+ {
+ iTimerId = timerId.GetShortInfo( ETLV_TimerIdentifier );
+ // The Timer Identifier can take 8 different values
+ if ( ( RSat::KTimer8 < iTimerId )
+ || ( RSat::KTimer1 > iTimerId ) )
+ {
+ generalResult = RSat::KCmdDataNotUnderstood;
+ }
+ else
+ {
+ // if operation type is startTimer = 0x00;
+ if ( !cmdQualifier )
+ {
+ // Get timer value tlv
+ CTlv timerValue;
+ returnValue = berTlv.TlvByTagValue( &timerValue,
+ KTlvTimerValueTag );
+
+ if ( KErrNotFound != returnValue )
+ {
+ TPtrC8 temp;
+ TUint32 timeValue( 0 );
+
+ // Value of a timer, expressed using
+ // the format hour, minute, second
+ // Semi-octec presentation used (23.040)
+ temp.Set( timerValue.GetData( ETLV_TimerValue ) );
+
+ // Convert to seconds
+ timeValue = ConvertToSeconds( temp );
+
+ // The possible duration of a timer is
+ // between 1 second and 24 hours
+ if ( KMinTimerValue < timeValue &&
+ KMaxTimerValueInSeconds >= timeValue )
+ {
+ ret = iNotificationsTsy->GetSatTimer()->Start(
+ iTimerId, timeValue );
+
+ if ( KErrNone != ret )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
+ CompleteNotifyL, Unable to process cmd");
+ generalResult = RSat::KMeUnableToProcessCmd;
+ }
+ }
+ else
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
+ CompleteNotifyL, Data not understood");
+ generalResult = RSat::KCmdDataNotUnderstood;
+ }
+ }
+ else
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
+ CompleteNotifyL, Timer value missing");
+ generalResult = RSat::KErrorRequiredValuesMissing;
+ }
+ }
+ // If operation type is KDeactivateTimer or KGetTimerValue
+ else if ( ( KDeactivateTimer == cmdQualifier ) ||
+ ( KGetTimerValue == cmdQualifier ) )
+ {
+ TInt retValue( KErrNone );
+
+ // Get current value of the timer
+ ret = iNotificationsTsy->GetSatTimer()->
+ CurrentValueOfTimerById( iTimerId );
+
+ if ( ( KErrNotFound != ret ) && ( KDeactivateTimer ==
+ cmdQualifier ) )
+ {
+ // Deactivate timer
+ retValue = iNotificationsTsy->GetSatTimer()->
+ DeleteTimerById( iTimerId );
+ }
+
+ // If timer is found convert timer value to semi-octets
+ if ( ( KErrNotFound != ret ) && ( KErrNotFound !=
+ retValue ) )
+ {
+ generalResult = RSat::KSuccess;
+
+ TInt num[3];
+ num[0] = ret/3600; //hours
+ num[1] = ( ret%3600 )/60; //minutes
+ num[2] = ( ret%3600 )%60; //seconds
+
+ TInt i( 0 );
+ for ( i = 0; i < 3; i++ )
+ {
+ //convert to semi-octet
+ iTimerValue[i] =
+ TSatUtility::ConvertToSemiOctet( num[i] );
+ }
+ }
+ else
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
+ CompleteNotifyL, Contradiction with timer state");
+ generalResult = RSat::KContradictionWithTimerState;
+ }
+ }
+ else
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
+ CompleteNotifyL, Cmd type not understood");
+ generalResult = RSat::KCmdTypeNotUnderstood;
+ }
+ }
+ }
+ else
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::\
+ CompleteNotifyL, Required values missing");
+ generalResult = RSat::KErrorRequiredValuesMissing;
+ }
+
+ CreateTerminalRespL( pCmdNumber, generalResult );
+
+ } // End of if (KErrNone)
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::CreateTerminalRespL
+// Constructs LocalInfo specific part of terminal response and calls
+// DOS to send the actual message.
+// -----------------------------------------------------------------------------
+//
+TInt CSatNotifyTimerMgmt::CreateTerminalRespL
+ (
+ TUint8 aPCmdNumber,
+ TUint8 aGeneralResult
+ )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::CreateTerminalRespL");
+
+ // Create and append response data
+ TTlv tlvSpecificData;
+ // Create General Result TLV here
+ tlvSpecificData.AddTag( KTlvResultTag );
+
+ // General result
+ tlvSpecificData.AddByte( aGeneralResult );
+
+ // Include timer value and id only when command is performed successfully
+ if( RSat::KSuccess == aGeneralResult )
+ {
+ // Timer Id
+ // Value KTlvTimerIdentifierTagCRBitOn ( 0xA4 ) is added,
+ // because used KTlvTimerIdentifierTag ( 0x24 ) doesn't
+ // include comprehension bit in tag the value and it is expected
+ // to be present in indications and terminal responses.
+ tlvSpecificData.AddTag( KTlvTimerIdentifierTagCRBitOn );
+
+ tlvSpecificData.AddByte( iTimerId );
+
+ // Timer value is included when the Command Qualifier is indicating
+ // "deactivate" or "get the current value of the timer"
+ if ( iNotificationsTsy->iTerminalRespData.iCommandDetails[4] )
+ {
+ tlvSpecificData.AddTag( KTlvTimerValueTag );
+ // Timer value in semi-octets
+ tlvSpecificData.AddByte( iTimerValue[0] ); // Hours
+ tlvSpecificData.AddByte( iTimerValue[1] ); // Minutes
+ tlvSpecificData.AddByte( iTimerValue[2] ); // Seconds
+ }
+ }
+ else if( ( RSat::KContradictionWithTimerState != aGeneralResult ) &&
+ ( RSat::KErrorRequiredValuesMissing != aGeneralResult ) &&
+ ( RSat::KCmdDataNotUnderstood != aGeneralResult ) &&
+ ( RSat::KCmdTypeNotUnderstood != aGeneralResult ) )
+ {
+ tlvSpecificData.AddByte( KNoCause );
+ }
+ else
+ {
+ // None.
+ }
+
+ // Prepare data
+ iNotificationsTsy->iTerminalRespData.iPCmdNumber = aPCmdNumber;
+ TPtrC8 data = tlvSpecificData.GetDataWithoutTopLevelTag();
+
+ // Pack data
+ CSatDataPackage dataPackage;
+ dataPackage.PackData( &iNotificationsTsy->iTerminalRespData, &data );
+
+ // Forward request to the DOS
+ return iNotificationsTsy->iSatTsy->MessageManager()->HandleRequestL(
+ ESatTerminalRsp, &dataPackage );
+ }
+
+// -----------------------------------------------------------------------------
+// CSatNotifyTimerMgmt::ConvertToSeconds
+// Converts to seconds semi-octet presented value of timer, expressed using
+// the format hour, minute, second
+// -----------------------------------------------------------------------------
+//
+TUint32 CSatNotifyTimerMgmt::ConvertToSeconds
+ (
+ TPtrC8 time
+ )
+ {
+ TFLOGSTRING("CSAT: CSatNotifyTimerMgmt::ConvertToSeconds");
+ TUint32 timeValue( 0 );
+ // Value of a timer, expressed using
+ // the format hour, minute, second
+ // Semi-octec presentation used (23.040)
+ // time[0] is hours
+ // time[1] is minutes
+ // time[2] is seconds
+ TInt i( 0 );
+ for ( i = 0; i < 3; i++ )
+ {
+ TUint value = ( time[i] & 0x0F )*10 + ( ( time[i] & 0xF0 ) >> 4 );
+ timeValue = timeValue * 60 + value;
+ }
+ return timeValue;
+ }
+
+// End of file
+
+
+
+
+
+
+
+
+