⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlcommandhandler.java

📁 Contiki是一个开源
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
      } 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 + -