/******************************************************************************* * 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.EDeviceHierarchyLevel; /** * Interface that represent device description hierarchy: family-subfamily-device-variant */ public interface ICpDeviceItem extends ICpItem { /** * Returns device parent of this item if any * @return device item parent or null if parent if not device item (family parent is not a device item) */ ICpDeviceItem getDeviceItemParent(); /** * Check is this item has device item children * @return true if the item has device item children */ boolean hasDeviceItems(); /** Returns list of child device items: sub-families, devices, variants * @return list of child device items */ Collection<ICpDeviceItem> getDeviceItems(); /** * Returns hierarchy level of this item: family, sub-family, device or variant * @return item hierarchy level */ EDeviceHierarchyLevel getLevel(); /** * Returns a name value corresponding to given hierarchy level * @param level hierarchy level * @return level name */ String getLevelName(EDeviceHierarchyLevel level); /** * Returns effective processor properties for this device item (can be defined at higher level) * @return map of processor name - processor property entries */ Map<String, ICpItem> getProcessors(); /** * Returns effective processor property for given processor * @param processorName processor name for which to get property * @return processor property as ICpItem */ ICpItem getProcessor(String processorName); /** * Returns effective processor count for this device item * @return map of processor name (pname) - processor property entries */ int getProcessorCount(); /** * Returns item containing list of effective properties for this device merged with properties from upper levels in device hierarchy * @param processorName processor name for which to get properties * @return ICpItem containing list of device effective properties for supplied processor name */ ICpItem getEffectiveProperties(String processorName); /** * Returns device debug configuration for given processor * @param processorName processor name for which to get debug configuration * @return ICpDebugConfiguration for supplied processor name */ ICpDebugConfiguration getDebugConfiguration(String processorName); /** * @param deviceName * @param eDeviceHierarchyLevel * @return the {@link ICpDeviceItem}, or null if no such device exists */ ICpDeviceItem findDeviceByName(String deviceName, int eDeviceHierarchyLevel); }