def _build_parsed_values(self): """ Take the velocity header data sample format and parse it into values with appropriate tags. @throws SampleException If there is a problem with sample creation """ log.debug('VectorVelocityHeaderDataParticle: raw data =%r', self.raw_data) try: unpack_string = '<4s6sH8B20sH' sync, timestamp, number_of_records, noise1, noise2, noise3, _, correlation1, correlation2, correlation3, _,\ _, cksum = struct.unpack(unpack_string, self.raw_data) if not validate_checksum('<20H', self.raw_data, cksum): log.warn("Bad vel3d_cd_data_header from instrument (%r)", self.raw_data) self.contents[DataParticleKey.QUALITY_FLAG] = DataParticleValue.CHECKSUM_FAILED timestamp = NortekProtocolParameterDict.convert_time(timestamp) except Exception: log.error('Error creating particle vel3d_cd_data_header, raw data: %r', self.raw_data) raise SampleException result = [{DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: timestamp}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NUMBER_OF_RECORDS, DataParticleKey.VALUE: number_of_records}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE1, DataParticleKey.VALUE: noise1}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE2, DataParticleKey.VALUE: noise2}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE3, DataParticleKey.VALUE: noise3}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION1, DataParticleKey.VALUE: correlation1}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION2, DataParticleKey.VALUE: correlation2}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION3, DataParticleKey.VALUE: correlation3}] log.debug('VectorVelocityHeaderDataParticle: particle=%s', result) return result
def _build_particle(self, match): timestamp = NortekProtocolParameterDict.convert_time(match.group(1)) py_timestamp = time.strptime(timestamp, "%d/%m/%Y %H:%M:%S") self.set_internal_timestamp(unix_time=time.mktime(py_timestamp)) battery = NortekProtocolParameterDict.convert_word_to_int(match.group(2)) sound_speed = NortekProtocolParameterDict.convert_word_to_int(match.group(3)) heading = NortekProtocolParameterDict.convert_word_to_int(match.group(4)) pitch = NortekProtocolParameterDict.convert_word_to_int(match.group(5)) roll = NortekProtocolParameterDict.convert_word_to_int(match.group(6)) temperature = NortekProtocolParameterDict.convert_word_to_int(match.group(7)) error = ord(match.group(8)) status = ord(match.group(9)) analog_input = NortekProtocolParameterDict.convert_word_to_int(match.group(10)) if None == timestamp: raise SampleException("No timestamp parsed") if None == battery: raise SampleException("No battery value parsed") if None == sound_speed: raise SampleException("No sound_speed value parsed") if None == heading: raise SampleException("No heading value parsed") if None == pitch: raise SampleException("No pitch value parsed") if None == roll: raise SampleException("No roll value parsed") if None == temperature: raise SampleException("No temperature value parsed") if None == error: raise SampleException("No error value parsed") if None == status: raise SampleException("No status value parsed") if None == analog_input: raise SampleException("No analog_input value parsed") result = [{DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: timestamp}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.BATTERY, DataParticleKey.VALUE: battery}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.SOUND_SPEED, DataParticleKey.VALUE: sound_speed}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.HEADING, DataParticleKey.VALUE: heading}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.PITCH, DataParticleKey.VALUE: pitch}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ROLL, DataParticleKey.VALUE: roll}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.TEMPERATURE, DataParticleKey.VALUE: temperature}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ERROR, DataParticleKey.VALUE: error}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.STATUS, DataParticleKey.VALUE: status}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ANALOG_INPUT, DataParticleKey.VALUE: analog_input}] return result
def _build_particle(self, match): timestamp = NortekProtocolParameterDict.convert_time(match.group(1)) py_timestamp = time.strptime(timestamp, "%d/%m/%Y %H:%M:%S") self.set_internal_timestamp(unix_time=time.mktime(py_timestamp)) number_of_records = NortekProtocolParameterDict.convert_word_to_int(match.group(2)) noise1 = ord(match.group(3)) noise2 = ord(match.group(4)) noise3 = ord(match.group(5)) correlation1 = ord(match.group(6)) correlation2 = ord(match.group(7)) correlation3 = ord(match.group(8)) if None == timestamp: raise SampleException("No timestamp parsed") if None == number_of_records: raise SampleException("No number_of_records value parsed") if None == noise1: raise SampleException("No noise1 value parsed") if None == noise2: raise SampleException("No noise2 value parsed") if None == noise3: raise SampleException("No noise3 value parsed") if None == correlation1: raise SampleException("No correlation1 value parsed") if None == correlation2: raise SampleException("No correlation2 value parsed") if None == correlation3: raise SampleException("No correlation3 value parsed") result = [{DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: timestamp}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NUMBER_OF_RECORDS, DataParticleKey.VALUE: number_of_records}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE1, DataParticleKey.VALUE: noise1}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE2, DataParticleKey.VALUE: noise2}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE3, DataParticleKey.VALUE: noise3}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION1, DataParticleKey.VALUE: correlation1}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION2, DataParticleKey.VALUE: correlation2}, {DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION3, DataParticleKey.VALUE: correlation3}] return result
def _build_parsed_values(self): """ Take the velocity data sample and parse it into values with appropriate tags. @throws SampleException If there is a problem with sample creation """ log.debug('AquadoppDwVelocityDataParticle: raw data =%r', self.raw_data) try: unpack_string = '<4s6s2h2H3hBbH4h3B1sH' sync, timestamp, error, analog1, battery_voltage, sound_speed, heading, pitch, roll, pressure_msb, status, \ pressure_lsw, temperature, velocity_beam1, velocity_beam2, velocity_beam3, amplitude_beam1, \ amplitude_beam2, amplitude_beam3, _, cksum = struct.unpack(unpack_string, self.raw_data) if not validate_checksum('<20H', self.raw_data, cksum): log.warn("Bad velpt_velocity_data instrument (%r)", self.raw_data) self.contents[DataParticleKey.QUALITY_FLAG] = DataParticleValue.CHECKSUM_FAILED timestamp = NortekProtocolParameterDict.convert_time(timestamp) pressure = pressure_msb * 0x10000 + pressure_lsw except Exception: log.error('Error creating particle velpt_velocity_data, raw data: %r', self.raw_data) raise SampleException result = [{DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: timestamp}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.ERROR, DataParticleKey.VALUE: error}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.ANALOG1, DataParticleKey.VALUE: analog1}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.BATTERY_VOLTAGE, DataParticleKey.VALUE: battery_voltage}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.SOUND_SPEED_ANALOG2, DataParticleKey.VALUE: sound_speed}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.HEADING, DataParticleKey.VALUE: heading}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.PITCH, DataParticleKey.VALUE: pitch}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.ROLL, DataParticleKey.VALUE: roll}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.STATUS, DataParticleKey.VALUE: status}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.PRESSURE, DataParticleKey.VALUE: pressure}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.TEMPERATURE, DataParticleKey.VALUE: temperature}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.VELOCITY_BEAM1, DataParticleKey.VALUE: velocity_beam1}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.VELOCITY_BEAM2, DataParticleKey.VALUE: velocity_beam2}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.VELOCITY_BEAM3, DataParticleKey.VALUE: velocity_beam3}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.AMPLITUDE_BEAM1, DataParticleKey.VALUE: amplitude_beam1}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.AMPLITUDE_BEAM2, DataParticleKey.VALUE: amplitude_beam2}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.AMPLITUDE_BEAM3, DataParticleKey.VALUE: amplitude_beam3}] log.debug('AquadoppDwVelocityDataParticle: particle=%s', result) return result
def _build_particle(self, match): """ Build a particle. Used for parsing Velocity """ timestamp = NortekProtocolParameterDict.convert_time(match.group(1)) error = NortekProtocolParameterDict.convert_word_to_int(match.group(2)) analog1 = NortekProtocolParameterDict.convert_word_to_int(match.group(3)) battery_voltage = NortekProtocolParameterDict.convert_word_to_int(match.group(4)) sound_speed = NortekProtocolParameterDict.convert_word_to_int(match.group(5)) heading = NortekProtocolParameterDict.convert_word_to_int(match.group(6)) pitch = NortekProtocolParameterDict.convert_word_to_int(match.group(7)) roll = NortekProtocolParameterDict.convert_word_to_int(match.group(8)) pressure = ord(match.group(9)) * 0x10000 status = ord(match.group(10)) pressure += NortekProtocolParameterDict.convert_word_to_int(match.group(11)) temperature = NortekProtocolParameterDict.convert_word_to_int(match.group(12)) velocity_beam1 = NortekProtocolParameterDict.convert_word_to_int(match.group(13)) velocity_beam2 = NortekProtocolParameterDict.convert_word_to_int(match.group(14)) velocity_beam3 = NortekProtocolParameterDict.convert_word_to_int(match.group(15)) amplitude_beam1 = ord(match.group(16)) amplitude_beam2 = ord(match.group(17)) amplitude_beam3 = ord(match.group(18)) result = [{DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: timestamp}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.ERROR, DataParticleKey.VALUE: error}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.ANALOG1, DataParticleKey.VALUE: analog1}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.BATTERY_VOLTAGE, DataParticleKey.VALUE: battery_voltage}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.SOUND_SPEED_ANALOG2, DataParticleKey.VALUE: sound_speed}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.HEADING, DataParticleKey.VALUE: heading}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.PITCH, DataParticleKey.VALUE: pitch}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.ROLL, DataParticleKey.VALUE: roll}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.STATUS, DataParticleKey.VALUE: status}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.PRESSURE, DataParticleKey.VALUE: pressure}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.TEMPERATURE, DataParticleKey.VALUE: temperature}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.VELOCITY_BEAM1, DataParticleKey.VALUE: velocity_beam1}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.VELOCITY_BEAM2, DataParticleKey.VALUE: velocity_beam2}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.VELOCITY_BEAM3, DataParticleKey.VALUE: velocity_beam3}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.AMPLITUDE_BEAM1, DataParticleKey.VALUE: amplitude_beam1}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.AMPLITUDE_BEAM2, DataParticleKey.VALUE: amplitude_beam2}, {DataParticleKey.VALUE_ID: AquadoppDwVelocityDataParticleKey.AMPLITUDE_BEAM3, DataParticleKey.VALUE: amplitude_beam3}] return result
def _build_parsed_values(self): """ Take the system data sample format and parse it into values with appropriate tags. @throws SampleException If there is a problem with sample creation """ log.debug('VectorSystemDataParticle: raw data =%r', self.raw_data) try: unpack_string = '<4s6s2H4h2bHH' sync, timestamp, battery, sound_speed, heading, pitch, roll, temperature, error, status, analog_input, cksum =\ struct.unpack_from(unpack_string, self.raw_data) if not validate_checksum('<13H', self.raw_data): log.warn("Failed checksum in %s from instrument (%r)", self._data_particle_type, self.raw_data) self.contents[DataParticleKey.QUALITY_FLAG] = DataParticleValue.CHECKSUM_FAILED timestamp = NortekProtocolParameterDict.convert_time(timestamp) self.set_internal_timestamp((timestamp-datetime(1900, 1, 1)).total_seconds()) except Exception as e: log.error('Error creating particle vel3d_cd_system_data, raw data: %r', self.raw_data) raise SampleException(e) result = [{DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: str(timestamp)}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.BATTERY, DataParticleKey.VALUE: battery}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.SOUND_SPEED, DataParticleKey.VALUE: sound_speed}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.HEADING, DataParticleKey.VALUE: heading}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.PITCH, DataParticleKey.VALUE: pitch}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ROLL, DataParticleKey.VALUE: roll}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.TEMPERATURE, DataParticleKey.VALUE: temperature}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ERROR, DataParticleKey.VALUE: error}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.STATUS, DataParticleKey.VALUE: status}, {DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ANALOG_INPUT, DataParticleKey.VALUE: analog_input}] log.debug('VectorSystemDataParticle: particle=%r', result) return result
def _build_parsed_values(self): """ Take the system data sample format and parse it into values with appropriate tags. @throws SampleException If there is a problem with sample creation """ log.debug('VectorSystemDataParticle: raw data =%r', self.raw_data) try: unpack_string = '<4s6s2H4h2bHH' sync, timestamp, battery, sound_speed, heading, pitch, roll, temperature, error, status, analog_input, cksum =\ struct.unpack_from(unpack_string, self.raw_data) if not validate_checksum('<13H', self.raw_data): log.warn("Failed checksum in %s from instrument (%r)", self._data_particle_type, self.raw_data) self.contents[DataParticleKey. QUALITY_FLAG] = DataParticleValue.CHECKSUM_FAILED timestamp = NortekProtocolParameterDict.convert_time(timestamp) self.set_internal_timestamp( (timestamp - datetime(1900, 1, 1)).total_seconds()) except Exception as e: log.error( 'Error creating particle vel3d_cd_system_data, raw data: %r', self.raw_data) raise SampleException(e) result = [{ DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: str(timestamp) }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.BATTERY, DataParticleKey.VALUE: battery }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.SOUND_SPEED, DataParticleKey.VALUE: sound_speed }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.HEADING, DataParticleKey.VALUE: heading }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.PITCH, DataParticleKey.VALUE: pitch }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ROLL, DataParticleKey.VALUE: roll }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.TEMPERATURE, DataParticleKey.VALUE: temperature }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ERROR, DataParticleKey.VALUE: error }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.STATUS, DataParticleKey.VALUE: status }, { DataParticleKey.VALUE_ID: VectorSystemDataParticleKey.ANALOG_INPUT, DataParticleKey.VALUE: analog_input }] log.debug('VectorSystemDataParticle: particle=%r', result) return result
def _build_parsed_values(self): """ Take the velocity header data sample format and parse it into values with appropriate tags. @throws SampleException If there is a problem with sample creation """ log.debug('VectorVelocityHeaderDataParticle: raw data =%r', self.raw_data) try: unpack_string = '<4s6sH8B20sH' sync, timestamp, number_of_records, noise1, noise2, noise3, _, correlation1, correlation2, correlation3, _,\ _, cksum = struct.unpack(unpack_string, self.raw_data) if not validate_checksum('<20H', self.raw_data): log.warn("Failed checksum in %s from instrument (%r)", self._data_particle_type, self.raw_data) self.contents[DataParticleKey. QUALITY_FLAG] = DataParticleValue.CHECKSUM_FAILED timestamp = NortekProtocolParameterDict.convert_time(timestamp) self.set_internal_timestamp( (timestamp - datetime(1900, 1, 1)).total_seconds()) except Exception as e: log.error( 'Error creating particle vel3d_cd_data_header, raw data: %r', self.raw_data) raise SampleException(e) result = [{ DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.TIMESTAMP, DataParticleKey.VALUE: str(timestamp) }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NUMBER_OF_RECORDS, DataParticleKey.VALUE: number_of_records }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE1, DataParticleKey.VALUE: noise1 }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE2, DataParticleKey.VALUE: noise2 }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.NOISE3, DataParticleKey.VALUE: noise3 }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION1, DataParticleKey.VALUE: correlation1 }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION2, DataParticleKey.VALUE: correlation2 }, { DataParticleKey.VALUE_ID: VectorVelocityHeaderDataParticleKey.CORRELATION3, DataParticleKey.VALUE: correlation3 }] log.debug('VectorVelocityHeaderDataParticle: particle=%s', result) return result
def _build_parsed_values(self): """ Take the velocity data sample and parse it into values with appropriate tags. @throws SampleException If there is a problem with sample creation typedef struct { unsigned char cSync; // sync = 0xa5 unsigned char cId; // identification (0x01=normal, 0x80=diag) unsigned short hSize; // size of structure (words) PdClock clock; // date and time short hError; // error code: unsigned short hAnaIn1; // analog input 1 unsigned short hBattery; // battery voltage (0.1 V) union { unsigned short hSoundSpeed; // speed of sound (0.1 m/s) unsigned short hAnaIn2; // analog input 2 } u; short hHeading; // compass heading (0.1 deg) short hPitch; // compass pitch (0.1 deg) short hRoll; // compass roll (0.1 deg) unsigned char cPressureMSB; // pressure MSB char cStatus; // status: unsigned short hPressureLSW; // pressure LSW short hTemperature; // temperature (0.01 deg C) short hVel[3]; // velocity unsigned char cAmp[3]; // amplitude char cFill; short hChecksum; // checksum } PdMeas; """ try: unpack_format = ( ('sync', '<4s'), # cSync, cId, hSize ('timestamp', '6s'), # PdClock ('error', 'H'), # defined as signed short, but represents bitmap, using unsigned ('analog1', 'H'), ('battery_voltage', 'H'), ('sound_speed', 'H'), ('heading', 'h'), ('pitch', 'h'), ('roll', 'h'), ('pressure_msb', 'B'), ('status', 'B'), # defined as char, but represents bitmap, using unsigned ('pressure_lsw', 'H'), ('temperature', 'h'), ('velocity_beam1', 'h'), ('velocity_beam2', 'h'), ('velocity_beam3', 'h'), ('amplitude_beam1', 'B'), ('amplitude_beam2', 'B'), ('amplitude_beam3', 'B'), ) data = unpack_from_format(self._data_particle_type, unpack_format, self.raw_data) if not validate_checksum('<20H', self.raw_data): log.warn("Failed checksum in %s from instrument (%r)", self._data_particle_type, self.raw_data) self.contents[DataParticleKey.QUALITY_FLAG] = DataParticleValue.CHECKSUM_FAILED timestamp = NortekProtocolParameterDict.convert_time(data.timestamp) self.set_internal_timestamp((timestamp-datetime(1900, 1, 1)).total_seconds()) pressure = data.pressure_msb * 0x10000 + data.pressure_lsw except Exception as e: log.error('Error creating particle velpt_velocity_data, raw data: %r', self.raw_data) raise SampleException(e) key = AquadoppDwVelocityDataParticleKey result = [{DataParticleKey.VALUE_ID: key.TIMESTAMP, DataParticleKey.VALUE: str(timestamp)}, {DataParticleKey.VALUE_ID: key.ERROR, DataParticleKey.VALUE: data.error}, {DataParticleKey.VALUE_ID: key.ANALOG1, DataParticleKey.VALUE: data.analog1}, {DataParticleKey.VALUE_ID: key.BATTERY_VOLTAGE, DataParticleKey.VALUE: data.battery_voltage}, {DataParticleKey.VALUE_ID: key.SOUND_SPEED_ANALOG2, DataParticleKey.VALUE: data.sound_speed}, {DataParticleKey.VALUE_ID: key.HEADING, DataParticleKey.VALUE: data.heading}, {DataParticleKey.VALUE_ID: key.PITCH, DataParticleKey.VALUE: data.pitch}, {DataParticleKey.VALUE_ID: key.ROLL, DataParticleKey.VALUE: data.roll}, {DataParticleKey.VALUE_ID: key.STATUS, DataParticleKey.VALUE: data.status}, {DataParticleKey.VALUE_ID: key.PRESSURE, DataParticleKey.VALUE: pressure}, {DataParticleKey.VALUE_ID: key.TEMPERATURE, DataParticleKey.VALUE: data.temperature}, {DataParticleKey.VALUE_ID: key.VELOCITY_BEAM1, DataParticleKey.VALUE: data.velocity_beam1}, {DataParticleKey.VALUE_ID: key.VELOCITY_BEAM2, DataParticleKey.VALUE: data.velocity_beam2}, {DataParticleKey.VALUE_ID: key.VELOCITY_BEAM3, DataParticleKey.VALUE: data.velocity_beam3}, {DataParticleKey.VALUE_ID: key.AMPLITUDE_BEAM1, DataParticleKey.VALUE: data.amplitude_beam1}, {DataParticleKey.VALUE_ID: key.AMPLITUDE_BEAM2, DataParticleKey.VALUE: data.amplitude_beam2}, {DataParticleKey.VALUE_ID: key.AMPLITUDE_BEAM3, DataParticleKey.VALUE: data.amplitude_beam3}] return result