From 69c4f9f7fcc2027731283b4fe8f7b8f3967408a1 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Fri, 22 Oct 2021 15:51:38 +0200 Subject: [PATCH] Remove redundant fields in an_packet_t --- src/algorithms/PVT/libs/an_packet_printer.cc | 18 +++++++++--------- src/algorithms/PVT/libs/an_packet_printer.h | 6 ++---- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/algorithms/PVT/libs/an_packet_printer.cc b/src/algorithms/PVT/libs/an_packet_printer.cc index 5ee613943..72e7e8a9f 100644 --- a/src/algorithms/PVT/libs/an_packet_printer.cc +++ b/src/algorithms/PVT/libs/an_packet_printer.cc @@ -98,6 +98,7 @@ void An_Packet_Printer::update_sdr_gnss_packet(sdr_gnss_packet_t* _packet, const uint8_t num_gps_sats = 0; uint8_t num_gal_sats = 0; int index = 0; + bool fix_3d = pvt->is_valid_position(); const int max_reported_sats = *(&_packet->sats + 1) - _packet->sats; for (gnss_observables_iter = gnss_observables_map.cbegin(); @@ -178,8 +179,10 @@ void An_Packet_Printer::update_sdr_gnss_packet(sdr_gnss_packet_t* _packet, const _packet->velocity[2] = static_cast(-pvt->get_rx_vel()[2]); uint16_t status = 0; - // Set 3D fix (bit 0 and 1) / Set Doppler velocity valid (bit 2) / Set Time valid (bit 3) - status = status & 0b00001111; + if (fix_3d) + { + status = 15; // Set 3D fix (bit 0 and 1) / Set Doppler velocity valid (bit 2) / Set Time valid (bit 3) + } _packet->status = status; } @@ -192,8 +195,6 @@ void An_Packet_Printer::update_sdr_gnss_packet(sdr_gnss_packet_t* _packet, const */ void An_Packet_Printer::encode_sdr_gnss_packet(sdr_gnss_packet_t* sdr_gnss_packet, an_packet_t* _packet) const { - _packet->id = SDR_GNSS_PACKET_ID; - _packet->length = SDR_GNSS_PACKET_LENGTH; uint8_t offset = 0; LSB_bytes_to_array(reinterpret_cast(&sdr_gnss_packet->nsvfix), offset, _packet->data, sizeof(sdr_gnss_packet->nsvfix)); offset += sizeof(sdr_gnss_packet->nsvfix); @@ -238,10 +239,9 @@ void An_Packet_Printer::encode_sdr_gnss_packet(sdr_gnss_packet_t* sdr_gnss_packe void An_Packet_Printer::an_packet_encode(an_packet_t* an_packet) const { uint16_t crc; - an_packet->header[1] = an_packet->id; - an_packet->header[2] = an_packet->length; - crc = calculate_crc16(an_packet->data, an_packet->length); - memcpy(&an_packet->header[3], &crc, sizeof(uint16_t)); + an_packet->header[1] = SDR_GNSS_PACKET_ID; + crc = calculate_crc16(an_packet->data, SDR_GNSS_PACKET_LENGTH); + memcpy(&an_packet->header[2], &crc, sizeof(uint16_t)); an_packet->header[0] = calculate_header_lrc(&an_packet->header[1]); } @@ -251,7 +251,7 @@ void An_Packet_Printer::an_packet_encode(an_packet_t* an_packet) const */ uint8_t An_Packet_Printer::calculate_header_lrc(const uint8_t* data) const { - return ((data[0] + data[1] + data[2] + data[3]) ^ 0xFF) + 1; + return ((data[0] + data[1] + data[2]) ^ 0xFF) + 1; } diff --git a/src/algorithms/PVT/libs/an_packet_printer.h b/src/algorithms/PVT/libs/an_packet_printer.h index 596c33f26..f9b96a46a 100644 --- a/src/algorithms/PVT/libs/an_packet_printer.h +++ b/src/algorithms/PVT/libs/an_packet_printer.h @@ -61,10 +61,8 @@ struct sdr_gnss_packet_t struct an_packet_t { - uint8_t id; - uint8_t length; - uint8_t header[5]; // AN_PACKET_HEADER_SIZE - uint8_t data[126]; // AN_MAXIMUM_PACKET_SIZE + uint8_t header[4]; + uint8_t data[73]; // SDR_GNSS_PACKET_LENGTH };