[cooja] getMemory() now returns MemoryInterface

Including code adaptions based on new memory methods to keep code compilable
This commit is contained in:
Enrico Joerns 2014-07-23 00:01:19 +02:00
parent 19d07beb16
commit 9dd29d56c9
8 changed files with 92 additions and 73 deletions

View file

@ -43,6 +43,8 @@ import org.contikios.cooja.MoteInterfaceHandler;
import org.contikios.cooja.MoteMemory; import org.contikios.cooja.MoteMemory;
import org.contikios.cooja.MoteType; import org.contikios.cooja.MoteType;
import org.contikios.cooja.Simulation; import org.contikios.cooja.Simulation;
import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.mote.memory.MemoryLayout;
import org.contikios.cooja.motes.AbstractEmulatedMote; import org.contikios.cooja.motes.AbstractEmulatedMote;
import avrora.arch.avr.AVRProperties; import avrora.arch.avr.AVRProperties;
import avrora.core.LoadableProgram; import avrora.core.LoadableProgram;
@ -54,7 +56,6 @@ import avrora.sim.mcu.EEPROM;
import avrora.sim.platform.MicaZ; import avrora.sim.platform.MicaZ;
import avrora.sim.platform.PlatformFactory; import avrora.sim.platform.PlatformFactory;
import java.nio.ByteOrder; import java.nio.ByteOrder;
import org.contikios.cooja.mote.memory.MemoryLayout;
/** /**
* @author Joakim Eriksson, Fredrik Osterlind * @author Joakim Eriksson, Fredrik Osterlind
@ -267,7 +268,8 @@ public class MicaZMote extends AbstractEmulatedMote implements Mote {
return config; return config;
} }
public MoteMemory getMemory() { @Override
public MemoryInterface getMemory() {
return myMemory; return myMemory;
} }

View file

@ -52,6 +52,7 @@ import org.contikios.cooja.Simulation;
import org.contikios.cooja.Watchpoint; import org.contikios.cooja.Watchpoint;
import org.contikios.cooja.WatchpointMote; import org.contikios.cooja.WatchpointMote;
import org.contikios.cooja.interfaces.IPAddress; import org.contikios.cooja.interfaces.IPAddress;
import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.mote.memory.MemoryLayout; import org.contikios.cooja.mote.memory.MemoryLayout;
import org.contikios.cooja.motes.AbstractEmulatedMote; import org.contikios.cooja.motes.AbstractEmulatedMote;
import org.contikios.cooja.mspmote.interfaces.Msp802154Radio; import org.contikios.cooja.mspmote.interfaces.Msp802154Radio;
@ -188,7 +189,8 @@ public abstract class MspMote extends AbstractEmulatedMote implements Mote, Watc
myCpu = cpu; myCpu = cpu;
} }
public MoteMemory getMemory() { @Override
public MemoryInterface getMemory() {
return myMemory; return myMemory;
} }

View file

@ -28,6 +28,7 @@
package org.contikios.cooja; package org.contikios.cooja;
import java.util.Collection; import java.util.Collection;
import org.contikios.cooja.mote.memory.MemoryInterface;
import org.jdom.Element; import org.jdom.Element;
@ -63,7 +64,7 @@ public interface Mote {
* @see #setMemory(MoteMemory) * @see #setMemory(MoteMemory)
* @return Mote memory * @return Mote memory
*/ */
public MoteMemory getMemory(); public MemoryInterface getMemory();
/** /**
* Returns mote type. * Returns mote type.

View file

@ -42,6 +42,7 @@ import org.contikios.cooja.MoteMemory;
import org.contikios.cooja.MoteType; import org.contikios.cooja.MoteType;
import org.contikios.cooja.SectionMoteMemory; import org.contikios.cooja.SectionMoteMemory;
import org.contikios.cooja.Simulation; import org.contikios.cooja.Simulation;
import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.motes.AbstractWakeupMote; import org.contikios.cooja.motes.AbstractWakeupMote;
/** /**
@ -98,7 +99,7 @@ public class ContikiMote extends AbstractWakeupMote implements Mote {
} }
@Override @Override
public MoteMemory getMemory() { public MemoryInterface getMemory() {
return myMemory; return myMemory;
} }

View file

@ -42,9 +42,9 @@ import org.jdom.Element;
import org.contikios.cooja.ClassDescription; import org.contikios.cooja.ClassDescription;
import org.contikios.cooja.Mote; import org.contikios.cooja.Mote;
import org.contikios.cooja.MoteInterface; import org.contikios.cooja.MoteInterface;
import org.contikios.cooja.MoteMemory; import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.MoteMemory.MemoryEventType; import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor;
import org.contikios.cooja.MoteMemory.MemoryMonitor; import org.contikios.cooja.mote.memory.VarMemory;
/** /**
* Read-only interface to IPv4 or IPv6 address. * Read-only interface to IPv4 or IPv6 address.
@ -54,21 +54,22 @@ import org.contikios.cooja.MoteMemory.MemoryMonitor;
@ClassDescription("IP Address") @ClassDescription("IP Address")
public class IPAddress extends MoteInterface { public class IPAddress extends MoteInterface {
private static Logger logger = Logger.getLogger(IPAddress.class); private static Logger logger = Logger.getLogger(IPAddress.class);
private final MoteMemory moteMem; private final VarMemory moteMem;
private static final int IPv6_MAX_ADDRESSES = 4; private static final int IPv6_MAX_ADDRESSES = 4;
private boolean ipv6IsGlobal = false; private boolean ipv6IsGlobal = false;
private int ipv6AddressIndex = -1; private int ipv6AddressIndex = -1;
private static final int MONITORED_SIZE = 150; private static final int MONITORED_SIZE = 150;
private MemoryMonitor memMonitor; private SegmentMonitor memMonitor;
public IPAddress(final Mote mote) { public IPAddress(final Mote mote) {
moteMem = mote.getMemory(); moteMem = new VarMemory(mote.getMemory());
memMonitor = new MemoryMonitor() { memMonitor = new MemoryInterface.SegmentMonitor() {
public void memoryChanged(MoteMemory memory, MemoryEventType type, int address) { @Override
if (type != MemoryEventType.WRITE) { public void memoryChanged(MemoryInterface memory, SegmentMonitor.EventType type, long address) {
if (type != SegmentMonitor.EventType.WRITE) {
return; return;
} }
setChanged(); setChanged();
@ -76,11 +77,11 @@ public class IPAddress extends MoteInterface {
} }
}; };
if (isVersion4()) { if (isVersion4()) {
moteMem.addMemoryMonitor(moteMem.getVariableAddress("uip_hostaddr"), 4, memMonitor); moteMem.addVarMonitor(SegmentMonitor.EventType.WRITE, "uip_hostaddr", memMonitor);
} else if (isVersion6()) { } else if (isVersion6()) {
moteMem.addMemoryMonitor(moteMem.getVariableAddress("uip_ds6_netif_addr_list_offset"), 1, memMonitor); moteMem.addVarMonitor(SegmentMonitor.EventType.WRITE, "uip_ds6_netif_addr_list_offset", memMonitor);
moteMem.addMemoryMonitor(moteMem.getVariableAddress("uip_ds6_addr_size"), 1, memMonitor); moteMem.addVarMonitor(SegmentMonitor.EventType.WRITE, "uip_ds6_addr_size", memMonitor);
moteMem.addMemoryMonitor(moteMem.getVariableAddress("uip_ds6_if"), MONITORED_SIZE, memMonitor); moteMem.addVarMonitor(SegmentMonitor.EventType.WRITE, "uip_ds6_if", memMonitor);
} }
} }
@ -205,11 +206,11 @@ public class IPAddress extends MoteInterface {
super.removed(); super.removed();
if (memMonitor != null) { if (memMonitor != null) {
if (isVersion4()) { if (isVersion4()) {
moteMem.removeMemoryMonitor(moteMem.getVariableAddress("rimeaddr_node_addr"), 4, memMonitor); moteMem.removeVarMonitor("rimeaddr_node_addr", memMonitor);
} else if (isVersion6()) { } else if (isVersion6()) {
moteMem.removeMemoryMonitor(moteMem.getVariableAddress("uip_ds6_netif_addr_list_offset"), 1, memMonitor); moteMem.removeVarMonitor("uip_ds6_netif_addr_list_offset", memMonitor);
moteMem.removeMemoryMonitor(moteMem.getVariableAddress("uip_ds6_addr_size"), 1, memMonitor); moteMem.removeVarMonitor("uip_ds6_addr_size", memMonitor);
moteMem.removeMemoryMonitor(moteMem.getVariableAddress("uip_ds6_if"), MONITORED_SIZE, memMonitor); moteMem.removeVarMonitor("uip_ds6_if", memMonitor);
} }
} }
} }

View file

@ -43,9 +43,9 @@ import org.jdom.Element;
import org.contikios.cooja.ClassDescription; import org.contikios.cooja.ClassDescription;
import org.contikios.cooja.Mote; import org.contikios.cooja.Mote;
import org.contikios.cooja.MoteInterface; import org.contikios.cooja.MoteInterface;
import org.contikios.cooja.MoteMemory; import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.MoteMemory.MemoryEventType; import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor;
import org.contikios.cooja.MoteMemory.MemoryMonitor; import org.contikios.cooja.mote.memory.VarMemory;
/** /**
* Read-only interface to Rime address read from Contiki variable: linkaddr_node_addr. * Read-only interface to Rime address read from Contiki variable: linkaddr_node_addr.
@ -57,18 +57,19 @@ import org.contikios.cooja.MoteMemory.MemoryMonitor;
@ClassDescription("Rime address") @ClassDescription("Rime address")
public class RimeAddress extends MoteInterface { public class RimeAddress extends MoteInterface {
private static Logger logger = Logger.getLogger(RimeAddress.class); private static Logger logger = Logger.getLogger(RimeAddress.class);
private MoteMemory moteMem; private VarMemory moteMem;
public static final int RIME_ADDR_LENGTH = 2; public static final int RIME_ADDR_LENGTH = 2;
private MemoryMonitor memMonitor = null; private SegmentMonitor memMonitor = null;
public RimeAddress(final Mote mote) { public RimeAddress(final Mote mote) {
moteMem = mote.getMemory(); moteMem = new VarMemory(mote.getMemory());
if (hasRimeAddress()) { if (hasRimeAddress()) {
memMonitor = new MemoryMonitor() { memMonitor = new SegmentMonitor() {
public void memoryChanged(MoteMemory memory, MemoryEventType type, int address) { @Override
if (type != MemoryEventType.WRITE) { public void memoryChanged(MemoryInterface memory, SegmentMonitor.EventType type, long address) {
if (type != SegmentMonitor.EventType.WRITE) {
return; return;
} }
setChanged(); setChanged();
@ -76,7 +77,7 @@ public class RimeAddress extends MoteInterface {
} }
}; };
/* TODO XXX Timeout? */ /* TODO XXX Timeout? */
moteMem.addMemoryMonitor(moteMem.getVariableAddress("linkaddr_node_addr"), RIME_ADDR_LENGTH, memMonitor); moteMem.addVarMonitor(SegmentMonitor.EventType.WRITE, "linkaddr_node_addr", memMonitor);
} }
} }
@ -131,7 +132,7 @@ public class RimeAddress extends MoteInterface {
public void removed() { public void removed() {
super.removed(); super.removed();
if (memMonitor != null) { if (memMonitor != null) {
moteMem.removeMemoryMonitor(moteMem.getVariableAddress("linkaddr_node_addr"), RIME_ADDR_LENGTH, memMonitor); moteMem.removeVarMonitor("linkaddr_node_addr", memMonitor);
} }
} }

View file

@ -47,6 +47,7 @@ import org.contikios.cooja.Simulation;
import org.contikios.cooja.interfaces.ApplicationRadio; import org.contikios.cooja.interfaces.ApplicationRadio;
import org.contikios.cooja.interfaces.ApplicationSerialPort; import org.contikios.cooja.interfaces.ApplicationSerialPort;
import org.contikios.cooja.interfaces.Radio; import org.contikios.cooja.interfaces.Radio;
import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.mote.memory.MemoryLayout; import org.contikios.cooja.mote.memory.MemoryLayout;
/** /**
@ -111,7 +112,7 @@ public abstract class AbstractApplicationMote extends AbstractWakeupMote impleme
} }
@Override @Override
public MoteMemory getMemory() { public MemoryInterface getMemory() {
return memory; return memory;
} }

View file

@ -100,6 +100,10 @@ import org.contikios.cooja.VisPlugin;
import org.contikios.cooja.dialogs.TableColumnAdjuster; import org.contikios.cooja.dialogs.TableColumnAdjuster;
import org.contikios.cooja.dialogs.UpdateAggregator; import org.contikios.cooja.dialogs.UpdateAggregator;
import org.contikios.cooja.interfaces.IPAddress; import org.contikios.cooja.interfaces.IPAddress;
import org.contikios.cooja.mote.memory.MemoryBuffer;
import org.contikios.cooja.mote.memory.MemoryInterface;
import org.contikios.cooja.mote.memory.MemoryInterface.SegmentMonitor;
import org.contikios.cooja.mote.memory.VarMemory;
import org.contikios.cooja.motes.AbstractEmulatedMote; import org.contikios.cooja.motes.AbstractEmulatedMote;
import org.contikios.cooja.util.ArrayQueue; import org.contikios.cooja.util.ArrayQueue;
import org.contikios.cooja.util.StringUtils; import org.contikios.cooja.util.StringUtils;
@ -695,24 +699,24 @@ public class BufferListener extends VisPlugin {
private void registerSegmentMonitor(int size, boolean notify) throws Exception { private void registerSegmentMonitor(int size, boolean notify) throws Exception {
byte[] pointerValue = mote.getMemory().getMemorySegment(pointerAddress, pointerSize); byte[] pointerValue = mote.getMemory().getMemorySegment(pointerAddress, pointerSize);
int segmentAddress = mote.getMemory().parseInt(pointerValue); int segmentAddress = MemoryBuffer.wrap(mote.getMemory().getLayout(), pointerValue).getInt();
segmentMonitor = new SegmentMemoryMonitor(bl, mote, segmentAddress, size); segmentMonitor = new SegmentMemoryMonitor(bl, mote, segmentAddress, size);
if (notify) { if (notify) {
segmentMonitor.memoryChanged(mote.getMemory(), MemoryEventType.WRITE, -1); segmentMonitor.memoryChanged(mote.getMemory(), EventType.WRITE, -1);
} }
lastSegmentAddress = segmentAddress; lastSegmentAddress = segmentAddress;
} }
@Override @Override
final public void memoryChanged(MoteMemory memory, final public void memoryChanged(MemoryInterface memory,
org.contikios.cooja.MoteMemory.MemoryEventType type, int address) { EventType type, long address) {
if (type == MemoryEventType.READ) { if (type == EventType.READ) {
return; return;
} }
byte[] pointerValue = mote.getMemory().getMemorySegment(pointerAddress, pointerSize); byte[] pointerValue = mote.getMemory().getMemorySegment(pointerAddress, pointerSize);
int segmentAddress = mote.getMemory().parseInt(pointerValue); int segmentAddress = MemoryBuffer.wrap(mote.getMemory().getLayout(), pointerValue).getInt();
if (segmentAddress == lastSegmentAddress) { if (segmentAddress == lastSegmentAddress) {
return; return;
} }
@ -738,7 +742,7 @@ public class BufferListener extends VisPlugin {
} }
} }
static class SegmentMemoryMonitor implements org.contikios.cooja.MoteMemory.MemoryMonitor { static class SegmentMemoryMonitor implements SegmentMonitor {
protected final BufferListener bl; protected final BufferListener bl;
protected final Mote mote; protected final Mote mote;
@ -755,7 +759,7 @@ public class BufferListener extends VisPlugin {
this.size = size; this.size = size;
if (address != 0) { if (address != 0) {
if (!mote.getMemory().addMemoryMonitor(address, size, this)) { if (!mote.getMemory().addSegmentMonitor(SegmentMonitor.EventType.WRITE, address, size, this)) {
throw new Exception("Could not register memory monitor on: " + mote); throw new Exception("Could not register memory monitor on: " + mote);
} }
} }
@ -776,18 +780,18 @@ public class BufferListener extends VisPlugin {
public void dispose() { public void dispose() {
if (address != 0) { if (address != 0) {
mote.getMemory().removeMemoryMonitor(address, size, this); mote.getMemory().removeSegmentMonitor(address, size, this);
} }
} }
@Override @Override
public void memoryChanged(MoteMemory memory, MemoryEventType type, int address) { public void memoryChanged(MemoryInterface memory, EventType type, long address) {
byte[] newData = getAddress()==0?null:mote.getMemory().getMemorySegment(getAddress(), getSize()); byte[] newData = getAddress()==0?null:mote.getMemory().getMemorySegment(getAddress(), getSize());
addBufferAccess(bl, mote, oldData, newData, type, this.address); addBufferAccess(bl, mote, oldData, newData, type, this.address);
oldData = newData; oldData = newData;
} }
void addBufferAccess(BufferListener bl, Mote mote, byte[] oldData, byte[] newData, MemoryEventType type, int address) { void addBufferAccess(BufferListener bl, Mote mote, byte[] oldData, byte[] newData, EventType type, int address) {
BufferAccess ba = new BufferAccess( BufferAccess ba = new BufferAccess(
mote, mote,
mote.getSimulation().getSimulationTime(), mote.getSimulation().getSimulationTime(),
@ -957,7 +961,7 @@ public class BufferListener extends VisPlugin {
public boolean include(RowFilter.Entry<? extends Object, ? extends Object> entry) { public boolean include(RowFilter.Entry<? extends Object, ? extends Object> entry) {
if (hideReads) { if (hideReads) {
int row = (Integer) entry.getIdentifier(); int row = (Integer) entry.getIdentifier();
if (logs.get(row).type == MemoryEventType.READ) { if (logs.get(row).type == SegmentMonitor.EventType.READ) {
return false; return false;
} }
} }
@ -1013,13 +1017,13 @@ public class BufferListener extends VisPlugin {
public final byte[] mem; public final byte[] mem;
private boolean[] accessedBitpattern = null; private boolean[] accessedBitpattern = null;
public final MemoryEventType type; public final SegmentMonitor.EventType type;
public final String sourceStr; public final String sourceStr;
public final String stackTrace; public final String stackTrace;
public final int address; public final int address;
public BufferAccess( public BufferAccess(
Mote mote, long time, int address, byte[] newData, byte[] oldData, MemoryEventType type, boolean withStackTrace) { Mote mote, long time, int address, byte[] newData, byte[] oldData, SegmentMonitor.EventType type, boolean withStackTrace) {
this.mote = mote; this.mote = mote;
this.time = time; this.time = time;
this.mem = newData==null?NULL_DATA:newData; this.mem = newData==null?NULL_DATA:newData;
@ -1538,7 +1542,7 @@ public class BufferListener extends VisPlugin {
bl, bl,
mote, mote,
getPointerAddress(mote), getPointerAddress(mote),
mote.getMemory().getIntegerLength(), mote.getMemory().getLayout().intSize,
getSize(mote) getSize(mote)
); );
} }
@ -1622,16 +1626,18 @@ public class BufferListener extends VisPlugin {
@ClassDescription("Integer array") @ClassDescription("Integer array")
public static class IntegerParser extends StringParser { public static class IntegerParser extends StringParser {
private VarMemory varMem = new VarMemory(null);
@Override @Override
public String parseString(BufferAccess ba) { public String parseString(BufferAccess ba) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
varMem.associateMemory(ba.mote.getMemory());
int intLen = ba.mote.getMemory().getIntegerLength(); int intLen = ba.mote.getMemory().getLayout().intSize;
sb.append("<html>"); sb.append("<html>");
for (int i=0; i < ba.mem.length/intLen; i++) { for (int i=0; i < ba.mem.length/intLen; i++) {
byte[] mem = Arrays.copyOfRange(ba.mem, i*intLen,(i+1)*intLen); byte[] mem = Arrays.copyOfRange(ba.mem, i*intLen,(i+1)*intLen);
boolean[] diff = Arrays.copyOfRange(ba.getAccessedBitpattern(), i*intLen,(i+1)*intLen); boolean[] diff = Arrays.copyOfRange(ba.getAccessedBitpattern(), i*intLen,(i+1)*intLen);
int val = ba.mote.getMemory().parseInt(mem); int val = MemoryBuffer.wrap(ba.mote.getMemory().getLayout(), mem).getInt();
boolean red = false; boolean red = false;
for (boolean changed: diff) { for (boolean changed: diff) {
@ -1802,14 +1808,14 @@ public class BufferListener extends VisPlugin {
public static class NodeIDBuffer extends SegmentBuffer { public static class NodeIDBuffer extends SegmentBuffer {
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists("node_id")) { if (!mote.getMemory().getSymbolMap().containsKey("node_id")) {
return -1; return -1;
} }
return mote.getMemory().getVariableAddress("node_id"); return (int) mote.getMemory().getSymbolMap().get("node_id").addr;
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
return mote.getMemory().getIntegerLength(); return mote.getMemory().getLayout().intSize;
} }
} }
@ -1818,11 +1824,11 @@ public class BufferListener extends VisPlugin {
public static class Queuebuf0Buffer extends SegmentBuffer { public static class Queuebuf0Buffer extends SegmentBuffer {
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists("buframmem")) { if (!mote.getMemory().getSymbolMap().containsKey("buframmem")) {
return -1; return -1;
} }
int offset = 0; int offset = 0;
return mote.getMemory().getVariableAddress("buframmem") + offset; return (int) mote.getMemory().getSymbolMap().get("buframmem").addr + offset;
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
@ -1834,10 +1840,10 @@ public class BufferListener extends VisPlugin {
public static class PacketbufBuffer extends SegmentBuffer { public static class PacketbufBuffer extends SegmentBuffer {
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists("packetbuf_aligned")) { if (!mote.getMemory().getSymbolMap().containsKey("packetbuf_aligned")) {
return -1; return -1;
} }
return mote.getMemory().getVariableAddress("packetbuf_aligned"); return (int) mote.getMemory().getSymbolMap().get("packetbuf_aligned").addr;
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
@ -1847,19 +1853,21 @@ public class BufferListener extends VisPlugin {
@ClassDescription("*packetbufptr") @ClassDescription("*packetbufptr")
public static class PacketbufPointerBuffer extends PointerBuffer { public static class PacketbufPointerBuffer extends PointerBuffer {
VarMemory varMem = new VarMemory(null);
@Override @Override
public int getPointerAddress(Mote mote) { public int getPointerAddress(Mote mote) {
if (!mote.getMemory().variableExists("packetbufptr")) { if (!mote.getMemory().getSymbolMap().containsKey("packetbufptr")) {
return -1; return -1;
} }
return mote.getMemory().getVariableAddress("packetbufptr"); return (int) mote.getMemory().getSymbolMap().get("packetbufptr").addr;
} }
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists("packetbufptr")) { if (!mote.getMemory().getSymbolMap().containsKey("packetbufptr")) {
return -1; return -1;
} }
return mote.getMemory().getIntValueOf("packetbufptr"); varMem.associateMemory(mote.getMemory());
return varMem.getIntValueOf("packetbufptr");
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
@ -1872,23 +1880,25 @@ public class BufferListener extends VisPlugin {
public String variable; public String variable;
public int size; public int size;
public int offset; public int offset;
VarMemory varMem = new VarMemory(null);
@Override @Override
public int getPointerAddress(Mote mote) { public int getPointerAddress(Mote mote) {
if (!mote.getMemory().variableExists(variable)) { if (!mote.getMemory().getSymbolMap().containsKey(variable)) {
return -1; return -1;
} }
return mote.getMemory().getVariableAddress(variable); return (int) mote.getMemory().getSymbolMap().get(variable).addr;
} }
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists(variable)) { if (!mote.getMemory().getSymbolMap().containsKey(variable)) {
return -1; return -1;
} }
return mote.getMemory().getIntValueOf(variable)+offset; varMem.associateMemory(mote.getMemory());
return varMem.getIntValueOf(variable)+offset;
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
if (!mote.getMemory().variableExists(variable)) { if (!mote.getMemory().getSymbolMap().containsKey(variable)) {
return -1; return -1;
} }
return size; return size;
@ -1968,14 +1978,14 @@ public class BufferListener extends VisPlugin {
public int offset; public int offset;
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists(variable)) { if (!mote.getMemory().getSymbolMap().containsKey(variable)) {
return -1; return -1;
} }
return mote.getMemory().getVariableAddress(variable)+offset; return (int) mote.getMemory().getSymbolMap().get(variable).addr+offset;
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
if (!mote.getMemory().variableExists(variable)) { if (!mote.getMemory().getSymbolMap().containsKey(variable)) {
return -1; return -1;
} }
return size; return size;
@ -2052,14 +2062,14 @@ public class BufferListener extends VisPlugin {
public String variable; public String variable;
@Override @Override
public int getAddress(Mote mote) { public int getAddress(Mote mote) {
if (!mote.getMemory().variableExists(variable)) { if (!mote.getMemory().getSymbolMap().containsKey(variable)) {
return -1; return -1;
} }
return mote.getMemory().getVariableAddress(variable); return (int) mote.getMemory().getSymbolMap().get(variable).addr;
} }
@Override @Override
public int getSize(Mote mote) { public int getSize(Mote mote) {
return mote.getMemory().getIntegerLength(); return mote.getMemory().getLayout().intSize;
} }
@Override @Override