diff -r ca8a1b6995f6 -r 52e343bb8f80 tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/rules/osttrace/OstTraceFormatRule.java --- a/tracefw/tracecompiler/src/com.nokia.tracecompiler/src/com/nokia/tracecompiler/engine/rules/osttrace/OstTraceFormatRule.java Tue Aug 31 16:45:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,348 +0,0 @@ -/* - * Copyright (c) 2010 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: - * - * Formatting rule for OST traces - * - */ -package com.nokia.tracecompiler.engine.rules.osttrace; - -import com.nokia.tracecompiler.engine.header.ComplexHeaderRule; -import com.nokia.tracecompiler.engine.rules.AutomaticTraceTextRule; -import com.nokia.tracecompiler.engine.rules.EntryTraceRule; -import com.nokia.tracecompiler.engine.rules.ExitTraceRule; -import com.nokia.tracecompiler.engine.rules.PerformanceEventRuleBase; -import com.nokia.tracecompiler.engine.rules.PerformanceEventStartRule; -import com.nokia.tracecompiler.engine.rules.PerformanceEventStopRule; -import com.nokia.tracecompiler.engine.rules.StateTraceRule; -import com.nokia.tracecompiler.engine.rules.TraceFormatRuleBase; -import com.nokia.tracecompiler.model.Trace; -import com.nokia.tracecompiler.model.TraceModelListener; -import com.nokia.tracecompiler.model.TraceObject; -import com.nokia.tracecompiler.model.TraceParameter; -import com.nokia.tracecompiler.plugin.TraceFormatConstants; -import com.nokia.tracecompiler.plugin.TraceHeaderContribution; -import com.nokia.tracecompiler.plugin.TraceAPIFormatter.TraceFormatType; -import com.nokia.tracecompiler.source.SourceUtils; - -/** - * Formatting rule for OST traces. - * - */ -public final class OstTraceFormatRule extends TraceFormatRuleBase implements - TraceHeaderContribution, TraceModelListener { - - /** - * Separator for parameters within trace text - */ - private static final String PARAMETER_VALUE_SEPARATOR = "="; //$NON-NLS-1$ - - /** - * Separator for parameter name value - */ - private static final String PARAMETER_SEPARATOR = ";"; //$NON-NLS-1$ - - /** - * String parameter tag - */ - private static final String STRING_PARAMETER_TAG = "%s"; //$NON-NLS-1$ - - /** - * Hex parameter tag - */ - private static final String HEX_PARAMETER_TAG = "0x%x"; //$NON-NLS-1$ - - /** - * SDEC parameter tag - */ - private static final String SDEC_PARAMETER_TAG = "%d"; //$NON-NLS-1$ - - /** - * UDEC parameter tag - */ - private static final String UDEC_PARAMETER_TAG = "%u"; //$NON-NLS-1$ - - /** - * Category for traces - */ - private static final String TRACE_CATEGORY = "EXTRACT_GROUP_ID(aTraceID)"; //$NON-NLS-1$ - - /** - * Name for storage - */ - public static final String STORAGE_NAME = "OstTraceFormat"; //$NON-NLS-1$ - - /** - * OstTraceEventStart tag - */ - public static final String OST_TRACE_EVENT_START_TAG = "OstTraceEventStart"; //$NON-NLS-1$ - - /** - * OstTraceEventStop tag - */ - public static final String OST_TRACE_EVENT_STOP_TAG = "OstTraceEventStop"; //$NON-NLS-1$ - - /** - * Ext-function declaration format - */ - private static final String HEADER_FORMAT = "OstTraceGen" //$NON-NLS-1$ - + TraceFormatConstants.PARAM_COUNT_FORMAT // Number of parameters - + "( TUint32 aTraceID" //$NON-NLS-1$ - + TraceFormatConstants.PARAMETERS_FORMAT // Trace parameters - + " )"; //$NON-NLS-1$ - - /** - * Activation query formatting - */ - private static final String ACTIVATION_FORMAT = "BTraceFiltered8( " //$NON-NLS-1$ - + TRACE_CATEGORY + ", " //$NON-NLS-1$ - + "EOstTraceActivationQuery, KOstTraceComponentID, aTraceID )"; //$NON-NLS-1$ - - /** - * Buffered trace format - */ - private static final String TRACE_BUFFER_FORMAT = "OstSendNBytes( " //$NON-NLS-1$ - + TRACE_CATEGORY + ", " //$NON-NLS-1$ - + "EOstTrace, KOstTraceComponentID, aTraceID, " //$NON-NLS-1$ - + TraceFormatConstants.DATA_BUFFER_FORMAT // Trace data - + ", " //$NON-NLS-1$ - + TraceFormatConstants.DATA_LENGTH_FORMAT // Trace data length - + " );"; //$NON-NLS-1$ - - /** - * Packed trace format - */ - private static final String TRACE_PACKED_FORMAT = "BTraceFilteredContext12( " //$NON-NLS-1$ - + TRACE_CATEGORY + ", " //$NON-NLS-1$ - + "EOstTrace, KOstTraceComponentID, aTraceID, " //$NON-NLS-1$ - + TraceFormatConstants.DATA_BUFFER_FORMAT // Trace data - + " );"; //$NON-NLS-1$ - - /** - * Template for the OstTraceDefinitions.h header file - */ - private static final String[] MAIN_HEADER_TEMPLATE = { "\r\n" //$NON-NLS-1$ - + "// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler\r\n" //$NON-NLS-1$ - + "// REMOVE BEFORE CHECK-IN TO VERSION CONTROL\r\n" //$NON-NLS-1$ - + "#define OST_TRACE_COMPILER_IN_USE\r\n" //$NON-NLS-1$ - + "#include \r\n#endif\r\n" }; //$NON-NLS-1$ - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.project.TraceProjectAPI#getName() - */ - public String getName() { - return STORAGE_NAME; - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.engine.source.TraceFormattingRule# - * getFormat(com.nokia.tracecompiler.model.Trace, - * com.nokia.tracecompiler.plugin.TraceAPIFormatter.TraceFormatType) - */ - public String getFormat(Trace trace, TraceFormatType formatType) { // CodForChk_Dis_ComplexFunc - String retval; - if (formatType == TraceFormatType.HEADER) { - retval = HEADER_FORMAT; - } else if (formatType == TraceFormatType.TRACE_BUFFER) { - retval = TRACE_BUFFER_FORMAT; - } else if (formatType == TraceFormatType.TRACE_PACKED) { - retval = TRACE_PACKED_FORMAT; - } else if (formatType == TraceFormatType.TRACE_ACTIVATION) { - retval = ACTIVATION_FORMAT; - } else { - retval = null; - } - - return retval; - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.engine.source.SourceFormatRule# - * mapParameterCountToSource(com.nokia.tracecompiler.model.Trace, int) - */ - @Override - public String mapParameterCountToSource(Trace trace, int count) { - String retval; - ComplexHeaderRule rule = trace.getExtension(ComplexHeaderRule.class); - if (rule != null && rule.getTraceIDDefineExtension() != null || trace.getExtension(EntryTraceRule.class)!= null) { - // Uses the extension tag with extension headers - retval = OstConstants.EXTENSION_TRACE_TAG; - } else { - retval = String.valueOf(count); - } - return retval; - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.project.TraceHeaderContribution# - * getContribution(com.nokia.tracecompiler.project.TraceHeaderContribution. - * TraceHeaderContributionType) - */ - public String[] getContribution(TraceHeaderContributionType type) { - String[] retval = null; - if (type == TraceHeaderContributionType.GLOBAL_DEFINES) { - retval = new String[] { "KOstTraceComponentID 0x" //$NON-NLS-1$ - + Integer.toHexString(getOwner().getModel().getID()) }; - } else if (type == TraceHeaderContributionType.MAIN_HEADER_CONTENT) { - retval = MAIN_HEADER_TEMPLATE; - } - return retval; - } - - /* - * (non-Javadoc) - * - * @see - * com.nokia.tracecompiler.engine.rules.ExtensionBase#setOwner(com.nokia - * .tracecompiler.model.TraceObject) - */ - @Override - public void setOwner(TraceObject owner) { - if (getOwner() != null) { - getOwner().getModel().removeModelListener(this); - } - super.setOwner(owner); - if (owner != null) { - owner.getModel().addModelListener(this); - } - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.model.TraceModelListener# - * objectAdded(com.nokia.tracecompiler.model.TraceObject, - * com.nokia.tracecompiler.model.TraceObject) - */ - public void objectAdded(TraceObject owner, TraceObject object) { - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.model.TraceModelListener# - * objectCreationComplete(com.nokia.tracecompiler.model.TraceObject) - */ - public void objectCreationComplete(TraceObject object) { - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.model.TraceModelListener# - * objectRemoved(com.nokia.tracecompiler.model.TraceObject, - * com.nokia.tracecompiler.model.TraceObject) - */ - public void objectRemoved(TraceObject owner, TraceObject object) { - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.model.TraceModelListener# - * propertyUpdated(com.nokia.tracecompiler.model.TraceObject, int) - */ - public void propertyUpdated(TraceObject object, int property) { - } - - /* - * (non-Javadoc) - * - * @see com.nokia.tracecompiler.project.TraceProjectAPI# - * formatTraceForExport(com.nokia.tracecompiler.model.Trace, - * com.nokia.tracecompiler.project.TraceProjectAPI.TraceFormatFlags) - */ - public String formatTraceForExport(Trace trace, TraceFormatFlags flags) { - // TODO: This uses default formats - // -> Should be configurable - // > for entry traces - // < for exit traces - // Logic analyzer format for performance traces - String retval = trace.getTrace(); - AutomaticTraceTextRule rule = trace - .getExtension(AutomaticTraceTextRule.class); - int parameterCount = trace.getParameterCount(); - if (rule != null) { - if (rule instanceof EntryTraceRule) { - retval = "> " //$NON-NLS-1$ - + retval; - } else if (rule instanceof ExitTraceRule) { - retval = "< " //$NON-NLS-1$ - + retval; - } else if (rule instanceof StateTraceRule) { - if (parameterCount == 2) { // CodForChk_Dis_Magic - retval = retval + "Machine" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + STRING_PARAMETER_TAG + PARAMETER_SEPARATOR - + "State" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + STRING_PARAMETER_TAG; - } else { - retval = retval - + "Machine" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + STRING_PARAMETER_TAG + PARAMETER_SEPARATOR - + "State" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + STRING_PARAMETER_TAG + PARAMETER_SEPARATOR - + "Instance" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + HEX_PARAMETER_TAG; - } - } - - if (parameterCount >= 1 && !(rule instanceof StateTraceRule)) { - TraceParameter param; - for (int i = 0; i < parameterCount; i++) { - param = trace.getParameter(i); - retval += PARAMETER_SEPARATOR + param.getName() - + PARAMETER_VALUE_SEPARATOR - + SourceUtils.mapParameterTypeToFormat(param); - } - } - } else { - PerformanceEventRuleBase perf = trace - .getExtension(PerformanceEventRuleBase.class); - if (perf != null) { - if (perf instanceof PerformanceEventStartRule) { - retval = retval + ">" + PARAMETER_SEPARATOR //$NON-NLS-1$ - + "Value" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + SDEC_PARAMETER_TAG; - } else if (perf instanceof PerformanceEventStopRule) { - retval = retval - + "<" //$NON-NLS-1$ - + PARAMETER_SEPARATOR - + "Value" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + SDEC_PARAMETER_TAG - + PARAMETER_SEPARATOR - + "Start Event Trace ID" + PARAMETER_VALUE_SEPARATOR //$NON-NLS-1$ - + UDEC_PARAMETER_TAG; - } - } - } - // If formatting is not supported the format characters and parameters - // are removed. - if (!flags.isFormattingSupported) { - int index = retval.indexOf(PARAMETER_SEPARATOR); - if (index > 0) { - retval = retval.substring(0, index); - } - retval = SourceUtils.removePrintfFormatting(retval).trim(); - } - return retval; - } -}