def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the velocities.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        for beam in range(self.element_multiplier):
            for bin_num in range(self.num_elements):
                self.Velocities[bin_num][beam] = Ensemble.GetFloat(packet_pointer, Ensemble().BytesInFloat, data)
                packet_pointer += Ensemble().BytesInFloat

        logging.debug(self.Velocities)
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the Good Beams.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        for beam in range(self.element_multiplier):
            for bin_num in range(self.num_elements):
                self.GoodBeam[bin_num][beam] = Ensemble.GetInt32(packet_pointer, Ensemble().BytesInInt32, data)
                packet_pointer += Ensemble().BytesInInt32

        logging.debug(self.GoodBeam)
Beispiel #3
0
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the NMEA data.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        nmea_str = str(data[packet_pointer:], "UTF-8")

        self.num_elements = len(nmea_str)

        for msg in nmea_str.split():
            # Add the NMEA message
            self.add_nmea(msg)

        logging.debug(nmea_str)
        logging.debug(self.nmea_sentences)
Beispiel #4
0
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the values.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        self.FirstBinRange = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 0, Ensemble().BytesInFloat, data)
        self.BinSize = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 1, Ensemble().BytesInFloat, data)
        self.FirstPingTime = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 2, Ensemble().BytesInFloat, data)
        self.LastPingTime = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 3, Ensemble().BytesInFloat, data)
        self.Heading = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 4, Ensemble().BytesInFloat, data)
        self.Pitch = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 5, Ensemble().BytesInFloat, data)
        self.Roll = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 6, Ensemble().BytesInFloat, data)
        self.WaterTemp = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 7, Ensemble().BytesInFloat, data)
        self.SystemTemp = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 8, Ensemble().BytesInFloat, data)
        self.Salinity = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 9, Ensemble().BytesInFloat, data)
        self.Pressure = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 10, Ensemble().BytesInFloat, data)
        self.TransducerDepth = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 11, Ensemble().BytesInFloat, data)
        self.SpeedOfSound = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 12, Ensemble().BytesInFloat, data)

        if self.num_elements > 13:
            self.RawMagFieldStrength = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 13, Ensemble().BytesInFloat, data)
            self.RawMagFieldStrength2 = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 14, Ensemble().BytesInFloat, data)
            self.RawMagFieldStrength3 = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 15, Ensemble().BytesInFloat, data)
            self.PitchGravityVector = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 16, Ensemble().BytesInFloat, data)
            self.RollGravityVector = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 17, Ensemble().BytesInFloat, data)
            self.VerticalGravityVector = Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 18, Ensemble().BytesInFloat, data)

        logging.debug(self.FirstBinRange)
        logging.debug(self.BinSize)
        logging.debug(self.Heading)
        logging.debug(self.Pitch)
        logging.debug(self.Roll)
        logging.debug(self.Salinity)
        logging.debug(self.SpeedOfSound)
