forked from Archive/PX4-Autopilot
Adjust the control mapping from DSM receivers to correspond to the standard PPM control mapping for channels 0-4.
This commit is contained in:
parent
7c3b28d503
commit
fd771f67f2
|
@ -130,7 +130,7 @@ comms_main(void)
|
|||
last_report_time = now;
|
||||
|
||||
/* populate the report */
|
||||
for (int i = 0; i < system_state.rc_channels; i++)
|
||||
for (unsigned i = 0; i < system_state.rc_channels; i++)
|
||||
report.rc_channel[i] = system_state.rc_channel_data[i];
|
||||
report.channel_count = system_state.rc_channels;
|
||||
report.armed = system_state.armed;
|
||||
|
|
|
@ -322,10 +322,28 @@ dsm_decode(hrt_abstime frame_time)
|
|||
/* convert 0-1024 / 0-2048 values to 1000-2000 ppm encoding in a very sloppy fashion */
|
||||
if (channel_shift == 11)
|
||||
value /= 2;
|
||||
value += 998;
|
||||
|
||||
/* stuff the decoded channel into the PPM input buffer */
|
||||
/* XXX check actual values */
|
||||
system_state.rc_channel_data[channel] = 988 + value;
|
||||
/*
|
||||
* Store the decoded channel into the R/C input buffer, taking into
|
||||
* account the different ideas about channel assignement that we have.
|
||||
*
|
||||
* Specifically, the first four channels in rc_channel_data are roll, pitch, thrust, yaw,
|
||||
* but the first four channels from the DSM receiver are thrust, roll, pitch, yaw.
|
||||
*/
|
||||
switch (channel) {
|
||||
case 0:
|
||||
channel = 2;
|
||||
break;
|
||||
case 1:
|
||||
channel = 0;
|
||||
break;
|
||||
case 2:
|
||||
channel = 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
system_state.rc_channel_data[channel] = value;
|
||||
}
|
||||
|
||||
/* and note that we have received data from the R/C controller */
|
||||
|
|
|
@ -75,7 +75,7 @@ struct sys_state_s
|
|||
/*
|
||||
* Data from the remote control input(s)
|
||||
*/
|
||||
int rc_channels;
|
||||
unsigned rc_channels;
|
||||
uint16_t rc_channel_data[PX4IO_INPUT_CHANNELS];
|
||||
uint64_t rc_channels_timestamp;
|
||||
|
||||
|
|
Loading…
Reference in New Issue