Пример #1
0
static void print_field(mavlink_message_t *msg, const mavlink_field_info_t *f)
{
	printf("%s: ", f->name);
	if (f->array_length == 0) {
		print_one_field(msg, f, 0);
		printf(" ");
	} else {
		unsigned i;
		/* print an array */
		if (f->type == MAVLINK_TYPE_CHAR) {
			printf("'%.*s'", f->array_length,
			       f->wire_offset+(const char *)_MAV_PAYLOAD(msg));
			
		} else {
			printf("[ ");
			for (i=0; i<f->array_length; i++) {
				print_one_field(msg, f, i);
				if (i < f->array_length) {
					printf(", ");
				}
			}
			printf("]");
		}
	}
	printf(" ");
}
/**
 * @brief Decode a mission_request message into a struct
 *
 * @param msg The message to decode
 * @param mission_request C-struct to decode the message contents into
 */
void mavlink_msg_mission_request_decode(const mavlink_message_t* msg, mavlink_mission_request_t* mission_request)
{
#if MAVLINK_NEED_BYTE_SWAP
    mission_request->seq = mavlink_msg_mission_request_get_seq(msg);
    mission_request->target_system = mavlink_msg_mission_request_get_target_system(msg);
    mission_request->target_component = mavlink_msg_mission_request_get_target_component(msg);
#else
    memcpy(mission_request, _MAV_PAYLOAD(msg), MAVLINK_MSG_ID_MISSION_REQUEST_LEN);
#endif
}
Пример #3
0
/**
 * @brief Decode a vfr_hud message into a struct
 *
 * @param msg The message to decode
 * @param vfr_hud C-struct to decode the message contents into
 */
void _decode(const mavlink_message_t* msg, mavlink_vfr_hud_t* vfr_hud)
{
#if MAVLINK_NEED_BYTE_SWAP
	vfr_hud->airspeed = _get_airspeed(msg);
	vfr_hud->groundspeed = _get_groundspeed(msg);
	vfr_hud->alt = _get_alt(msg);
	vfr_hud->climb = _get_climb(msg);
	vfr_hud->heading = _get_heading(msg);
	vfr_hud->throttle = _get_throttle(msg);
#else
	memcpy(vfr_hud, _MAV_PAYLOAD(msg), MAVLINK_MSG_ID_VFR_HUD_LEN);
#endif
}
/**
 * @brief Decode a sys_status message into a struct
 *
 * @param msg The message to decode
 * @param sys_status C-struct to decode the message contents into
 */
void mavlink_msg_sys_status_decode(const mavlink_message_t* msg, mavlink_sys_status_t* sys_status)
{
#if MAVLINK_NEED_BYTE_SWAP
	sys_status->onboard_control_sensors_present = mavlink_msg_sys_status_get_onboard_control_sensors_present(msg);
	sys_status->onboard_control_sensors_enabled = mavlink_msg_sys_status_get_onboard_control_sensors_enabled(msg);
	sys_status->onboard_control_sensors_health = mavlink_msg_sys_status_get_onboard_control_sensors_health(msg);
	sys_status->load = mavlink_msg_sys_status_get_load(msg);
	sys_status->voltage_battery = mavlink_msg_sys_status_get_voltage_battery(msg);
	sys_status->current_battery = mavlink_msg_sys_status_get_current_battery(msg);
	sys_status->drop_rate_comm = mavlink_msg_sys_status_get_drop_rate_comm(msg);
	sys_status->errors_comm = mavlink_msg_sys_status_get_errors_comm(msg);
	sys_status->errors_count1 = mavlink_msg_sys_status_get_errors_count1(msg);
	sys_status->errors_count2 = mavlink_msg_sys_status_get_errors_count2(msg);
	sys_status->errors_count3 = mavlink_msg_sys_status_get_errors_count3(msg);
	sys_status->errors_count4 = mavlink_msg_sys_status_get_errors_count4(msg);
	sys_status->battery_remaining = mavlink_msg_sys_status_get_battery_remaining(msg);
#else
	memcpy(sys_status, _MAV_PAYLOAD(msg), MAVLINK_MSG_ID_SYS_STATUS_LEN);
#endif
}
Пример #5
0
bool decodeMavlink()
{ 

	bool isOutputUpdated = false;
	mavlink_message_t msg; 
	mavlink_status_t status;
	
	//receive data over serial1 
	while(Serial1.available() > 0) { 
		uint8_t c = Serial1.read();
		
		//try to get a new message 
		if(mavlink_parse_char(MAVLINK_COMM_0, c, &msg, &status)) { 
			// Handle message
 			switch(msg.msgid) {
 				case (MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE):
 				{
 					mavlink_rc_channels_override_t *rc_channels_override = (mavlink_rc_channels_override_t *)_MAV_PAYLOAD(&msg);

					mavlinkValue[0] = rc_channels_override->chan1_raw;
					mavlinkValue[1] = rc_channels_override->chan2_raw;
					mavlinkValue[2] = rc_channels_override->chan3_raw;
					mavlinkValue[3] = rc_channels_override->chan4_raw;
					mavlinkValue[4] = rc_channels_override->chan5_raw;
					mavlinkValue[5] = rc_channels_override->chan6_raw;
					mavlinkValue[6] = rc_channels_override->chan7_raw;
					mavlinkValue[7] = rc_channels_override->chan8_raw;
					
					lastMavlinkTime = millis();
					isOutputUpdated = true;
 					break;
 				}
				default:
				{
					Serial.println(msg.msgid);
					break;
				}
				
			}
		} 
		// And get the next one
	}
	return isOutputUpdated;
}