diff -r 000000000000 -r 9cfd9a3ee49c networkprotocolmodules/networkprotocolmodule/LbsSuplTestProtocol/inc/lbssupltestmodule.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkprotocolmodules/networkprotocolmodule/LbsSuplTestProtocol/inc/lbssupltestmodule.h Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,219 @@ +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +/** + @file + @internalTechnology + @test +*/ +#ifndef LBS_SUPLTEST_H +#define LBS_SUPLTEST_H + + +//----------------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lbssuplsocketlistener.h" +//#include +#include + + + +/** +This class defines the LBS Assistance Data Source Module +plug-in interface. It is used by the LBS Network Simulator. + +@see CAssistanceDataSourceModule + +The class also implements the internal MProtocolMgrObserver interface +which is used to receive calls from within the protocol module. +@see MProtocolMgrObserver +*/ +NONSHARABLE_CLASS(CSuplProtocolSession) + : public CAssistanceDataSourceBase, public CActive + { + +public: + + static CSuplProtocolSession* NewL(MLbsAssistanceDataSourceObserver& aObserver,RSocketServ& aSocketServer, const TInt16& aSessionNumber); + ~CSuplProtocolSession(); + + // Implementation of interface CAsssistanceDataSourceBase + void GetAssistanceData(RLbsAssistanceDataBuilderSet& aSet, const TLbsAssistanceDataGroup& aAssistanceDataFilter, const TCoordinate& aPosition); + void CancelGetAssistanceData(); + + // Methods from CActive + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + + // Call back for timeouts + static TInt OnTimerEventL(TAny* aPtr); + +private: + + /** SUPL session states + */ + enum TSuplSessionState + { + /** */ + EIdle, + /** */ + EConnectingToRemoteServer, + /** */ + EConnectedAwaitingRequest, + /** */ + EAssistanceDataRequested, + /** */ + ESendingSuplStart, + /** */ + EAwaitingSuplResponse, + /** */ + ESuplResponseAvailable, + /** */ + ESendingSuplPosInit, + /** */ + EAwaitingSuplPos, + /** */ + ESuplPosAvailable, + /** */ + ERrcPayloadDecodeComplete, + /** */ + EDisconnectingFromServer, + /** */ + ENetworkTimeout, + /** */ + EProtocolError, + /** */ + EEndingSession, + /** */ + ESuplEndSent, + }; + + CSuplProtocolSession(MLbsAssistanceDataSourceObserver& aObserver, const TInt16& aSessionNumber); + void ConstructL(RSocketServ& aSocketServerSession); + + // Utility methods for creating messages for sending + void CreateSuplStartMessageL(); + void CreatePosInitMessageL(); + void CreateSuplEndMessageL(); + + + void BuildCellInfoL(CSuplCellInfoContent* aContent, TCellInformationChoice aCellInfoChoice); + void BuildSetCapabilitiesL(CSuplSetCapabilitiesContent* aContent); + void BuildCommonPartL(CSuplMessageContent* aSuplMsgContent); + void BuildPositionInfoL(CSuplPositionContent* posContent); + + // Utility methods for decoding received messages + void DecodeSuplMessageL(TSuplMessageType aSuplMessageType); + TSuplMessageType DoDecodeMessageL(); + void DecodeRRCPayloadL(); + void TransitionAccordingToRequestAvailability(); + + // Asynchronous services requested by state machine + void ConnectToRemoteServer(); + void ReadSuplMessage(); + void SendSuplMessageL(TSuplMessageType aSuplMessageType); + + void PrepareSelfTransition(); + + // Process a timeout + void DoProcessTimeoutL(); + +private: + + // From the Network Simulator + MLbsAssistanceDataSourceObserver* iObserver; // For callbacks into the NetSim + RLbsAssistanceDataBuilderSet* iBuilderSet; // Not owned, belongs to the NetSim + TInt16 iSessionNumber; + + // Passed in GetAssistanceData + TLbsAsistanceDataGroup iAssistanceDataFilter; + TCoordinate iPosition; + + // Used for sending/receiving messages + // + RBuf8 iTxBuf; + RBuf8 iRxBuf; + + RSocket iSocket; + TInetAddr iAddress; // Remote server IP address + + CSuplSocketListener* iSuplSocketListener; + + // Used by the state machine + // + TBool iAssistanceDataRequestPending; + TSuplSessionState iSessionState; + CPeriodic* iTimer; + + // Obtained from SUPL RESPONSE message + TBuf8<4> iSlpSessionId; + // Obtained from SUP POS message + TUint iRrcOffset; // offset to the RRC payload in an encoded SUPLPOS message + }; + + +/** +This class implements the LBS Assistance Data Source Module +plug-in interface. It is used by the LBS Network Simulator. +@see CAssistanceDataSourceModule + + +@see +*/ +NONSHARABLE_CLASS(CSuplProtocolModule) + : public CAssistanceDataSourceModuleBase + { + +public: + + static CSuplProtocolModule* NewL(TAny* aParams); + ~CSuplProtocolModule(); + + CAssistanceDataSourceBase* NewDataSourceL(); + +private: + + CSuplProtocolModule(TAny*); + CSuplProtocolModule(); + void ConstructL(); + +private: + + /** Reference to this module's observer. + This is used to make callbacks into the Network Simulator. + */ + MLbsAssistanceDataSourceObserver& iObserver; + + /** Socket Server Session. + This session with the Socket Server will be used + by the SUPL sessions to obtain their TCP/IP sockets. + */ + RSocketServ iSocketServerSession; + + /* To be part of the session ID of the next SUPL + session that is created*/ + TInt16 iNextSessionNumber; + }; + +#endif //LBS_SUPLTEST_H