mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-29 03:36:07 +08:00
Airmode - Add support for UAVCAN
This commit is contained in:
@@ -417,6 +417,20 @@ int UavcanNode::get_param(int remote_node_id, const char *name)
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UavcanNode::update_params()
|
||||||
|
{
|
||||||
|
param_t param_handle;
|
||||||
|
|
||||||
|
// multicopter air-mode
|
||||||
|
param_handle = param_find("MC_AIRMODE");
|
||||||
|
|
||||||
|
if (param_handle != PARAM_INVALID) {
|
||||||
|
int val;
|
||||||
|
param_get(param_handle, &val);
|
||||||
|
_airmode = val > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int UavcanNode::start_fw_server()
|
int UavcanNode::start_fw_server()
|
||||||
{
|
{
|
||||||
int rv = -1;
|
int rv = -1;
|
||||||
@@ -821,6 +835,8 @@ int UavcanNode::run()
|
|||||||
|
|
||||||
while (!_task_should_exit) {
|
while (!_task_should_exit) {
|
||||||
|
|
||||||
|
update_params();
|
||||||
|
|
||||||
switch (_fw_server_action) {
|
switch (_fw_server_action) {
|
||||||
case Start:
|
case Start:
|
||||||
_fw_server_status = start_fw_server();
|
_fw_server_status = start_fw_server();
|
||||||
@@ -908,6 +924,8 @@ int UavcanNode::run()
|
|||||||
// but this driver could well serve multiple groups.
|
// but this driver could well serve multiple groups.
|
||||||
unsigned num_outputs_max = 8;
|
unsigned num_outputs_max = 8;
|
||||||
|
|
||||||
|
_mixers->set_airmode(_airmode);
|
||||||
|
|
||||||
// Do mixing
|
// Do mixing
|
||||||
_outputs.noutputs = _mixers->mix(&_outputs.output[0], num_outputs_max);
|
_outputs.noutputs = _mixers->mix(&_outputs.output[0], num_outputs_max);
|
||||||
|
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ private:
|
|||||||
int request_fw_check();
|
int request_fw_check();
|
||||||
int print_params(uavcan::protocol::param::GetSet::Response &resp);
|
int print_params(uavcan::protocol::param::GetSet::Response &resp);
|
||||||
int get_set_param(int nodeid, const char *name, uavcan::protocol::param::GetSet::Request &req);
|
int get_set_param(int nodeid, const char *name, uavcan::protocol::param::GetSet::Request &req);
|
||||||
|
void update_params();
|
||||||
void set_setget_response(uavcan::protocol::param::GetSet::Response *resp)
|
void set_setget_response(uavcan::protocol::param::GetSet::Response *resp)
|
||||||
{
|
{
|
||||||
_setget_response = resp;
|
_setget_response = resp;
|
||||||
@@ -207,6 +208,8 @@ private:
|
|||||||
|
|
||||||
actuator_outputs_s _outputs = {};
|
actuator_outputs_s _outputs = {};
|
||||||
|
|
||||||
|
bool _airmode = false;
|
||||||
|
|
||||||
// index into _poll_fds for each _control_subs handle
|
// index into _poll_fds for each _control_subs handle
|
||||||
uint8_t _poll_ids[NUM_ACTUATOR_CONTROL_GROUPS_UAVCAN];
|
uint8_t _poll_ids[NUM_ACTUATOR_CONTROL_GROUPS_UAVCAN];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user