[cooja] memory: Added address and symbol based memory access classes
This commit is contained in:
parent
d1c05300a9
commit
6b15e7837d
256
tools/cooja/java/org/contikios/cooja/mote/memory/Memory.java
Normal file
256
tools/cooja/java/org/contikios/cooja/mote/memory/Memory.java
Normal file
|
@ -0,0 +1,256 @@
|
|||
/*
|
||||
* Copyright (c) 2014, TU Braunschweig.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
package org.contikios.cooja.mote.memory;
|
||||
|
||||
import org.contikios.cooja.mote.memory.MemoryLayout.DataType;
|
||||
|
||||
/**
|
||||
* Represents memory that can be accessed with address and size informations.
|
||||
*
|
||||
* @author Enrico Jorns
|
||||
*/
|
||||
public abstract class Memory {
|
||||
|
||||
private final MemoryInterface memIntf;
|
||||
|
||||
/**
|
||||
* Creates new memory for given MemoryLayout.
|
||||
*
|
||||
* @param intf
|
||||
*/
|
||||
public Memory(MemoryInterface intf) {
|
||||
memIntf = intf;
|
||||
}
|
||||
|
||||
// -- Get fixed size types
|
||||
/**
|
||||
* Read 8 bit integer from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return 8 bit value read from address
|
||||
*/
|
||||
public byte getInt8ValueOf(long addr) {
|
||||
return memIntf.getMemorySegment(addr, DataType.INT8.getSize())[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 16 bit integer from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return 16 bit value read from address
|
||||
*/
|
||||
public short getInt16ValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(
|
||||
memIntf.getLayout(),
|
||||
memIntf.getMemorySegment(addr, DataType.INT16.getSize())).getInt16();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 32 bit integer from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return 32 bit value read from address
|
||||
*/
|
||||
public int getInt32ValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(
|
||||
memIntf.getLayout(),
|
||||
memIntf.getMemorySegment(addr, DataType.INT32.getSize())).getInt32();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 64 bit integer from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return 64 bit value read from address
|
||||
*/
|
||||
public long getInt64ValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(
|
||||
memIntf.getLayout(),
|
||||
memIntf.getMemorySegment(addr, DataType.INT64.getSize())).getInt64();
|
||||
}
|
||||
|
||||
// -- Get compiler-dependent types
|
||||
/**
|
||||
* Read byte from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return byte read from address
|
||||
*/
|
||||
public byte getByteValueOf(long addr) {
|
||||
return memIntf.getMemorySegment(addr, DataType.BYTE.getSize())[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Read short from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return short read from address
|
||||
*/
|
||||
public short getShortValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(memIntf.getLayout(), memIntf.getMemorySegment(addr, 2)).getShort();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read integer from address.
|
||||
* <p>
|
||||
* Note: Size of integer depends on platform type.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return integer read from address
|
||||
*/
|
||||
public int getIntValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(memIntf.getLayout(), memIntf.getMemorySegment(addr, memIntf.getLayout().intSize)).getInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read long from address.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return long read from address
|
||||
*/
|
||||
public long getLongValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(memIntf.getLayout(), memIntf.getMemorySegment(addr, 4)).getLong();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read pointer from address.
|
||||
* <p>
|
||||
* Note: Size of pointer depends on platform type.
|
||||
*
|
||||
* @param addr Address to read from
|
||||
* @return pointer read from address
|
||||
*/
|
||||
public long getAddrValueOf(long addr) {
|
||||
return MemoryBuffer.wrap(memIntf.getLayout(), memIntf.getMemorySegment(addr, memIntf.getLayout().addrSize)).getAddr();
|
||||
}
|
||||
|
||||
// -- Set fixed size types
|
||||
/**
|
||||
* Write 8 bit integer to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value 8 bit value to write
|
||||
*/
|
||||
public void setInt8ValueOf(long addr, byte value) {
|
||||
memIntf.setMemorySegment(addr, new byte[]{value});
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 16 bit integer to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value 16 bit value to write
|
||||
*/
|
||||
public void setInt16ValueOf(long addr, short value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(
|
||||
memIntf.getLayout(),
|
||||
new byte[DataType.INT16.getSize()]).putShort(value).getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 32 bit integer to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value 32 bit value to write
|
||||
*/
|
||||
public void setInt32ValueOf(long addr, int value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(
|
||||
memIntf.getLayout(),
|
||||
new byte[DataType.INT32.getSize()]).putInt(value).getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 64 bit integer to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value 64 bit value to write
|
||||
*/
|
||||
public void setInt64ValueOf(long addr, long value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(
|
||||
memIntf.getLayout(),
|
||||
new byte[DataType.INT64.getSize()]).putLong(value).getBytes());
|
||||
}
|
||||
|
||||
// -- Set compiler-dependent types
|
||||
/**
|
||||
* Write byte to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value byte to write
|
||||
*/
|
||||
public void setByteValueOf(long addr, byte value) {
|
||||
memIntf.setMemorySegment(addr, new byte[]{value});
|
||||
}
|
||||
|
||||
/**
|
||||
* Write short to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value short to write
|
||||
*/
|
||||
public void setShortValueOf(long addr, short value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(memIntf.getLayout(), new byte[2]).putShort(value).getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write integer to address.
|
||||
* <p>
|
||||
* Note: Size of integer depends on platform type.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value integer to write
|
||||
*/
|
||||
public void setIntValueOf(long addr, int value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(memIntf.getLayout(), new byte[memIntf.getLayout().intSize]).putInt(value).getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write long to address.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value long to write
|
||||
*/
|
||||
public void setLongValueOf(long addr, long value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(memIntf.getLayout(), new byte[4]).putLong(value).getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write pointer to address.
|
||||
* <p>
|
||||
* Note: Size of pointer depends on platform type.
|
||||
*
|
||||
* @param addr Address to write to
|
||||
* @param value pointer to write
|
||||
*/
|
||||
public void setAddrValueOf(long addr, long value) {
|
||||
memIntf.setMemorySegment(addr, MemoryBuffer.wrap(memIntf.getLayout(), new byte[memIntf.getLayout().addrSize]).putAddr(value).getBytes());
|
||||
}
|
||||
|
||||
}
|
383
tools/cooja/java/org/contikios/cooja/mote/memory/VarMemory.java
Normal file
383
tools/cooja/java/org/contikios/cooja/mote/memory/VarMemory.java
Normal file
|
@ -0,0 +1,383 @@
|
|||
/*
|
||||
* Copyright (c) 2014, TU Braunschweig.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
package org.contikios.cooja.mote.memory;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
import org.contikios.cooja.mote.memory.MemoryInterface.Symbol;
|
||||
import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor;
|
||||
import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor.EventType;
|
||||
|
||||
/**
|
||||
* Represents memory that can be accessed with names of variables.
|
||||
*
|
||||
* @author Enrico Jorns
|
||||
*/
|
||||
public class VarMemory extends Memory {
|
||||
|
||||
private MemoryInterface memIntf;
|
||||
|
||||
/**
|
||||
* Creates new VarMemory.
|
||||
*
|
||||
* @param intf
|
||||
*/
|
||||
public VarMemory(MemoryInterface intf) {
|
||||
super(intf);
|
||||
memIntf = intf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows to change the MemoryInterface associated with this access class.
|
||||
*
|
||||
* @param intf Interface to associate with
|
||||
*/
|
||||
public void associateMemory(MemoryInterface intf) {
|
||||
memIntf = intf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates and returns an array of all variables in this memory
|
||||
*
|
||||
* @return All variables located in this memory
|
||||
*/
|
||||
public Collection<Symbol> getVariables() {
|
||||
return memIntf.getSymbolMap().values();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an array of all variable names in this memory.
|
||||
*
|
||||
* @return All variable names located in this memory
|
||||
*/
|
||||
public Set<String> getVariableNames() {
|
||||
return memIntf.getSymbolMap().keySet();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if given variable exists in memory.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return True if variable exists, false otherwise
|
||||
*/
|
||||
public boolean variableExists(String varName) {
|
||||
return memIntf.getSymbolMap().containsKey(varName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns address of variable with given name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return Variable address
|
||||
*/
|
||||
public Symbol getVariable(String varName) throws UnknownVariableException {
|
||||
return memIntf.getSymbolMap().get(varName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns address of variable with given name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return Address of variable
|
||||
* @throws UnknownVariableException If variable not found
|
||||
*/
|
||||
public long getVariableAddress(String varName) throws UnknownVariableException {
|
||||
return getVariable(varName).addr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return size of variable with given name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return Size of variable, -1 if unknown size
|
||||
* @throws UnknownVariableException If variable not found
|
||||
*/
|
||||
public int getVariableSize(String varName) throws UnknownVariableException {
|
||||
return getVariable(varName).size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 8 bit integer from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return 8 bit integer value read from location assigned to variable name
|
||||
*/
|
||||
public byte getInt8ValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
return getInt8ValueOf(getVariable(varName).addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 16 bit integer from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return 16 bit integer value read from location assigned to variable name
|
||||
*/
|
||||
public short getInt16ValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
return getInt16ValueOf(getVariable(varName).addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 32 bit integer from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return 32 bit integer value read from location assigned to variable name
|
||||
*/
|
||||
public int getInt32ValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
return getInt32ValueOf(getVariable(varName).addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read 64 bit integer from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return 64 bit integer value read from location assigned to variable name
|
||||
*/
|
||||
public long getInt64ValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
return getInt64ValueOf(getVariable(varName).addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read byte from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return byte value read from location assigned to variable name
|
||||
*/
|
||||
public byte getByteValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
return getByteValueOf(getVariable(varName).addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read short from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return short value read from location assigned to variable name
|
||||
*/
|
||||
public short getShortValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
short val = getShortValueOf(getVariable(varName).addr);
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read integer from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return integer value read from location assigned to variable name
|
||||
*/
|
||||
public int getIntValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
int val = getIntValueOf(getVariable(varName).addr);
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read long from location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return long value read from location assigned to variable name
|
||||
*/
|
||||
public long getLongValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
long val = getLongValueOf(getVariable(varName).addr);
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read pointer from location associated with this variable name.
|
||||
*
|
||||
* The number of bytes actually read depends on the pointer size
|
||||
* defined in memory layout.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @return pointer value read from location assigned to variable name
|
||||
*/
|
||||
public long getAddrValueOf(String varName)
|
||||
throws UnknownVariableException {
|
||||
long val = getAddrValueOf(getVariable(varName).addr);
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read byte array starting at location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param length Numbe of bytes to read
|
||||
* @return byte array read from location assigned to variable name
|
||||
*/
|
||||
public byte[] getByteArray(String varName, int length)
|
||||
throws UnknownVariableException {
|
||||
return memIntf.getMemorySegment(getVariable(varName).addr, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 8 bit integer value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value 8 bit integer value to write
|
||||
*/
|
||||
public void setInt8ValueOf(String varName, byte value)
|
||||
throws UnknownVariableException {
|
||||
setInt8ValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 16 bit integer value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value 16 bit integer value to write
|
||||
*/
|
||||
public void setInt16ValueOf(String varName, byte value)
|
||||
throws UnknownVariableException {
|
||||
setInt16ValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 32 bit integer value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value 32 bit integer value to write
|
||||
*/
|
||||
public void setInt32ValueOf(String varName, byte value)
|
||||
throws UnknownVariableException {
|
||||
setInt32ValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write 64 bit integer value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value 64 bit integer value to write
|
||||
*/
|
||||
public void setInt64ValueOf(String varName, byte value)
|
||||
throws UnknownVariableException {
|
||||
setInt64ValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write byte value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value byte value to write
|
||||
*/
|
||||
public void setByteValueOf(String varName, byte value)
|
||||
throws UnknownVariableException {
|
||||
setByteValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write short value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value short value to write
|
||||
*/
|
||||
public void setShortValueOf(String varName, short value)
|
||||
throws UnknownVariableException {
|
||||
setShortValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write int value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value int value to write
|
||||
*/
|
||||
public void setIntValueOf(String varName, int value)
|
||||
throws UnknownVariableException {
|
||||
setIntValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write long value to location associated with this variable name.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value long value to write
|
||||
*/
|
||||
public void setLongValueOf(String varName, long value)
|
||||
throws UnknownVariableException {
|
||||
setLongValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write pointer value to location associated with this variable name.
|
||||
*
|
||||
* The number of bytes actually written depends on the pointer size
|
||||
* defined in memory layout.
|
||||
*
|
||||
* @param varName Variable name
|
||||
* @param value Value to write
|
||||
*/
|
||||
public void setAddrValueOf(String varName, long value)
|
||||
throws UnknownVariableException {
|
||||
setAddrValueOf(getVariable(varName).addr, value);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param varName
|
||||
* @param data
|
||||
*/
|
||||
public void setByteArray(String varName, byte[] data)
|
||||
throws UnknownVariableException {
|
||||
memIntf.setMemorySegment(getVariable(varName).addr, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a MemoryMonitor for the specified address region.
|
||||
*
|
||||
* @param flag Select memory operation(s) to listen for (read, write,
|
||||
* read/write)
|
||||
* @param varName
|
||||
* @param mm
|
||||
* @return
|
||||
*/
|
||||
public boolean addVarMonitor(EventType flag, final String varName, final SegmentMonitor mm) {
|
||||
return memIntf.addSegmentMonitor(
|
||||
flag,
|
||||
getVariable(varName).addr,
|
||||
getVariable(varName).size,
|
||||
mm);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes MemoryMonitor assigned to the specified region.
|
||||
*
|
||||
* @param varName
|
||||
* @param mm MemoryMonitor to remove
|
||||
*/
|
||||
public void removeVarMonitor(String varName, SegmentMonitor mm) {
|
||||
memIntf.removeSegmentMonitor(getVariable(varName).addr, getVariable(varName).size, mm);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue