📄 xmlcommandhandler.java
字号:
} else if (element.getName().equals(XML_SIZE_NAME)) { size = element.getText(); } else if (element.getName().equals(XML_ADDRESS_NAME)) { address = element.getText(); } else { return createErrorMessage("Unknown read memory parameter: " + element.getName()); } } if (type == null) return createErrorMessage("No read memory type specified"); if (mote == null) return createErrorMessage("No mote specified"); if (mote == null) return createErrorMessage("No mote ID specified"); int moteNr = Integer.parseInt(mote); if (moteNr < 0 || simulation.getMotesCount() <= moteNr) { return createErrorMessage("Bad mote ID specified: " + moteNr); } MoteMemory memory = simulation.getMote(moteNr).getMemory(); // Read integer variable if (type.equals("int")) { if (variable == null) return createErrorMessage("No variable name specified"); if (variable.contains(" ")) return createErrorMessage("Variable name must not contain spaces: " + variable); if (!(memory instanceof AddressMemory)) return createErrorMessage("Can't read mote memory variables (not address memory)"); if (!((AddressMemory) memory).variableExists(variable)) { return createErrorMessage("Variable does not exist: " + variable); } int val = ((AddressMemory) memory).getIntValueOf(variable); return XML_OK_START + val + XML_OK_END; } else if (type.equals("variable")) { if (variable == null) return createErrorMessage("No variable name specified"); if (variable.contains(" ")) return createErrorMessage("Variable name must not contain spaces: " + variable); if (!(memory instanceof AddressMemory)) return createErrorMessage("Can't read mote memory variables (not address memory)"); if (!((AddressMemory) memory).variableExists(variable)) { return createErrorMessage("Variable does not exist: " + variable); } if (size == null) return createErrorMessage("No size specified"); int sizeParsed = Integer.parseInt(size); if (sizeParsed < 0) { return createErrorMessage("Bad size specified: " + sizeParsed); } byte[] val = ((AddressMemory) memory).getByteArray(variable, sizeParsed); String ret = ""; for (byte b: val) ret += (int) (0xff&b) + " "; ret = ret.trim(); return XML_OK_START + ret + XML_OK_END; } else if (type.equals("address")) { if (size == null) return createErrorMessage("No size specified"); int sizeParsed = Integer.parseInt(size); if (sizeParsed < 0) { return createErrorMessage("Bad size specified: " + sizeParsed); } int addressParsed = Integer.parseInt(address); if (addressParsed < 0) { return createErrorMessage("Bad start address specified: " + addressParsed); } byte[] val = memory.getMemorySegment(addressParsed, sizeParsed); String ret = ""; for (byte b: val) ret += (int) (0xff&b) + " "; ret = ret.trim(); return XML_OK_START + ret + XML_OK_END; } return createErrorMessage("Bad read memory type specified: " + type); } /** * Write mote variable value as specified by arguments. * * @param arguments Command arguments * @return Reply to client (XML format) */ private String writeMemory(Collection<Element> arguments) { Simulation simulation = myGUI.getSimulation(); String type = null; String mote = null; String variable = null; String size = null; String address = null; String value = null; for (Element element : arguments) { if (element.getName().equals(XML_TYPE_NAME)) { type = element.getText(); } else if (element.getName().equals(XML_MOTE_NAME)) { mote = element.getText(); } else if (element.getName().equals(XML_VARIABLE_NAME)) { variable = element.getText(); } else if (element.getName().equals(XML_SIZE_NAME)) { size = element.getText(); } else if (element.getName().equals(XML_ADDRESS_NAME)) { address = element.getText(); } else if (element.getName().equals(XML_VALUE_NAME)) { value = element.getText(); } else { return createErrorMessage("Unknown write memory parameter: " + element.getName()); } } if (type == null) return createErrorMessage("No write memory type specified"); if (mote == null) return createErrorMessage("No mote specified"); if (mote == null) return createErrorMessage("No mote ID specified"); int moteNr = Integer.parseInt(mote); if (moteNr < 0 || simulation.getMotesCount() <= moteNr) { return createErrorMessage("Bad mote ID specified: " + moteNr); } MoteMemory memory = simulation.getMote(moteNr).getMemory(); // Write integer variable if (type.equals("int")) { if (variable == null) return createErrorMessage("No variable name specified"); if (variable.contains(" ")) return createErrorMessage("Variable name must not contain spaces: " + variable); if (!(memory instanceof AddressMemory)) return createErrorMessage("Can't read mote memory variables (not address memory)"); if (!((AddressMemory) memory).variableExists(variable)) { return createErrorMessage("Variable does not exist: " + variable); } if (value == null) return createErrorMessage("No value specified"); if (value.contains(" ")) return createErrorMessage("Integer value must not contain spaces: " + value); int val; try { val = Integer.parseInt(value); } catch (NumberFormatException e) { return createErrorMessage("Bad integer value specified: " + e); } ((AddressMemory) memory).setIntValueOf(variable, val); return XML_OK; } else if (type.equals("variable")) { if (variable == null) return createErrorMessage("No variable name specified"); if (variable.contains(" ")) return createErrorMessage("Variable name must not contain spaces: " + variable); if (!(memory instanceof AddressMemory)) return createErrorMessage("Can't read mote memory variables (not address memory)"); if (!((AddressMemory) memory).variableExists(variable)) { return createErrorMessage("Variable does not exist: " + variable); } if (size == null) return createErrorMessage("No size specified"); int sizeParsed = Integer.parseInt(size); if (sizeParsed < 0) { return createErrorMessage("Bad size specified: " + sizeParsed); } if (value == null) return createErrorMessage("No value specified"); String[] bytesParsed = value.split(" "); if (bytesParsed.length != sizeParsed) return createErrorMessage("Number of bytes and specified size does not match: " + bytesParsed.length + "!=" + sizeParsed); byte[] val = new byte[bytesParsed.length]; for (int i=0; i < sizeParsed; i++) { val[i] = Byte.parseByte(bytesParsed[i]); } ((AddressMemory) memory).setByteArray(variable, val); return XML_OK; } else if (type.equals("address")) { if (size == null) return createErrorMessage("No size specified"); int sizeParsed = Integer.parseInt(size); if (sizeParsed < 0) { return createErrorMessage("Bad size specified: " + sizeParsed); } int addressParsed = Integer.parseInt(address); if (addressParsed < 0) { return createErrorMessage("Bad start address specified: " + addressParsed); } if (value == null) return createErrorMessage("No value specified"); String[] bytesParsed = value.split(" "); if (bytesParsed.length != sizeParsed) return createErrorMessage("Number of bytes and specified size does not match: " + bytesParsed.length + "!=" + sizeParsed); byte[] val = new byte[bytesParsed.length]; for (int i=0; i < sizeParsed; i++) { val[i] = Byte.parseByte(bytesParsed[i]); } memory.setMemorySegment(addressParsed, val); return XML_OK; } return createErrorMessage("Bad write memory type specified: " + type); } /** * Handle add new eventpoint command. * * @param arguments Command arguments * @return Reply to client (XML format) */ private String addEventpoint(Collection<Element> arguments) { Simulation simulation = myGUI.getSimulation(); String type = null; String mote = null; String variable = null; String time = null; String size = null; String triggeron = null; String address = null; String count = null; for (Element element : arguments) { if (element.getName().equals(XML_TYPE_NAME)) { type = element.getText(); } else if (element.getName().equals(XML_MOTE_NAME)) { mote = element.getText(); } else if (element.getName().equals(XML_VARIABLE_NAME)) { variable = element.getText(); } else if (element.getName().equals(XML_TIME_NAME)) { time = element.getText(); } else if (element.getName().equals(XML_SIZE_NAME)) { size = element.getText(); } else if (element.getName().equals(XML_ADDRESS_NAME)) { address = element.getText(); } else if (element.getName().equals(XML_TRIGGERON_NAME)) { triggeron = element.getText(); } else if (element.getName().equals("count")) { count = element.getText(); } else { return createErrorMessage("Unknown eventpoint parameter: " + element.getName()); } } logger.debug("Eventpoint type: " + type); if (type == null) return createErrorMessage("No eventpoint type specified"); // Integer variable watchpoint if (type.equals(XML_WATCHPOINT_INT)) { if (variable == null) return createErrorMessage("No variable name specified"); if (variable.contains(" ")) return createErrorMessage("Variable name must not contain spaces: " + variable); if (mote == null) return createErrorMessage("No mote ID specified"); int moteNr = Integer.parseInt(mote); if (moteNr < 0 || simulation.getMotesCount() <= moteNr) { return createErrorMessage("Bad mote ID specified: " + moteNr); } Mote moteObject = simulation.getMote(moteNr); MoteMemory memory = simulation.getMote(moteNr).getMemory(); if (!(memory instanceof AddressMemory)) return createErrorMessage("Can't write mote memory variables (not address memory)"); if (!((AddressMemory) memory).variableExists(variable)) { return createErrorMessage("Variable does not exist: " + variable); } Eventpoint newEventpoint = new IntegerWatchpoint(moteObject, variable); myEvaluator.addEventpoint(newEventpoint); return createOkMessage(newEventpoint, simulation.getSimulationTime()); } // Variable watchpoint if (type.equals(XML_WATCHPOINT_VARIABLE)) { if (variable == null) return createErrorMessage("No variable name specified"); if (variable.contains(" ")) return createErrorMessage("Variable name must not contain spaces: " + variable); if (mote == null) return createErrorMessage("No mote ID specified"); if (size == null) return createErrorMessage("No size specified"); int sizeParsed = Integer.parseInt(size); if (sizeParsed < 0) { return createErrorMessage("Bad size specified: " + sizeParsed); } int moteNr = Integer.parseInt(mote); if (moteNr < 0 || simulation.getMotesCount() <= moteNr) { return createErrorMessage("Bad mote ID specified: " + moteNr); } Mote moteObject = simulation.getMote(moteNr); MoteMemory memory = simulation.getMote(moteNr).getMemory(); if (!(memory instanceof AddressMemory)) return createErrorMessage("Can't write mote memory variables (not address memory)"); if (!((AddressMemory) memory).variableExists(variable)) { return createErrorMessage("Variable does not exist: " + variable); } Eventpoint newEventpoint = new VariableWatchpoint(moteObject, variable, sizeParsed); myEvaluator.addEventpoint(newEventpoint); return createOkMessage(newEventpoint, simulation.getSimulationTime()); } // Memory area watchpoint if (type.equals(XML_WATCHPOINT_ADDRESS)) { if (mote == null) return createErrorMessage("No mote ID specified"); if (size == null) return createErrorMessage("No size specified"); int sizeParsed = Integer.parseInt(size); if (sizeParsed < 0) { return createErrorMessage("Bad size specified: " + sizeParsed); } int addressParsed = Integer.parseInt(address); if (addressParsed < 0) { return createErrorMessage("Bad start address specified: " + addressParsed); } int moteNr = Integer.parseInt(mote); if (moteNr < 0 || simulation.getMotesCount() <= moteNr) { return createErrorMessage("Bad mote ID specified: " + moteNr); } Mote moteObject = simulation.getMote(moteNr); MoteMemory memory = simulation.getMote(moteNr).getMemory(); Eventpoint newEventpoint = new Watchpoint(moteObject, addressParsed, sizeParsed); myEvaluator.addEventpoint(newEventpoint); return createOkMessage(newEventpoint, simulation.getSimulationTime()); } // Simulation timepoint if (type.equals(XML_TIMEPOINT_SIMULATION)) { if (time == null) return createErrorMessage("No time specified"); int timeParsed = Integer.parseInt(time); if (timeParsed < 0) { return createErrorMessage("Bad time specified: " + timeParsed); } Eventpoint newEventpoint = new SimulationTimepoint(simulation, timeParsed); myEvaluator.addEventpoint(newEventpoint); return createOkMessage(newEventpoint, simulation.getSimulationTime()); } // Real timepoint if (type.equals(XML_TIMEPOINT_REAL)) { if (time == null) return createErrorMessage("No time specified"); long timeParsed = Long.parseLong(time); if (timeParsed < 0) { return createErrorMessage("Bad time specified: " + timeParsed); } Eventpoint newEventpoint = new RealTimepoint(timeParsed); myEvaluator.addEventpoint(newEventpoint);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -