kernel/eka/include/drivers/adc.h
changeset 0 a41df078684a
--- /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 <platform.h>
+
+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<TAdcChannel,KNumAdcChannelPriorities> iList;
+	TAdcChannel* iCurrentChannel;
+	TInt iCurrentCommand;
+	const TInt* iCommandPtr;
+	TInt iCommandCount;
+	NTimer iTimer;
+	TInt iMinPriority;
+	static DAdc** TheAdcs;
+	static TInt NumberOfAdcs;
+	};
+
+#endif