Beispiel #5
0
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the values.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        self.EnsembleNumber = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 0,
            Ensemble().BytesInInt32, data)
        self.NumBins = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 1,
            Ensemble().BytesInInt32, data)
        self.NumBeams = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 2,
            Ensemble().BytesInInt32, data)
        self.DesiredPingCount = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 3,
            Ensemble().BytesInInt32, data)
        self.ActualPingCount = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 4,
            Ensemble().BytesInInt32, data)
        self.Status = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 5,
            Ensemble().BytesInInt32, data)
        self.Year = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 6,
            Ensemble().BytesInInt32, data)
        self.Month = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 7,
            Ensemble().BytesInInt32, data)
        self.Day = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 8,
            Ensemble().BytesInInt32, data)
        self.Hour = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 9,
            Ensemble().BytesInInt32, data)
        self.Minute = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 10,
            Ensemble().BytesInInt32, data)
        self.Second = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 11,
            Ensemble().BytesInInt32, data)
        self.HSec = Ensemble.GetInt32(
            packet_pointer + Ensemble().BytesInInt32 * 12,
            Ensemble().BytesInInt32, data)

        self.SerialNumber = str(
            data[packet_pointer + Ensemble().BytesInInt32 * 13:packet_pointer +
                 Ensemble().BytesInInt32 * 21], "UTF-8")
        self.SysFirmwareRevision = struct.unpack(
            "B", data[packet_pointer + Ensemble().BytesInInt32 * 21 +
                      0:packet_pointer + Ensemble().BytesInInt32 * 21 + 1])[0]
        self.SysFirmwareMinor = struct.unpack(
            "B", data[packet_pointer + Ensemble().BytesInInt32 * 21 +
                      1:packet_pointer + Ensemble().BytesInInt32 * 21 + 2])[0]
        self.SysFirmwareMajor = struct.unpack(
            "B", data[packet_pointer + Ensemble().BytesInInt32 * 21 +
                      2:packet_pointer + Ensemble().BytesInInt32 * 21 + 3])[0]
        self.SysFirmwareSubsystemCode = str(
            data[packet_pointer + Ensemble().BytesInInt32 * 21 +
                 3:packet_pointer + Ensemble().BytesInInt32 * 21 + 4], "UTF-8")

        self.SubsystemConfig = struct.unpack(
            "B", data[packet_pointer + Ensemble().BytesInInt32 * 22 +
                      3:packet_pointer + Ensemble().BytesInInt32 * 22 + 4])[0]

        logging.debug(self.EnsembleNumber)
        logging.debug(
            str(self.Month) + "/" + str(self.Day) + "/" + str(self.Year) +
            "  " + str(self.Hour) + ":" + str(self.Minute) + ":" +
            str(self.Second) + "." + str(self.HSec))
        logging.debug(self.SerialNumber)
        logging.debug(
            str(self.SysFirmwareMajor) + "." + str(self.SysFirmwareMinor) +
            "." + str(self.SysFirmwareRevision) + "-" +
            str(self.SysFirmwareSubsystemCode))
        logging.debug(self.SubsystemConfig)
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the values.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        self.NumBeams = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 0,
            Ensemble().BytesInFloat, data)

        self.num_elements = (8 * int(self.NumBeams)) + 1

        if self.NumBeams == 4.0:
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 1,
                                  Ensemble().BytesInFloat, data))
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 2,
                                  Ensemble().BytesInFloat, data))
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 3,
                                  Ensemble().BytesInFloat, data))
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 4,
                                  Ensemble().BytesInFloat, data))

            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 5,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 6,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 7,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 8,
                                  Ensemble().BytesInFloat, data))

            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 9,
                                  Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * 10,
                    Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * 11,
                    Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * 12,
                    Ensemble().BytesInFloat, data))

            if len(data) > 80:
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 13,
                        Ensemble().BytesInFloat, data))
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 14,
                        Ensemble().BytesInFloat, data))
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 15,
                        Ensemble().BytesInFloat, data))
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 16,
                        Ensemble().BytesInFloat, data))

                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 17,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 18,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 19,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 20,
                        Ensemble().BytesInFloat, data))

                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 21,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 22,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 23,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 24,
                        Ensemble().BytesInFloat, data))

                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 25,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 26,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 27,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 28,
                        Ensemble().BytesInFloat, data))

                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 29,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 30,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 31,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 32,
                        Ensemble().BytesInFloat, data))

        elif self.NumBeams == 3.0:
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 1,
                                  Ensemble().BytesInFloat, data))
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 2,
                                  Ensemble().BytesInFloat, data))
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 3,
                                  Ensemble().BytesInFloat, data))

            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 4,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 5,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 6,
                                  Ensemble().BytesInFloat, data))

            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 7,
                                  Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 8,
                                  Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 9,
                                  Ensemble().BytesInFloat, data))

            if len(data) > 68:
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 10,
                        Ensemble().BytesInFloat, data))
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 11,
                        Ensemble().BytesInFloat, data))
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 12,
                        Ensemble().BytesInFloat, data))

                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 13,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 14,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 15,
                        Ensemble().BytesInFloat, data))

                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 16,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 17,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 18,
                        Ensemble().BytesInFloat, data))

                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 19,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 20,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 21,
                        Ensemble().BytesInFloat, data))

                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 22,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 23,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 24,
                        Ensemble().BytesInFloat, data))

        elif self.NumBeams == 2.0:
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 1,
                                  Ensemble().BytesInFloat, data))
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 2,
                                  Ensemble().BytesInFloat, data))

            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 3,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 4,
                                  Ensemble().BytesInFloat, data))

            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 5,
                                  Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 6,
                                  Ensemble().BytesInFloat, data))

            if len(data) > 56:
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 7,
                        Ensemble().BytesInFloat, data))
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 8,
                        Ensemble().BytesInFloat, data))

                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 9,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 10,
                        Ensemble().BytesInFloat, data))

                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 11,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 12,
                        Ensemble().BytesInFloat, data))

                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 13,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 14,
                        Ensemble().BytesInFloat, data))

                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 15,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 16,
                        Ensemble().BytesInFloat, data))

        elif self.NumBeams == 1.0:
            self.SNR.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 1,
                                  Ensemble().BytesInFloat, data))
            self.Range.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 2,
                                  Ensemble().BytesInFloat, data))
            self.Pings.append(
                Ensemble.GetFloat(packet_pointer + Ensemble().BytesInFloat * 3,
                                  Ensemble().BytesInFloat, data))

            if len(data) > 44:
                self.Amplitude.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 4,
                        Ensemble().BytesInFloat, data))
                self.Correlation.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 5,
                        Ensemble().BytesInFloat, data))
                self.BeamVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 6,
                        Ensemble().BytesInFloat, data))
                self.InstrumentVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 7,
                        Ensemble().BytesInFloat, data))
                self.EarthVelocity.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * 8,
                        Ensemble().BytesInFloat, data))

        logging.debug(self.NumBeams)
        logging.debug(self.SNR)
        logging.debug(self.Range)
        logging.debug(self.Pings)
        logging.debug(self.Amplitude)
        logging.debug(self.Correlation)
        logging.debug(self.BeamVelocity)
        logging.debug(self.InstrumentVelocity)
        logging.debug(self.EarthVelocity)
