--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/statsrv/device/source/statapi/inc/stat_packetisation.h Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,134 @@
+/*
+* 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:
+*
+*/
+
+
+
+/********************************************************************************
+ *
+ * Stat Packetisation Transport
+ *
+ *******************************************************************************/
+#ifndef __STATPACKETISATION_H__
+#define __STATPACKETISATION_H__
+
+/********************************************************************************
+ *
+ * System Includes
+ *
+ *******************************************************************************/
+
+/********************************************************************************
+ *
+ * Local Includes
+ *
+ *******************************************************************************/
+#include "stat_interfaces.h"
+
+/********************************************************************************
+ *
+ * Definitions
+ *
+ *******************************************************************************/
+#define KIDSize 4
+#define KLengthSize 4
+#define KHeaderSize (KIDSize + KLengthSize)
+
+/********************************************************************************
+ *
+ * Classes
+ *
+ *******************************************************************************/
+class CStatTransportPacketisation : public CBase, public MStatApiTransport, public MNotifyStatTransport
+{
+public:
+ // construction
+ static CStatTransportPacketisation *NewL( MNotifyStatEngine *aStatEngine, MStatNetwork *aStatNetwork, TUint aPacketSize );
+ CStatTransportPacketisation();
+ virtual ~CStatTransportPacketisation();
+
+ // from MStatApiTransport
+ TInt InitialiseL( void );
+ TInt ConnectL( TDesC *aRemoteHost );
+ TInt RequestSend( const TUint aCommand, MDataSupplier *const aDataSupplier);
+ TInt RequestReceive( void );
+ TInt Disconnect( void );
+ TInt Release( void );
+ TText8 *Error( void );
+
+ // from MNotifyStatTransport
+ void HandleInitialise( TInt aResult );
+ void HandleConnect( TInt aResult );
+ void HandleSend( TInt aResult );
+ void HandleReceive( TInt aResult, TDesC8 *aData, TUint aDataLength );
+ void HandleDisconnect( TInt aResult );
+ void HandleRelease( TInt aResult );
+ void HandleError( TInt aError, void *aErrorData );
+ void HandleInfo( const TDesC *aInfo );
+
+private:
+ // private helper functions
+ void ConstructL( MNotifyStatEngine *aStatEngine, MStatNetwork *aStatNetwork, TUint aPacketSize );
+ void SendHeaderPacket( TUint aCommand, TUint aDataLength );
+ void SendAckPacket( TUint aCommand );
+ void BuildHeader( TUint aCommand, TUint aDataLength );
+ void NotifyEngineSend( TUint aResult );
+ void NotifyEngineReceive( TUint aResult );
+
+private:
+ // status enums
+ enum TSendStatus { ESendIdle, ESendingInitialHeader, ESendingFragmentHeader, ESendingFragmentData, ESendingFragmentAck };
+ enum TReceiveStatus { EReceiveIdle, EReceivingInitialHeader, EReceivingFragmentHeader, EReceivingData, EReceivingFragmentAck };
+
+private:
+ // general members
+ MNotifyStatEngine *iStatEngine;
+ MStatNetwork *iStatNetwork;
+ TCommStatus iTransportStatus;
+ TSendStatus iSendStatus;
+ TReceiveStatus iRecvStatus;
+ TUint iDataPacketSize;
+
+ // send buffers
+ TBuf8<KHeaderSize> iSendHeader;
+ HBufC8 *iSendFragment;
+ TUint iSendCommand;
+ TUint iSendDataLength;
+ TUint iSendDataWritten;
+ TUint iSendDataAcknowledged;
+
+ // receive buffers
+ TUint iRecvCommand;
+ TUint iRecvDataLength;
+ TUint iRecvDataReceived;
+ TUint iRecvDataAcknowledged;
+
+ MDataConsumer *iDataConsumer; // The data consumer is
+ // use to pass data from the
+ // transport layer to the
+ // command decoder.
+ // Each specific object is
+ // valid for the context of a
+ // single command (and
+ // destroyed).
+
+ MDataSupplier *iDataSupplier; // This is owned by other
+ // objects and we are passed
+ // a pointer for our own use
+ // but we do not maintain this.
+};
+
+#endif // __STATTCPIP_H__