示例#1
0
  // TODO return OpenMUC value
  private double getValue(SML_ListEntry entry) {
    double value = 0;

    ASNObject obj = entry.getValue().getChoice();
    if (obj.getClass().equals(Integer64.class)) {
      Integer64 val = (Integer64) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Integer32.class)) {
      Integer32 val = (Integer32) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Integer16.class)) {
      Integer16 val = (Integer16) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Integer8.class)) {
      Integer8 val = (Integer8) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Unsigned64.class)) {
      Unsigned64 val = (Unsigned64) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Unsigned32.class)) {
      Unsigned32 val = (Unsigned32) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Unsigned16.class)) {
      Unsigned16 val = (Unsigned16) obj;
      value = val.getVal();
    } else if (obj.getClass().equals(Unsigned8.class)) {
      Unsigned8 val = (Unsigned8) obj;
      value = val.getVal();
    } else {
      return Double.NaN;
    }

    byte scaler = entry.getScaler().getVal();
    return value * Math.pow(10, scaler);
  }
  @Override
  public int decode(InputStream iStream) throws IOException {
    int codeLength = 0;

    access_selector = new Unsigned8();
    codeLength += access_selector.decode(iStream);

    access_parameters = new Data();
    codeLength += access_parameters.decode(iStream);

    return codeLength;
  }
  @Override
  public int encode(AxdrByteArrayOutputStream axdrOStream) throws IOException {

    int codeLength;

    if (code != null) {
      codeLength = code.length;
      for (int i = code.length - 1; i >= 0; i--) {
        axdrOStream.write(code[i]);
      }
    } else {
      codeLength = 0;
      codeLength += access_parameters.encode(axdrOStream);

      codeLength += access_selector.encode(axdrOStream);
    }

    return codeLength;
  }