diff -r 000000000000 -r 3e07fef1e154 testexecfw/statsrv/device/source/statapi/inc/stat_serial.h --- /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 +#else // ifndef LIGHT_MODE +#include +#endif // ifndef LIGHT_MODE + +#include + +/******************************************************************************** + * + * 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 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