--- a/phoneclientserver/phoneclient/Src/UssdWrapper/CPhCltUssdSatClient.cpp Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,365 +0,0 @@
-/*
-* Copyright (c) 2002 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: Ussd Sat Client.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "cphcltussdimp.h"
-#include "phcltclientserver.h"
-#include <cphcltussdsatclient.h>
-#include <cphcltussd.h>
-
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-#ifndef CPHCLTUSSDSATACTIVE_H
-#define CPHCLTUSSDSATACTIVE_H
-
-/**
-* The waiter class for SAT sessions.
-*/
-NONSHARABLE_CLASS( CPhCltUssdSatActive ) : public CActive
- {
- public:
-
- /**
- * Constructor.
- */
- CPhCltUssdSatActive();
-
- /**
- * Destructor.
- */
- ~CPhCltUssdSatActive();
-
- /**
- * Set this active object active.
- * Hides the function derived from CActive.
- */
- void SetActive();
-
- /**
- * Wait until the Sat Session is ended.
- * @return The error code of the session.
- */
- TInt WaitSatSessionToEnd();
-
-
- protected: // From base classes
-
- /**
- * @see CActive::RunL
- */
- void RunL();
-
- /**
- * @see CActive::DoCancel
- */
- void DoCancel();
-
-
- private:
-
- // The Active scheduler waiter.
- CActiveSchedulerWait iSatWaiter;
-
- // The error code storage place.
- TInt* iError;
- };
-
-#endif // CPHCLTUSSDSATACTIVE_H
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatActive::CPhCltUssdSatActive
-//
-// -----------------------------------------------------------------------------
-//
-CPhCltUssdSatActive::CPhCltUssdSatActive() : CActive( EPriorityStandard )
- {
- CActiveScheduler::Add( this );
- }
-
-
-// Destructor
-CPhCltUssdSatActive::~CPhCltUssdSatActive()
- {
- Cancel();
- if ( iSatWaiter.IsStarted() )
- {
- iSatWaiter.AsyncStop();
- }
-
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatActive::SetActive
-//
-// -----------------------------------------------------------------------------
-//
-void CPhCltUssdSatActive::SetActive()
- {
- CActive::SetActive();
- iError = NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatActive::WaitSatSessionToEnd
-//
-// -----------------------------------------------------------------------------
-//
-TInt CPhCltUssdSatActive::WaitSatSessionToEnd()
- {
- if ( !IsActive() )
- {
- if ( iError )
- {
- return *iError;
- }
- else
- {
- return KErrNone;
- }
- }
-
- TInt error = KErrNone;
- iError = &error;
- iSatWaiter.Start();
- return error;
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatActive::RunL
-//
-// -----------------------------------------------------------------------------
-//
-void CPhCltUssdSatActive::RunL()
- {
- if ( iError )
- {
- *iError = iStatus.Int();
- }
- if ( iSatWaiter.IsStarted() )
- {
- iSatWaiter.AsyncStop();
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatActive::DoCancel
-//
-// -----------------------------------------------------------------------------
-//
-void CPhCltUssdSatActive::DoCancel()
- {
- if ( iError )
- {
- *iError = KErrCancel;
- }
- }
-
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatClient::CPhCltUssdSatClient
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPhCltUssdSatClient::CPhCltUssdSatClient()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatClient::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPhCltUssdSatClient::ConstructL( TBool aShowNotes )
- {
- iUssdWrapper = CPhCltUssdImp::NewL( aShowNotes );
-
- iShowNotes = aShowNotes;
-
- iSatActive = new( ELeave ) CPhCltUssdSatActive();
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatClient::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CPhCltUssdSatClient* CPhCltUssdSatClient::NewL( TBool aShowNotes )
- {
- CPhCltUssdSatClient* self = new ( ELeave ) CPhCltUssdSatClient;
-
- CleanupStack::PushL( self );
- self->ConstructL( aShowNotes );
- CleanupStack::Pop();
-
- return self;
- }
-
-
-// Destructor
-EXPORT_C CPhCltUssdSatClient::~CPhCltUssdSatClient()
- {
- if ( iSatActive )
- {
- if ( iSatActive->IsActive() )
- {
- iUssdWrapper->StopSAT();
- }
- delete iSatActive;
- iSatActive = NULL;
- }
-
- delete iUssdWrapper;
- iUssdWrapper = NULL;
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatClient::SendSatMessage
-// Send SAT message and receive the last message.
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt CPhCltUssdSatClient::SendSatMessage(
- const TDesC& aSendMessage,
- const TUint8 iSendDcs,
- TDes& aReceiveMessage,
- TBool& aSendCompletedFirst,
- TUint8& aReceivedDcs)
- {
- // Do not process request if earlier request is ongoing.
- if ( iSatActive->IsActive() )
- {
- // Stop (complete) the earlier request so that we can send new
- // SATmessage during next function call.
- iUssdWrapper->StopSAT();
- return KErrInUse;
- }
- iUssdWrapper->SetDCS( iSendDcs );
- iSatError = KErrNone;
- iSendCompletedFirst = &aSendCompletedFirst;
- *iSendCompletedFirst = ETrue;
- iReceiveMessage.Set( aReceiveMessage );
- aReceiveMessage.Zero();
- aReceivedDcs = EPhCltDcsUnknown;
-
- iShowNotesAndDcs = 0; // reset the variable
- if ( iShowNotes )
- {
- iShowNotesAndDcs = KPhCltShowNotes;
- }
-
- TPckg< TUint > showNotesAndDcs( iShowNotesAndDcs );
-
- // Send receive message to the server. status is completed when Ussd session
- // ends.
- iUssdWrapper->StartSAT(
- iSatActive->iStatus,
- aReceiveMessage ,
- showNotesAndDcs );
-
- iSatActive->SetActive();
-
-
- // Now send the string according to the parameter.
- TPtrC pMessage( aSendMessage );
- iSatError = iUssdWrapper->SendUssd( pMessage );
-
- if ( iSatError != KErrNone )
- {
- iSendCompletedFirst = NULL;
- iUssdWrapper->StopSAT();
-
- iSatActive->WaitSatSessionToEnd();
- return iSatError; // Message send error
- }
-
- // Wait until the Ussd conversation is over:
- TInt satWaiterError = iSatActive->WaitSatSessionToEnd();
- if ( satWaiterError > KErrNone )
- {
- *iSendCompletedFirst = EFalse;
- }
-
- // Get the error code:
- iSatError = Min ( iSatError, satWaiterError );
-
- iSendCompletedFirst = NULL;
-
- // Return the DCS to the caller.
- DecodeDcs( aReceivedDcs );
- aReceivedDcs = iShowNotesAndDcs;
- return iSatError; // Receive error code
- }
-
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatClient::SendSatMessageCancel
-//
-// Cancels the out-standing request.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CPhCltUssdSatClient::SendSatMessageCancel()
- {
- iUssdWrapper->SendUssdCancel();
- iSendCompletedFirst = NULL;
- iUssdWrapper->StopSAT();
- iSatActive->Cancel();
- }
-
-// -----------------------------------------------------------------------------
-// CPhCltUssdSatClient::DecodeDcs
-//
-// In this function the DCS received from PhoneServer is decoded.
-// -----------------------------------------------------------------------------
-//
-void CPhCltUssdSatClient::DecodeDcs( TUint8& aReceivedDcs )
- {
- // Check what DCS was used, and update aReceivedDcs
- if ( iShowNotesAndDcs == KPhCltDcs7Bit )
- {
- aReceivedDcs = EPhCltDcs7Bit;
- }
- else if ( iShowNotesAndDcs == KPhCltDcs8Bit )
- {
- aReceivedDcs = EPhCltDcs8Bit;
- }
- else if ( iShowNotesAndDcs == KPhCltDcsUcs2 )
- {
- aReceivedDcs = EPhCltDcsUCS2;
- }
- else
- {
- aReceivedDcs = EPhCltDcsUnknown;
- }
- }
-
-
-// End of File