<!DOCTYPE module SYSTEM "module.dtd">

<module name="datalink">
  <doc>
    <description>Basic MAVLink implementation</description>
    <configure name="MAVLINK_PORT" value="UARTx|UDPx|UsbS" description="The port device to use for mavlink (default: UART1)"/>
    <configure name="MAVLINK_BAUD" value="B57600" description="Baud rate if MAVLINK_PORT is a UART"/>
  </doc>
  <header>
    <file name="mavlink.h"/>
  </header>

  <init fun="mavlink_init()"/>
  <periodic fun="mavlink_periodic()" freq="10" autorun="TRUE"/>
  <periodic fun="mavlink_periodic_telemetry()" freq="$TELEMETRY_FREQUENCY" autorun="TRUE"/>
  <event fun="mavlink_event()"/>

  <makefile>
    <file name="mavlink.c"/>
    <file name="mission_manager.c" dir="modules/datalink/missionlib"/>
    <file name="waypoints.c" dir="modules/datalink/missionlib"/>
    <file name="blocks.c" dir="modules/datalink/missionlib"/>
    <configure name="MAVLINK_PORT" default="uart1" case="upper|lower"/>
    <raw>
      ifneq (,$(findstring usb,$(MAVLINK_PORT_LOWER)))
      ap.CFLAGS += -DUSE_USB_SERIAL
      ap.srcs += $(SRC_ARCH)/usb_ser_hw.c
      ap.CFLAGS += -DMAVLINK_DEV=usb_serial
      else
      ifneq (,$(findstring udp,$(MAVLINK_PORT_LOWER)))
      include $(CFG_SHARED)/udp.makefile
      $(TARGET).CFLAGS += -DMAVLINK_DEV=$(MAVLINK_PORT_LOWER)
      $(TARGET).CFLAGS += -DUSE_$(MAVLINK_PORT_UPPER)
      else
      MAVLINK_BAUD ?= B57600
      ap.CFLAGS += -DMAVLINK_DEV=$(MAVLINK_PORT_LOWER)
      ap.CFLAGS += -DUSE_$(MAVLINK_PORT_UPPER)
      ap.CFLAGS += -D$(MAVLINK_PORT_UPPER)_BAUD=$(MAVLINK_BAUD)
      endif
      endif
    </raw>
  </makefile>
</module>
