Skip to content

Commit

Permalink
[FBW] Option to have telemetry through the FBW for outback safety (so…
Browse files Browse the repository at this point in the history
… it can decode flight termination modes even when AP is down)
  • Loading branch information
dewagter committed Sep 26, 2014
1 parent 4ccfccb commit dc6b01a
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
59 changes: 59 additions & 0 deletions sw/airborne/fbw_datalink.c
@@ -0,0 +1,59 @@





#include "fbw_datalink.h"
#include "mcu_periph/uart.h"
#include "led.h"


#define __ModemLink(dev, _x) dev##_x
#define _ModemLink(dev, _x) __ModemLink(dev, _x)
#define ModemLink(_x) _ModemLink(MODEM_LINK, _x)
#define ModemBuffer() ModemLink(ChAvailable())


#define __AutopilotLink(dev, _x) dev##_x
#define _AutopilotLink(dev, _x) __AutopilotLink(dev, _x)
#define AutopilotLink(_x) _AutopilotLink(AUTOPILOT_LINK, _x)

#define AutopilotBuffer() AutopilotLink(ChAvailable())

static inline void autopilot_parse(char c)
{
ModemLink(Transmit(c));
}

static inline void modem_parse(char c)
{
AutopilotLink(Transmit(c));
}

#define ReadAutopilotBuffer() { \
while (AutopilotLink(ChAvailable())) \
autopilot_parse(AutopilotLink(Getch())); \
}

#define ReadModemBuffer() { \
while (ModemLink(ChAvailable())) \
modem_parse(ModemLink(Getch())); \
}

void FbwDataLinkPeriodic(void)
{
LED_OFF(2);
LED_OFF(4);
}

void FbwDataLinkEvent(void)
{
if (ModemLink(ChAvailable()))
LED_ON(2);

if (AutopilotLink(ChAvailable()))
LED_ON(4);

ReadModemBuffer();
ReadAutopilotBuffer();
}
33 changes: 33 additions & 0 deletions sw/airborne/fbw_datalink.h
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2014 CDW
*
* This file is part of paparazzi.
*
* paparazzi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* paparazzi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with paparazzi; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
*/
/** \file fbw_datalink.h
* \brief Handling of messages coming from ground in FTD
*
*/

#ifndef FBW_DATALINK_EVENT
#define FBW_DATALINK_EVENT

extern void FbwDataLinkPeriodic(void);
extern void FbwDataLinkEvent(void);

#endif

0 comments on commit dc6b01a

Please sign in to comment.