void parse_mf_daq_msg(void) { mf_daq.nb = dl_buffer[2]; if (mf_daq.nb > 0) { if (mf_daq.nb > MF_DAQ_SIZE) { mf_daq.nb = MF_DAQ_SIZE; } // Store data struct directly from dl_buffer float *buf = (float*)(dl_buffer+3); memcpy(mf_daq.values, buf, mf_daq.nb * sizeof(float)); // Log on SD card if (log_started) { DOWNLINK_SEND_PAYLOAD_FLOAT(pprzlog_tp, chibios_sdlog, mf_daq.nb, mf_daq.values); DOWNLINK_SEND_MF_DAQ_STATE(pprzlog_tp, chibios_sdlog, &autopilot_flight_time, &stateGetBodyRates_f()->p, &stateGetBodyRates_f()->q, &stateGetBodyRates_f()->r, &stateGetNedToBodyEulers_f()->phi, &stateGetNedToBodyEulers_f()->theta, &stateGetNedToBodyEulers_f()->psi, &stateGetAccelNed_f()->x, &stateGetAccelNed_f()->y, &stateGetAccelNed_f()->z, &stateGetSpeedEnu_f()->x, &stateGetSpeedEnu_f()->y, &stateGetSpeedEnu_f()->z, &stateGetPositionLla_f()->lat, &stateGetPositionLla_f()->lon, &stateGetPositionLla_f()->alt, &stateGetHorizontalWindspeed_f()->y, &stateGetHorizontalWindspeed_f()->x); } } }
void mf_daq_send_state(void) { // Send aircraft state to DAQ board DOWNLINK_SEND_MF_DAQ_STATE(extra_pprz_tp, EXTRA_DOWNLINK_DEVICE, &autopilot_flight_time, &stateGetBodyRates_f()->p, &stateGetBodyRates_f()->q, &stateGetBodyRates_f()->r, &stateGetNedToBodyEulers_f()->phi, &stateGetNedToBodyEulers_f()->theta, &stateGetNedToBodyEulers_f()->psi, &stateGetAccelNed_f()->x, &stateGetAccelNed_f()->y, &stateGetAccelNed_f()->z, &stateGetSpeedEnu_f()->x, &stateGetSpeedEnu_f()->y, &stateGetSpeedEnu_f()->z, &stateGetPositionLla_f()->lat, &stateGetPositionLla_f()->lon, &stateGetPositionLla_f()->alt, &stateGetHorizontalWindspeed_f()->y, &stateGetHorizontalWindspeed_f()->x); }
/** * Send Metrics typically displayed on a HUD for fixed wing aircraft. */ static void mavlink_send_vfr_hud(struct transport_tx *trans, struct link_device *dev) { /* Current heading in degrees, in compass units (0..360, 0=north) */ int16_t heading = DegOfRad(stateGetNedToBodyEulers_f()->psi); /* Current throttle setting in integer percent, 0 to 100 */ // is a 16bit unsigned int but supposed to be from 0 to 100?? uint16_t throttle; #ifdef COMMAND_THRUST throttle = commands[COMMAND_THRUST] / (MAX_PPRZ / 100); #elif defined COMMAND_THROTTLE throttle = commands[COMMAND_THROTTLE] / (MAX_PPRZ / 100); #endif mavlink_msg_vfr_hud_send(MAVLINK_COMM_0, stateGetAirspeed_f(), stateGetHorizontalSpeedNorm_f(), // groundspeed heading, throttle, stateGetPositionLla_f()->alt, // altitude, FIXME: should be MSL stateGetSpeedNed_f()->z); // climb rate MAVLinkSendMessage(); }