testexecfw/statsrv/device/source/statapi/inc/stat_serial.h
changeset 0 3e07fef1e154
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/statsrv/device/source/statapi/inc/stat_serial.h	Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,171 @@
+/*
+* 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 Serial Transport
+ *
+ *******************************************************************************/
+#ifndef __STATSERIAL_H__
+#define __STATSERIAL_H__
+
+/********************************************************************************
+ *
+ * System Includes
+ *
+ *******************************************************************************/
+
+#ifndef LIGHT_MODE
+#include <c32comm.h>
+#else // ifndef LIGHT_MODE
+#include <serialdriverext.h>
+#endif // ifndef LIGHT_MODE
+
+#include <f32file.h>
+
+/********************************************************************************
+ *
+ * Local Includes
+ *
+ *******************************************************************************/
+#include "filedump.h"
+#include "stat_interfaces.h"
+
+/********************************************************************************
+ *
+ * Definitions
+ *
+ *******************************************************************************/
+#define KModuleSize									8
+
+/********************************************************************************
+ *
+ * Class
+ *
+ *******************************************************************************/
+class CStatApiSerial : public CActive, public MStatNetwork
+{
+public:
+	// construction
+	static CStatApiSerial* NewL( TPtrC16 aModule );
+	CStatApiSerial();
+	~CStatApiSerial();
+
+	// from MStatNetwork
+	TInt GetPacketSize();
+	TInt InitialiseL( MNotifyStatTransport *iTransport );
+	TInt ConnectL( TDesC *aRemoteHost );
+	TInt RequestSend( TDesC8 *aCommandData, const TUint aDataLength );
+	TInt RequestReceive( TUint aByteCount );
+	TInt Disconnect( void );
+	TInt Release( void );
+	TText8 *Error( void );
+	TUint NtoHl( TUint aValue ) const;
+	TUint HtoNl( TUint aValue ) const;
+
+	// from CActive
+	void RunL( void );
+	void DoCancel( void );
+
+public:
+	// Enumeration of different serial sub-types.
+	// There is an option of using serial sub-classes but the number of
+	// classes (three plus a base serial) is too great for the 
+	// very small number of special case changes we need.
+	// Leave the serial implementation as one class and continue 
+	// to handle special cases.  This ensure all the code we 
+	// need continues to be in one place.
+	enum TSerialSubtype {
+				EInvalid = 0,
+				ESerialCable,
+				EInfraRed, 
+				ENumberOfSubTypes
+				};
+
+private:
+	void ConstructL( TPtrC16 aModule );
+
+	void SetStatus( TCommStatus aNewStatus );
+	void ExtractOptions( TDesC *aRemoteHost, TDes& aPortNumber, TInt& aBaudCap, TBps& aBaudRate );
+
+	// Finalise the initialisation started by a call to InitialiseL.
+	// Called directly by InitialiseL in a synchronous
+	// initialisation; called from RunL in an asynchronous
+	// initialisation (such as USB).
+	TInt OnInitialiseL(TInt resultCode);
+
+	// Uses our iModule transport description text string to
+	// determine the sub-type.  This will leave if we
+	// are pass an unrecognised string in the constructor.
+	// The leave value will be KErrNotSupported.
+	void DetermineSubTypeL(void);
+
+	// Returns the sub-type that identifies the nature of
+	// our transport special case.
+	TSerialSubtype SubType(void) const;
+
+private:
+	TCommStatus iSerialStatus;
+	TReadWriteStatus iRWStatus;
+	TBuf16<KModuleSize> iModule;
+	MNotifyStatTransport *iTransport;
+	TBuf8<1> iDummyBuffer;
+	TInt iRetries;
+	// Store the packetsize.
+	// This depends upon our specific serial subtype.
+	TInt iMaxPacketSize;
+
+#ifndef LIGHT_MODE
+	RCommServ iCommServer;
+	RComm iCommPort;
+#else // ifndef LIGHT_MODE
+	SerialServer	iCommServer;
+	SerialPort		iCommPort;
+
+	RLibrary serialDriverLib;   // use for loading the serial driver lib
+
+#endif // ifndef LIGHT_MODE
+
+	TCommConfig iPortSettings, iOldPortSettings;
+
+	HBufC8 *iRecvBuffer;
+	TPtr8 *iRecvBufferPtr;
+	TInt iRecvLength, iCommOldSettingsValid;
+
+	// This is the sub-type that identifies the nature of
+	// our transport special case.
+	TSerialSubtype iSubType;
+};
+
+inline TUint CStatApiSerial::NtoHl( TUint aValue ) const
+{
+	return ( aValue );
+}
+
+inline TUint CStatApiSerial::HtoNl( TUint aValue ) const
+{
+	return ( aValue );
+}
+
+inline CStatApiSerial::TSerialSubtype CStatApiSerial::SubType(void) const
+{
+	return (iSubType);	
+}
+
+#endif