diff -r 000000000000 -r a41df078684a kernel/eka/include/drivers/adc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/include/drivers/adc.h Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,96 @@ +// Copyright (c) 1998-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: +// e32\include\drivers\adc.h +// ADC controller header file +// Currently only used in Series 5mx port +// +// + +/** + @file + @internalTechnology +*/ + +#ifndef __M32ADC_H__ +#define __M32ADC_H__ +#include + +const TInt KNumAdcChannelPriorities=4; + +// ADC operation is specified by a list of commands +// Each command is specified by a 32 bit word: +// Bit 16=1 -> wait for n ms before proceeding to next command (n=bits 0-15) +// Bit 17=1 -> do preamble +// Bit 18=1 -> do postamble +// Bit 19=1 -> take a reading +// Bit 20=1 -> don't store reading + +enum TAdcCommand + { + EAdcCmdWait=0x10000, + EAdcCmdPreamble=0x20000, + EAdcCmdPostamble=0x40000, + EAdcCmdReading=0x80000, + EAdcCmdDiscard=0x100000, + EAdcCmdDummyReading=0x180000, + }; + +class DAdc; +class TAdcChannel : public TPriListLink + { +public: + IMPORT_C TAdcChannel(TInt anAdc); +public: + IMPORT_C void Read(TInt* aReadingBuffer); +public: + IMPORT_C virtual void Preamble(); + IMPORT_C virtual void Postamble(); + virtual void Complete()=0; +public: + DAdc* iAdc; + TInt iChannelId; + TInt iCommandCount; + const TInt* iCommandList; + TInt* iReadings; + }; + +NONSHARABLE_CLASS(DAdc) : public DBase + { +public: + DAdc(); + ~DAdc(); +public: + virtual void StartConversion(TInt aChannelId)=0; +public: + void Add(TAdcChannel* aChannel); + void Execute(TAdcChannel* aChannel); + void NextCommand(); + void Start(); + void ConversionComplete(TInt aValue); + void TimerExpired(); + TInt DoSetMinPriority(TInt aPriority); + IMPORT_C static TInt SetMinPriority(TInt anAdc, TInt aPriority); +public: + TPriList iList; + TAdcChannel* iCurrentChannel; + TInt iCurrentCommand; + const TInt* iCommandPtr; + TInt iCommandCount; + NTimer iTimer; + TInt iMinPriority; + static DAdc** TheAdcs; + static TInt NumberOfAdcs; + }; + +#endif