// 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; }