Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
meteo_france_DAQ.c
Go to the documentation of this file.
1/*
2 * Copyright (C) 2014 Gautier Hattenberger
3 *
4 * This file is part of paparazzi
5
6 * paparazzi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * paparazzi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with paparazzi; see the file COPYING. If not, write to
18 * the Free Software Foundation, 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 *
21 */
22
35
36#include "state.h"
37#include "autopilot.h"
42
43#include "modules/gps/gps.h"
45
48
49#ifndef MF_DAQ_POWER_INIT
50#define MF_DAQ_POWER_INIT TRUE
51#endif
52
53#if !(defined MF_DAQ_POWER_PORT) && !(defined MF_DAQ_POWER_PIN)
54INFO("MF_DAQ power pin is not defined")
55#endif
56
57void init_mf_daq(void)
58{
59 mf_daq.nb = 0;
61#if (defined MF_DAQ_POWER_PORT) && (defined MF_DAQ_POWER_PIN)
63#endif
65 log_started = false;
66}
67
91
93{
94 // Send report over normal telemetry
95 if (mf_daq.nb > 0) {
97 }
98 // Test if log is started
99 if (pprzLogFile != -1) {
100 if (log_started == FALSE) {
101 // Log MD5SUM once
103 log_started = true;
104 }
105 // Log GPS for time reference
106 uint8_t foo = 0;
107 int16_t climb = -gps.ned_vel.z;
110 int32_t east = utm.east * 100;
111 int32_t north = utm.north * 100;
113 &east, &north, &course, &gps.hmsl, &gps.gspeed, &climb,
114 &gps.week, &gps.tow, &utm.zone, &foo);
115 }
116}
117
119{
121 if (mf_daq.nb > 0) {
123 // Store data struct directly from dl_buffer
125 memcpy(mf_daq.values, b, mf_daq.nb * sizeof(float));
126 // Log on SD card
127 if (log_started) {
137 &stateGetAccelNed_f()->x,
138 &stateGetAccelNed_f()->y,
139 &stateGetAccelNed_f()->z,
140 &stateGetSpeedEnu_f()->x,
141 &stateGetSpeedEnu_f()->y,
142 &stateGetSpeedEnu_f()->z,
143 &stateGetPositionLla_f()->lat,
144 &stateGetPositionLla_f()->lon,
148 }
149 }
150}
151
152
static int16_t course[3]
struct pprz_autopilot autopilot
Global autopilot structure.
Definition autopilot.c:49
Core autopilot interface common to all firmwares.
uint16_t flight_time
flight time in seconds
Definition autopilot.h:65
void gpio_setup_output(ioportid_t port, uint16_t gpios)
Setup one or more pins of the given GPIO port as outputs.
Definition gpio_arch.c:33
struct pprz_transport extra_pprz_tp
Extra datalink and telemetry using PPRZ protocol.
struct GpsState gps
global GPS state
Definition gps.c:74
Device independent GPS code (interface)
uint32_t tow
GPS time of week in ms.
Definition gps.h:109
int32_t hmsl
height above mean sea level (MSL) in mm
Definition gps.h:94
int32_t course
GPS course over ground in rad*1e7, [0, 2*Pi]*1e7 (CW/north)
Definition gps.h:99
struct NedCoor_i ned_vel
speed NED in cm/s
Definition gps.h:96
uint16_t gspeed
norm of 2d ground speed in cm/s
Definition gps.h:97
uint16_t week
GPS week.
Definition gps.h:108
uint8_t fix
status of fix
Definition gps.h:107
int32_t z
Down.
static struct NedCoor_f * stateGetAccelNed_f(void)
Get acceleration in NED coordinates (float).
Definition state.h:1195
static struct FloatEulers * stateGetNedToBodyEulers_f(void)
Get vehicle body attitude euler angles (float).
Definition state.h:1306
static struct LlaCoor_f * stateGetPositionLla_f(void)
Get position in LLA coordinates (float).
Definition state.h:857
static struct UtmCoor_f * stateGetPositionUtm_f(void)
Get position in UTM coordinates (float).
Definition state.h:821
static struct FloatRates * stateGetBodyRates_f(void)
Get vehicle body angular rate (float).
Definition state.h:1367
static struct EnuCoor_f * stateGetSpeedEnu_f(void)
Get ground speed in local ENU coordinates (float).
Definition state.h:1058
static struct FloatVect2 * stateGetHorizontalWindspeed_f(void)
Get horizontal windspeed (float).
Definition state.h:1560
static float p[2][2]
uint16_t foo
Definition main_demo5.c:58
void mf_daq_send_state(void)
void parse_mf_daq_msg(uint8_t *buf)
#define MF_DAQ_POWER_INIT
void mf_daq_send_report(void)
bool log_started
void init_mf_daq(void)
struct MF_DAQ mf_daq
Communication module with the Data Acquisition board from Meteo France.
uint8_t power
#define MF_DAQ_SIZE
float values[MF_DAQ_SIZE]
#define meteo_france_DAQ_SetPower(_x)
uint8_t nb
float alt
in meters (above WGS84 reference ellipsoid or above MSL)
float east
in meters
float north
in meters
position in UTM coordinates Units: meters
struct pprzlog_transport pprzlog_tp
PPRZLOG transport structure.
Definition pprzlog_tp.c:29
Initialize pprzlog transport.
FileDes pprzLogFile
chibios_sdlog structure
API to get/set the generic vehicle states.
#define FALSE
Definition std.h:5
int int32_t
Typedef defining 32 bit int type.
short int16_t
Typedef defining 16 bit short type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.
float b
Definition wedgebug.c:202