diff -r 000000000000 -r 96e5fb8b040d bsptemplate/asspandvariant/template_assp/iic/iic_slave.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bsptemplate/asspandvariant/template_assp/iic/iic_slave.h Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,87 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + +#ifndef __IIC_SLAVE_H__ +#define __IIC_SLAVE_H__ + +#include + +class DIicBusChannelSlavePsl: public DIicBusChannelSlave + { + +public: + static DIicBusChannelSlavePsl* New(TInt aChannelNumber, const TBusType aBusType, + const TChannelDuplex aChanDuplex); + + // Gateway function for PSL implementation + virtual TInt DoRequest(TInt aOperation); + + DIicBusChannelSlavePsl(TInt aChannelNumber, const TBusType aBusType, + const TChannelDuplex aChanDuplex); + +private: + // Overriders for base class pure-virtual methods + virtual TInt DoCreate(); // second-stage construction, + virtual TInt CheckHdr(TDes8* aHdrBuff); + virtual void ProcessData(TInt aTrigger, TIicBusSlaveCallback* aCb); + + // Internal methods.. + TBool TransConfigDiffersFromPrev(); + TInt ConfigureInterface(); + TInt AsynchConfigureInterface(); + TInt InitTransfer(); + + // ISR handler and other static methods.. + static void IicPslIsr(TAny* aPtr); + static void TimeoutCallback(TAny* aPtr); + static inline void NotifyClientEnd(DIicBusChannelSlavePsl* aPtr); + + // Register base for the Master channel + TUint iSlaveChanBase; + + // Interrupt ID for the Master channel + TInt iSlaveIntId; + + // Bit mask of the transfer triggers managed by the channel + TUint8 iTrigger; + + // Granularity, expressed as the number of bytes in a word + TInt8 iWordSize; + + // Flag indicating transmission activity - optional, may not be required for all bus types + // In the template example it is used to indicate transitions on a chip-select line, such as for SPI. + TInt8 iInProgress; + + // Dummy variable used merely to demonstrate the asynchronous channel capture mechanism + // See method AsynchConfigureInterface + TInt8 iAsyncConfig; + + // Pointers to buffers used for Rx and Tx transfers + TInt8 *iTxData; + TInt8 *iRxData; + TInt8 *iTxDataEnd; + TInt8 *iRxDataEnd; + + // Timer to guard 'while' loops.. + NTimer iHwGuardTimer; + + // status of the transaction + volatile TInt iTransactionStatus; + }; + +#endif /*__IIC_SLAVE_H__*/