fix(drvers/ins): Fix Microstrain clang-tidy errors

This commit is contained in:
Valentin Bugrov
2026-04-02 21:07:51 +07:00
committed by Ramon Roche
parent 2c693e4113
commit a7ebab58cb
2 changed files with 87 additions and 68 deletions
+82 -63
View File
@@ -195,7 +195,8 @@ mip_cmd_result MicroStrain::forceIdle()
uint8_t set_to_idle_tries = 0;
while (set_to_idle_tries++ < 3) {
if (mip_cmd_result_is_ack((res = mip_base_set_idle(&_device)))) {
res = mip_base_set_idle(&_device);
if (mip_cmd_result_is_ack(res)) {
break;
} else {
@@ -210,7 +211,7 @@ int MicroStrain::connectAtBaud(int32_t baud)
{
if (device_uart.isOpen()) {
if (device_uart.setBaudrate(baud) == false) {
PX4_ERR("Failed to set UART %lu baud", baud);
PX4_ERR("Failed to set UART %lu baud", static_cast<unsigned long>(baud));
}
} else {
@@ -220,7 +221,7 @@ int MicroStrain::connectAtBaud(int32_t baud)
}
if (device_uart.setBaudrate(baud) == false) {
PX4_ERR("Failed to set UART %lu baud", baud);
PX4_ERR("Failed to set UART %lu baud", static_cast<unsigned long>(baud));
return PX4_ERROR;
}
@@ -230,11 +231,13 @@ int MicroStrain::connectAtBaud(int32_t baud)
}
}
PX4_INFO("Serial Port %s with baud of %lu baud", (device_uart.isOpen() ? "CONNECTED" : "NOT CONNECTED"), baud);
PX4_INFO("Serial Port %s with baud of %lu baud",
(device_uart.isOpen() ? "CONNECTED" : "NOT CONNECTED"),
static_cast<unsigned long>(baud));
// Re-init the interface with the correct timeouts
mip_interface_init(&_device, _parse_buffer, sizeof(_parse_buffer), mip_timeout_from_baudrate(baud) * 1_ms, 250_ms,
&mipInterfaceUserSendToDevice, &mipInterfaceUserRecvFromDevice, &mip_interface_default_update, NULL);
&mipInterfaceUserSendToDevice, &mipInterfaceUserRecvFromDevice, &mip_interface_default_update, nullptr);
if (!mip_cmd_result_is_ack(forceIdle())) {
PX4_ERR("Could not set device to idle");
@@ -827,7 +830,8 @@ mip_cmd_result MicroStrain::configureGnssAiding()
// Sets up the GNSS aiding source
if (supportsDescriptor(MIP_FILTER_CMD_DESC_SET, MIP_CMD_DESC_FILTER_GNSS_SOURCE_CONTROL)) {
if (!mip_cmd_result_is_ack(res = mip_filter_write_gnss_source(&_device, (uint8_t)_param_ms_gnss_aid_src_ctrl.get()))) {
res = mip_filter_write_gnss_source(&_device, (uint8_t)_param_ms_gnss_aid_src_ctrl.get());
if (!mip_cmd_result_is_ack(res)) {
PX4_ERR("Could not write the gnss aiding source");
return res;
}
@@ -838,9 +842,10 @@ mip_cmd_result MicroStrain::configureGnssAiding()
// Sets up the aiding frame for the external source
if (supportsDescriptor(MIP_AIDING_CMD_DESC_SET, MIP_CMD_DESC_AIDING_FRAME_CONFIG)) {
if (!mip_cmd_result_is_ack(res = mip_aiding_write_frame_config(&_device, 1,
MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER, false,
gnss_antenna_offset1, &rotation_gnss))) {
res = mip_aiding_write_frame_config(&_device, 1,
MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER, false,
gnss_antenna_offset1, &rotation_gnss);
if (!mip_cmd_result_is_ack(res)) {
PX4_ERR("Could not write aiding frame config");
return res;
}
@@ -870,20 +875,21 @@ mip_cmd_result MicroStrain::configureGnssAiding()
}
// Selectively enables dual antenna heading as an aiding measurement
if (!mip_cmd_result_is_ack(res = enableAidingSource(
MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_GNSS_HEADING,
_param_ms_int_heading_en.get(),
0, 0, nullptr, mip_aiding_frame_config_command_rotation{0},
0, _int_aiding, "dual antenna heading"))) {
res = enableAidingSource(MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_GNSS_HEADING,
_param_ms_int_heading_en.get(),
0, 0, nullptr, mip_aiding_frame_config_command_rotation{},
0, _int_aiding, "dual antenna heading");
if (!mip_cmd_result_is_ack(res)) {
return res;
}
}
// Otherwise sets up the aiding frame
else if (supportsDescriptor(MIP_AIDING_CMD_DESC_SET, MIP_CMD_DESC_AIDING_FRAME_CONFIG)) {
if (!mip_cmd_result_is_ack(res = mip_aiding_write_frame_config(&_device, 1,
MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER, false,
gnss_antenna_offset1, &rotation_gnss))) {
res = mip_aiding_write_frame_config(&_device, 1,
MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER, false,
gnss_antenna_offset1, &rotation_gnss);
if (!mip_cmd_result_is_ack(res)) {
PX4_ERR("Could not write aiding frame config");
return res;
}
@@ -902,47 +908,47 @@ mip_cmd_result MicroStrain::configureAidingSources()
mip_cmd_result res;
// Selectively turn on internal magnetometer as an aiding source
if (!mip_cmd_result_is_ack(res = enableAidingSource(
MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_MAGNETOMETER,
_param_ms_int_mag_en.get(),
0, 0, nullptr, mip_aiding_frame_config_command_rotation{0},
0, _int_aiding, "internal magnetometer"))) {
res = enableAidingSource(MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_MAGNETOMETER,
_param_ms_int_mag_en.get(),
0, 0, nullptr, mip_aiding_frame_config_command_rotation{},
0, _int_aiding, "internal magnetometer");
if (!mip_cmd_result_is_ack(res)) {
return res;
}
// Selectively turn on external magnetometer as an aiding source
if (!mip_cmd_result_is_ack(res = enableAidingSource(
MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_EXTERNAL_MAGNETOMETER,
_param_ms_ext_mag_en.get(),
2, MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER,
ext_mag_offset, rotation_ext_mag,
MIP_CMD_DESC_AIDING_MAGNETIC_FIELD,
_ext_mag_aiding,
"external magnetometer"))) {
res = enableAidingSource(MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_EXTERNAL_MAGNETOMETER,
_param_ms_ext_mag_en.get(),
2, MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER,
ext_mag_offset, rotation_ext_mag,
MIP_CMD_DESC_AIDING_MAGNETIC_FIELD,
_ext_mag_aiding,
"external magnetometer");
if (!mip_cmd_result_is_ack(res)) {
return res;
}
// Selectively turn on body frame velocity as an aiding source
if (!mip_cmd_result_is_ack(res = enableAidingSource(
MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_VEHICLE_FRAME_VEL,
_param_ms_ext_opt_flow_en.get(),
3, MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER,
optical_flow_offset, rotation_oflow,
MIP_CMD_DESC_AIDING_VEL_ODOM,
_ext_optical_flow_aiding,
"optical flow"))) {
res = enableAidingSource(MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_VEHICLE_FRAME_VEL,
_param_ms_ext_opt_flow_en.get(),
3, MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER,
optical_flow_offset, rotation_oflow,
MIP_CMD_DESC_AIDING_VEL_ODOM,
_ext_optical_flow_aiding,
"optical flow");
if (!mip_cmd_result_is_ack(res)) {
return res;
}
// Selectively turn on external heading as an aiding source
if (!mip_cmd_result_is_ack(res = enableAidingSource(
MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_EXTERNAL_HEADING,
_param_ms_ext_heading_en.get(),
4, MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER,
ext_heading_offset, rotation_ext_heading,
MIP_CMD_DESC_AIDING_HEADING_TRUE,
_ext_heading_aiding,
"external heading"))) {
res = enableAidingSource(MIP_FILTER_AIDING_MEASUREMENT_ENABLE_COMMAND_AIDING_SOURCE_EXTERNAL_HEADING,
_param_ms_ext_heading_en.get(),
4, MIP_AIDING_FRAME_CONFIG_COMMAND_FORMAT_EULER,
ext_heading_offset, rotation_ext_heading,
MIP_CMD_DESC_AIDING_HEADING_TRUE,
_ext_heading_aiding,
"external heading");
if (!mip_cmd_result_is_ack(res)) {
return res;
}
@@ -989,7 +995,7 @@ bool MicroStrain::initializeIns()
for (auto &baudrate : BAUDRATES) {
if (connectAtBaud(baudrate) == PX4_OK) {
PX4_INFO("found baudrate %lu", baudrate);
PX4_INFO("found baudrate %lu", static_cast<unsigned long>(baudrate));
is_connected = true;
break;
}
@@ -1009,7 +1015,8 @@ bool MicroStrain::initializeIns()
// Setting the device baudrate to the desired value
PX4_INFO("Setting the baud to desired baud rate");
if (!mip_cmd_result_is_ack(res = writeBaudRate(DESIRED_BAUDRATE, 1))) {
res = writeBaudRate(DESIRED_BAUDRATE, 1);
if (!mip_cmd_result_is_ack(res)) {
PX4_ERR("Could not set the baudrate!");
return false;
}
@@ -1018,18 +1025,20 @@ bool MicroStrain::initializeIns()
// Connecting using the desired baudrate
if (connectAtBaud(DESIRED_BAUDRATE) != PX4_OK) {
PX4_ERR("Could not Connect at %lu", DESIRED_BAUDRATE);
PX4_ERR("Could not Connect at %lu", static_cast<unsigned long>(DESIRED_BAUDRATE));
return false;
}
// Configure IMU ranges
if (!mip_cmd_result_is_ack(res = configureImuRange())) {
res = configureImuRange();
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not configure IMU range");
return false;
}
// Configure the IMU message formt based on what descriptors are supported
if (!mip_cmd_result_is_ack(res = configureImuMessageFormat())) {
res = configureImuMessageFormat();
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not write IMU message format");
return false;
}
@@ -1040,7 +1049,8 @@ bool MicroStrain::initializeIns()
this);
// Configure the Filter message format based on what descriptors are supported
if (!mip_cmd_result_is_ack(res = configureFilterMessageFormat())) {
res = configureFilterMessageFormat();
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not write filter message format");
return false;
}
@@ -1051,7 +1061,8 @@ bool MicroStrain::initializeIns()
this);
// Configure the GNSS1 message format based on what descriptors are supported
if (!mip_cmd_result_is_ack(res = configureGnssMessageFormat(MIP_GNSS1_DATA_DESC_SET))) {
res = configureGnssMessageFormat(MIP_GNSS1_DATA_DESC_SET);
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not write GNSS1 message format");
}
@@ -1061,7 +1072,8 @@ bool MicroStrain::initializeIns()
this);
// Configure the GNSS2 message format based on what descriptors are supported
if (!mip_cmd_result_is_ack(res = configureGnssMessageFormat(MIP_GNSS2_DATA_DESC_SET))) {
res = configureGnssMessageFormat(MIP_GNSS2_DATA_DESC_SET);
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not write GNSS2 message format");
}
@@ -1071,13 +1083,15 @@ bool MicroStrain::initializeIns()
this);
// Configure the aiding sources based on what the sensor supports
if (!mip_cmd_result_is_ack(res = configureAidingSources())) {
res = configureAidingSources();
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not configure aiding frames!");
return false;
}
// Initialize the filter
if (!mip_cmd_result_is_ack(res = writeFilterInitConfig())) {
res = writeFilterInitConfig();
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not configure filter initialization!");
return false;
}
@@ -1086,9 +1100,11 @@ bool MicroStrain::initializeIns()
if (_param_ms_svt_en.get() && supportsDescriptor(MIP_3DM_CMD_DESC_SET, MIP_CMD_DESC_3DM_SENSOR2VEHICLE_TRANSFORM_EUL)) {
PX4_DEBUG("Writing SVT");
if (!mip_cmd_result_is_ack(res = mip_3dm_write_sensor_2_vehicle_transform_euler(&_device,
math::radians<float>(rotation_sens.euler[0]),
math::radians<float>(rotation_sens.euler[1]), math::radians<float>(rotation_sens.euler[2])))) {
res = mip_3dm_write_sensor_2_vehicle_transform_euler(&_device,
math::radians<float>(rotation_sens.euler[0]),
math::radians<float>(rotation_sens.euler[1]),
math::radians<float>(rotation_sens.euler[2]));
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not set sensor-to-vehicle transformation!");
return false;
}
@@ -1098,7 +1114,8 @@ bool MicroStrain::initializeIns()
if (supportsDescriptor(MIP_FILTER_CMD_DESC_SET, MIP_CMD_DESC_FILTER_RESET_FILTER)) {
PX4_DEBUG("Reseting filter");
if (!mip_cmd_result_is_ack(res = mip_filter_reset(&_device))) {
res = mip_filter_reset(&_device);
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not reset the filter!");
return false;
}
@@ -1107,8 +1124,9 @@ bool MicroStrain::initializeIns()
if (supportsDescriptor(MIP_3DM_CMD_DESC_SET, MIP_CMD_DESC_3DM_CONTROL_DATA_STREAM)) {
PX4_DEBUG("Writing datastream control");
if (!mip_cmd_result_is_ack(res = mip_3dm_write_datastream_control(&_device,
MIP_3DM_DATASTREAM_CONTROL_COMMAND_ALL_STREAMS, true))) {
res = mip_3dm_write_datastream_control(&_device,
MIP_3DM_DATASTREAM_CONTROL_COMMAND_ALL_STREAMS, true);
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not enable the data stream");
return false;
}
@@ -1118,7 +1136,8 @@ bool MicroStrain::initializeIns()
if (supportsDescriptor(MIP_BASE_CMD_DESC_SET, MIP_CMD_DESC_BASE_RESUME)) {
PX4_DEBUG("Resuming device");
if (!mip_cmd_result_is_ack(res = mip_base_resume(&_device))) {
res = mip_base_resume(&_device);
if (!mip_cmd_result_is_ack(res)) {
MS_PX4_ERROR(res, "Could not resume the device!");
return false;
}
+5 -5
View File
@@ -201,11 +201,11 @@ private:
float ext_mag_offset[3] = {0};
float optical_flow_offset[3] = {0};
float ext_heading_offset[3] = {0};
mip_aiding_frame_config_command_rotation rotation_sens = {0};
mip_aiding_frame_config_command_rotation rotation_gnss = {0};
mip_aiding_frame_config_command_rotation rotation_ext_mag = {0};
mip_aiding_frame_config_command_rotation rotation_oflow = {0};
mip_aiding_frame_config_command_rotation rotation_ext_heading = {0};
mip_aiding_frame_config_command_rotation rotation_sens = {};
mip_aiding_frame_config_command_rotation rotation_gnss = {};
mip_aiding_frame_config_command_rotation rotation_ext_mag = {};
mip_aiding_frame_config_command_rotation rotation_oflow = {};
mip_aiding_frame_config_command_rotation rotation_ext_heading = {};
float ext_mag_uncert = 0.0;
float opt_flow_uncert = 0.0;