mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-28 02:36:37 +08:00
Additional updates
This commit is contained in:
@@ -115,7 +115,6 @@ RCUpdate::RCUpdate() :
|
|||||||
snprintf(param_name_buf, sizeof(param_name_buf), "RC_TRIG_%d_ACTION", trig_slot);
|
snprintf(param_name_buf, sizeof(param_name_buf), "RC_TRIG_%d_ACTION", trig_slot);
|
||||||
_trigger_action_param_handles[trig_slot - 1] = param_find(param_name_buf);
|
_trigger_action_param_handles[trig_slot - 1] = param_find(param_name_buf);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rc_parameter_map_poll(true /* forced */);
|
rc_parameter_map_poll(true /* forced */);
|
||||||
parameters_updated();
|
parameters_updated();
|
||||||
@@ -324,37 +323,6 @@ void RCUpdate::set_params_from_rc()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
RCUpdate::map_flight_modes_buttons()
|
|
||||||
{
|
|
||||||
// Reset all the slots to -1
|
|
||||||
for (uint8_t slot = 0; slot < manual_control_switches_s::MODE_SLOT_NUM; slot++) {
|
|
||||||
_rc.function[rc_channels_s::FUNCTION_FLTBTN_SLOT_1 + slot] = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the functionality is disabled we don't need to map channels
|
|
||||||
const int flightmode_buttons = _param_rc_map_flightmode_buttons.get();
|
|
||||||
|
|
||||||
if (flightmode_buttons == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t slot = 0;
|
|
||||||
|
|
||||||
for (uint8_t channel = 0; channel < RC_MAX_CHAN_COUNT; channel++) {
|
|
||||||
if (flightmode_buttons & (1 << channel)) {
|
|
||||||
PX4_DEBUG("Slot %d assigned to channel %d", slot + 1, channel);
|
|
||||||
_rc.function[rc_channels_s::FUNCTION_FLTBTN_SLOT_1 + slot] = channel;
|
|
||||||
slot++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (slot >= manual_control_switches_s::MODE_SLOT_NUM) {
|
|
||||||
// we have filled all the available slots
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RCUpdate::Run()
|
void RCUpdate::Run()
|
||||||
{
|
{
|
||||||
if (should_exit()) {
|
if (should_exit()) {
|
||||||
@@ -627,9 +595,16 @@ void RCUpdate::UpdateManualSwitches(const hrt_abstime ×tamp_sample)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Go through the trigger slots and update the states
|
// Go through the trigger slots and update the states
|
||||||
|
const uint32_t rc_trigger_is_button_mask = _param_rc_trig_btn_mask.get();
|
||||||
for (uint8_t trig_slot = 1; trig_slot <= RC_TRIG_SLOT_COUNT; trig_slot++) {
|
for (uint8_t trig_slot = 1; trig_slot <= RC_TRIG_SLOT_COUNT; trig_slot++) {
|
||||||
|
int channel{RC_TRIG_CHAN_UNASSIGNED};
|
||||||
|
param_get(_trigger_channel_param_handles[trig_slot-1], &channel);
|
||||||
|
int action{RC_TRIGGER_ACTION_UNASSIGNED};
|
||||||
|
param_get(_trigger_action_param_handles[trig_slot-1], &action);
|
||||||
|
|
||||||
|
if (channel > RC_TRIG_CHAN_UNASSIGNED) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the Generic Action states
|
// Update the Generic Action states
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ namespace rc_update
|
|||||||
|
|
||||||
// Number of Generic Trigger slots that can be configured
|
// Number of Generic Trigger slots that can be configured
|
||||||
static constexpr uint8_t RC_TRIG_SLOT_COUNT = 6;
|
static constexpr uint8_t RC_TRIG_SLOT_COUNT = 6;
|
||||||
|
// Value of the RC_TRIG#_CHAN when the channel is unassigned
|
||||||
|
static constexpr uint8_t RC_TRIG_CHAN_UNASSIGNED = 0;
|
||||||
|
|
||||||
// Enum class translation of the RC_TRIG#_ACTION values
|
// Enum class translation of the RC_TRIG#_ACTION values
|
||||||
static constexpr enum RC_TRIGGER_ACTIONS {
|
static constexpr enum RC_TRIGGER_ACTIONS {
|
||||||
@@ -164,8 +166,6 @@ private:
|
|||||||
*/
|
*/
|
||||||
void set_params_from_rc();
|
void set_params_from_rc();
|
||||||
|
|
||||||
void map_flight_modes_buttons();
|
|
||||||
|
|
||||||
static constexpr uint8_t RC_MAX_CHAN_COUNT{input_rc_s::RC_INPUT_MAX_CHANNELS}; /**< maximum number of r/c channels we handle */
|
static constexpr uint8_t RC_MAX_CHAN_COUNT{input_rc_s::RC_INPUT_MAX_CHANNELS}; /**< maximum number of r/c channels we handle */
|
||||||
|
|
||||||
struct Parameters {
|
struct Parameters {
|
||||||
|
|||||||
Reference in New Issue
Block a user