/*******************************************************************************
* Copyright (c) 2015 ARM Ltd. and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* ARM Ltd and ARM Germany GmbH - Initial API and implementation
*******************************************************************************/
package com.arm.cmsis.pack.data;
import java.util.Collection;
import java.util.Map;
import com.arm.cmsis.pack.enums.EDebugProtocolType;
/**
* Convenience interface to access debug/trace device configuration
*/
public interface ICpDebugConfiguration extends ICpItem {
/**
* Returns default device debug protocol (usually SWD )
* @return EDebugProtocolType: SWD, JTAG or CJTAG
*/
EDebugProtocolType getDefaultProtocolType();
/**
* Returns if Debug Port is a CoreSight SWJ-DP (default is true)
* @return true if SWJ-DP
*/
boolean isSWJ();
/**
* Returns default debug clock (10 MHz if not specified)
* @return debug clock value
*/
long getDefaultClock();
/**
* Returns absolute SDF filename: System Description File, which contains information about available system components, types and versions
* @return absolute SDF filename
*/
String getSdfFile();
/**
* Returns absolute SVD filename
* @return absolute SVD filename
*/
String getSvdFile();
/**
* Returns number of processor units
* @return processor unit count (1 is default)
*/
int getPunitsCount();
/**
* Returns "debug" item for processor unit 0 (default)
* @return ICpDebug for default processor unit
*/
ICpDebug getDebugItem();
/**
* Returns "debug" item for given processor unit
* @param punitIndex processor unit index
* @return ICpDebug for processor unit
*/
ICpDebug getDebugItem(int punitIndex);
/**
* Returns "trace" item
* @return ICpTrace
*/
ICpTrace getTraceItem();
/**
* Check if trace capabilities are available
* @return true if supported
*/
boolean isTraceSupported();
/**
* Returns "debugvars" item
* @return ICpDebugVars
*/
ICpDebugVars getDebugVars();
/**
* Return collection of available debug ports
* @return map of index to ICpDebugPort
*/
Map<Long, ICpDebugPort> getDebugPorts();
/**
* Returns debug port for given index
* @param index debug port index
* @return ICpDebugPort or null if no port is defined for given index
*/
ICpDebugPort getDebugPort(long index);
/**
* Returns collection of debug sequences
* @return map of name to ICpSequence
*/
Map<String, ICpSequence> getSequences();
/**
* Returns sequence for given name
* @return ICpSequence or null if not found
*/
ICpSequence getSequence(String name);
/**
* Returns collection of memory items
* @return map of id to IcpMemory
*/
Map<String, ICpMemory> getMemoryItems();
/**
* Returns memory corresponding to specified id
* @param id memory ID
* @return ICpMemory or null if not defined
*/
ICpMemory getMemory(String id);
/**
* Default memory that shall be used by linker
* @return ICpMemory
*/
ICpMemory getDefaulMemory();
/**
* Memory that shall be used for the startup by linker
* @return ICpMemory
*/
ICpMemory getStartupMemory();
/**
* Returns collection of flash algorithms
* @return collection of ICpAlgorithm items
*/
Collection<ICpAlgorithm> getAlgorithms();
/**
* Returns default flash algorithms (those that have attribute "default="1")
* @return collection of default ICpAlgorithm items
*/
Collection<ICpAlgorithm> getDefaultAlgorithms();
}