paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [4717]


From: antoine drouin
Subject: [paparazzi-commits] [4717]
Date: Wed, 24 Mar 2010 09:59:11 +0000

Revision: 4717
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4717
Author:   poine
Date:     2010-03-24 09:59:11 +0000 (Wed, 24 Mar 2010)
Log Message:
-----------


Added Paths:
-----------
    paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h
    paparazzi3/trunk/sw/airborne/fms/fms_spi_link.c
    paparazzi3/trunk/sw/airborne/fms/fms_spi_link.h

Added: paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h
===================================================================
--- paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h                        
        (rev 0)
+++ paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h        2010-03-24 
09:59:11 UTC (rev 4717)
@@ -0,0 +1,13 @@
+#ifndef FMS_AUTOPILOT_H
+#define FMS_AUTOPILOT_H
+
+#include <inttypes.h>
+
+struct AutopilotMessageFoo {
+  uint32_t foo;
+  uint32_t bar;
+  uint32_t blaa;
+};
+
+
+#endif /* FMS_AUTOPILOT_H */

Added: paparazzi3/trunk/sw/airborne/fms/fms_spi_link.c
===================================================================
--- paparazzi3/trunk/sw/airborne/fms/fms_spi_link.c                             
(rev 0)
+++ paparazzi3/trunk/sw/airborne/fms/fms_spi_link.c     2010-03-24 09:59:11 UTC 
(rev 4717)
@@ -0,0 +1,55 @@
+#include "fms_spi_link.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <sys/ioctl.h>
+#include <linux/types.h>
+#include <linux/spi/spidev.h>
+
+int spi_link_init(void) {
+
+  spi_link.device = "/dev/spidev1.1";
+  spi_link.mode  = 0;
+  spi_link.bits  = 8;
+  spi_link.speed = 500000;
+  spi_link.delay = 1;
+
+  spi_link.fd = open(spi_link.device, O_RDWR);
+  if (spi_link.fd < 0)
+    return -1;
+
+  int ret = 0;
+  ret = ioctl(spi_link.fd, SPI_IOC_WR_MODE, &spi_link.mode);
+  if (ret == -1)
+    return -2;
+
+  ret = ioctl(spi_link.fd, SPI_IOC_WR_BITS_PER_WORD, &spi_link.bits);
+  if (ret == -1)
+    return -3;
+
+  ret = ioctl(spi_link.fd, SPI_IOC_WR_MAX_SPEED_HZ, &spi_link.speed);
+  if (ret == -1)
+    return -4;
+
+  return 0;
+}
+
+int spi_link_send(const void *buf_out, size_t count) {
+ int ret; 
+
+ char buf_in[256]; /* FIXME, check size ? */
+
+ struct spi_ioc_transfer tr = {
+   .tx_buf = (unsigned long)buf_out,
+   .rx_buf = (unsigned long)&buf_in,
+   .len = sizeof(*buf_out),
+   .delay_usecs = spi_link.delay,
+   .speed_hz = spi_link.speed,
+   .bits_per_word = spi_link.bits,
+ };
+ ret = ioctl(spi_link.fd, SPI_IOC_MESSAGE(1), &tr);
+
+ return ret;
+}

Added: paparazzi3/trunk/sw/airborne/fms/fms_spi_link.h
===================================================================
--- paparazzi3/trunk/sw/airborne/fms/fms_spi_link.h                             
(rev 0)
+++ paparazzi3/trunk/sw/airborne/fms/fms_spi_link.h     2010-03-24 09:59:11 UTC 
(rev 4717)
@@ -0,0 +1,21 @@
+#ifndef FMS_SPI_LINK_H
+#define FMS_SPI_LINK_H
+
+#include <inttypes.h>
+#include <unistd.h>
+
+struct SpiLink {
+  int      fd;
+  char*    device;
+  uint8_t  mode;
+  uint8_t  bits;
+  uint32_t speed;
+  uint16_t delay;
+};
+
+struct SpiLink spi_link;
+
+extern int spi_link_init(void);
+extern int spi_link_send(const void *buf, size_t count);
+
+#endif /* FMS_SPI_LINK_H */





reply via email to

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