// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

package org.josast.spino.generated;

import io.kaitai.struct.ByteBufferKaitaiStream;
import io.kaitai.struct.KaitaiStruct;
import io.kaitai.struct.KaitaiStream;
import java.io.IOException;
import java.nio.charset.Charset;

public class SpinoPayload extends KaitaiStruct {
    public static SpinoPayload fromFile(String fileName) throws IOException {
        return new SpinoPayload(new ByteBufferKaitaiStream(fileName));
    }

    public SpinoPayload(KaitaiStream _io) {
        this(_io, null, null);
    }

    public SpinoPayload(KaitaiStream _io, KaitaiStruct _parent) {
        this(_io, _parent, null);
    }

    public SpinoPayload(KaitaiStream _io, KaitaiStruct _parent, SpinoPayload _root) {
        super(_io);
        this._parent = _parent;
        this._root = _root == null ? this : _root;
        _read();
    }
    private void _read() {
        this.payload = new Payload(this._io, this, _root);
    }
    public static class Tle extends KaitaiStruct {
        public static Tle fromFile(String fileName) throws IOException {
            return new Tle(new ByteBufferKaitaiStream(fileName));
        }

        public Tle(KaitaiStream _io) {
            this(_io, null, null);
        }

        public Tle(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public Tle(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.message = new String(this._io.readBytesFull(), Charset.forName("ASCII"));
        }
        private String messageRaw;
        public String messageRaw() {
            if (this.messageRaw != null)
                return this.messageRaw;
            this.messageRaw = message();
            return this.messageRaw;
        }
        private String message;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public String message() { return message; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class ResponseLastDrop extends KaitaiStruct {
        public static ResponseLastDrop fromFile(String fileName) throws IOException {
            return new ResponseLastDrop(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseLastDrop(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseLastDrop(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ResponseLastDrop(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.timetamps = this._io.readU8le();
            this.sizeMsg = this._io.readU2le();
            this.crc = this._io.readU2le();
        }
        private Long timetampsS;
        public Long timetampsS() {
            if (this.timetampsS != null)
                return this.timetampsS;
            long _tmp = (long) (timetamps());
            this.timetampsS = _tmp;
            return this.timetampsS;
        }
        private Integer sizeMsgRaw;
        public Integer sizeMsgRaw() {
            if (this.sizeMsgRaw != null)
                return this.sizeMsgRaw;
            int _tmp = (int) (sizeMsg());
            this.sizeMsgRaw = _tmp;
            return this.sizeMsgRaw;
        }
        private Integer crcRaw;
        public Integer crcRaw() {
            if (this.crcRaw != null)
                return this.crcRaw;
            int _tmp = (int) (crc());
            this.crcRaw = _tmp;
            return this.crcRaw;
        }
        private long timetamps;
        private int sizeMsg;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public long timetamps() { return timetamps; }
        public int sizeMsg() { return sizeMsg; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class Callsign extends KaitaiStruct {
        public static Callsign fromFile(String fileName) throws IOException {
            return new Callsign(new ByteBufferKaitaiStream(fileName));
        }

        public Callsign(KaitaiStream _io) {
            this(_io, null, null);
        }

        public Callsign(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public Callsign(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.callsign = new String(this._io.readBytes(6), Charset.forName("ASCII"));
            this.crc = this._io.readU2le();
        }
        private String callsignRaw;
        public String callsignRaw() {
            if (this.callsignRaw != null)
                return this.callsignRaw;
            this.callsignRaw = callsign();
            return this.callsignRaw;
        }
        private Integer crcRaw;
        public Integer crcRaw() {
            if (this.crcRaw != null)
                return this.crcRaw;
            int _tmp = (int) (crc());
            this.crcRaw = _tmp;
            return this.crcRaw;
        }
        private String callsign;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public String callsign() { return callsign; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class ActiveInfoMessage extends KaitaiStruct {
        public static ActiveInfoMessage fromFile(String fileName) throws IOException {
            return new ActiveInfoMessage(new ByteBufferKaitaiStream(fileName));
        }

        public ActiveInfoMessage(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ActiveInfoMessage(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public ActiveInfoMessage(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.activeInfoMessage = this._io.readU1();
        }
        private Integer activeInfoMessageRaw;
        public Integer activeInfoMessageRaw() {
            if (this.activeInfoMessageRaw != null)
                return this.activeInfoMessageRaw;
            int _tmp = (int) (activeInfoMessage());
            this.activeInfoMessageRaw = _tmp;
            return this.activeInfoMessageRaw;
        }
        private int activeInfoMessage;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public int activeInfoMessage() { return activeInfoMessage; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class InformationMessage extends KaitaiStruct {
        public static InformationMessage fromFile(String fileName) throws IOException {
            return new InformationMessage(new ByteBufferKaitaiStream(fileName));
        }

        public InformationMessage(KaitaiStream _io) {
            this(_io, null, null);
        }

        public InformationMessage(KaitaiStream _io, SpinoPayload.Payload _parent) {
            this(_io, _parent, null);
        }

        public InformationMessage(KaitaiStream _io, SpinoPayload.Payload _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.respType = this._io.readU2le();
            this.spare = this._io.readU2le();
            this.index = this._io.readU1();
            this.used = this._io.readU1();
            this.message = new String(this._io.readBytesFull(), Charset.forName("ASCII"));
        }
        private Integer usedRaw;
        public Integer usedRaw() {
            if (this.usedRaw != null)
                return this.usedRaw;
            int _tmp = (int) (used());
            this.usedRaw = _tmp;
            return this.usedRaw;
        }
        private Integer respTypeRaw;
        public Integer respTypeRaw() {
            if (this.respTypeRaw != null)
                return this.respTypeRaw;
            int _tmp = (int) (respType());
            this.respTypeRaw = _tmp;
            return this.respTypeRaw;
        }
        private Integer indexRaw;
        public Integer indexRaw() {
            if (this.indexRaw != null)
                return this.indexRaw;
            int _tmp = (int) (index());
            this.indexRaw = _tmp;
            return this.indexRaw;
        }
        private Integer spareRaw;
        public Integer spareRaw() {
            if (this.spareRaw != null)
                return this.spareRaw;
            int _tmp = (int) (spare());
            this.spareRaw = _tmp;
            return this.spareRaw;
        }
        private String messageaRaw;
        public String messageaRaw() {
            if (this.messageaRaw != null)
                return this.messageaRaw;
            this.messageaRaw = message();
            return this.messageaRaw;
        }
        private int respType;
        private int spare;
        private int index;
        private int used;
        private String message;
        private SpinoPayload _root;
        private SpinoPayload.Payload _parent;
        public int respType() { return respType; }
        public int spare() { return spare; }
        public int index() { return index; }
        public int used() { return used; }
        public String message() { return message; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.Payload _parent() { return _parent; }
    }
    public static class Payload extends KaitaiStruct {
        public static Payload fromFile(String fileName) throws IOException {
            return new Payload(new ByteBufferKaitaiStream(fileName));
        }

        public Payload(KaitaiStream _io) {
            this(_io, null, null);
        }

        public Payload(KaitaiStream _io, SpinoPayload _parent) {
            this(_io, _parent, null);
        }

        public Payload(KaitaiStream _io, SpinoPayload _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.size = this._io.readU2le();
            this.cmdId = this._io.readU2le();
            this.responseType = this._io.readU1();
            this.errorCode = this._io.readU1();
            this.spare = this._io.readU2le();
            this.timestamps = this._io.readU8le();
            if (errorCode() == 0) {
                switch (responseType()) {
                case 32: {
                    this.responsetype = new ResponseTypea(this._io, this, _root);
                    break;
                }
                case 64: {
                    this.responsetype = new ResponseTypea(this._io, this, _root);
                    break;
                }
                case 65: {
                    this.responsetype = new InformationMessage(this._io, this, _root);
                    break;
                }
                case 16: {
                    this.responsetype = new ResponseBeaconExpe(this._io, this, _root);
                    break;
                }
                case 128: {
                    this.responsetype = new ResponseTypea(this._io, this, _root);
                    break;
                }
                }
            }
        }
        private Long timestampsS;
        public Long timestampsS() {
            if (this.timestampsS != null)
                return this.timestampsS;
            long _tmp = (long) (timestamps());
            this.timestampsS = _tmp;
            return this.timestampsS;
        }
        private Integer cmdIdRaw;
        public Integer cmdIdRaw() {
            if (this.cmdIdRaw != null)
                return this.cmdIdRaw;
            int _tmp = (int) (cmdId());
            this.cmdIdRaw = _tmp;
            return this.cmdIdRaw;
        }
        private Integer sizeRaw;
        public Integer sizeRaw() {
            if (this.sizeRaw != null)
                return this.sizeRaw;
            int _tmp = (int) (size());
            this.sizeRaw = _tmp;
            return this.sizeRaw;
        }
        private Integer responseTypeRaw;
        public Integer responseTypeRaw() {
            if (this.responseTypeRaw != null)
                return this.responseTypeRaw;
            int _tmp = (int) (responseType());
            this.responseTypeRaw = _tmp;
            return this.responseTypeRaw;
        }
        private Integer errorCodeRaw;
        public Integer errorCodeRaw() {
            if (this.errorCodeRaw != null)
                return this.errorCodeRaw;
            int _tmp = (int) (errorCode());
            this.errorCodeRaw = _tmp;
            return this.errorCodeRaw;
        }
        private int size;
        private int cmdId;
        private int responseType;
        private int errorCode;
        private int spare;
        private long timestamps;
        private KaitaiStruct responsetype;
        private SpinoPayload _root;
        private SpinoPayload _parent;
        public int size() { return size; }
        public int cmdId() { return cmdId; }
        public int responseType() { return responseType; }
        public int errorCode() { return errorCode; }
        public int spare() { return spare; }
        public long timestamps() { return timestamps; }
        public KaitaiStruct responsetype() { return responsetype; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload _parent() { return _parent; }
    }
    public static class ResponseTypea extends KaitaiStruct {
        public static ResponseTypea fromFile(String fileName) throws IOException {
            return new ResponseTypea(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseTypea(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseTypea(KaitaiStream _io, SpinoPayload.Payload _parent) {
            this(_io, _parent, null);
        }

        public ResponseTypea(KaitaiStream _io, SpinoPayload.Payload _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.size = this._io.readU2le();
            switch (_parent().cmdId()) {
            case 120: {
                this.responseData = new ResponseLastDrop(this._io, this, _root);
                break;
            }
            case 131: {
                this.responseData = new ResponseAllLog(this._io, this, _root);
                break;
            }
            case 0: {
                this.responseData = new Telemetry(this._io, this, _root);
                break;
            }
            case 73: {
                this.responseData = new Tle(this._io, this, _root);
                break;
            }
            case 35: {
                this.responseData = new ListMailBox(this._io, this, _root);
                break;
            }
            case 121: {
                this.responseData = new ResponseAllDrop(this._io, this, _root);
                break;
            }
            case 101: {
                this.responseData = new ResponseSetdatavalue(this._io, this, _root);
                break;
            }
            case 103: {
                this.responseData = new Configuration(this._io, this, _root);
                break;
            }
            case 38: {
                this.responseData = new MailboxMessage(this._io, this, _root);
                break;
            }
            case 76: {
                this.responseData = new ListMailBox(this._io, this, _root);
                break;
            }
            case 122: {
                this.responseData = new ResponseLastDrop(this._io, this, _root);
                break;
            }
            case 130: {
                this.responseData = new ResponseLastLog(this._io, this, _root);
                break;
            }
            case 37: {
                this.responseData = new MailboxMessage(this._io, this, _root);
                break;
            }
            case 134: {
                this.responseData = new ResponseLastLog(this._io, this, _root);
                break;
            }
            case 102: {
                this.responseData = new ResponseGetdatavalue(this._io, this, _root);
                break;
            }
            }
        }
        private Integer sizeRaw;
        public Integer sizeRaw() {
            if (this.sizeRaw != null)
                return this.sizeRaw;
            int _tmp = (int) (size());
            this.sizeRaw = _tmp;
            return this.sizeRaw;
        }
        private KaitaiStruct responseDataRaw;
        public KaitaiStruct responseDataRaw() {
            if (this.responseDataRaw != null)
                return this.responseDataRaw;
            this.responseDataRaw = responseData();
            return this.responseDataRaw;
        }
        private int size;
        private KaitaiStruct responseData;
        private SpinoPayload _root;
        private SpinoPayload.Payload _parent;
        public int size() { return size; }
        public KaitaiStruct responseData() { return responseData; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.Payload _parent() { return _parent; }
    }
    public static class ResponseAllDrop extends KaitaiStruct {
        public static ResponseAllDrop fromFile(String fileName) throws IOException {
            return new ResponseAllDrop(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseAllDrop(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseAllDrop(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ResponseAllDrop(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.message = this._io.readBytesFull();
        }
        private byte[] messageRaw;
        public byte[] messageRaw() {
            if (this.messageRaw != null)
                return this.messageRaw;
            this.messageRaw = message();
            return this.messageRaw;
        }
        private byte[] message;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public byte[] message() { return message; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class LogLevel extends KaitaiStruct {
        public static LogLevel fromFile(String fileName) throws IOException {
            return new LogLevel(new ByteBufferKaitaiStream(fileName));
        }

        public LogLevel(KaitaiStream _io) {
            this(_io, null, null);
        }

        public LogLevel(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public LogLevel(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.logLevel = this._io.readU1();
        }
        private Integer logLevelRaw;
        public Integer logLevelRaw() {
            if (this.logLevelRaw != null)
                return this.logLevelRaw;
            int _tmp = (int) (logLevel());
            this.logLevelRaw = _tmp;
            return this.logLevelRaw;
        }
        private int logLevel;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public int logLevel() { return logLevel; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class Version extends KaitaiStruct {
        public static Version fromFile(String fileName) throws IOException {
            return new Version(new ByteBufferKaitaiStream(fileName));
        }

        public Version(KaitaiStream _io) {
            this(_io, null, null);
        }

        public Version(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public Version(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.version = this._io.readU2le();
        }
        private Integer versionRaw;
        public Integer versionRaw() {
            if (this.versionRaw != null)
                return this.versionRaw;
            int _tmp = (int) (version());
            this.versionRaw = _tmp;
            return this.versionRaw;
        }
        private int version;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public int version() { return version; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class SpinoDelay extends KaitaiStruct {
        public static SpinoDelay fromFile(String fileName) throws IOException {
            return new SpinoDelay(new ByteBufferKaitaiStream(fileName));
        }

        public SpinoDelay(KaitaiStream _io) {
            this(_io, null, null);
        }

        public SpinoDelay(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public SpinoDelay(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.spinoDelay = this._io.readU1();
            this.crc = this._io.readU2le();
        }
        private Integer spinoDelayS;
        public Integer spinoDelayS() {
            if (this.spinoDelayS != null)
                return this.spinoDelayS;
            int _tmp = (int) (spinoDelay());
            this.spinoDelayS = _tmp;
            return this.spinoDelayS;
        }
        private Integer crcRaw;
        public Integer crcRaw() {
            if (this.crcRaw != null)
                return this.crcRaw;
            int _tmp = (int) (crc());
            this.crcRaw = _tmp;
            return this.crcRaw;
        }
        private int spinoDelay;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public int spinoDelay() { return spinoDelay; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class ResponseGetdatavalue extends KaitaiStruct {
        public static ResponseGetdatavalue fromFile(String fileName) throws IOException {
            return new ResponseGetdatavalue(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseGetdatavalue(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseGetdatavalue(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ResponseGetdatavalue(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.fieldId = this._io.readU1();
            this.fieldSize = this._io.readU1();
            switch (fieldId()) {
            case 10: {
                this.valueData = new ModemTxMultiMode(this._io, this, _root);
                break;
            }
            case 4: {
                this.valueData = new Callsign(this._io, this, _root);
                break;
            }
            case 6: {
                this.valueData = new LogLevel(this._io, this, _root);
                break;
            }
            case 7: {
                this.valueData = new ActiveInfoMessage(this._io, this, _root);
                break;
            }
            case 1: {
                this.valueData = new SpinoDelay(this._io, this, _root);
                break;
            }
            case 3: {
                this.valueData = new Callsign(this._io, this, _root);
                break;
            }
            case 5: {
                this.valueData = new TimeStamps(this._io, this, _root);
                break;
            }
            case 8: {
                this.valueData = new InformationMessageDelay(this._io, this, _root);
                break;
            }
            case 9: {
                this.valueData = new ModemTxMode(this._io, this, _root);
                break;
            }
            case 2: {
                this.valueData = new Callsign(this._io, this, _root);
                break;
            }
            case 128: {
                this.valueData = new Version(this._io, this, _root);
                break;
            }
            }
            this.valueData2 = this._io.readBytesFull();
        }
        private Integer fieldIdRaw;
        public Integer fieldIdRaw() {
            if (this.fieldIdRaw != null)
                return this.fieldIdRaw;
            int _tmp = (int) (fieldId());
            this.fieldIdRaw = _tmp;
            return this.fieldIdRaw;
        }
        private Integer fieldSizeRaw;
        public Integer fieldSizeRaw() {
            if (this.fieldSizeRaw != null)
                return this.fieldSizeRaw;
            int _tmp = (int) (fieldSize());
            this.fieldSizeRaw = _tmp;
            return this.fieldSizeRaw;
        }
        private KaitaiStruct valueDataRaw;
        public KaitaiStruct valueDataRaw() {
            if (this.valueDataRaw != null)
                return this.valueDataRaw;
            this.valueDataRaw = valueData();
            return this.valueDataRaw;
        }
        private int fieldId;
        private int fieldSize;
        private KaitaiStruct valueData;
        private byte[] valueData2;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public int fieldId() { return fieldId; }
        public int fieldSize() { return fieldSize; }
        public KaitaiStruct valueData() { return valueData; }
        public byte[] valueData2() { return valueData2; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class ModemTxMultiMode extends KaitaiStruct {
        public static ModemTxMultiMode fromFile(String fileName) throws IOException {
            return new ModemTxMultiMode(new ByteBufferKaitaiStream(fileName));
        }

        public ModemTxMultiMode(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ModemTxMultiMode(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public ModemTxMultiMode(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.modemTxMultiMode = this._io.readU4le();
        }
        private Long modemTxMultiModeRaw;
        public Long modemTxMultiModeRaw() {
            if (this.modemTxMultiModeRaw != null)
                return this.modemTxMultiModeRaw;
            long _tmp = (long) (modemTxMultiMode());
            this.modemTxMultiModeRaw = _tmp;
            return this.modemTxMultiModeRaw;
        }
        private long modemTxMultiMode;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public long modemTxMultiMode() { return modemTxMultiMode; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class Configuration extends KaitaiStruct {
        public static Configuration fromFile(String fileName) throws IOException {
            return new Configuration(new ByteBufferKaitaiStream(fileName));
        }

        public Configuration(KaitaiStream _io) {
            this(_io, null, null);
        }

        public Configuration(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public Configuration(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.spinoTxFrequency = this._io.readU4le();
            this.spinoRxFrequency = this._io.readU4le();
            this.spinoTxModemSpeed = this._io.readU2le();
            this.spinoRxModemSpeed = this._io.readU2le();
            this.spinoRxModemMode = this._io.readU1();
            this.spinoTxModemMode = this._io.readU1();
            this.telemetryDelay = this._io.readU1();
            this.multimode = this._io.readU1();
            this.infoMessageActif = this._io.readU1();
            this.delayInfoMessage = this._io.readU1();
            this.srcCallsign = new String(this._io.readBytes(6), Charset.forName("ASCII"));
            this.destCallsign = new String(this._io.readBytes(6), Charset.forName("ASCII"));
            this.payloadCallsign = new String(this._io.readBytes(6), Charset.forName("ASCII"));
            this.crc = this._io.readU2le();
        }
        private Long spinoRxFrequencyHz;
        public Long spinoRxFrequencyHz() {
            if (this.spinoRxFrequencyHz != null)
                return this.spinoRxFrequencyHz;
            long _tmp = (long) (spinoRxFrequency());
            this.spinoRxFrequencyHz = _tmp;
            return this.spinoRxFrequencyHz;
        }
        private Integer multimodeRaw;
        public Integer multimodeRaw() {
            if (this.multimodeRaw != null)
                return this.multimodeRaw;
            int _tmp = (int) (multimode());
            this.multimodeRaw = _tmp;
            return this.multimodeRaw;
        }
        private Integer delayInfoMessageS;
        public Integer delayInfoMessageS() {
            if (this.delayInfoMessageS != null)
                return this.delayInfoMessageS;
            int _tmp = (int) (delayInfoMessage());
            this.delayInfoMessageS = _tmp;
            return this.delayInfoMessageS;
        }
        private Integer spinoRxModemSpeedRaw;
        public Integer spinoRxModemSpeedRaw() {
            if (this.spinoRxModemSpeedRaw != null)
                return this.spinoRxModemSpeedRaw;
            int _tmp = (int) (spinoRxModemSpeed());
            this.spinoRxModemSpeedRaw = _tmp;
            return this.spinoRxModemSpeedRaw;
        }
        private String destCallsignRaw;
        public String destCallsignRaw() {
            if (this.destCallsignRaw != null)
                return this.destCallsignRaw;
            this.destCallsignRaw = destCallsign();
            return this.destCallsignRaw;
        }
        private Long spinoTxFrequencyHz;
        public Long spinoTxFrequencyHz() {
            if (this.spinoTxFrequencyHz != null)
                return this.spinoTxFrequencyHz;
            long _tmp = (long) (spinoTxFrequency());
            this.spinoTxFrequencyHz = _tmp;
            return this.spinoTxFrequencyHz;
        }
        private Integer telemetryDelayS;
        public Integer telemetryDelayS() {
            if (this.telemetryDelayS != null)
                return this.telemetryDelayS;
            int _tmp = (int) (telemetryDelay());
            this.telemetryDelayS = _tmp;
            return this.telemetryDelayS;
        }
        private Integer infoMessageActifRaw;
        public Integer infoMessageActifRaw() {
            if (this.infoMessageActifRaw != null)
                return this.infoMessageActifRaw;
            int _tmp = (int) (infoMessageActif());
            this.infoMessageActifRaw = _tmp;
            return this.infoMessageActifRaw;
        }
        private Integer crcRaw;
        public Integer crcRaw() {
            if (this.crcRaw != null)
                return this.crcRaw;
            int _tmp = (int) (crc());
            this.crcRaw = _tmp;
            return this.crcRaw;
        }
        private String srcCallsignRaw;
        public String srcCallsignRaw() {
            if (this.srcCallsignRaw != null)
                return this.srcCallsignRaw;
            this.srcCallsignRaw = srcCallsign();
            return this.srcCallsignRaw;
        }
        private Integer spinoRxModemModeRaw;
        public Integer spinoRxModemModeRaw() {
            if (this.spinoRxModemModeRaw != null)
                return this.spinoRxModemModeRaw;
            int _tmp = (int) (spinoRxModemMode());
            this.spinoRxModemModeRaw = _tmp;
            return this.spinoRxModemModeRaw;
        }
        private Integer spinoTxModemSpeedRaw;
        public Integer spinoTxModemSpeedRaw() {
            if (this.spinoTxModemSpeedRaw != null)
                return this.spinoTxModemSpeedRaw;
            int _tmp = (int) (spinoTxModemSpeed());
            this.spinoTxModemSpeedRaw = _tmp;
            return this.spinoTxModemSpeedRaw;
        }
        private String payloadCallsignRaw;
        public String payloadCallsignRaw() {
            if (this.payloadCallsignRaw != null)
                return this.payloadCallsignRaw;
            this.payloadCallsignRaw = payloadCallsign();
            return this.payloadCallsignRaw;
        }
        private Integer spinoTxModemModeRaw;
        public Integer spinoTxModemModeRaw() {
            if (this.spinoTxModemModeRaw != null)
                return this.spinoTxModemModeRaw;
            int _tmp = (int) (spinoTxModemMode());
            this.spinoTxModemModeRaw = _tmp;
            return this.spinoTxModemModeRaw;
        }
        private long spinoTxFrequency;
        private long spinoRxFrequency;
        private int spinoTxModemSpeed;
        private int spinoRxModemSpeed;
        private int spinoRxModemMode;
        private int spinoTxModemMode;
        private int telemetryDelay;
        private int multimode;
        private int infoMessageActif;
        private int delayInfoMessage;
        private String srcCallsign;
        private String destCallsign;
        private String payloadCallsign;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public long spinoTxFrequency() { return spinoTxFrequency; }
        public long spinoRxFrequency() { return spinoRxFrequency; }
        public int spinoTxModemSpeed() { return spinoTxModemSpeed; }
        public int spinoRxModemSpeed() { return spinoRxModemSpeed; }
        public int spinoRxModemMode() { return spinoRxModemMode; }
        public int spinoTxModemMode() { return spinoTxModemMode; }
        public int telemetryDelay() { return telemetryDelay; }
        public int multimode() { return multimode; }
        public int infoMessageActif() { return infoMessageActif; }
        public int delayInfoMessage() { return delayInfoMessage; }
        public String srcCallsign() { return srcCallsign; }
        public String destCallsign() { return destCallsign; }
        public String payloadCallsign() { return payloadCallsign; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class ListMailBox extends KaitaiStruct {
        public static ListMailBox fromFile(String fileName) throws IOException {
            return new ListMailBox(new ByteBufferKaitaiStream(fileName));
        }

        public ListMailBox(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ListMailBox(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ListMailBox(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.indi = this._io.readBytes(6);
            this.nbmsage = this._io.readBytes(1);
            this.indi2 = this._io.readBytes(6);
            this.nbmsage2 = this._io.readBytes(1);
            this.value = this._io.readBytesFull();
        }
        private byte[] indi;
        private byte[] nbmsage;
        private byte[] indi2;
        private byte[] nbmsage2;
        private byte[] value;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public byte[] indi() { return indi; }
        public byte[] nbmsage() { return nbmsage; }
        public byte[] indi2() { return indi2; }
        public byte[] nbmsage2() { return nbmsage2; }
        public byte[] value() { return value; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class ResponseBeaconExpe extends KaitaiStruct {
        public static ResponseBeaconExpe fromFile(String fileName) throws IOException {
            return new ResponseBeaconExpe(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseBeaconExpe(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseBeaconExpe(KaitaiStream _io, SpinoPayload.Payload _parent) {
            this(_io, _parent, null);
        }

        public ResponseBeaconExpe(KaitaiStream _io, SpinoPayload.Payload _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.size = this._io.readU2le();
            this.id = this._io.readU4le();
            this.expereceived = this._io.readU4le();
            this.expereceivedfail = this._io.readU4le();
            this.expeDelay = this._io.readU2le();
            this.idf = this._io.readU2le();
        }
        private Integer expeDelayRaw;
        public Integer expeDelayRaw() {
            if (this.expeDelayRaw != null)
                return this.expeDelayRaw;
            int _tmp = (int) (expeDelay());
            this.expeDelayRaw = _tmp;
            return this.expeDelayRaw;
        }
        private Long expereceivedRaw;
        public Long expereceivedRaw() {
            if (this.expereceivedRaw != null)
                return this.expereceivedRaw;
            long _tmp = (long) (expereceived());
            this.expereceivedRaw = _tmp;
            return this.expereceivedRaw;
        }
        private Integer sizeRaw;
        public Integer sizeRaw() {
            if (this.sizeRaw != null)
                return this.sizeRaw;
            int _tmp = (int) (size());
            this.sizeRaw = _tmp;
            return this.sizeRaw;
        }
        private Long idRaw;
        public Long idRaw() {
            if (this.idRaw != null)
                return this.idRaw;
            long _tmp = (long) (id());
            this.idRaw = _tmp;
            return this.idRaw;
        }
        private Long expereceivedfailRaw;
        public Long expereceivedfailRaw() {
            if (this.expereceivedfailRaw != null)
                return this.expereceivedfailRaw;
            long _tmp = (long) (expereceivedfail());
            this.expereceivedfailRaw = _tmp;
            return this.expereceivedfailRaw;
        }
        private Integer idfRaw;
        public Integer idfRaw() {
            if (this.idfRaw != null)
                return this.idfRaw;
            int _tmp = (int) (idf());
            this.idfRaw = _tmp;
            return this.idfRaw;
        }
        private int size;
        private long id;
        private long expereceived;
        private long expereceivedfail;
        private int expeDelay;
        private int idf;
        private SpinoPayload _root;
        private SpinoPayload.Payload _parent;
        public int size() { return size; }
        public long id() { return id; }
        public long expereceived() { return expereceived; }
        public long expereceivedfail() { return expereceivedfail; }
        public int expeDelay() { return expeDelay; }
        public int idf() { return idf; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.Payload _parent() { return _parent; }
    }
    public static class ResponseAllLog extends KaitaiStruct {
        public static ResponseAllLog fromFile(String fileName) throws IOException {
            return new ResponseAllLog(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseAllLog(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseAllLog(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ResponseAllLog(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.message = this._io.readBytesFull();
        }
        private byte[] messageRaw;
        public byte[] messageRaw() {
            if (this.messageRaw != null)
                return this.messageRaw;
            this.messageRaw = message();
            return this.messageRaw;
        }
        private byte[] message;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public byte[] message() { return message; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class ModemTxMode extends KaitaiStruct {
        public static ModemTxMode fromFile(String fileName) throws IOException {
            return new ModemTxMode(new ByteBufferKaitaiStream(fileName));
        }

        public ModemTxMode(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ModemTxMode(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public ModemTxMode(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.modemTxMode = this._io.readU1();
        }
        private Integer modemTxModeRaw;
        public Integer modemTxModeRaw() {
            if (this.modemTxModeRaw != null)
                return this.modemTxModeRaw;
            int _tmp = (int) (modemTxMode());
            this.modemTxModeRaw = _tmp;
            return this.modemTxModeRaw;
        }
        private int modemTxMode;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public int modemTxMode() { return modemTxMode; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class ResponseLastLog extends KaitaiStruct {
        public static ResponseLastLog fromFile(String fileName) throws IOException {
            return new ResponseLastLog(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseLastLog(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseLastLog(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ResponseLastLog(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.timetamps = this._io.readU8le();
            this.priority = this._io.readU1();
            this.message = new String(this._io.readBytesFull(), Charset.forName("ASCII"));
        }
        private Long timetampsS;
        public Long timetampsS() {
            if (this.timetampsS != null)
                return this.timetampsS;
            long _tmp = (long) (timetamps());
            this.timetampsS = _tmp;
            return this.timetampsS;
        }
        private Integer priorityRaw;
        public Integer priorityRaw() {
            if (this.priorityRaw != null)
                return this.priorityRaw;
            int _tmp = (int) (priority());
            this.priorityRaw = _tmp;
            return this.priorityRaw;
        }
        private String messageRaw;
        public String messageRaw() {
            if (this.messageRaw != null)
                return this.messageRaw;
            this.messageRaw = message();
            return this.messageRaw;
        }
        private long timetamps;
        private int priority;
        private String message;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public long timetamps() { return timetamps; }
        public int priority() { return priority; }
        public String message() { return message; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class TimeStamps extends KaitaiStruct {
        public static TimeStamps fromFile(String fileName) throws IOException {
            return new TimeStamps(new ByteBufferKaitaiStream(fileName));
        }

        public TimeStamps(KaitaiStream _io) {
            this(_io, null, null);
        }

        public TimeStamps(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public TimeStamps(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.timeStamps = this._io.readU4le();
        }
        private Long timeStampsS;
        public Long timeStampsS() {
            if (this.timeStampsS != null)
                return this.timeStampsS;
            long _tmp = (long) (timeStamps());
            this.timeStampsS = _tmp;
            return this.timeStampsS;
        }
        private long timeStamps;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public long timeStamps() { return timeStamps; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class MailboxMessage extends KaitaiStruct {
        public static MailboxMessage fromFile(String fileName) throws IOException {
            return new MailboxMessage(new ByteBufferKaitaiStream(fileName));
        }

        public MailboxMessage(KaitaiStream _io) {
            this(_io, null, null);
        }

        public MailboxMessage(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public MailboxMessage(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.timetamps = this._io.readU8le();
            this.callsign = this._io.readBytes(6);
            this.index = this._io.readU1();
            this.value = this._io.readBytesFull();
        }
        private Long timetampsS;
        public Long timetampsS() {
            if (this.timetampsS != null)
                return this.timetampsS;
            long _tmp = (long) (timetamps());
            this.timetampsS = _tmp;
            return this.timetampsS;
        }
        private byte[] callsignRaw;
        public byte[] callsignRaw() {
            if (this.callsignRaw != null)
                return this.callsignRaw;
            this.callsignRaw = callsign();
            return this.callsignRaw;
        }
        private Integer indexRaw;
        public Integer indexRaw() {
            if (this.indexRaw != null)
                return this.indexRaw;
            int _tmp = (int) (index());
            this.indexRaw = _tmp;
            return this.indexRaw;
        }
        private byte[] valueRaw;
        public byte[] valueRaw() {
            if (this.valueRaw != null)
                return this.valueRaw;
            this.valueRaw = value();
            return this.valueRaw;
        }
        private long timetamps;
        private byte[] callsign;
        private int index;
        private byte[] value;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public long timetamps() { return timetamps; }
        public byte[] callsign() { return callsign; }
        public int index() { return index; }
        public byte[] value() { return value; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class InformationMessageDelay extends KaitaiStruct {
        public static InformationMessageDelay fromFile(String fileName) throws IOException {
            return new InformationMessageDelay(new ByteBufferKaitaiStream(fileName));
        }

        public InformationMessageDelay(KaitaiStream _io) {
            this(_io, null, null);
        }

        public InformationMessageDelay(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent) {
            this(_io, _parent, null);
        }

        public InformationMessageDelay(KaitaiStream _io, SpinoPayload.ResponseGetdatavalue _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.informationMessageDelay = this._io.readU1();
            this.crc = this._io.readU2le();
        }
        private Integer informationMessageDelayS;
        public Integer informationMessageDelayS() {
            if (this.informationMessageDelayS != null)
                return this.informationMessageDelayS;
            int _tmp = (int) (informationMessageDelay());
            this.informationMessageDelayS = _tmp;
            return this.informationMessageDelayS;
        }
        private Integer crcRaw;
        public Integer crcRaw() {
            if (this.crcRaw != null)
                return this.crcRaw;
            int _tmp = (int) (crc());
            this.crcRaw = _tmp;
            return this.crcRaw;
        }
        private int informationMessageDelay;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseGetdatavalue _parent;
        public int informationMessageDelay() { return informationMessageDelay; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseGetdatavalue _parent() { return _parent; }
    }
    public static class ResponseSetdatavalue extends KaitaiStruct {
        public static ResponseSetdatavalue fromFile(String fileName) throws IOException {
            return new ResponseSetdatavalue(new ByteBufferKaitaiStream(fileName));
        }

        public ResponseSetdatavalue(KaitaiStream _io) {
            this(_io, null, null);
        }

        public ResponseSetdatavalue(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public ResponseSetdatavalue(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.fieldId = this._io.readU1();
            this.crc = this._io.readU2le();
        }
        private Integer fieldIdRaw;
        public Integer fieldIdRaw() {
            if (this.fieldIdRaw != null)
                return this.fieldIdRaw;
            int _tmp = (int) (fieldId());
            this.fieldIdRaw = _tmp;
            return this.fieldIdRaw;
        }
        private Integer crcRaw;
        public Integer crcRaw() {
            if (this.crcRaw != null)
                return this.crcRaw;
            int _tmp = (int) (crc());
            this.crcRaw = _tmp;
            return this.crcRaw;
        }
        private int fieldId;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public int fieldId() { return fieldId; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    public static class Telemetry extends KaitaiStruct {
        public static Telemetry fromFile(String fileName) throws IOException {
            return new Telemetry(new ByteBufferKaitaiStream(fileName));
        }

        public Telemetry(KaitaiStream _io) {
            this(_io, null, null);
        }

        public Telemetry(KaitaiStream _io, SpinoPayload.ResponseTypea _parent) {
            this(_io, _parent, null);
        }

        public Telemetry(KaitaiStream _io, SpinoPayload.ResponseTypea _parent, SpinoPayload _root) {
            super(_io);
            this._parent = _parent;
            this._root = _root;
            _read();
        }
        private void _read() {
            this.nbCommandeReceived = this._io.readU4le();
            this.nbCommandeWithError = this._io.readU4le();
            this.nbFrameNotProcessed = this._io.readU4le();
            this.nbDigipeaterMesssageProcessed = this._io.readU4le();
            this.nbExperiemntalCommand = this._io.readU4le();
            this.nbExperiemntalCommandError = this._io.readU4le();
            this.nbMailboxCommandeReceived = this._io.readU4le();
            this.nbMailboxErrorCommandeReceived = this._io.readU4le();
            this.nbPayloadCommandeReceived = this._io.readU4le();
            this.nbPayloadCommandWithError = this._io.readU4le();
            this.timestamps = this._io.readU8le();
            this.lastResetCause = this._io.readU2le();
            this.currentState = this._io.readU2le();
            this.spare = this._io.readU4le();
            this.crc = this._io.readU2le();
        }
        private Long nbFrameNotProcessedRaw;
        public Long nbFrameNotProcessedRaw() {
            if (this.nbFrameNotProcessedRaw != null)
                return this.nbFrameNotProcessedRaw;
            long _tmp = (long) (nbFrameNotProcessed());
            this.nbFrameNotProcessedRaw = _tmp;
            return this.nbFrameNotProcessedRaw;
        }
        private Long nbCommandeWithErrorRaw;
        public Long nbCommandeWithErrorRaw() {
            if (this.nbCommandeWithErrorRaw != null)
                return this.nbCommandeWithErrorRaw;
            long _tmp = (long) (nbCommandeWithError());
            this.nbCommandeWithErrorRaw = _tmp;
            return this.nbCommandeWithErrorRaw;
        }
        private Long nbPayloadCommandWithErrorRaw;
        public Long nbPayloadCommandWithErrorRaw() {
            if (this.nbPayloadCommandWithErrorRaw != null)
                return this.nbPayloadCommandWithErrorRaw;
            long _tmp = (long) (nbPayloadCommandWithError());
            this.nbPayloadCommandWithErrorRaw = _tmp;
            return this.nbPayloadCommandWithErrorRaw;
        }
        private Integer lastResetCauseRaw;
        public Integer lastResetCauseRaw() {
            if (this.lastResetCauseRaw != null)
                return this.lastResetCauseRaw;
            int _tmp = (int) (lastResetCause());
            this.lastResetCauseRaw = _tmp;
            return this.lastResetCauseRaw;
        }
        private Long nbMailboxCommandeReceivedRaw;
        public Long nbMailboxCommandeReceivedRaw() {
            if (this.nbMailboxCommandeReceivedRaw != null)
                return this.nbMailboxCommandeReceivedRaw;
            long _tmp = (long) (nbMailboxCommandeReceived());
            this.nbMailboxCommandeReceivedRaw = _tmp;
            return this.nbMailboxCommandeReceivedRaw;
        }
        private Long nbPayloadCommandeReceivedRaw;
        public Long nbPayloadCommandeReceivedRaw() {
            if (this.nbPayloadCommandeReceivedRaw != null)
                return this.nbPayloadCommandeReceivedRaw;
            long _tmp = (long) (nbPayloadCommandeReceived());
            this.nbPayloadCommandeReceivedRaw = _tmp;
            return this.nbPayloadCommandeReceivedRaw;
        }
        private Integer currentStateRaw;
        public Integer currentStateRaw() {
            if (this.currentStateRaw != null)
                return this.currentStateRaw;
            int _tmp = (int) (currentState());
            this.currentStateRaw = _tmp;
            return this.currentStateRaw;
        }
        private Long timestampsRaw;
        public Long timestampsRaw() {
            if (this.timestampsRaw != null)
                return this.timestampsRaw;
            long _tmp = (long) (timestamps());
            this.timestampsRaw = _tmp;
            return this.timestampsRaw;
        }
        private Long nbMailboxErrorCommandeReceivedRaw;
        public Long nbMailboxErrorCommandeReceivedRaw() {
            if (this.nbMailboxErrorCommandeReceivedRaw != null)
                return this.nbMailboxErrorCommandeReceivedRaw;
            long _tmp = (long) (nbMailboxErrorCommandeReceived());
            this.nbMailboxErrorCommandeReceivedRaw = _tmp;
            return this.nbMailboxErrorCommandeReceivedRaw;
        }
        private Long nbCommandeReceivedRaw;
        public Long nbCommandeReceivedRaw() {
            if (this.nbCommandeReceivedRaw != null)
                return this.nbCommandeReceivedRaw;
            long _tmp = (long) (nbCommandeReceived());
            this.nbCommandeReceivedRaw = _tmp;
            return this.nbCommandeReceivedRaw;
        }
        private Long nbExperiemntalCommandRaw;
        public Long nbExperiemntalCommandRaw() {
            if (this.nbExperiemntalCommandRaw != null)
                return this.nbExperiemntalCommandRaw;
            long _tmp = (long) (nbExperiemntalCommand());
            this.nbExperiemntalCommandRaw = _tmp;
            return this.nbExperiemntalCommandRaw;
        }
        private Long nbDigipeaterMesssageProcessedRaw;
        public Long nbDigipeaterMesssageProcessedRaw() {
            if (this.nbDigipeaterMesssageProcessedRaw != null)
                return this.nbDigipeaterMesssageProcessedRaw;
            long _tmp = (long) (nbDigipeaterMesssageProcessed());
            this.nbDigipeaterMesssageProcessedRaw = _tmp;
            return this.nbDigipeaterMesssageProcessedRaw;
        }
        private Long nbExperiemntalCommandErrorRaw;
        public Long nbExperiemntalCommandErrorRaw() {
            if (this.nbExperiemntalCommandErrorRaw != null)
                return this.nbExperiemntalCommandErrorRaw;
            long _tmp = (long) (nbExperiemntalCommandError());
            this.nbExperiemntalCommandErrorRaw = _tmp;
            return this.nbExperiemntalCommandErrorRaw;
        }
        private long nbCommandeReceived;
        private long nbCommandeWithError;
        private long nbFrameNotProcessed;
        private long nbDigipeaterMesssageProcessed;
        private long nbExperiemntalCommand;
        private long nbExperiemntalCommandError;
        private long nbMailboxCommandeReceived;
        private long nbMailboxErrorCommandeReceived;
        private long nbPayloadCommandeReceived;
        private long nbPayloadCommandWithError;
        private long timestamps;
        private int lastResetCause;
        private int currentState;
        private long spare;
        private int crc;
        private SpinoPayload _root;
        private SpinoPayload.ResponseTypea _parent;
        public long nbCommandeReceived() { return nbCommandeReceived; }
        public long nbCommandeWithError() { return nbCommandeWithError; }
        public long nbFrameNotProcessed() { return nbFrameNotProcessed; }
        public long nbDigipeaterMesssageProcessed() { return nbDigipeaterMesssageProcessed; }
        public long nbExperiemntalCommand() { return nbExperiemntalCommand; }
        public long nbExperiemntalCommandError() { return nbExperiemntalCommandError; }
        public long nbMailboxCommandeReceived() { return nbMailboxCommandeReceived; }
        public long nbMailboxErrorCommandeReceived() { return nbMailboxErrorCommandeReceived; }
        public long nbPayloadCommandeReceived() { return nbPayloadCommandeReceived; }
        public long nbPayloadCommandWithError() { return nbPayloadCommandWithError; }
        public long timestamps() { return timestamps; }
        public int lastResetCause() { return lastResetCause; }
        public int currentState() { return currentState; }
        public long spare() { return spare; }
        public int crc() { return crc; }
        public SpinoPayload _root() { return _root; }
        public SpinoPayload.ResponseTypea _parent() { return _parent; }
    }
    private Payload payload;
    private SpinoPayload _root;
    private KaitaiStruct _parent;
    public Payload payload() { return payload; }
    public SpinoPayload _root() { return _root; }
    public KaitaiStruct _parent() { return _parent; }
}
