kerneltest/e32test/iic/iic_psl/i2c.h
branchRCL_3
changeset 256 c1f20ce4abcf
parent 0 a41df078684a
child 257 3e88ff8f41d5
--- a/kerneltest/e32test/iic/iic_psl/i2c.h	Thu Aug 19 11:14:22 2010 +0300
+++ b/kerneltest/e32test/iic/iic_psl/i2c.h	Tue Aug 31 16:34:26 2010 +0300
@@ -42,13 +42,15 @@
 #endif/*STANDALONE_CHANNEL*/
 
 
-#if defined(MASTER_MODE)
 const TInt KI2cThreadPriority = 5; // Arbitrary, can be 0-7, 7 highest
-#endif
 
 const TInt16 KI2cSlaveChannelIdBase = 0x1D00;	// Arbitrary
 
-#ifdef MASTER_MODE
+const TInt KI2cSlaveAsyncDelaySim = 20;	// Arbitrary delay, for timer to simulate asynchronous processing
+
+//Macros MASTER_MODE and SLAVE_MODE are intentionally omitted from this file
+//This is for master and slave stubs to exercise the channel class,
+//and we need these stubs for code coverage tests.
 class DSimulatedIicBusChannelMasterI2c : public DIicBusChannelMaster
 	{
 	// platform specific implementation
@@ -85,9 +87,7 @@
 #ifndef STANDALONE_CHANNEL
 TInt8 DSimulatedIicBusChannelMasterI2c::iCurrentChanNum = KI2cChannelNumBase; // Initialise static member of DSimulatedIicBusChannelMasterI2c
 #endif
-#endif/*MASTER_MODE*/
 
-#ifdef SLAVE_MODE
 class DSimulatedIicBusChannelSlaveI2c : public DIicBusChannelSlave
 	{
 public:
@@ -110,6 +110,16 @@
 
 	inline void SetChanNum(TInt8 aChanNum) {iChannelNumber = aChanNum;};
 
+	enum TAsyncEvent
+		{
+		ENoEvent = 0,
+		EAsyncChanCapture,
+		ERxWords,
+		ETxWords,
+		ERxTxWords
+		};
+	inline void ChanNotifyClient(TInt aTrigger) {NotifyClient(aTrigger);}
+
 	protected:
 		virtual void SendBusErrorAndReturn() {return;} // Not implemented in simulated PSL
 
@@ -132,11 +142,13 @@
 		TInt iBlockedTrigger;
 		TBool iBlockNotification;
 
+		TAsyncEvent iAsyncEvent;
+		TInt iRxTxTrigger;
+
 		NTimer iSlaveTimer; // Used to simulate an asynchronous capture operation
+		TSpinLock iEventSpinLock; // To serialise simulated bus events - Rx, Tx or Rx+Tx
 		};
-#endif/*SLAVE_MODE*/
 
-#if defined(MASTER_MODE) && defined(SLAVE_MODE)
 class DSimulatedIicBusChannelMasterSlaveI2c : public DIicBusChannelMasterSlave
 	{
 public:
@@ -147,6 +159,5 @@
 				
 	TInt StaticExtension(TUint aFunction, TAny* aParam1, TAny* aParam2);	
 	};
-#endif/*(MASTER_MODE) && (SLAVE_MODE)*/
 
 #endif /*I2C_H_*/