Пример #1
0
static void mav_callback(mavlink_message_t *msg, void *d)
{
    struct widget *w = d;
    struct widget_priv *priv = w->priv;
    unsigned char i;

    if (msg->msgid == MAVLINK_MSG_ID_RC_CHANNELS_RAW) {
        priv->total_ch = 8;
    } else {
        priv->total_ch = mavlink_msg_rc_channels_get_chancount(msg);
    }
    
    for (i = 0; i < priv->total_ch; i++)
        priv->ch_raw[i] = mavlink_msg_rc_channels_raw_get_chan(msg, i);

    schedule_widget(w);
}
Пример #2
0
void MavLinkInterpreter::ProcessRCChannels() const
{
    _m->ChannelCount = mavlink_msg_rc_channels_get_chancount(&_msg);    // Number of RC Channels used
	_m->ChannelRaw[0] = mavlink_msg_rc_channels_get_chan1_raw(&_msg);   // The PPM values of the RC channels received.
	_m->ChannelRaw[1] = mavlink_msg_rc_channels_get_chan2_raw(&_msg);   // The standard PPM modulation is as follows:
	_m->ChannelRaw[2] = mavlink_msg_rc_channels_get_chan3_raw(&_msg);   // 1000 microseconds: 0%, 2000 microseconds: 100%.
	_m->ChannelRaw[3] = mavlink_msg_rc_channels_get_chan4_raw(&_msg);   // Individual receivers/transmitters might violate this specification.
	_m->ChannelRaw[4] = mavlink_msg_rc_channels_get_chan5_raw(&_msg);
	_m->ChannelRaw[5] = mavlink_msg_rc_channels_get_chan6_raw(&_msg);
	_m->ChannelRaw[6] = mavlink_msg_rc_channels_get_chan7_raw(&_msg);
	_m->ChannelRaw[7] = mavlink_msg_rc_channels_get_chan8_raw(&_msg);
	_m->ChannelRaw[8] = mavlink_msg_rc_channels_get_chan9_raw(&_msg);
	_m->ChannelRaw[9] = mavlink_msg_rc_channels_get_chan10_raw(&_msg);
	_m->ChannelRaw[10] = mavlink_msg_rc_channels_get_chan11_raw(&_msg);
	_m->ChannelRaw[11] = mavlink_msg_rc_channels_get_chan12_raw(&_msg);
	_m->ChannelRaw[12] = mavlink_msg_rc_channels_get_chan13_raw(&_msg);
	_m->ChannelRaw[13] = mavlink_msg_rc_channels_get_chan14_raw(&_msg);
	_m->ChannelRaw[14] = mavlink_msg_rc_channels_get_chan15_raw(&_msg);
	_m->ChannelRaw[15] = mavlink_msg_rc_channels_get_chan16_raw(&_msg);
	_m->ChannelRaw[16] = mavlink_msg_rc_channels_get_chan17_raw(&_msg);
	_m->ChannelRaw[17] = mavlink_msg_rc_channels_get_chan18_raw(&_msg);

//
#ifdef DEBUG_APM_RC_CHANNELS				
		debugSerial.printf("%d\tMAVLINK_MSG_ID_RC_CHANNELS: chancount: %d\r\n", millis(), _m->ChannelCount);
		
		for (size_t i = 0; i < 3; i++)
		{
			int j = i * 6;
			debugSerial.printf("\tRC%d: %d, RD%d: %d, RC%d: %d, RC%d: %d, RC%d: %d, RC%d: %d\r\n",
				j + 1, _m->ChannelRaw[j], j + 2, _m->ChannelRaw[j+1], j + 3, _m->ChannelRaw[j+2],
				j + 4, _m->ChannelRaw[j+3], j + 5, _m->ChannelRaw[j+4], j + 6, _m->ChannelRaw[j+5] );
		}
#endif

}