Beispiel #7
0
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the values.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        self.BtSamplesPerSecond = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 0,
            Ensemble().BytesInFloat, data)
        self.BtSystemFreqHz = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 1,
            Ensemble().BytesInFloat, data)
        self.BtCPCE = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 2,
            Ensemble().BytesInFloat, data)
        self.BtNCE = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 3,
            Ensemble().BytesInFloat, data)
        self.BtRepeatN = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 4,
            Ensemble().BytesInFloat, data)
        self.WpSamplesPerSecond = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 5,
            Ensemble().BytesInFloat, data)
        self.WpSystemFreqHz = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 6,
            Ensemble().BytesInFloat, data)
        self.WpCPCE = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 7,
            Ensemble().BytesInFloat, data)
        self.WpNCE = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 8,
            Ensemble().BytesInFloat, data)
        self.WpRepeatN = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 9,
            Ensemble().BytesInFloat, data)
        self.WpLagSamples = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 10,
            Ensemble().BytesInFloat, data)
        self.Voltage = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 11,
            Ensemble().BytesInFloat, data)

        if self.num_elements > 12:
            self.XmtVoltage = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 12,
                Ensemble().BytesInFloat, data)
            self.BtBroadband = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 13,
                Ensemble().BytesInFloat, data)
            self.BtLagLength = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 14,
                Ensemble().BytesInFloat, data)
            self.BtNarrowband = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 15,
                Ensemble().BytesInFloat, data)
            self.BtBeamMux = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 16,
                Ensemble().BytesInFloat, data)
            self.WpBroadband = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 17,
                Ensemble().BytesInFloat, data)
            self.WpLagLength = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 18,
                Ensemble().BytesInFloat, data)
            self.WpTransmitBandwidth = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 19,
                Ensemble().BytesInFloat, data)
            self.WpReceiveBandwidth = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 20,
                Ensemble().BytesInFloat, data)
            self.TransmitBoostNegVolt = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 21,
                Ensemble().BytesInFloat, data)
            self.WpBeamMux = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 22,
                Ensemble().BytesInFloat, data)
        if self.num_elements > 23:
            self.Reserved = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 23,
                Ensemble().BytesInFloat, data)
            self.Reserved1 = Ensemble.GetFloat(
                packet_pointer + Ensemble().BytesInFloat * 24,
                Ensemble().BytesInFloat, data)

        logging.debug(self.BtSamplesPerSecond)
        logging.debug(self.BtSystemFreqHz)
        logging.debug(self.BtCPCE)
        logging.debug(self.BtNCE)
        logging.debug(self.BtRepeatN)
        logging.debug(self.WpSamplesPerSecond)
        logging.debug(self.WpSystemFreqHz)
        logging.debug(self.WpCPCE)
        logging.debug(self.WpNCE)
        logging.debug(self.WpRepeatN)
        logging.debug(self.WpLagSamples)
        logging.debug(self.Voltage)
        logging.debug(self.XmtVoltage)
        logging.debug(self.BtBroadband)
        logging.debug(self.BtLagLength)
        logging.debug(self.BtNarrowband)
        logging.debug(self.BtBeamMux)
        logging.debug(self.WpBroadband)
        logging.debug(self.WpLagLength)
        logging.debug(self.WpTransmitBandwidth)
        logging.debug(self.WpReceiveBandwidth)
