private void _read()
 {
     _pid            = m_io.ReadU1();
     _mspPayload     = new MspPayloadTDescriptor(m_io, this, m_root);
     _zeroPadding    = m_io.ReadBytes(91);
     _fec8RsChecksum = m_io.ReadBytes(32);
 }
        public static BeaconData DecodeBeacon(byte[] payload)
        {
            Acrux1beacon decodedBeacon;

            try
            {
                decodedBeacon = new Acrux1beacon(new KaitaiStream(payload));
            }
            catch
            {
                return(null);
            }

            MspPayloadTDescriptor mspPayload = (decodedBeacon.Ax25Frame.Payload as UiFrameDescriptor)?.MspPayload;

            if (mspPayload is null)
            {
                return(null);
            }

            var beaconData = new BeaconData()
            {
                DestinationCallsign = decodedBeacon.Ax25Frame.Ax25Header.DestCallsignRaw.CallsignRor.Callsign,
                DestinationSsid     = decodedBeacon.Ax25Frame.Ax25Header.DestSsidRaw.Ssid,
                SourceCallsign      = decodedBeacon.Ax25Frame.Ax25Header.SrcCallsignRaw.CallsignRor.Callsign,
                SourceSsid          = decodedBeacon.Ax25Frame.Ax25Header.SrcSsidRaw.Ssid,

                TxCount         = mspPayload.TxCount,
                RxCount         = mspPayload.RxCount,
                RxValid         = mspPayload.RxValid,
                PayloadType     = mspPayload.PayloadType,
                Comouti1        = ShortToCurrent(mspPayload.Comouti1),
                Comouti1Raw     = mspPayload.Comouti1,
                Comoutv1        = ShortToVoltage(mspPayload.Comoutv1),
                Comoutv1Raw     = mspPayload.Comoutv1,
                Comouti2        = ShortToCurrent(mspPayload.Comouti2),
                Comouti2Raw     = mspPayload.Comouti2,
                Comoutv2        = ShortToVoltage(mspPayload.Comoutv2),
                Comoutv2Raw     = mspPayload.Comoutv2,
                Comt2           = ShortToTemperature(mspPayload.Comt2),
                Comt2Raw        = mspPayload.Comt2,
                Epsadcbatv1     = ShortToVoltage(mspPayload.Epsadcbatv1),
                Epsadcbatv1Raw  = mspPayload.Epsadcbatv1,
                Epsloadi1       = ShortToCurrent(mspPayload.Epsloadi1),
                Epsloadi1Raw    = mspPayload.Epsloadi1,
                Epsadcbatv2     = ShortToVoltage(mspPayload.Epsadcbatv2),
                Epsadcbatv2Raw  = mspPayload.Epsadcbatv2,
                Epsboostini2    = ShortToCurrent(mspPayload.Epsboostini2),
                Epsboostini2Raw = mspPayload.Epsboostini2,
                Epsrail1        = ShortToVoltage(mspPayload.Epsrail1),
                Epsrail1Raw     = mspPayload.Epsrail1,
                Epsrail2        = ShortToVoltage(mspPayload.Epsrail2),
                Epsrail2Raw     = mspPayload.Epsrail2,
                Epstoppanelv    = ShortToVoltage(mspPayload.Epstoppanelv),
                EpstoppanelvRaw = mspPayload.Epstoppanelv,
                Epstoppaneli    = ShortToCurrent(mspPayload.Epstoppaneli),
                EpstoppaneliRaw = mspPayload.Epstoppaneli,
                Epst1           = ShortToTemperature(mspPayload.Epst1),
                Epst1Raw        = mspPayload.Epst1,
                Epst2           = ShortToTemperature(mspPayload.Epst2),
                Epst2Raw        = mspPayload.Epst2,
                Xposv           = ShortToVoltage(mspPayload.Xposv),
                XposvRaw        = mspPayload.Xposv,
                Xposi           = ShortToCurrent(mspPayload.Xposi),
                XposiRaw        = mspPayload.Xposi,
                Xpost1          = ShortToTemperature(mspPayload.Xpost1),
                Xpost1Raw       = mspPayload.Xpost1,
                Yposv           = ShortToVoltage(mspPayload.Yposv),
                YposvRaw        = mspPayload.Yposv,
                Yposi           = ShortToCurrent(mspPayload.Yposi),
                YposiRaw        = mspPayload.Yposi,
                Ypost1          = ShortToTemperature(mspPayload.Ypost1),
                Ypost1Raw       = mspPayload.Ypost1,
                Xnegv           = ShortToVoltage(mspPayload.Xnegv),
                XnegvRaw        = mspPayload.Xnegv,
                Xnegi           = ShortToCurrent(mspPayload.Xnegi),
                XnegiRaw        = mspPayload.Xnegi,
                Xnegt1          = ShortToTemperature(mspPayload.Xnegt1),
                Xnegt1Raw       = mspPayload.Xnegt1,
                Ynegv           = ShortToVoltage(mspPayload.Ynegv),
                YnegvRaw        = mspPayload.Ynegv,
                Ynegi           = ShortToCurrent(mspPayload.Ynegi),
                YnegiRaw        = mspPayload.Ynegi,
                Ynegt1          = ShortToTemperature(mspPayload.Ynegt1),
                Ynegt1Raw       = mspPayload.Ynegt1,
                Znegv           = ShortToVoltage(mspPayload.Znegv),
                ZnegvRaw        = mspPayload.Znegv,
                Znegi           = ShortToCurrent(mspPayload.Znegi),
                ZnegiRaw        = mspPayload.Znegi,
                Znegt1          = ShortToTemperature(mspPayload.Znegt1),
                Znegt1Raw       = mspPayload.Znegt1,
                Zpost           = ShortToTemperature(mspPayload.Zpost),
                ZpostRaw        = mspPayload.Zpost,
                Cdhtime         = mspPayload.Cdhtime,
                Swcdhlastreboot = mspPayload.Swcdhlastreboot,
                Swsequence      = mspPayload.Swsequence,
                Outreachmessage = mspPayload.Outreachmessage,
            };

            return(beaconData);
        }