paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [4955] adding support for passing telemetry through


From: antoine drouin
Subject: [paparazzi-commits] [4955] adding support for passing telemetry through SPI link
Date: Mon, 14 Jun 2010 17:00:20 +0000

Revision: 4955
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4955
Author:   poine
Date:     2010-06-14 17:00:18 +0000 (Mon, 14 Jun 2010)
Log Message:
-----------
adding support for passing telemetry through SPI link

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

Added: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h                         
(rev 0)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h 2010-06-14 17:00:18 UTC 
(rev 4955)
@@ -0,0 +1,86 @@
+#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};
+
+#define OVERO_LINK_TIMEOUT 10
+
+struct LisaOveroLink {
+  uint8_t status;
+  uint8_t msg_in[sizeof(union OVERO_LINK_MSG_UNION)];
+  uint8_t msg_out[sizeof(union OVERO_LINK_MSG_UNION)];
+  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(void);
+
+
+#define OveroLinkEvent(_data_received_handler) {       \
+    if (overo_link.status == DATA_AVAILABLE) {         \
+      overo_link.timeout = 0;                          \
+      LED_TOGGLE(OVERO_LINK_LED_OK);                   \
+      LED_OFF(OVERO_LINK_LED_KO);                      \
+      _data_received_handler();                                \
+      overo_link_arch_prepare_next_transfert();                \
+      overo_link.status = IDLE;                                \
+    }                                                  \
+  }
+
+#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();                             \
+      }                                                        \
+    }                                                  \
+  }
+
+
+
+/*
+ *
+ * Passing telemetry through Overo Link
+ * 
+ */
+
+#ifdef USE_OVERO_LINK_TELEMETRY
+
+#define OVERO_LINK_TELEMETRY_BUF_SIZE 16
+
+extern uint8_t overo_link_telemetry_insert_idx;
+extern uint8_t overo_link_telemetry_extract_idx;
+extern uint8_t overo_link_telemetry_buf[OVERO_LINK_TELEMETRY_BUF_SIZE];
+
+#define OveroLinkTelemetryCheckFreeSpace(_x) (TRUE)
+#define OveroLinkTelemetryTransmit(_x) {                               \
+    uint16_t temp = (overo_link_telemetry_insert_idx + 1) % 
OVERO_LINK_TELEMETRY_BUF_SIZE; \
+    if (temp != overo_link_telemetry_extract_idx) { /* we have room */ \
+      overo_link_telemetry_buf[overo_link_telemetry_insert_idx] = _x;  \
+      overo_link_telemetry_insert_idx = temp;                          \
+    }                                                                  \
+  }
+#define OveroLinkTelemetrySendMessage() {}
+
+extern uint8_t overo_link_telemetry_get(char* buf, int len);
+
+#endif /* USE_OVERO_LINK_TELEMETRY */
+
+#endif /* LISA_OVERO_LINK_H */
+
+
+




reply via email to

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