/******************************************************************************* * 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 com.arm.cmsis.pack.common.CmsisConstants; /** * */ public class CpMemory extends CpDeviceProperty implements ICpMemory { public CpMemory(ICpItem parent, String tag) { super(parent, tag); } @Override public String constructId() { String id = getAttribute(CmsisConstants.ID); if(id.isEmpty()) id = getAttribute(CmsisConstants.NAME); return id; } @Override public boolean isStartup() { return attributes().getAttributeAsBoolean(CmsisConstants.STARTUP, false); } @Override public String getAccess() { String access = getAttribute(CmsisConstants.ACCESS); if(access.isEmpty()) { access += READ_ACCESS; String id = attributes().getAttribute(CmsisConstants.ID); if(id != null) { if(id.startsWith(CmsisConstants.IRAM)) access += WRITE_ACCESS; } else { // actually error situation, should not happen by correctly written pdsc } access += EXECUTE_ACCESS; } return access; } @Override public boolean isAccess(char access) { return getAccess().indexOf(access) >= 0; } @Override public boolean isRAM() { String access = getAccess(); return access.indexOf(READ_ACCESS) >= 0 && access.indexOf(WRITE_ACCESS) >= 0 && access.indexOf(EXECUTE_ACCESS) >= 0; } @Override public boolean isROM() { String access = getAccess(); return access.indexOf(WRITE_ACCESS) < 0 && access.indexOf(READ_ACCESS) >= 0 && access.indexOf(EXECUTE_ACCESS) >= 0; } @Override public boolean isReadAccess() { return isAccess(READ_ACCESS); } @Override public boolean isWriteAccess() { return isAccess(WRITE_ACCESS); } @Override public boolean isExecuteAccess() { return isAccess(EXECUTE_ACCESS); } @Override public boolean isSecureAccess() { return isAccess(SECURE_ACCESS); } @Override public boolean isNonSecureAccess() { return isAccess(NON_SECURE_ACCESS) && !isAccess(SECURE_ACCESS); } @Override public boolean isCallableAccess() { return isAccess(CALLABLE_ACCESS); } @Override public boolean isPeripheralAccess() { return isAccess(PERIPHERAL_ACCESS); } }