--- a/satengine/SatServer/Engine/src/CSatBIPUtils.cpp Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,937 +0,0 @@
-/*
-* Copyright (c) 2002-2008 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: Utility class for BIP
-*
-*/
-
-
-#include <es_sock.h>
-#include <etelqos.h>
-#include "SatLog.h"
-#include "CSatBIPUtils.h"
-#include "CSatBIPGPRSDataChannel.h"
-#include "csatbipconnectionobserver.h"
-#include "MSatBIPDataChannel.h"
-#include "MSatBIPChannelStatusObserver.h"
-#include "MSatBIPDataAvailableObserver.h"
-//lint -e766 Used inside TRAP macro, lint misfunction.
-#include "EnginePanic.h"
-#include "TSatChannelIDInfo.h"
-#include "MSatUtils.h"
-#include "CSatApnHandler.h"
-#include "csatsactivewrapper.h"
-#include "msatmultimodeapi.h"
-
-const TInt KPDPContextPos( 7 );
-const TInt KMaxAvailChannels( 7 );
-const TInt8 KProposeQoSParametersPop( 2 );
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CSatBIPUtils* CSatBIPUtils::NewL( MSatUtils& aUtils )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::NewL calling" )
-
- CSatBIPUtils* self = new ( ELeave ) CSatBIPUtils( aUtils );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::NewL exiting" )
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CSatBIPUtils::~CSatBIPUtils()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::~CSatBIPUtils calling" )
-
- // Close all data channels
- if ( iDataChannels )
- {
- iDataChannels->ResetAndDestroy();
- }
- delete iDataChannels;
-
- if ( iChannelIds )
- {
- iChannelIds->ResetAndDestroy();
- }
- delete iChannelIds;
-
- delete iChannelId;
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::~CSatBIPUtils\
- Close connection and subconnection" )
- iSubConnection.Close();
- iConnection.Close();
- iSocketServer.Close();
- iPacketService.Close();
-
- delete iApnHandler;
-
- if ( iWrapper )
- {
- iWrapper->CancelWrapper();
- delete iWrapper;
- iWrapper = NULL;
- }
-
- if ( iConnObserver )
- {
- iConnObserver->Cancel();
- delete iConnObserver;
- iConnObserver = NULL;
- }
-
- iDataAvailableObserver = NULL;
- iChannelStatusObserver = NULL;
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::~CSatBIPUtils exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// Handles event
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::Event( TInt aEvent )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::Event calling" )
-
- // Check event
- if ( MSatUtils::ECommandCancelled == aEvent ||
- MSatUtils::ECancelledUsingEndKey == aEvent )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::Event check event" )
- if ( iDataChannels )
- {
- const TInt channelCount( iDataChannels->Count() );
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::Event channelCount: %d",
- channelCount )
- // Cancel all channels
- for ( TInt index = 0; index < channelCount; index++ )
- {
- MSatBIPDataChannel* channel = iDataChannels->At( index );
- __ASSERT_ALWAYS( channel,
- PanicSatEngine( ESatEngineNullPointer ) );
- channel->CancelAll();
- }
- }
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::Event exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// Creates new data channel
-// ---------------------------------------------------------------------------
-//
-MSatBIPDataChannel* CSatBIPUtils::CreateChannelL(
- const TSatBearerType aBearerType, TInt& aErrCode )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CreateChannelL calling" )
-
- TInt errCode( MSatBIPUtils::ESatBIPNoChannelAvail );
- MSatBIPDataChannel* channel = NULL;
-
- // Get available channel ID
- TSatChannelIdInfo* channelId( AvailableChannelID() );
-
- // Check is the channel available
- if ( channelId )
- {
- // Create the right type of data channel
- if ( MSatBIPUtils::ESatGPRS == aBearerType )
- {
- LOG( NORMAL,
- "SATENGINE: CSatBIPUtils::CreateChannelL ESatGPRS" )
- // New GPRS data channel
- channel = CSatBIPGPRSDataChannel::NewLC( *this, iSocketServer,
- *channelId, iConnection, iSubConnection );
- // Reserve channel ID
- channelId->ReserveChannel();
- // Add data channel to list
- iDataChannels->AppendL( channel );
- // Remove from CleanupStack
- CleanupStack::Pop( /* channel */ );
- // Return code
- errCode = MSatBIPUtils::ESatBIPSuccess;
-
-#ifndef SAT_USE_DUMMY_TSY
- // Start connection observer
- if ( !iConnObserver )
- {
- LOG( NORMAL, " Starting connection observer" )
- iConnObserver =
- new ( ELeave ) CSatBIPConnectionObserver( *this );
- iConnObserver->StartObserver();
- }
-#endif
- }
- else
- {
- // Others that GPRS are not yet supported
- LOG( NORMAL,
- "SATENGINE: CSatBIPUtils::CreateChannelL Not supported" )
- errCode = MSatBIPUtils::ESatBIPNoChannelAvail;
- }
- }
- else
- {
- // Channel IDs not available
- LOG( NORMAL,
- "SATENGINE: CSatBIPUtils::CreateChannelL Not available" )
- errCode = MSatBIPUtils::ESatBIPNoChannelAvail;
- }
-
- // Assign completion code
- aErrCode = errCode;
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CreateChannelL exiting" )
- return channel;
- }
-
-// ---------------------------------------------------------------------------
-// Closes the data channel
-// ---------------------------------------------------------------------------
-//
-TInt CSatBIPUtils::CloseChannel( const TInt aChannelId )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseChannel calling" )
-
- TInt errCode( MSatBIPUtils::ESatBIPChannelIdNotValid );
-
- TInt index( 0 );
- TBool channelClosed( EFalse );
-
- // Loop the list of data channels and close the correct one.
- while ( index < iDataChannels->Count() && !channelClosed )
- {
- MSatBIPDataChannel* channel = iDataChannels->At( index );
- __ASSERT_ALWAYS( channel, PanicSatEngine( ESatEngineNullPointer ) );
-
- if ( channel->ChannelId() == aChannelId )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseChannel \
- channel->ChannelId() == aChannelId" )
- // Makes next data channel creation possible
- iDataChannelActivated = EFalse;
- // Channel found, close it and return Success.
- channel->CloseChannel();
- // Delete data channel
- iDataChannels->Delete( index );
- delete channel;
- errCode = MSatBIPUtils::ESatBIPSuccess;
- channelClosed = ETrue;
- }
- // Goto next channel
- index++;
- }
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::CloseChannel index: %d", index )
-
- // Free the space left in possible Delete call.
- iDataChannels->Compress();
-
- // Close connections if there're no active channels
- if ( !IsContextActive() )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseChannel\
- Close connection and subconnection" )
- iSubConnection.Close();
- SetSubConnectionActivated( EFalse );
- iConnection.Close();
- SetConnectionActivated( EFalse );
-
- if ( iConnObserver )
- {
- iConnObserver->Cancel();
- delete iConnObserver;
- iConnObserver = NULL;
- }
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseChannel\
- Close iPacketService" )
- iPacketService.Close();
- iPacketServiceActive = EFalse;
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseChannel exiting" )
- return errCode;
- }
-
-// ---------------------------------------------------------------------------
-// Closes all data channels
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::CloseAllChannels()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseAllChannels calling" )
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::CloseAllChannels \
- channelcount: %d", iChannelIds->Count() )
- // Loop the list of data channels and close the correct one.
- for ( TInt i = 0; i < iChannelIds->Count(); i++ )
- {
- TSatChannelIdInfo* id = iChannelIds->At( i );
- // If channel is reserved -> Close it
- if ( id->IsReserved() )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseAllChannels \
- id->IsReserved()" )
- CloseChannel( id->ChannelId() );
- }
- }
-
- // Close subsession to socket server
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseAllChannels\
- Close connection and subconnection" )
- iSubConnection.Close();
- SetSubConnectionActivated( EFalse );
- iConnection.Close();
- SetConnectionActivated( EFalse );
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::CloseAllChannels exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// Returns the correct data channel
-// ---------------------------------------------------------------------------
-//
-MSatBIPDataChannel* CSatBIPUtils::DataChannel( const TInt aChannelId,
- TInt& aErrCode )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataChannel calling" )
-
- // If the channel cannot be found, returns channel not valid error code
- TInt errCode( MSatBIPUtils::ESatBIPChannelIdNotValid );
- MSatBIPDataChannel* channel = NULL;
- TBool found( EFalse );
- TInt index( 0 );
-
- // Loop the list of data channels and return the correct one.
- while ( index < iDataChannels->Count() && !found )
- {
- channel = iDataChannels->At( index );
- __ASSERT_ALWAYS( channel, PanicSatEngine( ESatEngineNullPointer ) );
- // Compare channel ID's
- if ( channel->ChannelId() == aChannelId )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataChannel \
- channel->ChannelId() == aChannelId" )
- // Channel found
- found = ETrue;
- if ( channel->IsContextActive() )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataChannel \
- IsContextActive" )
- // Channel found and it is active
- errCode = MSatBIPUtils::ESatBIPSuccess;
- }
- else
- {
- // Channel found but it is closed
- errCode = MSatBIPUtils::ESatBIPChannelClosed;
- }
- }
- index++;
- }
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::DataChannel \
- index: %d", index )
- // Assign completion code to param
- aErrCode = errCode;
-
- LOG2( SIMPLE,
- "SATENGINE: CSatBIPUtils::DataChannel exiting with return code %d",
- errCode )
- return channel;
- }
-
-// ---------------------------------------------------------------------------
-// Generates TChannelStatus object
-// ---------------------------------------------------------------------------
-//
-RSat::TChannelStatus CSatBIPUtils::GenerateChannelStatusL(
- const TInt aChannelId, TInt aStatus )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::GenerateChannelStatusL calling" )
-
- // ChannelStatus's first byte contains channel ID and pdp context status,
- // second byte contains information. values can be '00' or '05'
- RSat::TChannelStatus channelStatus;
- TInt err( MSatBIPUtils::ESatBIPNoChannelAvail );
-
- // Used to check the PDP context state
- MSatBIPDataChannel* dataChannel = DataChannel( aChannelId, err );
-
- // If channel is not active, status is still needed
- if ( ESatBIPSuccess == err || ESatBIPChannelClosed == err )
- {
- // Generate the first byte
- TUint8 channelId( 0 ); // last 3 bits.
- TUint8 pdpContext( 0 ); // first bit
- TUint8 firstByte( 0 ); // First byte
-
- // Channel ID. Bits 6 to 8.
- channelId = dataChannel->ChannelStatusChannelId();
-
- // If PDP Context is active, first bit is 1
- if ( dataChannel->IsContextActive() )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::GenerateChannelStatusL \
- dataChannel IsContextActive" )
- pdpContext = 1 << KPDPContextPos;
- }
-
- // We don't need data channel anymore
- dataChannel = NULL;
-
- // All the information for the first byte is gathered
- firstByte = static_cast<TUint8>( pdpContext ^ channelId );
- channelStatus.Append( firstByte );
- // Second byte should go straigth
- channelStatus.Append( aStatus );
- // LOG values
- LOG2( NORMAL,
- "SATENGINE: CSatBIPUtils::GenerateChannelStatusL First byte: %b",
- firstByte )
- LOG2( NORMAL,
- "SATENGINE: CSatBIPUtils::GenerateChannelStatusL Second byte: %b",
- aStatus )
- }
- else
- {
- LOG2( NORMAL, "SATENGINE: CSatBIPUtils::GenerateChannelStatusL \
- Data channel not found: %i", err )
- User::LeaveIfError( KErrNotFound );
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::GenerateChannelStatusL exiting" )
- return channelStatus;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the interface reference to APN handler
-// ---------------------------------------------------------------------------
-//
-MSatApnHandler& CSatBIPUtils::ApnHandler()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ApnHandler calling" )
-
- // Assert, Apn handler cannot be NULL
- __ASSERT_ALWAYS( iApnHandler, PanicSatEngine( ESatEngineNullPointer ) );
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ApnHandler exiting" )
- return *iApnHandler;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the state of the PDP Context
-// ---------------------------------------------------------------------------
-//
-TBool CSatBIPUtils::IsContextActive()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::IsContextActive calling" )
-
- TBool retVal( EFalse );
- TInt index( 0 );
-
- // Loop the list of data channels and end if active channel is found
- while ( index < iDataChannels->Count() && !retVal )
- {
- MSatBIPDataChannel* channel = iDataChannels->At( index );
- __ASSERT_ALWAYS( channel, PanicSatEngine( ESatEngineNullPointer ) );
- retVal = channel->IsContextActive();
- // Goto next channel
- index++;
- }
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::IsContextActive \
- index: %d", index )
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::IsContextActive exiting" )
- return retVal;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the array of data channels
-// ---------------------------------------------------------------------------
-//
-CArrayPtrFlat<MSatBIPDataChannel>* CSatBIPUtils::DataChannels()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataChannels calling - exiting" )
- return iDataChannels;
- }
-
-// ---------------------------------------------------------------------------
-// Request to notify when data is available
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::NotifyDataAvailable(
- MSatBIPDataAvailableObserver* aObserver )
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::NotifyDataAvailable calling - exiting" )
- iDataAvailableObserver = aObserver;
- }
-
-// ---------------------------------------------------------------------------
-// Request to notify when an error occurs in data channel
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::NotifyChannelStatus(
- MSatBIPChannelStatusObserver* aObserver )
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::NotifyChannelStatus calling - exiting" )
- iChannelStatusObserver = aObserver;
- }
-
-// ---------------------------------------------------------------------------
-// Cancels the DataAvailable request
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::CancelDataAvailable()
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::CancelDataAvailable calling - exiting" )
- iDataAvailableObserver = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// Cancels the ChannelStatus request
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::CancelChannelStatus()
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::CancelChannelStatus calling - exiting" )
- iChannelStatusObserver = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// DataAvailable event. Notifies observer.
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::DataAvailable( const TInt aChannelId, const TInt aLength )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataAvailable calling" )
-
- // If there is an active request for this event, notify observer.
- if ( iDataAvailableObserver )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataAvailable \
- iDataAvailableObserver true" )
- iDataAvailableObserver->DataAvailable( aChannelId, aLength );
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::DataAvailable exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// ChannelStatus event. Notifies observer.
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::ChannelStatus( const TInt aChannelId, const TInt aStatus )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ChannelStatus calling" )
-
- // If there is an active request for this event, notify observer.
- if ( iChannelStatusObserver )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ChannelStatus \
- iChannelStatusObserver true" )
- iChannelStatusObserver->ChannelStatus( aChannelId, aStatus );
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ChannelStatus exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------
-//
-CSatBIPUtils::CSatBIPUtils( MSatUtils& aUtils ) :
- iChannelId( NULL ),
- iUtils( aUtils )
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::CSatBIPUtils calling-exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::ConstructL()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ConstructL calling" )
-
- // Create array for the data channels.
- iDataChannels =
- new ( ELeave ) CArrayPtrFlat<MSatBIPDataChannel>( KMaxAvailChannels );
-
- // Create array for Channel ID infos
- iChannelIds =
- new ( ELeave ) CArrayPtrFlat<TSatChannelIdInfo>( KMaxAvailChannels );
-
- TUint8 index = 1;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel1, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel2, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel3, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel4, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel5, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel6, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- iChannelId = new ( ELeave ) TSatChannelIdInfo( RSat::KChannel7, index++ );
- iChannelIds->AppendL( iChannelId );
- iChannelId = NULL;
-
- // Regiseter to listen events
- iUtils.RegisterL( this, MSatUtils::ECommandCancelled );
- iUtils.RegisterL( this, MSatUtils::ECancelledUsingEndKey );
-
- // Connect to Socket Server
- User::LeaveIfError( iSocketServer.Connect() );
- iPacketServiceActive = EFalse;
- iApnHandler = CSatApnHandler::NewL( iUtils );
-
- iWrapper = new ( ELeave ) CSatSActiveWrapper;
-
- SetConnectionActivated( EFalse );
- SetSubConnectionActivated( EFalse );
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ConstructL exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// Returns next available channel ID
-// ---------------------------------------------------------------------------
-//
-TSatChannelIdInfo* CSatBIPUtils::AvailableChannelID()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::AvailableChannelID calling" )
-
- TSatChannelIdInfo* channelId = NULL;
-
- TInt index( 0 );
- TBool idFound( EFalse );
-
- // Loop channel IDs
- while ( index < iChannelIds->Count() && !idFound )
- {
- channelId = iChannelIds->At( index );
- // If channel is free, take it
- if ( !channelId->IsReserved() )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::AvailableChannelID \
- channel free" )
- idFound = ETrue;
- }
- // goto next channel
- index++;
- }
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::AvailableChannelID \
- index: %d", index )
- if ( !idFound )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::AvailableChannelID \
- idFound false" )
- // If not found, return NULL
- channelId = NULL;
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::AvailableChannelID exiting" )
- return channelId;
- }
-
-// ---------------------------------------------------------------------------
-// Blocks synchronous requests
-// ---------------------------------------------------------------------------
-//
-RPacketQoS::TQoSGPRSNegotiated CSatBIPUtils::ProposeQoSParametersL(
- const RPacketQoS::TQoSGPRSRequested& aQoSParams )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ProposeQoSParametersL calling" )
-
- // Number of contexts
- TInt count( ContextCount() ); // Get the number of contexts
- // QoS profile name
- TName profName;
- // Handle to the actual context
- RPacketContext packetContext;
- // QoS session
- RPacketQoS qos;
- // Context info
- RPacketService::TContextInfo info;
- // Error value for asynchronous calls
- TInt statusError( KErrNone );
-
- if ( count > 0 ) // At least one context found
- {
- // Get the last contexts info
- iPacketService.GetContextInfo(
- iWrapper->RequestStatus(), count - 1, info );
-
- statusError = iWrapper->SetActiveAndWait(); // Wait for completion
- LOG2( SIMPLE, " ContextInfo iActiveStatus: %i", statusError )
- LOG2( SIMPLE, " ContextInfo CntxStatus: %i", info.iStatus )
- // Leave point
- User::LeaveIfError( statusError );
- }
- else
- {
- // Didn't find any contexts
- User::Leave( KErrNotFound );
- }
-
- // Get the context by name
- LOG( SIMPLE, " Open existing context" )
- User::LeaveIfError(
- packetContext.OpenExistingContext( iPacketService, info.iName ) );
-
- CleanupClosePushL( packetContext );
-
- // Get the QoS Profile
- LOG( SIMPLE, " Get QoS Profile name" )
- User::LeaveIfError( packetContext.GetProfileName( profName ) );
-
- // Get the instance of the QoS profile
- if ( profName.Length() > 0 )
- {
- LOG( SIMPLE, " Open existing QoS profile" )
- User::LeaveIfError( qos.OpenExistingQoS( packetContext, profName ) );
- }
-
- CleanupClosePushL( qos );
-
- TPckg<RPacketQoS::TQoSGPRSRequested> qosPckg( aQoSParams );
-
- qos.SetProfileParameters( iWrapper->RequestStatus(), qosPckg );
-
- User::LeaveIfError( iWrapper->SetActiveAndWait() ); // Wait for completion
-
- // Get negotioted parameters
- RPacketQoS::TQoSGPRSNegotiated negParams;
- TPckg<RPacketQoS::TQoSGPRSNegotiated> negPckg( negParams );
- qos.GetProfileParameters( iWrapper->RequestStatus(), negPckg );
-
- User::LeaveIfError( iWrapper->SetActiveAndWait() ); // Wait for completion
-
- LOG2( SIMPLE, " GetNegQoSParams Status: %i", statusError )
- LOG2( SIMPLE, " GetNegQoSParams Reliability: %i",
- negParams.iReliability )
- LOG2( SIMPLE, " GetNegQoSParams Precedence: %i",
- negParams.iPrecedence )
- LOG2( SIMPLE, " GetNegQoSParams Delay: %i", negParams.iDelay )
- LOG2( SIMPLE, " GetNegQoSParams Peak: %i", negParams.iPeakThroughput )
- LOG2( SIMPLE, " GetNegQoSParams Mean: %i", negParams.iMeanThroughput )
-
- // Cleaning and closing: packetContext, qos
- CleanupStack::PopAndDestroy( KProposeQoSParametersPop );
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ProposeQoSParametersL exiting" )
- return negParams;
- }
-
-// ---------------------------------------------------------------------------
-// Opens session to GPRS Service
-// ---------------------------------------------------------------------------
-//
-TInt CSatBIPUtils::GprsService()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::GprsService calling" )
-
- TInt ret( KErrNone );
- if ( !iPacketServiceActive )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::GprsService \
- iPacketServiceActive false" )
- ret = iPacketService.Open( *( iUtils.MultiModeApi().Phone() ) );
- iPacketServiceActive = ETrue;
- }
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::GprsService exiting" )
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// Gives reference to RPacketService
-// ---------------------------------------------------------------------------
-//
-RPacketService& CSatBIPUtils::PacketService()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::PacketService calling" )
-
- GprsService();
-
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::PacketService exiting" )
- return iPacketService;
- }
-
-// ---------------------------------------------------------------------------
-// CSatBIPUtils::ConnectionStatus
-// ---------------------------------------------------------------------------
-//
-RPacketService::TStatus CSatBIPUtils::ConnectionStatus() const
- {
- LOG( NORMAL,
- "SATENGINE: CSatBIPUtils::ConnectionStatus calling" )
-
-#ifndef SAT_USE_DUMMY_TSY
- RPacketService::TStatus status( RPacketService::EStatusSuspended );
-#else
- RPacketService::TStatus status( RPacketService::EStatusActive );
-#endif
-
- if ( iConnObserver )
- {
- LOG( NORMAL,
- "SATENGINE: CSatBIPUtils::ConnectionStatus iConnObserver true" )
- status = iConnObserver->Status();
- }
-
- LOG( NORMAL,
- "SATENGINE: CSatBIPUtils::ConnectionStatus exiting" )
- return status;
- }
-
-// ---------------------------------------------------------------------------
-// CSatBIPUtils::StopUdpLink
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::StopUdpLink()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::StopUdpLink calling" )
- if ( iDataChannels )
- {
- const TInt channelCount( iDataChannels->Count() );
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::StopUdpLink \
- channelCount: %d", channelCount )
- // Cancel all channels
- for ( TInt index = 0; index < channelCount; index++ )
- {
- MSatBIPDataChannel* channel = iDataChannels->At( index );
- __ASSERT_ALWAYS( channel,
- PanicSatEngine( ESatEngineNullPointer ) );
- channel->StopUdpSocket();
- }
- }
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::StopUdpLink exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// Synchronous request complete
-// ---------------------------------------------------------------------------
-//
-TInt CSatBIPUtils::ContextCount()
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ContextCount calling" )
-
- // Number of contexts
- TInt count( 0 );
- TInt maxAllowed( 0 );
-
- // Init PacketService
- TInt error( GprsService() );
-
- if ( KErrNone == error )
- {
- // Enumerate contexts
- iPacketService.EnumerateContexts(
- iWrapper->RequestStatus(), count, maxAllowed );
- error = iWrapper->SetActiveAndWait(); // Wait for completion
- LOG2( SIMPLE, " EnumContexts Status: %i", error )
- LOG2( SIMPLE, " EnumContexts Count: %i", count )
- LOG2( SIMPLE, " EnumContexts MaxAllowed: %i", maxAllowed )
- // Check status
- if ( KErrNone != error )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::ContextCount \
- KErrNone != error" )
- count = 0;
- }
- }
-
- LOG2( SIMPLE, "SATENGINE: CSatBIPUtils::ContextCount exiting: %i", count )
- return count;
- }
-
-// ---------------------------------------------------------------------------
-// CSatBIPUtils::SetConnectionActivated()
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::SetConnectionActivated( TBool aSet )
- {
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::SetConnectionActivated calling" )
- iConnectionActivated = aSet;
- LOG( SIMPLE, "SATENGINE: CSatBIPUtils::SetConnectionActivated exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// CSatBIPUtils::IsConnectionActivated()
-// ---------------------------------------------------------------------------
-//
-TBool CSatBIPUtils::IsConnectionActivated()
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::IsConnectionActivated calling-exiting" )
- return iConnectionActivated;
- }
-
-// ---------------------------------------------------------------------------
-// CSatBIPUtils::SetSubConnectionActivated()
-// ---------------------------------------------------------------------------
-//
-void CSatBIPUtils::SetSubConnectionActivated( TBool aSet )
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::SetSubConnectionActivated calling" )
- iSubConnectionActivated = aSet;
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::SetSubConnectionActivated exiting" )
- }
-
-// ---------------------------------------------------------------------------
-// CSatBIPUtils::IsSubConnectionActivated()
-// ---------------------------------------------------------------------------
-//
-TBool CSatBIPUtils::IsSubConnectionActivated()
- {
- LOG( SIMPLE,
- "SATENGINE: CSatBIPUtils::IsSubConnectionActivated calling-exiting" )
- return iSubConnectionActivated;
- }
-