Update contrib.
1 // Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // e32\debug\crashMonitor\src\scmconfigitem.cpp
23 #include <e32def_private.h>
25 #include <scmconfigitem.h>
26 #include <scmdatatypes.h>
33 * TConfigItem constructor
35 TConfigItem::TConfigItem()
38 , iSpaceRequiredToDump(0)
45 * TConfigItem constructor
46 * @param aDataType - data type id
47 * @param aSizeToDump - size of the config data
48 * @param aPriority - priority of this data type (if 0 then not used)
50 TConfigItem::TConfigItem(TSCMDataType aDataType, TUint8 aPriority, TInt32 aSizeToDump)
51 : iDataType(aDataType)
52 , iSizeToDump(aSizeToDump)
53 , iPriority(aPriority)
59 * Serialize - writes this object to the supplied byte stream
60 * @param aItem - aWriter - the TByteStreamWriter that will be written to
61 * @return one of the OS wide codes
63 TInt TConfigItem::Serialize(TByteStreamWriter& aWriter)
65 TInt startPos = aWriter.CurrentPosition();
67 aWriter.WriteByte((TUint8)iDataType);
68 aWriter.WriteInt(iSizeToDump);
69 aWriter.WriteByte(iPriority);
71 TInt sizeWritten = aWriter.CurrentPosition() - startPos;
72 if(sizeWritten != GetSize())
74 // error between actual size & real size in data
75 CLTRACE2("TConfigItem serialization size error sizeWritten %d GetSize() %d", sizeWritten, GetSize());
84 * Deserialize - read this objects state from the supplied byte stream
85 * @param aItem - aReader - the TByteStreamReader that will be read from
86 * @return One of the OS wide codes
88 TInt TConfigItem::Deserialize(TByteStreamReader& aReader)
90 TInt startPos = aReader.CurrentPosition();
92 iDataType = (TSCMDataType) aReader.ReadByte();
93 iSizeToDump = aReader.ReadInt();
94 iPriority = aReader.ReadByte();
96 TInt sizeRead = aReader.CurrentPosition() - startPos;
97 if(sizeRead != GetSize())
99 // error between actual size & real size in data
100 CLTRACE("(TConfigItem::Deserialize) ERROR size error");
110 * @return data type of this config item
112 TConfigItem::TSCMDataType TConfigItem::GetDataType() const
119 * @return priority of this config item (0-255)
121 TInt TConfigItem::GetPriority() const
128 * @return size to dump in bytes
130 TInt TConfigItem::GetSizeToDump() const
137 * @return size of this object when streamed in bytes
139 TInt TConfigItem::GetSize() const
150 TConfigItem* TConfigItem::Next() const
156 * Print - displays info about this TConfigItem
159 void TConfigItem::Print() const
161 CLTRACE3( "(TConfigItem::Print) iDataType = %d iPriority = %d iSizeToDump = %d"
162 , iDataType, iPriority, iSizeToDump);
165 TBool TConfigItem::operator == (const TConfigItem& aOther) const
167 return (iDataType == aOther.iDataType && iSizeToDump == aOther.iSizeToDump && iPriority == aOther.iPriority);
171 * Sets the space required parameter for this config item
172 * @param aSpaceReq Space required
174 void TConfigItem::SetSpaceRequired(TUint aSpaceReq)
176 iSpaceRequiredToDump = aSpaceReq;
180 * Gets the space required to store this config item
183 TUint TConfigItem::GetSpaceRequired()
185 return iSpaceRequiredToDump;
188 #ifndef __KERNEL_MODE__
190 // human readable strings for TSCMDataType
191 _LIT(KExceptionStacks, "Exception Stacks");
192 _LIT(KTraceData, "Trace data");
193 _LIT(KProcessCodeSegs, "ProcessCodeSegs");
194 _LIT(KThreadsUsrStack, "Threads UserStack");
195 _LIT(KThreadsSvrStack, "Threads Supervisor Stack");
196 _LIT(KKernelHeap, "Kernel Heap");
197 _LIT(KThreadsUsrRegisters, "Threads User Registers");
198 _LIT(KThreadsSvrRegisters, "Threads Supervisor Registers");
199 _LIT(KProcessMetaData, "Process Meta Data");
200 _LIT(KThreadsMetaData, "Threads Meta Data");
201 _LIT(KCrashedProcessCodeSegs, "Crashed Process Code Segs");
202 _LIT(KCrashedProcessUsrStacks, "Crashed Process' User Stack's");
203 _LIT(KCrashedProcessSvrStacks, "Crashed Process' Supervisor Stack's");
204 _LIT(KCrashedProcessMetaData, "Crashed Process Meta Data");
205 _LIT(KCrashedThreadMetaData, "Crashed Thread Meta Data");
206 _LIT(KLocks, "SCM Locks");
207 _LIT(KVariantSpecific, "Variant Specific Data");
208 _LIT(KRomInfo, "ROM Info");
209 _LIT(KUnknown, "Unknown");
212 * helper function for converting TSCMDataType enul to human readable form
214 const TDesC& TConfigItem::GetSCMConfigOptionText(TConfigItem::TSCMDataType aType)
218 case TConfigItem::EExceptionStacks:
219 return KExceptionStacks;
220 case TConfigItem::ETraceData:
222 case TConfigItem::EProcessCodeSegs:
223 return KProcessCodeSegs();
224 case TConfigItem::EThreadsUsrStack:
225 return KThreadsUsrStack();
226 case TConfigItem::EThreadsSvrStack:
227 return KThreadsSvrStack;
228 case TConfigItem::EThreadsUsrRegisters:
229 return KThreadsUsrRegisters();
230 case TConfigItem::EThreadsSvrRegisters:
231 return KThreadsSvrRegisters();
232 case TConfigItem::EProcessMetaData:
233 return KProcessMetaData();
234 case TConfigItem::EThreadsMetaData:
235 return KThreadsMetaData();
236 case TConfigItem::ECrashedProcessCodeSegs:
237 return KCrashedProcessCodeSegs();
238 case TConfigItem::ECrashedProcessUsrStacks:
239 return KCrashedProcessUsrStacks();
240 case TConfigItem::ECrashedProcessSvrStacks:
241 return KCrashedProcessSvrStacks();
242 case TConfigItem::ECrashedProcessMetaData:
243 return KCrashedProcessMetaData();
244 case TConfigItem::ECrashedThreadMetaData:
245 return KCrashedThreadMetaData();
246 case TConfigItem::ELocks:
248 case TConfigItem::EKernelHeap:
249 return KKernelHeap();
250 case TConfigItem::EVariantSpecificData:
251 return KVariantSpecific();
252 case TConfigItem::ERomInfo:
254 case TConfigItem::ELast:
259 #endif // ! __KERNEL_MODE__