kernel/eka/debug/crashMonitor/inc/scmconfig.h
changeset 43 96e5fb8b040d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/debug/crashMonitor/inc/scmconfig.h	Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,92 @@
+
+// Copyright (c) 2008-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:
+//
+// WARNING: This file contains some APIs which are internal and are subject
+//          to change without notice. Such APIs should therefore not be used
+//          outside the Kernel and Hardware Services package.
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+#ifndef __SCMCONFIG_H_INCLUDED__
+#define __SCMCONFIG_H_INCLUDED__
+
+
+#include <e32def.h>
+
+#include <scmbytestreamutil.h>
+#include <scmconfigitem.h>
+
+namespace Debug{
+	
+	//Note -- Changing the size of this requires a change in KScmConfigMaxSize
+    _LIT8(KScmConfigHeaderString, "SCMCONFIG");
+
+    /**
+     * This class handles the configuration section of the crash partition.
+     * It is responsible for reading and writing it
+     */
+	class SCMConfiguration : public MByteStreamSerializable
+		{
+		
+		public:
+			
+			//The 9 here refers to the size of KScmConfigHeaderString which is serialised
+			static const TInt KScmConfigMaxSize = TConfigItem::ELast * sizeof(TConfigItem) + 9;
+			
+			SCMConfiguration();		
+			virtual ~SCMConfiguration();
+			
+			// from MByteStreamSerializable
+			virtual TInt Serialize(TByteStreamWriter& aWriter);
+			virtual TInt Deserialize(TByteStreamReader& aReader);
+		 	virtual TInt GetSize() const;
+			
+		 	TConfigItem* GetNextItem();
+			TInt SetDefaultConfig();
+						
+			TInt CreateConfigItem(const TConfigItem::TSCMDataType aDataType, const TUint8 aPriority, const TInt32 aSizeToDump);
+			TInt ModifyConfigItemPriority(const TConfigItem::TSCMDataType aDataType, const TUint8 aPriority);
+			
+			void ResetToHighestPriority();
+			
+		 	TBool operator == (const SCMConfiguration& aOther) const;
+			
+		 	TConfigItem* ConfigList() const;
+			TInt InsertToList(TConfigItem* aItem);
+			void ClearList(); 		
+		 	
+		private:	
+			
+			/**
+			 * This is an ordered linked list of TConfigItems. The first is the highest priority and so on until the lowest priority 
+			 */			
+			TConfigItem* iConfigList;
+			
+			/**
+			 * Everytime GetNextItemToDump is called this moves down along the list 
+			 */
+			TConfigItem* iNextItem;   
+			
+		private:	
+			TInt RemoveFromList(TConfigItem* aItem);
+			
+							
+		};
+	}
+
+#endif /*__SCMCONFIG_H_INCLUDED__*/