diff -r 000000000000 -r 4e1aa6a622a0 sensorservices/tiltcompensationssy/inc/tcchannel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sensorservices/tiltcompensationssy/inc/tcchannel.h Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,221 @@ +/* +* Copyright (c) 2007 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: CTCChannel class declaration. +* +*/ + + + +#ifndef TCCHANNEL_H +#define TCCHANNEL_H + +// INCLUDES +#include +#include +#include +#include +#include +#include + +#include "tcstatepool.h" +#include "tctransactionhandler.h" +#include "tcstate.h" + +// FORWARD DECLARATIONS +class MSsyCallback; + +// CLASS DECLARATION + +/** +* Base class for a channel handler. Base class has the basic +* implementation support for the state machine. +* +* Channel supports following states: +* - Idle +* - Open +* - Listen data +* - Buffer full +* - Closing +* +* @lib None. +* @since S60 5.0 +*/ +NONSHARABLE_CLASS( CTCChannel ): public CActive, + public MSsyPropertyProvider, + public MSsyChannelDataProvider, + public MTCStatePool, + public MTCTransactionHandler + { + public: + + // Default C++ destructor + ~CTCChannel(); + + public: // New methods + + /** + * Updates correct channel ID received from sensor server. + * + * @param aId Channel ID. + * @return None. + */ + virtual void SetChannelId( TSensrvChannelId aId ); + + /** + * Returns channel ID. + * + * @return TSensrvChannelId. + */ + virtual TSensrvChannelId ChannelId() const; + + /** + * Checks if the channel is supported. + * + * @param aInfo Sensor channel info. + * @return ETrue if supported. + */ + virtual TBool ChannelSupported( const TSensrvChannelInfo& aInfo ); + + /** + * Registers a channel supported by this channel instance. + * + * @param aChannels Channel list. + * @return None. + */ + virtual void RegisterChannelL( RSensrvChannelInfoList& aChannels ) = 0; + + /** + * Open the channel. + */ + virtual void OpenChannelL() = 0; + + /** + * Close the channel. + */ + virtual void CloseChannelL() = 0; + + protected: // Methods from base classes + + // @see CActive + void DoCancel(); + + // @see CActive + TInt RunError( TInt aError ); + + // @see MTCStatePool + CTCState* CurrentState() const; + + // @see MTCStatePool + //CTCState* PreviousState() const; + + // @see MTCStatePool + void ChangeStateL( TInt aStateId ); + + // @see MTCChannelTransaction + //TBool ReadyForTransaction() const; + + // @see MTCChannelTransaction + TUint8* DataBuffer() const; + + // @see MTCChannelTransaction + TInt DataCount() const; + + protected: // New methods + + /** + * Constructor + */ + void BaseConstructL(); + + /** + * Finds a sensor channel. + * + * @param aChannelTypeId Channel type ID. + * @param aLocation Location of the sensor. + * @param aVendorId Sensor vendor ID. + * @param aChannelInfo Found channel info. + * @return ETrue if channel found. + */ + static TBool FindChannelL( const TSensrvChannelTypeId& aChannelTypeId, + const TDesC8& aLocation, + const TDesC8& aVendorId, + TSensrvChannelInfo& aChannelInfo ); + + /** + * Register a state. + * Only the state with aStateId can be registered. + * + * @param aStateId State to register. + * @param aStateArray Array where to add the state. + */ + virtual void RegisterStateL( CTCState::TCStateId aStateId, + RStateArray& aStateArray ) = 0; + + /** + * Forces the current transaction to be completed. + * + * @param aCode Completion code of the transaction. + */ + virtual void CompleteTransaction( TInt aCode ); + + protected: + + /** + * Default C++ constructor. + */ + CTCChannel( MSsyCallback& aCallback ); + + private: // New methods + + // Completes pending request + void CompleteSelf( TInt aCode ); + + protected: // Data for inherited channels + + /** Channel ID */ + TSensrvChannelInfo iChannelInfo; + + /** SSY callback interface */ + MSsyCallback& iCallback; + + /** Current transaction ID */ + TTCTransactionId iCurrentTransactionId; + + /** Current transaction, not owned */ + TTCTransaction* iCurrentTransaction; + + /** Data buffer, not owned */ + TUint8* iData; + + /** Data buffer count */ + TInt iCount; + + private: // Private data for base channel + + /** State pool */ + RStateArray iStatePool; + + /** Current state pointer, not owned */ + CTCState* iCurrentState; + + /** Previous state pointer, not owned */ + CTCState* iPreviousState; + }; + +/** Channel array */ +typedef RPointerArray RChannelArray; + +#endif // TCCHANNEL_H + +// End of File