static void mav_callback_wind(mavlink_message_t *msg, mavlink_status_t *status, void *d) { struct widget *w = d; struct widget_priv *priv = w->priv; priv->direction = mavlink_msg_wind_get_direction(msg); priv->speed = mavlink_msg_wind_get_speed(msg); priv->speed_z = mavlink_msg_wind_get_speed_z(msg); schedule_widget(w); }
void mavlink_parse_msg(mavlink_message_t *msg) { switch(msg->msgid) { case MAVLINK_MSG_ID_HEARTBEAT: mavdata.custom_mode = (unsigned char) mavlink_msg_heartbeat_get_custom_mode(msg); mavdata.base_mode = mavlink_msg_heartbeat_get_base_mode(msg); break; case MAVLINK_MSG_ID_SYS_STATUS: mavdata.bat_voltage = mavlink_msg_sys_status_get_voltage_battery(msg) / 1000.0; mavdata.bat_current = mavlink_msg_sys_status_get_current_battery(msg); mavdata.bat_remaining = mavlink_msg_sys_status_get_battery_remaining(msg); break; case MAVLINK_MSG_ID_GPS_RAW_INT: mavdata.gps_altitude = mavlink_msg_gps_raw_int_get_alt(msg) / 1000.0; mavdata.gps_lat = mavlink_msg_gps_raw_int_get_lat(msg) / 10000000.0; mavdata.gps_lon = mavlink_msg_gps_raw_int_get_lon(msg) / 10000000.0; mavdata.gps_fix_type = mavlink_msg_gps_raw_int_get_fix_type(msg); mavdata.gps_nrsats = mavlink_msg_gps_raw_int_get_satellites_visible(msg); mavdata.gps_cog = mavlink_msg_gps_raw_int_get_cog(msg); mavdata.gps_eph = mavlink_msg_gps_raw_int_get_eph(msg); break; case MAVLINK_MSG_ID_VFR_HUD: mavdata.vfr_hud.airspeed = mavlink_msg_vfr_hud_get_airspeed(msg); mavdata.vfr_hud.groundspeed = mavlink_msg_vfr_hud_get_groundspeed(msg); mavdata.vfr_hud.alt = mavlink_msg_vfr_hud_get_alt(msg); mavdata.vfr_hud.climb = mavlink_msg_vfr_hud_get_climb(msg); mavdata.vfr_hud.heading = mavlink_msg_vfr_hud_get_heading(msg); mavdata.vfr_hud.throttle = mavlink_msg_vfr_hud_get_throttle(msg); break; case MAVLINK_MSG_ID_ATTITUDE: mavdata.pitch = RAD2DEG(mavlink_msg_attitude_get_pitch(msg)); mavdata.roll = RAD2DEG(mavlink_msg_attitude_get_roll(msg)); //mavdata.yaw = RAD2DEG(mavlink_msg_attitude_get_yaw(msg)); break; case MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT: //nav_roll = mavlink_msg_nav_controller_output_get_nav_roll(msg); //nav_pitch = mavlink_msg_nav_controller_output_get_nav_pitch(msg); //nav_bearing = mavlink_msg_nav_controller_output_get_nav_bearing(msg); mavdata.nav_bearing = mavlink_msg_nav_controller_output_get_target_bearing(msg); mavdata.nav_wp_distance = mavlink_msg_nav_controller_output_get_wp_dist(msg); mavdata.nav_alt_error = mavlink_msg_nav_controller_output_get_alt_error(msg); mavdata.nav_aspd_error = mavlink_msg_nav_controller_output_get_aspd_error(msg); mavdata.nav_xtrack_error = mavlink_msg_nav_controller_output_get_xtrack_error(msg); break; case MAVLINK_MSG_ID_MISSION_CURRENT: mavdata.wp_sequence = mavlink_msg_mission_current_get_seq(msg); break; case MAVLINK_MSG_ID_RC_CHANNELS_RAW: mavdata.ch_raw[0] = mavlink_msg_rc_channels_raw_get_chan1_raw(msg); mavdata.ch_raw[1] = mavlink_msg_rc_channels_raw_get_chan2_raw(msg); mavdata.ch_raw[2] = mavlink_msg_rc_channels_raw_get_chan3_raw(msg); mavdata.ch_raw[3] = mavlink_msg_rc_channels_raw_get_chan4_raw(msg); mavdata.ch_raw[4] = mavlink_msg_rc_channels_raw_get_chan5_raw(msg); mavdata.ch_raw[5] = mavlink_msg_rc_channels_raw_get_chan6_raw(msg); mavdata.ch_raw[6] = mavlink_msg_rc_channels_raw_get_chan7_raw(msg); mavdata.ch_raw[7] = mavlink_msg_rc_channels_raw_get_chan8_raw(msg); mavdata.rssi = mavlink_msg_rc_channels_raw_get_rssi(msg); break; case MAVLINK_MSG_ID_WIND: mavdata.wind_direction = (int) mavlink_msg_wind_get_direction(msg); mavdata.wind_speed = mavlink_msg_wind_get_speed(msg); break; case MAVLINK_MSG_ID_SCALED_PRESSURE: mavdata.temperature = mavlink_msg_scaled_pressure_get_temperature(msg); /* 0.01 celsius */ break; case MAVLINK_MSG_ID_GLOBAL_POSITION_INT: //mavdata.relative_alt = mavlink_msg_global_position_int_get_relative_alt(msg) * 0.001; break; default: break; } }