diff --git a/conf/modules/extra_dl.xml b/conf/modules/extra_dl.xml index 7351d9f0b59..e03ed7ef734 100644 --- a/conf/modules/extra_dl.xml +++ b/conf/modules/extra_dl.xml @@ -9,6 +9,7 @@
+ diff --git a/sw/airborne/modules/datalink/extra_pprz_dl.c b/sw/airborne/modules/datalink/extra_pprz_dl.c index cb3c85c2d46..20693a2d9d9 100644 --- a/sw/airborne/modules/datalink/extra_pprz_dl.c +++ b/sw/airborne/modules/datalink/extra_pprz_dl.c @@ -21,11 +21,12 @@ * */ -#include "extra_pprz_dl.h" - -#if DATALINK != PPRZ -uint8_t ck_a, ck_b; -#endif +#include "modules/datalink/extra_pprz_dl.h" struct pprz_transport extra_pprz_tp; +void extra_pprz_dl_init(void) +{ + pprz_transport_init(&extra_pprz_tp); +} + diff --git a/sw/airborne/modules/datalink/extra_pprz_dl.h b/sw/airborne/modules/datalink/extra_pprz_dl.h index 8e278c7fe91..08e5a344976 100644 --- a/sw/airborne/modules/datalink/extra_pprz_dl.h +++ b/sw/airborne/modules/datalink/extra_pprz_dl.h @@ -41,6 +41,8 @@ extern struct pprz_transport extra_pprz_tp; DlCheckAndParse(); \ } +/** Init function */ +extern void extra_pprz_dl_init(void); #endif /* EXTRA_PPRZ_DL_H */ diff --git a/sw/airborne/modules/meteo/meteo_france_DAQ.c b/sw/airborne/modules/meteo/meteo_france_DAQ.c index 3ea2c403f7c..499c9262577 100644 --- a/sw/airborne/modules/meteo/meteo_france_DAQ.c +++ b/sw/airborne/modules/meteo/meteo_france_DAQ.c @@ -68,7 +68,7 @@ void init_mf_daq(void) void mf_daq_send_state(void) { // Send aircraft state to DAQ board - DOWNLINK_SEND_MF_DAQ_STATE(pprz_tp, EXTRA_DOWNLINK_DEVICE, + DOWNLINK_SEND_MF_DAQ_STATE(extra_pprz_tp, EXTRA_DOWNLINK_DEVICE, &autopilot_flight_time, &stateGetBodyRates_f()->p, &stateGetBodyRates_f()->q, diff --git a/sw/airborne/subsystems/datalink/downlink.c b/sw/airborne/subsystems/datalink/downlink.c index c18275773ba..f152fd2e47a 100644 --- a/sw/airborne/subsystems/datalink/downlink.c +++ b/sw/airborne/subsystems/datalink/downlink.c @@ -65,7 +65,7 @@ void downlink_init(void) #if defined DATALINK #if DATALINK == PPRZ || DATALINK == SUPERBITRF || DATALINK == W5100 - pprz_transport_init(); + pprz_transport_init(&pprz_tp); #endif #if DATALINK == XBEE xbee_init(); diff --git a/sw/airborne/subsystems/datalink/pprz_transport.c b/sw/airborne/subsystems/datalink/pprz_transport.c index 75b19458ca9..e995397c0b1 100644 --- a/sw/airborne/subsystems/datalink/pprz_transport.c +++ b/sw/airborne/subsystems/datalink/pprz_transport.c @@ -114,18 +114,18 @@ static int check_available_space(struct pprz_transport *trans __attribute__((unu return dev->check_free_space(dev->periph, bytes); } -void pprz_transport_init(void) +void pprz_transport_init(struct pprz_transport *t) { - pprz_tp.status = UNINIT; - pprz_tp.trans_rx.msg_received = FALSE; - pprz_tp.trans_tx.size_of = (size_of_t) size_of; - pprz_tp.trans_tx.check_available_space = (check_available_space_t) check_available_space; - pprz_tp.trans_tx.put_bytes = (put_bytes_t) put_bytes; - pprz_tp.trans_tx.put_named_byte = (put_named_byte_t) put_named_byte; - pprz_tp.trans_tx.start_message = (start_message_t) start_message; - pprz_tp.trans_tx.end_message = (end_message_t) end_message; - pprz_tp.trans_tx.overrun = (overrun_t) overrun; - pprz_tp.trans_tx.count_bytes = (count_bytes_t) count_bytes; - pprz_tp.trans_tx.impl = (void *)(&pprz_tp); + t->status = UNINIT; + t->trans_rx.msg_received = FALSE; + t->trans_tx.size_of = (size_of_t) size_of; + t->trans_tx.check_available_space = (check_available_space_t) check_available_space; + t->trans_tx.put_bytes = (put_bytes_t) put_bytes; + t->trans_tx.put_named_byte = (put_named_byte_t) put_named_byte; + t->trans_tx.start_message = (start_message_t) start_message; + t->trans_tx.end_message = (end_message_t) end_message; + t->trans_tx.overrun = (overrun_t) overrun; + t->trans_tx.count_bytes = (count_bytes_t) count_bytes; + t->trans_tx.impl = (void *)(t); } diff --git a/sw/airborne/subsystems/datalink/pprz_transport.h b/sw/airborne/subsystems/datalink/pprz_transport.h index a505bd74134..04ecc41bd4e 100644 --- a/sw/airborne/subsystems/datalink/pprz_transport.h +++ b/sw/airborne/subsystems/datalink/pprz_transport.h @@ -79,7 +79,7 @@ struct pprz_transport { extern struct pprz_transport pprz_tp; // Init function -extern void pprz_transport_init(void); +extern void pprz_transport_init(struct pprz_transport *t); static inline void parse_pprz(struct pprz_transport *t, uint8_t c) { diff --git a/sw/airborne/subsystems/datalink/pprzlog_transport.c b/sw/airborne/subsystems/datalink/pprzlog_transport.c index f6993bc4ade..1fa3b170b37 100644 --- a/sw/airborne/subsystems/datalink/pprzlog_transport.c +++ b/sw/airborne/subsystems/datalink/pprzlog_transport.c @@ -83,6 +83,7 @@ static void start_message(struct pprzlog_transport *trans, struct link_device *d const uint8_t msg_len = size_of(trans, payload_len); trans->ck = 0; put_1byte(trans, dev, msg_len); + put_1byte(trans, dev, 0); // TODO use correct source ID uint32_t ts = get_sys_time_usec() / 100; put_bytes(trans, dev, DL_TYPE_TIMESTAMP, DL_FORMAT_SCALAR, 4, (uint8_t *)(&ts)); }