diff --git a/src/drivers/gnss/septentrio/sbf/decoder.cpp b/src/drivers/gnss/septentrio/sbf/decoder.cpp index 7f9720bd82..308d26ef9b 100644 --- a/src/drivers/gnss/septentrio/sbf/decoder.cpp +++ b/src/drivers/gnss/septentrio/sbf/decoder.cpp @@ -102,7 +102,7 @@ Decoder::State Decoder::add_byte(uint8_t byte) BlockID Decoder::id() const { - return _state == State::Done ? _message.header.id_number : BlockID::Invalid; + return _state == State::Done ? static_cast(_message.header.id_number) : BlockID::Invalid; } int Decoder::parse(Header *header) const diff --git a/src/drivers/gnss/septentrio/sbf/messages.h b/src/drivers/gnss/septentrio/sbf/messages.h index 487a40054c..8b7ca0c95e 100644 --- a/src/drivers/gnss/septentrio/sbf/messages.h +++ b/src/drivers/gnss/septentrio/sbf/messages.h @@ -98,7 +98,7 @@ struct Header { uint8_t sync1; uint8_t sync2; uint16_t crc; - BlockID id_number: 13; + uint16_t id_number: 13; uint16_t id_revision: 3; uint16_t length; uint32_t tow; @@ -143,7 +143,7 @@ struct PVTGeodetic { MissingBaseStationCoordinates = 9, MissingRequiredRTKFixedPosition = 10, }; - ModeType mode_type: 4; + uint8_t mode_type: 4; uint8_t mode_reserved: 2; uint8_t mode_base_fixed: 1; uint8_t mode_2d: 1; @@ -314,8 +314,8 @@ struct AttEuler { InsufficientMeasurements = 1, }; uint8_t nr_sv; - Error error_aux1: 2; - Error error_aux2: 2; + uint8_t error_aux1: 2; + uint8_t error_aux2: 2; uint8_t error_reserved: 3; uint8_t error_not_requested: 1; uint16_t mode; @@ -334,8 +334,8 @@ struct AttCovEuler { InsufficientMeasurements = 1, }; uint8_t reserved; - Error error_aux1: 2; - Error error_aux2: 2; + uint8_t error_aux1: 2; + uint8_t error_aux2: 2; uint8_t error_reserved: 3; uint8_t error_not_requested: 1; float cov_headhead; diff --git a/src/drivers/gnss/septentrio/septentrio.cpp b/src/drivers/gnss/septentrio/septentrio.cpp index 5fca971fb5..a5ca8a95d1 100644 --- a/src/drivers/gnss/septentrio/septentrio.cpp +++ b/src/drivers/gnss/septentrio/septentrio.cpp @@ -1075,7 +1075,7 @@ int SeptentrioDriver::process_message() PVTGeodetic pvt_geodetic; if (_sbf_decoder.parse(&header) == PX4_OK && _sbf_decoder.parse(&pvt_geodetic) == PX4_OK) { - switch (pvt_geodetic.mode_type) { + switch (static_cast(pvt_geodetic.mode_type)) { case ModeType::NoPVT: _message_gps_state.fix_type = sensor_gps_s::FIX_TYPE_NONE; break; @@ -1242,8 +1242,8 @@ int SeptentrioDriver::process_message() if (_sbf_decoder.parse(&att_euler) == PX4_OK && !att_euler.error_not_requested && - att_euler.error_aux1 == Error::None && - att_euler.error_aux2 == Error::None && + static_cast(att_euler.error_aux1) == Error::None && + static_cast(att_euler.error_aux2) == Error::None && att_euler.heading > k_dnu_f4_value) { float heading = att_euler.heading * M_PI_F / 180.0f; // Range of degrees to range of radians in [0, 2PI]. @@ -1267,8 +1267,8 @@ int SeptentrioDriver::process_message() if (_sbf_decoder.parse(&att_cov_euler) == PX4_OK && !att_cov_euler.error_not_requested && - att_cov_euler.error_aux1 == Error::None && - att_cov_euler.error_aux2 == Error::None && + static_cast(att_cov_euler.error_aux1) == Error::None && + static_cast(att_cov_euler.error_aux2) == Error::None && att_cov_euler.cov_headhead > k_dnu_f4_value) { _message_gps_state.heading_accuracy = att_cov_euler.cov_headhead * M_PI_F / 180.0f; // Convert range of degrees to range of radians in [0, 2PI] } diff --git a/src/drivers/gnss/septentrio/septentrio_fuzz_tests.cpp b/src/drivers/gnss/septentrio/septentrio_fuzz_tests.cpp index 94f3c6b592..a28e618ee9 100644 --- a/src/drivers/gnss/septentrio/septentrio_fuzz_tests.cpp +++ b/src/drivers/gnss/septentrio/septentrio_fuzz_tests.cpp @@ -45,7 +45,7 @@ TEST(SeptentrioTestDecoding, decodeMessage) septentrio::sbf::message_t m{}; m.header.sync1 = '$'; m.header.sync2 = '@'; - m.header.id_number = septentrio::sbf::BlockID::PVTGeodetic; + m.header.id_number = static_cast(septentrio::sbf::BlockID::PVTGeodetic); m.header.length = sizeof(m.header) + sizeof(septentrio::sbf::PVTGeodetic); septentrio::sbf::PVTGeodetic pvt{}; pvt.latitude = 123;