testtoolsconn/stat/desktop/source/lib/inc/statserial.h
changeset 0 3da2a79470a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testtoolsconn/stat/desktop/source/lib/inc/statserial.h	Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,104 @@
+/*
+* 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:  
+*
+*/
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////
+// statserial.h
+// Serial transport class definition
+////////////////////////////////////////////////////////////////////////////////////////
+
+#ifndef STATSERIAL_H
+#define STATSERIAL_H
+
+#include "statcommon.h"
+#include "stattransport.h"
+
+// COM port settings
+// There is a problem with the use of ::ReadFile as this is a blocking
+// operation called in a critical section.  If the call blocks for too
+// long and the user closes the thread then the section is lost for ever.
+// Reduce the timeouts to prevent the threads locking when there is
+// a link error.  This is the wrong thing to do as we should really
+// update the reading to check the port first and query if data
+// is available.
+#define STAT_WRITETOTALTIMEOUTMULTIPLIER	0
+#define STAT_WRITETOTALTIMEOUTCONSTANT		1000
+#define STAT_READINTERVALTIMEOUT			0
+#define STAT_READTOTALTIMEOUTMULTIPLIER		0
+#if defined _DEBUG
+	// In a release build wait a few seconds.
+	// In a debug build wait for longer as we may be debugging and 
+	// pausing at break-points and generally slowing things up a bit.
+	#define STAT_READTOTALTIMEOUTCONSTANT		(10 * 1000)
+#else // defined _DEBUG
+	#define STAT_READTOTALTIMEOUTCONSTANT		1000
+#endif // defined _DEBUG
+
+#define STAT_BAUDRATE						CBR_115200
+#define STAT_BYTESIZE						8
+#define STAT_PARITY							NOPARITY
+#define STAT_STOPBITS						ONESTOPBIT
+
+
+class CSTATSerial : public CSTATTransport
+{
+public:
+	CSTATSerial(STATCONNECTTYPE eConnect);	// Request that when this object
+											// is created then it knows what
+											// implementation of serial it is.
+											// We could use sub-classes but there
+											// is so little difference we handle
+											// all serial transports as one case.
+											// The only difference is in the packet
+											// size which we store as an object
+											// data field.
+	~CSTATSerial();
+	int Initialise(void);
+	int Connect(const char *pAddress = NULL);
+	int Send(const char cIdentifier, const char *pData = NULL, const unsigned long ulLength = 0);
+	int Receive(char *cIdentifier, char **ppData = NULL, unsigned long *pLength = NULL);
+	int Disconnect(void);
+	int Release(void);
+	unsigned int GetMaxPacketSize(void) const;	// Override base class method
+												// to specify that we have
+												// a limit to the pakcet size
+												// and the specific limit
+												// depends upon the serial
+												// transport we represent.
+
+private:
+	bool OpenComPort(const char *pAddress);
+	int ReceiveBytes( char *buff, unsigned long size );
+
+	HANDLE hComPort;				// com port to work with
+	unsigned long int iMaxPacketSize;
+									// Holds the maximum size of the
+									// packets we send.
+	char *pBuffer;					// Holds received data
+	unsigned long int iBufferLength;
+									// Holds the length of the receive data 
+									// buffer
+};
+
+inline unsigned int CSTATSerial::GetMaxPacketSize(void) const
+{
+	return (iMaxPacketSize);
+}
+
+#endif