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));
}