19 #include <mavros_msgs/RCIn.h>
20 #include <mavros_msgs/RCOut.h>
21 #include <mavros_msgs/OverrideRCIn.h>
24 namespace std_plugins {
39 PluginBase::initialize(uas_);
79 size_t offset = port.port * 8;
98 auto rcin_msg = boost::make_shared<mavros_msgs::RCIn>();
101 rcin_msg->rssi = port.rssi;
107 void handle_rc_channels(
const mavlink::mavlink_message_t *msg, mavlink::common::msg::RC_CHANNELS &channels)
109 constexpr
size_t MAX_CHANCNT = 18;
115 if (channels.chancount > MAX_CHANCNT) {
117 "FCU receives %u RC channels, but RC_CHANNELS can store %zu",
118 channels.chancount, MAX_CHANCNT);
120 channels.chancount = MAX_CHANCNT;
126 switch (channels.chancount) {
131 case 18:
raw_rc_in[17] = channels.chan18_raw;
132 case 17:
raw_rc_in[16] = channels.chan17_raw;
133 case 16:
raw_rc_in[15] = channels.chan16_raw;
134 case 15:
raw_rc_in[14] = channels.chan15_raw;
135 case 14:
raw_rc_in[13] = channels.chan14_raw;
136 case 13:
raw_rc_in[12] = channels.chan13_raw;
137 case 12:
raw_rc_in[11] = channels.chan12_raw;
138 case 11:
raw_rc_in[10] = channels.chan11_raw;
139 case 10:
raw_rc_in[ 9] = channels.chan10_raw;
140 case 9:
raw_rc_in[ 8] = channels.chan9_raw;
141 case 8:
raw_rc_in[ 7] = channels.chan8_raw;
142 case 7:
raw_rc_in[ 6] = channels.chan7_raw;
143 case 6:
raw_rc_in[ 5] = channels.chan6_raw;
144 case 5:
raw_rc_in[ 4] = channels.chan5_raw;
145 case 4:
raw_rc_in[ 3] = channels.chan4_raw;
146 case 3:
raw_rc_in[ 2] = channels.chan3_raw;
147 case 2:
raw_rc_in[ 1] = channels.chan2_raw;
148 case 1:
raw_rc_in[ 0] = channels.chan1_raw;
153 auto rcin_msg = boost::make_shared<mavros_msgs::RCIn>();
156 rcin_msg->rssi = channels.rssi;
166 uint8_t num_channels;
170 if (
msg->magic == MAVLINK_STX)
175 size_t offset = port.port * num_channels;
176 if (
raw_rc_out.size() < offset + num_channels)
192 if (
msg->magic == MAVLINK_STX) {
208 auto rcout_msg = boost::make_shared<mavros_msgs::RCOut>();
211 uint64_t time_usec = port.time_usec;
234 mavlink::common::msg::RC_CHANNELS_OVERRIDE ovr = {};
242 ovr.chan1_raw = req->channels[0];
243 ovr.chan2_raw = req->channels[1];
244 ovr.chan3_raw = req->channels[2];
245 ovr.chan4_raw = req->channels[3];
246 ovr.chan5_raw = req->channels[4];
247 ovr.chan6_raw = req->channels[5];
248 ovr.chan7_raw = req->channels[6];
249 ovr.chan8_raw = req->channels[7];
250 ovr.chan9_raw = req->channels[8];
251 ovr.chan10_raw = req->channels[9];
252 ovr.chan11_raw = req->channels[10];
253 ovr.chan12_raw = req->channels[11];
254 ovr.chan13_raw = req->channels[12];
255 ovr.chan14_raw = req->channels[13];
256 ovr.chan15_raw = req->channels[14];
257 ovr.chan16_raw = req->channels[15];
258 ovr.chan17_raw = req->channels[16];
259 ovr.chan18_raw = req->channels[17];