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 logger.debug(self.Velocities)
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.nmea_sentences = nmea_str.split() for msg in self.nmea_sentences: try: # Parse the NMEA data nmea_msg = pynmea2.parse(msg) if isinstance(nmea_msg, pynmea2.types.talker.GGA): self.GPGGA = nmea_msg self.latitude = nmea_msg.latitude self.longitude = nmea_msg.longitude self.datetime = nmea_msg.timestamp if isinstance(nmea_msg, pynmea2.types.talker.VTG): self.GPVTG = nmea_msg self.speed_knots = nmea_msg.spd_over_grnd_kts if isinstance(nmea_msg, pynmea2.types.talker.RMC): self.GPRMC = nmea_msg if isinstance(nmea_msg, pynmea2.types.talker.RMF): self.GPRMF = nmea_msg if isinstance(nmea_msg, pynmea2.types.talker.GLL): self.GPGLL = nmea_msg if isinstance(nmea_msg, pynmea2.types.talker.GSV): self.GPGSV = nmea_msg if isinstance(nmea_msg, pynmea2.types.talker.GSA): self.GPGSA = nmea_msg if isinstance(nmea_msg, pynmea2.types.talker.HDT): self.GPHDT = nmea_msg self.heading = nmea_msg.heading if isinstance(nmea_msg, pynmea2.types.talker.HDG): self.GPHDG = nmea_msg except Exception: logger.debug("Error decoding NMEA msg") logger.debug(nmea_str) logger.debug(self.nmea_sentences)
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) logger.debug(self.FirstPingTime) logger.debug(self.LastPingTime) logger.debug(self.Heading) logger.debug(self.Pitch) logger.debug(self.Roll) logger.debug(self.Salinity) logger.debug(self.SpeedOfSound) logger.debug(self.EarthVelocity)
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.PitchGravityVector = Ensemble.GetFloat( packet_pointer + Ensemble().BytesInFloat * 14, Ensemble().BytesInFloat, data) self.RollGravityVector = Ensemble.GetFloat( packet_pointer + Ensemble().BytesInFloat * 15, Ensemble().BytesInFloat, data) self.VerticalGravityVector = Ensemble.GetFloat( packet_pointer + Ensemble().BytesInFloat * 16, Ensemble().BytesInFloat, data) logger.debug(self.FirstBinRange) logger.debug(self.BinSize) logger.debug(self.Heading) logger.debug(self.Pitch) logger.debug(self.Roll) logger.debug(self.Salinity) logger.debug(self.SpeedOfSound)
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) logger.debug(self.BtSamplesPerSecond) logger.debug(self.BtSystemFreqHz) logger.debug(self.BtCPCE) logger.debug(self.BtNCE) logger.debug(self.BtRepeatN) logger.debug(self.WpSamplesPerSecond) logger.debug(self.WpSystemFreqHz) logger.debug(self.WpCPCE) logger.debug(self.WpNCE) logger.debug(self.WpRepeatN) logger.debug(self.WpLagSamples) logger.debug(self.Voltage) logger.debug(self.XmtVoltage) logger.debug(self.BtBroadband) logger.debug(self.BtLagLength) logger.debug(self.BtNarrowband) logger.debug(self.BtBeamMux) logger.debug(self.WpBroadband) logger.debug(self.WpLagLength) logger.debug(self.WpTransmitBandwidth) logger.debug(self.WpReceiveBandwidth)
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) 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)) logger.debug(self.NumBeams) logger.debug(self.SNR) logger.debug(self.Range) logger.debug(self.Pings) logger.debug(self.Amplitude) logger.debug(self.Correlation) logger.debug(self.BeamVelocity) logger.debug(self.InstrumentVelocity) logger.debug(self.EarthVelocity)
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] logger.debug(self.EnsembleNumber) logger.debug( str(self.Month) + "/" + str(self.Day) + "/" + str(self.Year) + " " + str(self.Hour) + ":" + str(self.Minute) + ":" + str(self.Second) + "." + str(self.HSec)) logger.debug(self.SerialNumber) logger.debug( str(self.SysFirmwareMajor) + "." + str(self.SysFirmwareMinor) + "." + str(self.SysFirmwareRevision) + "-" + str(self.SysFirmwareSubsystemCode)) logger.debug(self.SubsystemConfig)