Beispiel #8
0
    def decode(self, data):
        """
        Take the data bytearray.  Decode the data to populate
        the velocities.
        :param data: Bytearray for the dataset.
        """
        packet_pointer = Ensemble.GetBaseDataSize(self.name_len)

        self.FirstPingTime = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 0,
            Ensemble().BytesInFloat, data)
        self.LastPingTime = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 1,
            Ensemble().BytesInFloat, data)
        self.Heading = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 2,
            Ensemble().BytesInFloat, data)
        self.Pitch = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 3,
            Ensemble().BytesInFloat, data)
        self.Roll = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 4,
            Ensemble().BytesInFloat, data)
        self.WaterTemp = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 5,
            Ensemble().BytesInFloat, data)
        self.SystemTemp = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 6,
            Ensemble().BytesInFloat, data)
        self.Salinity = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 7,
            Ensemble().BytesInFloat, data)
        self.Pressure = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 8,
            Ensemble().BytesInFloat, data)
        self.TransducerDepth = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 9,
            Ensemble().BytesInFloat, data)
        self.SpeedOfSound = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 10,
            Ensemble().BytesInFloat, data)
        self.Status = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 11,
            Ensemble().BytesInFloat, data)
        self.NumBeams = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 12,
            Ensemble().BytesInFloat, data)
        self.ActualPingCount = Ensemble.GetFloat(
            packet_pointer + Ensemble().BytesInFloat * 13,
            Ensemble().BytesInFloat, data)

        index = 14
        numBeam = int(self.NumBeams)
        for beams in range(numBeam):
            self.Range.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.SNR.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.Amplitude.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.Correlation.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.BeamVelocity.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.BeamGood.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.InstrumentVelocity.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.InstrumentGood.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.EarthVelocity.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        for beams in range(numBeam):
            self.EarthGood.append(
                Ensemble.GetFloat(
                    packet_pointer + Ensemble().BytesInFloat * index,
                    Ensemble().BytesInFloat, data))
            index += 1

        if self.num_elements > 54:
            for beams in range(numBeam):
                self.SNR_PulseCoherent.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * index,
                        Ensemble().BytesInFloat, data))
                index += 1

            for beams in range(numBeam):
                self.Amp_PulseCoherent.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * index,
                        Ensemble().BytesInFloat, data))
                index += 1

            for beams in range(numBeam):
                self.Vel_PulseCoherent.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * index,
                        Ensemble().BytesInFloat, data))
                index += 1

            for beams in range(numBeam):
                self.Noise_PulseCoherent.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * index,
                        Ensemble().BytesInFloat, data))
                index += 1

            for beams in range(numBeam):
                self.Corr_PulseCoherent.append(
                    Ensemble.GetFloat(
                        packet_pointer + Ensemble().BytesInFloat * index,
                        Ensemble().BytesInFloat, data))
                index += 1
        else:
            # Fill in with 0.0
            for beams in range(numBeam):
                self.SNR_PulseCoherent.append(0.0)

            for beams in range(numBeam):
                self.Amp_PulseCoherent.append(0.0)

            for beams in range(numBeam):
                self.Vel_PulseCoherent.append(0.0)

            for beams in range(numBeam):
                self.Noise_PulseCoherent.append(0.0)

            for beams in range(numBeam):
                self.Corr_PulseCoherent.append(0.0)

        logging.debug(self.FirstPingTime)
        logging.debug(self.LastPingTime)
        logging.debug(self.Heading)
        logging.debug(self.Pitch)
        logging.debug(self.Roll)
        logging.debug(self.Salinity)
        logging.debug(self.SpeedOfSound)
        logging.debug(self.EarthVelocity)