drivers/uavcan: add new UAVCAN_SUB_* parameters to enable subscriptions

- only GPS and mag are enabled by default
This commit is contained in:
Daniel Agar 2021-10-19 19:07:12 -04:00
parent fd96bbf9b9
commit ea9c64dcd9
3 changed files with 201 additions and 27 deletions

View File

@ -56,28 +56,89 @@
*/
void IUavcanSensorBridge::make_all(uavcan::INode &node, List<IUavcanSensorBridge *> &list)
{
list.add(new UavcanBarometerBridge(node));
list.add(new UavcanMagnetometerBridge(node));
list.add(new UavcanGnssBridge(node));
list.add(new UavcanFlowBridge(node));
// airspeed
int32_t uavcan_sub_aspd = 1;
param_get(param_find("UAVCAN_SUB_ASPD"), &uavcan_sub_aspd);
int32_t bat_monitor;
param_t _param_bat_monitor = param_find("UAVCAN_BAT_MON");
param_get(_param_bat_monitor, &bat_monitor);
if (uavcan_sub_aspd != 0) {
list.add(new UavcanAirspeedBridge(node));
}
if (bat_monitor == 0) {
// baro
int32_t uavcan_sub_baro = 1;
param_get(param_find("UAVCAN_SUB_BARO"), &uavcan_sub_baro);
if (uavcan_sub_baro != 0) {
list.add(new UavcanBarometerBridge(node));
}
// battery
int32_t uavcan_sub_bat = 1;
param_get(param_find("UAVCAN_SUB_BAT"), &uavcan_sub_bat);
if (uavcan_sub_bat == 1) {
list.add(new UavcanBatteryBridge(node));
} else if (bat_monitor == 1) {
} else if (uavcan_sub_bat == 2) {
list.add(new UavcanCBATBridge(node));
}
list.add(new UavcanAirspeedBridge(node));
list.add(new UavcanDifferentialPressureBridge(node));
list.add(new UavcanRangefinderBridge(node));
list.add(new UavcanAccelBridge(node));
list.add(new UavcanGyroBridge(node));
list.add(new UavcanIceStatusBridge(node));
// differential pressure
int32_t uavcan_sub_dpres = 1;
param_get(param_find("UAVCAN_SUB_DPRES"), &uavcan_sub_dpres);
if (uavcan_sub_dpres != 0) {
list.add(new UavcanDifferentialPressureBridge(node));
}
// flow
int32_t uavcan_sub_flow = 1;
param_get(param_find("UAVCAN_SUB_FLOW"), &uavcan_sub_flow);
if (uavcan_sub_flow != 0) {
list.add(new UavcanFlowBridge(node));
}
// GPS
int32_t uavcan_sub_gps = 1;
param_get(param_find("UAVCAN_SUB_GPS"), &uavcan_sub_gps);
if (uavcan_sub_gps != 0) {
list.add(new UavcanGnssBridge(node));
}
// ice (internal combustion engine)
int32_t uavcan_sub_ice = 1;
param_get(param_find("UAVCAN_SUB_ICE"), &uavcan_sub_ice);
if (uavcan_sub_ice != 0) {
list.add(new UavcanIceStatusBridge(node));
}
// IMU
int32_t uavcan_sub_imu = 1;
param_get(param_find("UAVCAN_SUB_IMU"), &uavcan_sub_imu);
if (uavcan_sub_imu != 0) {
list.add(new UavcanAccelBridge(node));
list.add(new UavcanGyroBridge(node));
}
// magnetometer
int32_t uavcan_sub_mag = 1;
param_get(param_find("UAVCAN_SUB_MAG"), &uavcan_sub_mag);
if (uavcan_sub_mag != 0) {
list.add(new UavcanMagnetometerBridge(node));
}
// range finder
int32_t uavcan_sub_rng = 1;
param_get(param_find("UAVCAN_SUB_RNG"), &uavcan_sub_rng);
if (uavcan_sub_rng != 0) {
list.add(new UavcanRangefinderBridge(node));
}
}
/*

View File

@ -1,6 +1,6 @@
/****************************************************************************
*
* Copyright (c) 2014, 2015 PX4 Development Team. All rights reserved.
* Copyright (c) 2014-2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions

View File

@ -1,6 +1,6 @@
/****************************************************************************
*
* Copyright (c) 2014-2017 PX4 Development Team. All rights reserved.
* Copyright (c) 2014-2021 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@ -195,18 +195,131 @@ PARAM_DEFINE_INT32(UAVCAN_LGT_NAV, 3);
PARAM_DEFINE_INT32(UAVCAN_LGT_LAND, 0);
/**
* UAVCAN BATTERY_MONITOR battery monitor selection
* subscription airspeed
*
* This parameter defines that the system will select the battery monitor under the following conditions
* Enable UAVCAN airspeed subscriptions.
* uavcan::equipment::air_data::IndicatedAirspeed
* uavcan::equipment::air_data::TrueAirspeed
* uavcan::equipment::air_data::StaticTemperature
*
* 0 - default battery monitor
* 1 - CUAV battery monitor
*
* @min 0
* @max 1
* @value 0 default battery monitor
* @value 1 CUAV battery monitor
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_BAT_MON, 0);
PARAM_DEFINE_INT32(UAVCAN_SUB_ASPD, 0);
/**
* subscription barometer
*
* Enable UAVCAN barometer subscription.
* uavcan::equipment::air_data::StaticPressure
* uavcan::equipment::air_data::StaticTemperature
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_BARO, 0);
/**
* subscription battery
*
* Enable UAVCAN battery subscription.
* 1) uavcan::equipment::power::BatteryInfo
* 2) cuav::equipment::power::CBAT
*
* @min 0
* @max 2
* @value 0 disabled
* @value 1 default
* @value 2 CUAV battery monitor
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_BAT, 0);
/**
* subscription differential pressure
*
* Enable UAVCAN differential pressure subscription.
* uavcan::equipment::air_data::RawAirData
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_DPRES, 0);
/**
* subscription flow
*
* Enable UAVCAN optical flow subscription.
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_FLOW, 0);
/**
* subscription GPS
*
* Enable UAVCAN GPS subscriptions.
* uavcan::equipment::gnss::Fix
* uavcan::equipment::gnss::Fix2
* uavcan::equipment::gnss::Auxiliary
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_GPS, 1);
/**
* subscription ICE
*
* Enable UAVCAN internal combusion engine (ICE) subscription.
* uavcan::equipment::ice::reciprocating::Status
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_ICE, 0);
/**
* subscription IMU
*
* Enable UAVCAN IMU subscription.
* uavcan::equipment::ahrs::RawIMU
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_IMU, 0);
/**
* subscription magnetometer
*
* Enable UAVCAN GPS subscription.
* uavcan::equipment::ahrs::MagneticFieldStrength
* uavcan::equipment::ahrs::MagneticFieldStrength2
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_MAG, 1);
/**
* subscription range finder
*
* Enable UAVCAN GPS subscription.
* uavcan::equipment::range_sensor::Measurement
*
* @boolean
* @reboot_required true
* @group UAVCAN
*/
PARAM_DEFINE_INT32(UAVCAN_SUB_RNG, 0);