paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [5280] adding crc to spi between overo and stm32


From: antoine drouin
Subject: [paparazzi-commits] [5280] adding crc to spi between overo and stm32
Date: Mon, 09 Aug 2010 19:18:36 +0000

Revision: 5280
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5280
Author:   poine
Date:     2010-08-09 19:18:35 +0000 (Mon, 09 Aug 2010)
Log Message:
-----------
adding crc to spi between overo and stm32

Added Paths:
-----------
    paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c
    paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h

Added: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c                     
        (rev 0)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c     2010-08-09 
19:18:35 UTC (rev 5280)
@@ -0,0 +1,9 @@
+#include "lisa/lisa_overo_link_crc.h"
+
+struct LisaOveroLink overo_link;
+
+void overo_link_init(void) {
+  overo_link.status = IDLE;
+  overo_link_arch_init();
+}
+

Added: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h                     
        (rev 0)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h     2010-08-09 
19:18:35 UTC (rev 5280)
@@ -0,0 +1,63 @@
+#ifndef LISA_OVERO_LINK_H
+#define LISA_OVERO_LINK_H
+
+#include <inttypes.h>
+
+#include "fms/fms_autopilot_msg.h"
+
+enum LisaOveroLinkStatus {IDLE, BUSY, DATA_AVAILABLE, LOST, CRC_ERROR};
+
+#define OVERO_LINK_TIMEOUT 10
+
+struct LisaOveroLink {
+  volatile uint8_t status;
+  union {
+    struct OVERO_LINK_MSG_UP msg;
+    uint8_t array[sizeof(union AutopilotMessage)];
+  } up;
+  union {
+    struct OVERO_LINK_MSG_DOWN msg;
+    uint8_t array[sizeof(union AutopilotMessage)];
+  } down;
+  uint8_t timeout;
+};
+
+extern struct LisaOveroLink overo_link;
+
+extern void overo_link_init(void);
+extern void overo_link_periodic(void);
+
+/* implemented by underlying architecture code */
+extern void overo_link_arch_init(void);
+extern void overo_link_arch_prepare_next_transfert(unsigned char init);
+
+extern void (* overo_link_handler)(void);
+
+#define SetOveroLinkHandler(fun) {                     \
+    overo_link_handler = (fun);                                \
+  }
+
+#define DisableOveroLinkHandler() {                    \
+    overo_link_handler = 0;                            \
+  }
+
+
+#define OveroLinkPeriodic(_timeout_handler) {          \
+    if (overo_link.timeout < OVERO_LINK_TIMEOUT)       \
+      overo_link.timeout++;                            \
+    else {                                             \
+      if (overo_link.status != LOST) {                 \
+       overo_link.status = LOST;                       \
+       LED_OFF(OVERO_LINK_LED_OK);                     \
+       LED_ON(OVERO_LINK_LED_KO);                      \
+       _timeout_handler();                             \
+      }                                                        \
+    }                                                  \
+  }
+
+#include "lisa_overo_link_crc_arch.h"
+
+#endif /* LISA_OVERO_LINK_H */
+
+
+




reply via email to

[Prev in Thread] Current Thread [Next in Thread]