--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/traceservices/tracefw/utf_trace_api/inc/e32utrace.h Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,1683 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// Trace API
+//
+//
+
+#ifndef UTRACE_H
+#define UTRACE_H
+
+#ifdef __KERNEL_MODE__
+#include <kernel/kernel.h>
+#else //__KERNEL_MODE__
+#include <e32std.h>
+#endif //__KERNEL_MODE__
+#include <e32btrace.h>
+
+
+/**
+@file
+@publishedPartner
+@prototype
+*/
+
+/**
+Primary filter type.
+The primary filter type used as classification information.
+*/
+typedef TUint8 TPrimaryFilter;
+/**
+Secondary filter type.
+The secondary filter type used as classification information.
+*/
+typedef TUint32 TSecondaryFilter;
+
+
+/**
+The trace contains information used to debug an application
+This can be used in both UREL and UDEB builds.
+*/
+const TPrimaryFilter KDebug = 253;
+
+
+/**
+Schema type.
+Use the schema in conjunction with primary and secondary filters to determine
+how a trace shall be interpreted.
+The schema must represent a specific, well-documented, and consistent plan;
+a way to define the structure and/or its content.
+*/
+typedef TUint8 TTraceSchema;
+
+/**
+The schema is binary, or raw data.
+*/
+const TTraceSchema KBinary = 0;//Binary format
+/**
+The schema is ASCII text.
+*/
+const TTraceSchema KText = 1;//Text only
+
+/**
+Maximum length of a formatted string
+*/
+const TInt KMaxPrintfSize = 256;
+
+
+/**@internalComponent*/
+#define UTRACE_HEADER(aSize,aF1,aSchema,aContext,aPc) \
+ ((((aSize)+(4&(TBool)aContext<<2)+(4&(TBool)aPc<<2))<<BTrace::ESizeIndex*8) \
+ +(((BTrace::EContextIdPresent & (aContext<<3))|(BTrace::EPcPresent & (aPc<<4)))<<BTrace::EFlagsIndex*8) \
+ +((aF1)<<BTrace::ECategoryIndex*8) \
+ +((aSchema)<<BTrace::ESubCategoryIndex*8))
+/**@internalComponent*/
+#define UTracePf0(aF1,aSchema,aContext,aPc) \
+ ((BTrace::TBTrace1)BTrace::OutX) \
+ (UTRACE_HEADER(4,(aF1),(aSchema),(aContext),(aPc)))
+/**@internalComponent*/
+#define UTracePf1(aF1,aSchema,aContext,aPc,a1) \
+ ((BTrace::TBTrace2)BTrace::OutX)(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1))
+/**@internalComponent*/
+#define UTracePf2(aF1,aSchema,aContext,aPc,a1,a2) \
+ ((BTrace::TBTrace3)BTrace::OutX)(UTRACE_HEADER(12,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),(TUint32)(a2))
+/**@internalComponent*/
+#define UTracePf3(aF1,aSchema,aContext,aPc,a1,a2,a3) \
+ BTrace::OutX(UTRACE_HEADER(16,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
+/**@internalComponent*/
+#define UTracePfAny(aF1,aSchema,aContext,aPc,a1,aData,aDataSize) \
+ BTrace::OutBig(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),aData,(TInt)(aDataSize))
+/**@internalComponent*/
+#define UTraceSf0(aF1,aF2,aSchema,aContext,aPc) \
+ ((BTrace::TBTrace2)BTrace::OutFilteredX)(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2))
+/** @internalComponent */
+#define UTraceSf1(aF1,aF2,aSchema,aContext,aPc,a1) \
+ ((BTrace::TBTrace3)BTrace::OutFilteredX)(UTRACE_HEADER(12,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),(TUint32)(a1))
+/** @internalComponent */
+#define UTraceSf2(aF1,aF2,aSchema,aContext,aPc,a1,a2) \
+ BTrace::OutFilteredX(UTRACE_HEADER(16,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),(TUint32)(a1),(TUint32)(a2))
+/** @internalComponent */
+#define UTraceSfAny(aF1,aF2,aSchema,aContext,aPc,aData,aDataSize) \
+ BTrace::OutFilteredBig(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),aData,(TInt)(aDataSize))
+
+
+/**
+Class for tracing from user and kernel side.
+
+This appends entries to a trace log.
+Each trace point require classification information to be passed.
+Classification information, i.e. primary and secondary filter,
+is meta-data about the trace entry that can be used for
+filtering, e.g. the trace was inserted by a particular component.
+
+In order to append trace points to the trace log they
+need to be turned on and off at run-time, based on the classification.
+It is also possible to turn trace points on and off
+at compile-time using the SYMBIAN_TRACE_ENABLE macro.
+
+The class can be used in two ways, either using the
+static methods without any preparatory work, or by setting up
+an object which has all necessary information pre-defined which
+allows each consecutive call to contain a minimum of information.
+The latter set of methods are more intrusive both at run-time and
+for foot print.
+
+@code
+TBool includeContextID = ETrue;
+TBool includePc = EFalse;
+TUint32 traceData = aData;
+TPrimaryFilter filter1 = 253;
+
+TUTrace tracer(filter1, KBinary, includeContextID, includePc);
+tracer.Printf(_L("My trace point."));
+tracer.Trace(traceData);
+
+//or
+
+TUTrace::PrintfPrimary(filter1, KBinary, includeContextID, includePc, _L("My trace point with data %i."), traceData);
+TUTrace::TracePrimary(filter1, KBinary, includeContextID, includePc, traceData);
+
+@endcode
+
+
+Note:
+Trace does not enforce any security. It is the developer's responsibility
+to ensure that trace points do not contain any sensitive information that may
+be used to compromise platform security.
+
+@publishedPartner
+@prototype
+*/
+#if defined (SYMBIAN_TRACE_ENABLE) || defined (__DOXYGEN__)
+class TUTrace
+{
+public:
+
+ /**
+ Construct a trace object with classification for
+ primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ TUTrace(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
+ {
+ Set(aF1, aSchema, aIncludeContextID, aIncludePc);
+ }
+
+ /**
+ Construct a trace object with classification for both
+ primary and secondary filters.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ TUTrace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
+ {
+ Set(aF1, aF2, aSchema, aIncludeContextID, aIncludePc);
+ }
+
+
+ /**
+ Set the classification and additional information.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ void Set(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
+ {
+ iF2 = 0;
+ iF1 = aF1;
+ iSchema = aSchema;
+ iPresent = aIncludeContextID;
+ iPresent |= aIncludePc << EPc;
+ iReserved1 = 0;
+ iReserved2 = 0;
+ }
+
+
+ /**
+ Set the classification and additional information.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ void Set(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID , TBool aIncludePc)
+ {
+ Set(aF1, aSchema, aIncludeContextID, aIncludePc);
+ iF2 = aF2;
+ }
+
+ #ifdef __KERNEL_MODE__
+
+ /**
+ Prints a formatted string in kernel mode only.
+
+ The function uses Kern::AppendFormat() to do the formatting.
+
+ Although it is safe to call this function from an ISR, it polls the output
+ serial port and may take a long time to complete, invalidating any
+ real-time guarantee.
+
+ If called from an ISR, it is possible for output text to be intermingled
+ with other output text if one set of output interrupts or preempts another.
+
+ Some of the formatting options may not work inside an ISR.
+
+ Be careful not to use a string that is too long to fit onto the stack.
+ If the specified string is too big to fit into a single trace
+ a multipart trace is generated.
+
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Calling thread can either be in a critical section or not.
+ @pre Interrupts must be enabled.
+ @pre Kernel must be unlocked
+ @pre Call in any context.
+ @pre Suitable for use in a device driver
+ @pre Classification information must be set up
+
+ @see Kern::AppendFormat()
+ @see BTrace::TMultipart
+ */
+ TBool Printf(const char* aFmt, ...)
+ {
+ TBuf8<KMaxPrintfSize> buf;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ Kern::AppendFormat(buf,aFmt,list);
+ TUint8 oldFormat = iSchema;
+ iSchema = KText;
+ TBool logged = EFalse;
+ logged = Trace(buf.Ptr(),buf.Size());
+ iSchema = oldFormat;
+ return logged;
+ }
+
+ #else //__KERNEL_MODE__
+
+ /**
+ Prints a formatted string.
+
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(const char* aFmt, ...)
+ {
+ TTruncateOverflow8 overflow;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TPtrC8 fmt((const TText8*)aFmt);
+ TBuf8<KMaxPrintfSize> buf;
+ buf.AppendFormatList(fmt,list,&overflow);
+ TUint8 oldFormat = iSchema;
+ iSchema = KText;
+ TBool logged = EFalse;
+ logged = Trace(buf.PtrZ(),buf.Size());
+ iSchema = oldFormat;
+ return logged;
+ };
+
+ /**
+ Prints a formatted string.
+
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(TRefByValue<const TDesC16> aFmt,...)
+ {
+ TTruncateOverflow16 overflow;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TBuf<KMaxPrintfSize> buf;
+ buf.AppendFormatList(aFmt,list,&overflow);
+ TUint8 oldFormat = iSchema;
+ iSchema = KText;
+ TBool logged = EFalse;
+ #ifdef _UNICODE
+ TPtr8 p(buf.Collapse());
+ logged = Trace(buf.PtrZ(), p.Size());
+ #else
+ logged = Trace(buf.PtrZ(), buf.Size());
+ #endif //_UNICODE
+ iSchema = oldFormat;
+ return logged;
+ };
+
+ /**
+ Prints a string.
+
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(const TDesC8& aDes)
+ {
+ TUint8 oldFormat = iSchema;
+ iSchema = KText;
+ TBool logged = EFalse;
+ logged = Trace(aDes.Ptr(), aDes.Size());
+ iSchema = oldFormat;
+ return logged;
+ };
+
+ /**
+ Prints a string.
+
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(const TDesC16& aDes)
+ {
+ TUint8 oldFormat = iSchema;
+ iSchema = KText;
+ TBool logged = EFalse;
+ logged = Trace(aDes.Ptr(), aDes.Size());
+ iSchema = oldFormat;
+ return logged;
+ };
+
+ #endif //__KERNEL_MODE__
+
+ /**
+ Sends a trace with no payload data.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace()
+ {
+ if(iF2 > 0)
+ {
+ return UTraceSf0(iF1,iF2,iSchema,ContextID(),Pc());
+ }
+ return UTracePf0(iF1,iSchema,ContextID(),Pc());
+ };
+
+ /**
+ Sends a trace containing 4 bytes of data.
+
+ @param aData1 4 bytes of data.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace(TUint32 aData1)
+ {
+ if(iF2 > 0)
+ {
+ return UTraceSf1(iF1,iF2,iSchema,ContextID(),Pc(), aData1);
+ }
+ return UTracePf1(iF1,iSchema,ContextID(),Pc(), aData1);
+ };
+
+ /**
+ Sends a trace with 8 bytes of data.
+
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace(TUint32 aData1, TUint32 aData2)
+ {
+ if(iF2 > 0)
+ {
+ return UTraceSf2(iF1,iF2,iSchema,ContextID(),Pc(), aData1, aData2);
+ }
+ return UTracePf2(iF1,iSchema,ContextID(),Pc(),aData1,aData2);
+ };
+
+ /**
+ Sends a trace with 12 bytes of data.
+ Note: This method does not support secondary filtering.
+
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+ @param aData3 4 bytes of data
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace(TUint32 aData1, TUint32 aData2, TUint32 aData3)
+ {
+ if(iF2 > 0)
+ {
+ return EFalse;
+ }
+ return UTracePf3(iF1,iSchema,ContextID(),Pc(),aData1,aData2,aData3);
+ };
+
+ /**
+ Sends a trace with variable length data.
+
+ If the specified data is too big to fit into a single
+ trace record a multipart trace is generated.
+
+ @param aData Address of addition data to add to trace.
+ Must be word aligned, i.e. a multiple of 4.
+ @param aSize Number of bytes of additional data.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+
+ @see BTrace::TMultipart
+ */
+ TBool Trace(const TAny* aData, TInt aSize)
+ {
+ if(iF2 > 0)
+ {
+ return UTraceSfAny(iF1,iF2,iSchema,ContextID(),Pc(),aData,aSize);
+ }
+ return UTracePfAny(iF1,iSchema,ContextID(),Pc(),0,aData,aSize);
+ };
+
+
+ //Static methods
+ #ifdef __KERNEL_MODE__
+
+ /**
+ Prints a formatted string in kernel mode only.
+ The trace is classified by primary filter only.
+
+ The function uses Kern::AppendFormat() to do the formatting.
+
+ Although it is safe to call this function from an ISR, it polls the output
+ serial port and may take a long time to complete, invalidating any
+ real-time guarantee.
+
+ If called from an ISR, it is possible for output text to be intermingled
+ with other output text if one set of output interrupts or preempts another.
+
+ Some of the formatting options may not work inside an ISR.
+
+ Be careful not to use a string that is too long to fit onto the stack.
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Calling thread can either be in a critical section or not.
+ @pre Interrupts must be enabled.
+ @pre Kernel must be unlocked
+ @pre Call in any context.
+ @pre Suitable for use in a device driver
+
+ @see Kern::AppendFormat()
+ @see BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const char* aFmt, ...)
+ {
+ TBuf8<KMaxPrintfSize> buf;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ Kern::AppendFormat(buf,aFmt,list);
+ return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.Ptr(),buf.Size());
+ }
+
+ #else //__KERNEL_MODE__
+
+ /**
+ Prints a formatted string. The trace is classified by primary filter only.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const char* aFmt, ...)
+ {
+ TTruncateOverflow8 overflow;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TPtrC8 fmt((const TText8*)aFmt);
+ TBuf8<KMaxPrintfSize> buf;
+ buf.AppendFormatList(fmt,list,&overflow);
+ return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.PtrZ(),buf.Size());
+ };
+
+ /**
+ Prints a formatted string. The trace is classified by primary filter only.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, TRefByValue<const TDesC16> aFmt,...)
+ {
+ TTruncateOverflow16 overflow;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TBuf<KMaxPrintfSize> buf;
+ buf.AppendFormatList(aFmt,list,&overflow);
+ #ifdef _UNICODE
+ TPtr8 p(buf.Collapse());
+ return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.PtrZ(), p.Size());
+ #else
+ return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.PtrZ(), buf.Size());
+ #endif //_UNICODE
+ };
+
+ /**
+ Prints a string. The trace is classified by primary filter only.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const TDesC8& aDes)
+ {
+ return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc,0, aDes.Ptr(), aDes.Size());
+ };
+
+ /**
+ Prints a string. The trace is classified by primary filter only.
+
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const TDesC16& aDes)
+ {
+ TUTrace trace(aF1,KText,aIncludeContextID,aIncludePc);
+ return trace.Printf(aDes);
+ };
+
+ /**
+ Prints a formatted string. The trace is classified by primary and secondary filter.
+
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, const char* aFmt, ...)
+ {
+ TTruncateOverflow8 overflow;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TPtrC8 fmt((const TText8*)aFmt);
+ TBuf8<KMaxPrintfSize> buf;
+ buf.AppendFormatList(fmt,list,&overflow);
+ return UTraceSfAny(aF1, aF2, KText, aIncludeContextID, aIncludePc, buf.PtrZ(),buf.Size());
+ };
+
+ /**
+ Prints a formatted string. The trace is classified by primary and secondary filter.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, TRefByValue<const TDesC16> aFmt,...)
+ {
+ TTruncateOverflow16 overflow;
+ VA_LIST list;
+ VA_START(list,aFmt);
+ TBuf<KMaxPrintfSize> buf;
+ buf.AppendFormatList(aFmt,list,&overflow);
+ #ifdef _UNICODE
+ TPtr8 p(buf.Collapse());
+ return UTraceSfAny(aF1, aF2, KText, aIncludeContextID, aIncludePc, buf.PtrZ(), p.Size());
+ #else
+ return UTraceSfAny(aF1, aF2, KText, aIncludeContextID, aIncludePc, buf.PtrZ(), buf.Size());
+ #endif //_UNICODE
+ };
+
+ /**
+ Prints a string. The trace is classified by primary and secondary filter.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, const TDesC8& aDes)
+ {
+ return UTraceSfAny(aF1, aF2, KText,aIncludeContextID, aIncludePc, aDes.Ptr(), aDes.Size());
+ };
+
+ /**
+ Prints a string. The trace is classified by primary and secondary filter.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, const TDesC16& aDes)
+ {
+ TUTrace trace(aF1,aF2,KText,aIncludeContextID,aIncludePc);
+ return trace.Printf(aDes);
+ };
+
+ #endif //__KERNEL_MODE_
+
+ /**
+ Sends a trace with no payload. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
+ {
+ return UTracePf0(aF1, aSchema, aIncludeContextID, aIncludePc);
+ }
+
+ /**
+ Sends a trace with 4 bytes of data. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1)
+ {
+ return UTracePf1(aF1, aSchema, aIncludeContextID, aIncludePc, aData1);
+ }
+
+ /**
+ Sends a trace with 8 bytes of data. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1, TUint32 aData2)
+ {
+ return UTracePf2(aF1, aSchema, aIncludeContextID, aIncludePc,aData1,aData2);
+ }
+
+ /**
+ Sends a trace with 12 bytes of data. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+ @param aData3 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1, TUint32 aData2, TUint aData3)
+ {
+ return UTracePf3(aF1, aSchema, aIncludeContextID, aIncludePc,aData1,aData2,aData3);
+ }
+
+ /**
+ Sends a trace with variable length data. The trace is classified
+ by primary filter only.
+
+ If the specified data is too big to fit into a single
+ trace record a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData Address of addition data to add to trace.
+ Must be word aligned, i.e. a multiple of 4.
+ @param aSize Number of bytes of additional data.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, const TAny* aData, TInt aSize)
+ {
+ return UTracePfAny(aF1, aSchema, aIncludeContextID, aIncludePc, 0, aData, aSize);
+ }
+
+ /**
+ Sends a trace with no payload. The trace is classified
+ by primary and secondary filter.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+
+ @return The trace was/was not logged.
+ */
+ static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
+ {
+ return UTraceSf0(aF1, aF2, aSchema, aIncludeContextID, aIncludePc);
+ }
+
+ /**
+ Sends a trace with 4 bytes of data. The trace is classified
+ by primary and secondary filter.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1)
+ {
+ return UTraceSf1(aF1, aF2, aSchema , aIncludeContextID, aIncludePc, aData1);
+ }
+
+ /**
+ Sends a trace with 8 bytes of data. The trace is classified
+ by primary and secondary filter.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1, TUint32 aData2)
+ {
+ return UTraceSf2(aF1, aF2, aSchema , aIncludeContextID, aIncludePc,aData1,aData2);
+ }
+
+ /**
+ Sends a trace with variable length data. The trace is classified
+ by primary and secondary filter.
+
+ If the specified data is too big to fit into a single
+ trace record a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData Address of addition data to add to trace.
+ Must be word aligned, i.e. a multiple of 4.
+ @param aSize Number of bytes of additional data.
+
+ @return The trace was/was not logged.
+
+ @see BTrace::TMultipart
+ */
+ static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, const TAny* aData, TInt aSize)
+ {
+ return UTraceSfAny(aF1, aF2, aSchema, aIncludeContextID, aIncludePc, aData, aSize);
+ }
+
+private:
+
+ // See/Update comments below
+ TUTrace(){};
+
+ /**
+ @internalComponent
+ */
+ enum TTraceInfoPresent
+ {
+ EContext = 0,
+ EPc = 1
+ };
+
+ /**
+ Dummy class to toss away overflow
+ @internalComponent
+ */
+ #ifndef __KERNEL_MODE__
+ class TTruncateOverflow16 : public TDes16Overflow
+ {
+ public:
+ virtual void Overflow(TDes&) {};
+ };
+ /**
+ Dummy class to toss away overflow
+ @internalComponent
+ */
+ class TTruncateOverflow8 : public TDes8Overflow
+ {
+ public:
+ virtual void Overflow(TDes8&) {};
+ };
+ #endif //__KERNEL_MODE__
+
+ /**
+ @internalComponent
+ */
+ TBool ContextID()
+ {
+ return iPresent&1;
+ };
+
+ /**
+ @internalComponent
+ */
+ TBool Pc()
+ {
+ return (iPresent&2)>>EPc;
+ };
+
+private:
+ TPrimaryFilter iF1;
+ TTraceSchema iSchema;
+ TSecondaryFilter iF2;
+ TInt8 iPresent;
+
+ TUint32 iReserved1;
+ TUint32 iReserved2;
+};
+
+#else //SYMBIAN_TRACE_ENABLE
+
+
+class TUTrace
+{
+public:
+ /**
+ Construct a trace object with classification for
+ primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ TUTrace(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
+
+ /**
+ Construct a trace object with classification for both
+ primary and secondary filters.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ TUTrace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
+
+ /**
+ Set the classification and additional information.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ void Set(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
+
+ /**
+ Set the classification and additional information.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ */
+ void Set(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
+ #ifdef __KERNEL_MODE__
+
+ /**
+ Prints a formatted string in kernel mode only.
+
+ The function uses Kern::AppendFormat() to do the formatting.
+
+ Although it is safe to call this function from an ISR, it polls the output
+ serial port and may take a long time to complete, invalidating any
+ real-time guarantee.
+
+ If called from an ISR, it is possible for output text to be intermingled
+ with other output text if one set of output interrupts or preempts another.
+
+ Some of the formatting options may not work inside an ISR.
+
+ Be careful not to use a string that is too long to fit onto the stack.
+ If the specified string is too big to fit into a single trace
+ a multipart trace is generated.
+
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Calling thread can either be in a critical section or not.
+ @pre Interrupts must be enabled.
+ @pre Kernel must be unlocked
+ @pre Call in any context.
+ @pre Suitable for use in a device driver
+ @pre Classification information must be set up
+
+ @see Kern::AppendFormat()
+ @See BTrace::TMultipart
+ */
+ TBool Printf(const char* /*aFmt*/, ...)
+ {
+ return EFalse;
+ }
+
+ #else //__KERNEL_MODE__
+
+ /**
+ Prints a formatted string.
+
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(const char* /*aFmt*/, ...)
+ {
+ return EFalse;
+ };
+
+ /**
+ Prints a formatted string.
+
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(TRefByValue<const TDesC16> /*aFmt*/,...)
+ {
+ return EFalse;
+ };
+
+ /**
+ Prints a string.
+
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(const TDesC8& /*aDes*/)
+ {
+ return EFalse;
+ };
+
+ /**
+ Prints a string.
+
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Printf(const TDesC16& /*aDes*/)
+ {
+ return EFalse;
+ };
+
+ #endif // __KERNEL_MODE__
+
+ /**
+ Sends a trace with no payload data.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace()
+ {
+ return EFalse;
+ };
+
+ /**
+ Sends a trace containing 4 bytes of data.
+
+ @param aData1 4 bytes of data.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace(TUint32 /*aData1*/)
+ {
+ return EFalse;
+ };
+
+ /**
+ Sends a trace with 8 bytes of data.
+
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace(TUint32 /*aData1*/, TUint32 /*aData2*/)
+ {
+ return EFalse;
+ };
+
+ /**
+ Sends a trace with 12 bytes of data.
+ Note: This method does not support secondary filtering.
+
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+ @param aData3 4 bytes of data
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+ */
+ TBool Trace(TUint32 /*aData1*/, TUint32 /*aData2*/, TUint32 /*aData3*/)
+ {
+ return EFalse;
+ };
+
+ /**
+ Sends a trace with variable length data.
+
+ If the specified data is too big to fit into a single
+ trace record a multipart trace is generated.
+
+ @param aData Address of addition data to add to trace.
+ Must be word aligned, i.e. a multiple of 4.
+ @param aSize Number of bytes of additional data.
+
+ @return The trace was/was not logged.
+
+ @pre Classification information must be set up
+
+ @See BTrace::TMultipart
+ */
+ TBool Trace(const TAny* /*aData*/, TInt /*aSize*/)
+ {
+ return EFalse;
+ };
+
+ #ifdef __KERNEL_MODE__
+
+ /**
+ Prints a formatted string in kernel mode only.
+ The trace is classified by primary filter only.
+
+ The function uses Kern::AppendFormat() to do the formatting.
+
+ Although it is safe to call this function from an ISR, it polls the output
+ serial port and may take a long time to complete, invalidating any
+ real-time guarantee.
+
+ If called from an ISR, it is possible for output text to be intermingled
+ with other output text if one set of output interrupts or preempts another.
+
+ Some of the formatting options may not work inside an ISR.
+
+ Be careful not to use a string that is too long to fit onto the stack.
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @pre Calling thread can either be in a critical section or not.
+ @pre Interrupts must be enabled.
+ @pre Kernel must be unlocked
+ @pre Call in any context.
+ @pre Suitable for use in a device driver
+
+ @see Kern::AppendFormat()
+ @See BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const char* /*aFmt*/, ...)
+ {
+ return EFalse;
+ }
+
+ #else //__KERNEL_MODE__
+
+ /**
+ Prints a formatted string. The trace is classified by primary filter only.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const char* /*aFmt*/, ...)
+ {
+ return EFalse;
+ };
+
+ /**
+ Prints a formatted string. The trace is classified by primary filter only.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TRefByValue<const TDesC16> /*aFmt*/,...)
+ {
+ return EFalse;
+ };
+
+
+ /**
+ Prints a string. The trace is classified by primary filter only.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC8& /*aDes*/)
+ {
+ return EFalse;
+ };
+
+ /**
+ Prints a string. The trace is classified by primary filter only.
+
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC16& /*aDes*/)
+ {
+ return EFalse;
+ };
+
+
+ /**
+ Prints a formatted string. The trace is classified by primary and secondary filter.
+
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const char* /*aFmt*/, ...)
+ {
+ return EFalse;
+ };
+
+ /**
+ Prints a formatted string. The trace is classified by primary and secondary filter.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aFmt The format string. This must not be longer than 256 characters.
+ @param ... A variable number of arguments to be converted to text as dictated
+ by the format string.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TRefByValue<const TDesC16> /*aFmt*/,...)
+ {
+ return EFalse;
+ };
+
+
+ /**
+ Prints a string. The trace is classified by primary and secondary filter.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC8& /*aDes*/)
+ {
+ return EFalse;
+ };
+
+
+ /**
+ Prints a string. The trace is classified by primary and secondary filter.
+
+ If the specified string is too long to fit into a single trace record
+ a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aDes The string. This can be of variable length.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC16& /*aDes*/)
+ {
+ return EFalse;
+ };
+
+ #endif //__KERNEL_MODE_
+
+ /**
+ Sends a trace with no payload. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with 4 bytes of data. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/)
+
+ {
+ return EFalse;
+ }
+
+ /**
+ Sends a trace with 8 bytes of data. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/, TUint32 /*aData2*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with 12 bytes of data. The trace is classified
+ by primary filter only.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+ @param aData3 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/, TUint32 /*aData2*/, TUint /*aData3*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with variable length data. The trace is classified
+ by primary filter only.
+
+ If the specified data is too big to fit into a single
+ trace record a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData Address of addition data to add to trace.
+ Must be word aligned, i.e. a multiple of 4.
+ @param aSize Number of bytes of additional data.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TAny* /*aData*/, TInt /*aSize*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with no payload. The trace is classified
+ by primary and secondary filter.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+
+ @return The trace was/was not logged.
+ */
+ static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with 4 bytes of data. The trace is classified
+ by primary and secondary filter.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with 8 bytes of data. The trace is classified
+ by primary and secondary filter.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData1 4 bytes of data
+ @param aData2 4 bytes of data
+
+ @return The trace was/was not logged.
+ */
+ static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/, TUint32 /*aData2*/)
+ {
+ return EFalse;
+ }
+
+
+ /**
+ Sends a trace with variable length data. The trace is classified
+ by primary and secondary filter.
+
+ If the specified data is too big to fit into a single
+ trace record a multipart trace is generated.
+
+ @param aF1 Primary filter as classification information
+ @param aF2 Secondary filter as classification information
+ @param aSchema The schema used to determine the format of the content
+ @param aIncludeContextID Include context ID in the trace
+ @param aIncludePc Include program counter in the trace
+ @param aData Address of addition data to add to trace.
+ Must be word aligned, i.e. a multiple of 4.
+ @param aSize Number of bytes of additional data.
+
+ @return The trace was/was not logged.
+
+ @See BTrace::TMultipart
+ */
+ static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TAny* /*aData*/, TInt /*aSize*/)
+ {
+ return EFalse;
+ }
+
+private:
+ /**
+ Default constructor. This prevents accidental empty initialisation of traces.
+ */
+ TUTrace(){};
+
+ /**
+ @internalComponent
+ */
+ enum TTraceInfoPresent
+ {
+ EContext = 0,
+ EPc = 1
+ };
+
+ /**
+ Dummy class to toss away overflow
+ @internalComponent
+ */
+ #ifndef __KERNEL_MODE__
+ class TTruncateOverflow16 : public TDes16Overflow
+ {
+ public:
+ virtual void Overflow(TDes&) {};
+ };
+ /**
+ Dummy class to toss away overflow
+ @internalComponent
+ */
+ class TTruncateOverflow8 : public TDes8Overflow
+ {
+ public:
+ virtual void Overflow(TDes8&) {};
+ };
+ #endif //__KERNEL_MODE__
+
+ /**
+ @internalComponent
+ */
+ TBool ContextID()
+ {
+ return EFalse;
+ };
+
+ /**
+ @internalComponent
+ */
+ TBool Pc()
+ {
+ return EFalse;
+ };
+
+private:
+ TPrimaryFilter iF1;
+ TTraceSchema iSchema;
+ TSecondaryFilter iF2;
+ TInt8 iPresent;
+
+ TUint32 iReserved1;
+ TUint32 iReserved2;
+};
+
+#endif //SYMBIAN_TRACE_ENABLE
+
+
+#endif //UTRACE_H