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

📄 contikimotetype.java

📁 Contiki是一个开源
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    Pattern pattern = Pattern.compile(GUI        .getExternalToolsSetting("COMMAND_VAR_NAME_ADDRESS"));    for (String commandLine : commandData) {      Matcher matcher = pattern.matcher(commandLine);      if (matcher.find()) {        // logger.debug("Parsing line: " + commandLine);        String varName = matcher.group(2);        int varAddress = Integer.parseInt(matcher.group(1), 16);        if (!varAddresses.containsKey(varName)) {          nrNew++;          varAddresses.put(varName, new Integer(varAddress));        } else {          int oldAddress = (Integer) varAddresses.get(varName);          if (oldAddress != varAddress) {            logger.warn("Warning, command response not matching previous entry of: "                + varName);            nrMismatch++;          }          nrOld++;        }      }    }    if (nrMismatch > 0) {      logger.debug("Command response parsing summary: Added " + nrNew          + " variables. Found " + nrOld          + " old variables. MISMATCHING ADDRESSES: " + nrMismatch);    } else {      logger.debug("Command response parsing summary: Added " + nrNew          + " variables. Found " + nrOld + " old variables");    }    return (nrNew + nrOld) > 0;  }  /**   * Copy core memory to given memory. This should not be used directly, but   * instead via ContikiMote.getMemory().   *   * @param mem   *          Memory to set   */  public void getCoreMemory(SectionMoteMemory mem) {    for (int i = 0; i < mem.getNumberOfSections(); i++) {      int startAddr = mem.getStartAddrOfSection(i);      int size = mem.getSizeOfSection(i);      byte[] data = mem.getDataOfSection(i);      getCoreMemory(startAddr + offsetRelToAbs, size, data);    }  }  public String getIdentifier() {    return identifier;  }  public void setIdentifier(String identifier) {    logger.warn("Contiki mote type is read-only");  }  /**   * @param using   *          Core library has system symbols information   */  public void setHasSystemSymbols(boolean using) {    hasSystemSymbols = using;  }  /**   * @return Whether core library has system symbols information   */  public boolean hasSystemSymbols() {    return hasSystemSymbols;  }  /**   * @param commStack   *          Communication stack   */  public void setCommunicationStack(CommunicationStack commStack) {    this.commStack = commStack;  }  /**   * @return Contiki communication stack   */  public CommunicationStack getCommunicationStack() {    return commStack;  }  /**   * @return Contiki mote type's library class name   */  public String getLibraryClassName() {    return libraryClassName;  }  /**   * Get relative address of variable with given name.   *   * @param varName   *          Name of variable   * @return Relative memory address of variable or -1 if not found   */  public static int getMapFileVarAddress(Vector<String> mapFileData, String varName, Properties varAddresses) {    int varAddr;    String varAddrString;    if ((varAddrString = varAddresses.getProperty(varName)) != null) {      varAddr = Integer.parseInt(varAddrString);      return varAddr;    }    String regExp = GUI.getExternalToolsSetting("MAPFILE_VAR_ADDRESS_1")        + varName + GUI.getExternalToolsSetting("MAPFILE_VAR_ADDRESS_2");    String retString = getFirstMatchGroup(mapFileData, regExp, 1);    if (retString != null) {      varAddresses.setProperty(varName, Integer.toString(Integer.parseInt(          retString.trim(), 16)));      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  private int getReferenceAbsAddr() {    return myCoreComm.getReferenceAbsAddr();  }  private void getCoreMemory(int start, int length, byte[] data) {    myCoreComm.getMemory(start, length, data);  }  private void setCoreMemory(int start, int length, byte[] mem) {    myCoreComm.setMemory(start, length, mem);  }  private static String getFirstMatchGroup(Vector<String> lines, String regexp,      int groupNr) {    Pattern pattern = Pattern.compile(regexp);    for (int i = 0; i < lines.size(); i++) {      Matcher matcher = pattern.matcher(lines.elementAt(i));      if (matcher.find()) {        return matcher.group(groupNr);      }    }    return null;  }  /**   * Returns all variable names in both data and BSS section by parsing the map   * file. These values should not be trusted completely as the parsing may   * fail.   *   * @return Variable names found in the data and bss section   */  public static Vector<String> getMapFileVarNames(Vector<String> mapFileData) {    Vector<String> varNames = getAllVariableNames(mapFileData,        loadRelDataSectionAddr(mapFileData),        loadRelDataSectionAddr(mapFileData) + loadDataSectionSize(mapFileData));    varNames.addAll(getAllVariableNames(mapFileData,        loadRelBssSectionAddr(mapFileData), loadRelBssSectionAddr(mapFileData)            + loadBssSectionSize(mapFileData)));    return varNames;  }  public static Vector<String> getAllVariableNames(Vector<String> lines,      int startAddress, int endAddress) {    Vector<String> varNames = new Vector<String>();    Pattern pattern = Pattern.compile(GUI        .getExternalToolsSetting("MAPFILE_VAR_NAME"));    for (int i = 0; i < lines.size(); i++) {      Matcher matcher = pattern.matcher(lines.elementAt(i));      if (matcher.find()) {        if (Integer.decode(matcher.group(1)).intValue() >= startAddress            && Integer.decode(matcher.group(1)).intValue() <= endAddress) {          varNames.add(matcher.group(2));        }      }    }    return varNames;  }  protected int getVariableSize(Vector<String> lines, String varName) {    Pattern pattern = Pattern.compile(GUI        .getExternalToolsSetting("MAPFILE_VAR_SIZE_1")        + varName + GUI.getExternalToolsSetting("MAPFILE_VAR_SIZE_2"));    for (int i = 0; i < lines.size(); i++) {      Matcher matcher = pattern.matcher(lines.elementAt(i));      if (matcher.find()) {        return Integer.decode(matcher.group(1));      }    }    return -1;  }  public static int loadRelDataSectionAddr(Vector<String> mapFileData) {    String retString = getFirstMatchGroup(mapFileData, GUI        .getExternalToolsSetting("MAPFILE_DATA_START"), 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static int loadDataSectionSize(Vector<String> mapFileData) {    String retString = getFirstMatchGroup(mapFileData, GUI        .getExternalToolsSetting("MAPFILE_DATA_SIZE"), 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static int loadRelBssSectionAddr(Vector<String> mapFileData) {    String retString = getFirstMatchGroup(mapFileData, GUI        .getExternalToolsSetting("MAPFILE_BSS_START"), 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static int loadBssSectionSize(Vector<String> mapFileData) {    String retString = getFirstMatchGroup(mapFileData, GUI        .getExternalToolsSetting("MAPFILE_BSS_SIZE"), 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static int loadCommandRelDataSectionAddr(Vector<String> commandData) {    String retString = getFirstMatchGroup(commandData, GUI        .getExternalToolsSetting("COMMAND_DATA_START"), 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static int loadCommandDataSectionSize(Vector<String> commandData) {    String retString;    int start, end;    retString = getFirstMatchGroup(commandData, GUI        .getExternalToolsSetting("COMMAND_DATA_START"), 1);    if (retString != null) {      start = Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }    retString = getFirstMatchGroup(commandData, GUI        .getExternalToolsSetting("COMMAND_DATA_END"), 1);    if (retString != null) {      end = Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }    return end - start;  }  public static int loadCommandRelBssSectionAddr(Vector<String> commandData) {    String retString = getFirstMatchGroup(commandData, GUI        .getExternalToolsSetting("COMMAND_BSS_START"), 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static int loadCommandBssSectionSize(Vector<String> commandData) {    String retString;    int start, end;    retString = getFirstMatchGroup(commandData, GUI        .getExternalToolsSetting("COMMAND_BSS_START"), 1);    if (retString != null) {      start = Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }    retString = getFirstMatchGroup(commandData, GUI        .getExternalToolsSetting("COMMAND_BSS_END"), 1);    if (retString != null) {      end = Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }    return end - start;  }  private static int getRelVarAddr(Vector<String> mapFileData, String varName) {    String regExp = GUI.getExternalToolsSetting("MAPFILE_VAR_ADDRESS_1")        + varName + GUI.getExternalToolsSetting("MAPFILE_VAR_ADDRESS_2");    String retString = getFirstMatchGroup(mapFileData, regExp, 1);    if (retString != null) {      return Integer.parseInt(retString.trim(), 16);    } else {      return -1;    }  }  public static Vector<String> loadMapFile(File mapFile) {    Vector<String> mapFileData = new Vector<String>();    try {      BufferedReader in = new BufferedReader(new InputStreamReader(          new FileInputStream(mapFile)));      while (in.ready()) {        mapFileData.add(in.readLine());      }    } catch (FileNotFoundException e) {      logger.fatal("File not found: " + e);      return null;    } catch (IOException e) {      logger.fatal("IO error: " + e);      return null;    }    return mapFileData;  }  /**   * Executes parse command on given file and returns the result.   *   * @param libraryFile   *          File   * @return Execution response   */  public static Vector<String> loadCommandData(File libraryFile) {    Vector<String> commandData = new Vector<String>();    try {      String command = GUI.getExternalToolsSetting("PARSE_COMMAND");      if (command == null) {        return null;      }      // Prepare command      command = command.replace("$(LIBFILE)", libraryFile.getPath().replace(File.separatorChar, '/'));      String line;      Process p = Runtime.getRuntime().exec(command.split(" "));      BufferedReader input = new BufferedReader(new InputStreamReader(p          .getInputStream()));      p.getErrorStream().close(); // Ignore error stream      while ((line = input.readLine()) != null) {        commandData.add(line);      }      input.close();    } catch (Exception err) {      err.printStackTrace();      return null;    }    if (commandData == null || commandData.size() == 0) {      return null;    }    return commandData;  }  /**   * Runs external tool objdump on given file and returns the result.   *   * @param libraryFile   *          File   * @return Execution response   */  public static Vector<String> loadObjdumpData(File libraryFile) {    Vector<String> objdumpData = new Vector<String>();    try {      String objdumpPath = GUI.getExternalToolsSetting("PATH_OBJDUMP");      String objdumpArgs = GUI.getExternalToolsSetting("OBJDUMP_ARGS");      if (objdumpPath == null || objdumpPath.equals("")) {        return null;      }      String[] objdumpExecArray;      if (!objdumpArgs.trim().equals("")) {        // Arguments need to be passed to program        String[] splittedObjdumpArgs = objdumpArgs.split(" ");        objdumpExecArray = new String[1 + splittedObjdumpArgs.length + 1];        objdumpExecArray[0] = objdumpPath.trim();        objdumpExecArray[objdumpExecArray.length - 1] = libraryFile            .getAbsolutePath();        System.arraycopy(splittedObjdumpArgs, 0, objdumpExecArray, 1,            splittedObjdumpArgs.length);      } else {        objdumpExecArray = new String[2];        objdumpExecArray[0] = objdumpPath.trim();        objdumpExecArray[1] = libraryFile.getAbsolutePath();      }      String line;      Process p = Runtime.getRuntime().exec(objdumpExecArray);      BufferedReader input = new BufferedReader(new InputStreamReader(p          .getInputStream()));      p.getErrorStream().close(); // Ignore error stream      while ((line = input.readLine()) != null) {        objdumpData.add(line);      }      input.close();    } catch (Exception err) {      err.printStackTrace();      return null;    }    if (objdumpData == null || objdumpData.size() == 0) {      return null;    }    return objdumpData;  }  /**   * Returns simulation holding this mote type   *   * @return Simulation   */  public Simulation getSimulation() {    return mySimulation;  }  /**   * Sets simulation holding this mote type   *   * @param simulation   *          Simulation holding this mote type   */  public void setSimulation(Simulation simulation) {    mySimulation = simulation;  }  public String getDescription() {    return description;  }  public void setDescription(String newDescription) {    description = newDescription;  }  /**   * Returns path to contiki base dir   *   * @return String containing path   */  public String getContikiBaseDir() {    return contikiBaseDir;  }  /**   * Sets contiki base dir to path.   *   * @param path   *          Contiki base dir

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -