mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 22:49:53 +08:00
[datalink] add a datalink init function (#2950)
* [datalink] add a datalink init function and get rid of the DATALINK_C trick * [datalink] weak parsing function * [sim] remove MODULES_C define from sim_ap this is not necessary and is a source of multiple definition errors
This commit is contained in:
committed by
GitHub
parent
f5a666b0b3
commit
b48d3e61e8
@@ -101,7 +101,7 @@ setup_actuators.CFLAGS += -D$(MODEM_PORT)_BAUD=$(MODEM_BAUD)
|
||||
SETUP_ACTUATORS_MODEM_PORT_LOWER=$(shell echo $(MODEM_PORT) | tr A-Z a-z)
|
||||
setup_actuators.CFLAGS += -DDOWNLINK -DDOWNLINK_DEVICE=$(SETUP_ACTUATORS_MODEM_PORT_LOWER) -DPPRZ_UART=$(SETUP_ACTUATORS_MODEM_PORT_LOWER)
|
||||
setup_actuators.CFLAGS += -DDOWNLINK_TRANSPORT=pprz_tp -DDATALINK=PPRZ
|
||||
setup_actuators.srcs += modules/datalink/downlink.c pprzlink/src/pprz_transport.c modules/datalink/pprz_dl.c
|
||||
setup_actuators.srcs += modules/datalink/downlink.c modules/datalink/datalink.c pprzlink/src/pprz_transport.c modules/datalink/pprz_dl.c
|
||||
|
||||
setup_actuators.srcs += modules/actuators/actuators.c
|
||||
setup_actuators.srcs += $(SRC_FIRMWARE)/setup_actuators.c
|
||||
|
||||
@@ -67,7 +67,7 @@ COMMON_TEST_SRCS += $(SRC_ARCH)/mcu_periph/gpio_arch.c
|
||||
|
||||
# pprz downlink/datalink
|
||||
COMMON_TELEMETRY_CFLAGS = -DDOWNLINK -DDOWNLINK_TRANSPORT=pprz_tp -DDATALINK=PPRZ
|
||||
COMMON_TELEMETRY_SRCS = modules/datalink/downlink.c modules/datalink/pprz_transport.c modules/datalink/pprz_dl.c
|
||||
COMMON_TELEMETRY_SRCS = modules/datalink/downlink.c modules/datalink/datalink.c modules/datalink/pprz_transport.c modules/datalink/pprz_dl.c
|
||||
|
||||
COMMON_TELEMETRY_MODEM_PORT_LOWER=$(shell echo $(MODEM_PORT) | tr A-Z a-z)
|
||||
COMMON_TELEMETRY_CFLAGS += -DUSE_$(MODEM_PORT) -D$(MODEM_PORT)_BAUD=$(MODEM_BAUD)
|
||||
|
||||
@@ -68,7 +68,7 @@ endif
|
||||
|
||||
# pprz downlink/datalink
|
||||
COMMON_TELEMETRY_CFLAGS = -DDOWNLINK -DDOWNLINK_TRANSPORT=pprz_tp -DDATALINK=PPRZ
|
||||
COMMON_TELEMETRY_SRCS = modules/datalink/downlink.c pprzlink/src/pprz_transport.c modules/datalink/pprz_dl.c
|
||||
COMMON_TELEMETRY_SRCS = modules/datalink/downlink.c modules/datalink/datalink.c pprzlink/src/pprz_transport.c modules/datalink/pprz_dl.c
|
||||
|
||||
# check if we are using UDP
|
||||
ifneq (,$(findstring UDP, $(MODEM_DEV)))
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<file name="datalink.h"/>
|
||||
<file name="downlink.h"/>
|
||||
</header>
|
||||
<init fun="datalink_init()"/>
|
||||
<init fun="downlink_init()"/>
|
||||
<periodic fun="telemetry_reporting_task()"/>
|
||||
<periodic fun="datalink_periodic()" freq="1"/>
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/* Definitions and declarations required to compile autopilot code on a
|
||||
i386 architecture. Bindings for OCaml. */
|
||||
|
||||
#define MODULES_C
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <sys/time.h>
|
||||
@@ -37,8 +35,6 @@ bool rc_event_1, rc_event_2;
|
||||
uint8_t gps_nb_ovrn, link_fbw_fbw_nb_err, link_fbw_nb_err;
|
||||
float alt_roll_pgain;
|
||||
float roll_rate_pgain;
|
||||
uint16_t datalink_time = 0;
|
||||
uint16_t datalink_nb_msgs = 0;
|
||||
|
||||
#ifndef SIM_UPDATE_DL
|
||||
#define SIM_UPDATE_DL TRUE
|
||||
|
||||
@@ -124,7 +124,7 @@ static inline void main_periodic_task(void)
|
||||
modules_periodic_task();
|
||||
}
|
||||
RunOnceEvery(10, { LED_PERIODIC();});
|
||||
RunOnceEvery(PERIODIC_FREQUENCY, { datalink_time++; });
|
||||
RunOnceEvery(PERIODIC_FREQUENCY, { datalink_periodic(); });
|
||||
periodic_telemetry_send_Main(DefaultPeriodic, &(DefaultChannel).trans_tx, &(DefaultDevice).device);
|
||||
|
||||
modules_periodic_task();
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define DATALINK_C
|
||||
#define MODULES_C
|
||||
|
||||
/* PERIODIC_C_MAIN is defined before generated/periodic_telemetry.h
|
||||
@@ -71,7 +70,7 @@ int main(void)
|
||||
static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define DATALINK_C
|
||||
#define MODULES_DATALINK_C
|
||||
|
||||
#include "datalink.h"
|
||||
@@ -36,22 +35,22 @@
|
||||
|
||||
#include "pprzlink/messages.h"
|
||||
|
||||
#if defined RADIO_CONTROL && defined RADIO_CONTROL_TYPE_DATALINK
|
||||
#include "modules/radio_control/radio_control.h"
|
||||
#endif
|
||||
|
||||
#if USE_GPS
|
||||
#include "modules/gps/gps.h"
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_CONTROL_DATALINK_LED
|
||||
#include "led.h"
|
||||
#endif
|
||||
bool dl_msg_available;
|
||||
uint16_t datalink_time;
|
||||
uint16_t datalink_nb_msgs;
|
||||
uint8_t dl_buffer[MSG_SIZE] __attribute__((aligned));
|
||||
|
||||
#if USE_NPS
|
||||
bool datalink_enabled = true;
|
||||
#endif
|
||||
|
||||
void datalink_init(void)
|
||||
{
|
||||
dl_msg_available = false;
|
||||
datalink_time = 0;
|
||||
datalink_nb_msgs = 0;
|
||||
}
|
||||
|
||||
void datalink_periodic(void)
|
||||
{
|
||||
datalink_time++; // called at 1Hz
|
||||
@@ -69,7 +68,7 @@ void datalink_parse_PING(struct link_device *dev, struct transport_tx *trans, ui
|
||||
pprzlink_msg_send_PONG(&msg);
|
||||
}
|
||||
|
||||
void dl_parse_msg(struct link_device *dev, struct transport_tx *trans, uint8_t *buf)
|
||||
void WEAK dl_parse_msg(struct link_device *dev, struct transport_tx *trans, uint8_t *buf)
|
||||
{
|
||||
uint8_t msg_id = pprzlink_get_msg_id(buf);
|
||||
uint8_t class_id = pprzlink_get_msg_class_id(buf);
|
||||
|
||||
@@ -27,12 +27,6 @@
|
||||
#ifndef DATALINK_H
|
||||
#define DATALINK_H
|
||||
|
||||
#ifdef DATALINK_C
|
||||
#define EXTERN
|
||||
#else
|
||||
#define EXTERN extern
|
||||
#endif
|
||||
|
||||
#include "std.h"
|
||||
#include "pprzlink/dl_protocol.h"
|
||||
|
||||
@@ -44,22 +38,22 @@
|
||||
#define BLUEGIGA 5
|
||||
|
||||
/** Flag provided to control calls to ::dl_parse_msg. NOT used in this module*/
|
||||
EXTERN bool dl_msg_available;
|
||||
extern bool dl_msg_available;
|
||||
|
||||
/** time in seconds since last datalink message was received */
|
||||
EXTERN uint16_t datalink_time;
|
||||
extern uint16_t datalink_time;
|
||||
|
||||
/** number of datalink/uplink messages received */
|
||||
EXTERN uint16_t datalink_nb_msgs;
|
||||
extern uint16_t datalink_nb_msgs;
|
||||
|
||||
#define MSG_SIZE 256
|
||||
EXTERN uint8_t dl_buffer[MSG_SIZE] __attribute__((aligned));
|
||||
extern uint8_t dl_buffer[MSG_SIZE] __attribute__((aligned));
|
||||
|
||||
/** Should be called when chars are available in dl_buffer */
|
||||
EXTERN void dl_parse_msg(struct link_device *dev, struct transport_tx *trans, uint8_t *buf);
|
||||
extern void dl_parse_msg(struct link_device *dev, struct transport_tx *trans, uint8_t *buf);
|
||||
|
||||
#if USE_NPS
|
||||
EXTERN bool datalink_enabled;
|
||||
extern bool datalink_enabled;
|
||||
#endif
|
||||
|
||||
/** Convenience macro to fill dl_buffer */
|
||||
@@ -72,6 +66,9 @@ EXTERN bool datalink_enabled;
|
||||
dl_msg_available = true; \
|
||||
}
|
||||
|
||||
/** init function */
|
||||
extern void datalink_init(void);
|
||||
|
||||
/** periodic function, should be called at 1Hz */
|
||||
extern void datalink_periodic(void);
|
||||
|
||||
|
||||
@@ -71,10 +71,6 @@ void downlink_init(void)
|
||||
(DefaultDevice).device.nb_bytes = 0;
|
||||
(DefaultDevice).device.nb_msgs = 0;
|
||||
|
||||
#if defined DATALINK
|
||||
datalink_nb_msgs = 0;
|
||||
#endif
|
||||
|
||||
#if PERIODIC_TELEMETRY
|
||||
register_periodic_telemetry(DefaultPeriodic, PPRZ_MSG_ID_DATALINK_REPORT, send_downlink);
|
||||
#endif
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
#include BOARD_CONFIG
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
@@ -43,6 +41,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / 100), NULL);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
adc_init();
|
||||
pprz_dl_init();
|
||||
|
||||
@@ -21,8 +21,6 @@
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
/* PERIODIC_C_MAIN is defined before generated/periodic_telemetry.h
|
||||
* in order to implement telemetry_mode_Main_*
|
||||
*/
|
||||
@@ -79,6 +77,7 @@ static inline void main_init(void)
|
||||
modules_init();
|
||||
ahrs_init();
|
||||
pprz_dl_init();
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#define DATALINK_C
|
||||
#define ABI_C
|
||||
#define MODULES_C
|
||||
|
||||
@@ -83,8 +82,7 @@ static inline void main_init(void)
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
|
||||
modules_init();
|
||||
|
||||
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
#define DATALINK_C
|
||||
#include "modules/datalink/downlink.h"
|
||||
#include "modules/datalink/pprz_dl.h"
|
||||
#include "modules/radio_control/radio_control.h"
|
||||
@@ -50,6 +49,7 @@ static inline void main_init(void)
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
radio_control_init();
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
}
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
* Test persistent settings, use together with conf/settings/test_settings.xml
|
||||
*/
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
#include BOARD_CONFIG
|
||||
|
||||
#include "std.h"
|
||||
@@ -72,7 +70,7 @@ static inline void main_init(void)
|
||||
settings_init();
|
||||
pprz_dl_init();
|
||||
|
||||
|
||||
datalink_init();
|
||||
#if DOWNLINK
|
||||
downlink_init();
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
#include "led.h"
|
||||
#define DATALINK_C
|
||||
#include "modules/datalink/downlink.h"
|
||||
|
||||
#include "mcu_periph/i2c.h"
|
||||
@@ -59,6 +58,7 @@ static inline void main_init(void)
|
||||
|
||||
LED_ON(4);
|
||||
ami601_init();
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#include BOARD_CONFIG
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
#define DATALINK_C
|
||||
#include "modules/datalink/downlink.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include BOARD_CONFIG
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
#define DATALINK_C
|
||||
#include "modules/datalink/downlink.h"
|
||||
#include "modules/datalink/pprz_dl.h"
|
||||
#include "peripherals/ms2100.h"
|
||||
@@ -54,6 +53,7 @@ static inline void main_init(void)
|
||||
sys_time_register_timer((1. / 50), NULL);
|
||||
|
||||
ms2100_init(&ms2100, &(MS2100_SPI_DEV), MS2100_SLAVE_IDX);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
}
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
*/
|
||||
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
/* PERIODIC_C_MAIN is defined before generated/periodic_telemetry.h
|
||||
* in order to implement telemetry_mode_Main_*
|
||||
*/
|
||||
@@ -72,6 +70,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
ActuatorsPwmInit();
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include "mcu_periph/sys_time.h"
|
||||
#include "led.h"
|
||||
|
||||
#define DATALINK_C
|
||||
#include "modules/datalink/downlink.h"
|
||||
#include "modules/datalink/pprz_dl.h"
|
||||
|
||||
@@ -110,6 +109,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
test_baro_board_imu_init();
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
#include "led.h"
|
||||
#define DATALINK_C
|
||||
#include "modules/datalink/downlink.h"
|
||||
#include "modules/datalink/pprz_dl.h"
|
||||
#include "mcu_periph/can.h"
|
||||
@@ -70,6 +69,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((0.5 / PERIODIC_FREQUENCY), NULL);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
ppz_can_init((can_rx_callback_t)main_on_can_msg);
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
*
|
||||
* Periodically sends ALIVE (10Hz) and ping/pong (every 5s) telemetry messages.
|
||||
*/
|
||||
#define DATALINK_C
|
||||
|
||||
#include BOARD_CONFIG
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
@@ -55,6 +53,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
}
|
||||
|
||||
@@ -24,9 +24,6 @@
|
||||
* Test the manual control via RC including command_laws.
|
||||
*/
|
||||
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
#include "generated/airframe.h"
|
||||
#include "generated/settings.h"
|
||||
|
||||
@@ -76,6 +73,7 @@ int main(void)
|
||||
static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
|
||||
|
||||
@@ -76,8 +76,6 @@
|
||||
|
||||
*/
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
#include BOARD_CONFIG
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
@@ -204,7 +202,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
|
||||
#include BOARD_CONFIG
|
||||
|
||||
#define DATALINK_C
|
||||
#define MODULES_C
|
||||
#define ABI_C
|
||||
|
||||
@@ -71,6 +70,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
|
||||
modules_init();
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
* Periodically sends ALIVE telemetry messages.
|
||||
*/
|
||||
|
||||
#define DATALINK_C
|
||||
|
||||
#include BOARD_CONFIG
|
||||
#include "mcu.h"
|
||||
#include "mcu_periph/sys_time.h"
|
||||
@@ -55,7 +53,7 @@ static inline void main_init(void)
|
||||
{
|
||||
mcu_init();
|
||||
sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL);
|
||||
|
||||
datalink_init();
|
||||
downlink_init();
|
||||
pprz_dl_init();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user