Browse Source

Other version

Signed-off-by: ewft <bnj@ewft.org>
ewft 7 months ago
parent
commit
82eaa662a6
1 changed files with 88 additions and 0 deletions
  1. 88 0
      src/timelaps.c

+ 88 - 0
src/timelaps.c

@@ -0,0 +1,88 @@
+/* test-spi-rpi-01.c - Programme pour Raspberry Pi */
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <linux/types.h>
+#include <linux/spi/spidev.h>
+
+#include <sys/ioctl.h>
+
+int focus( int fd_spi){
+	unsigned char bytes[2]={0x00,0xE6};
+printf("FOCUS !\n");
+	return write(fd_spi,bytes,2);
+}
+
+int shot ( int fd_spi ) {
+
+ unsigned char bytes[2]={0x00,0xF5};
+	printf("SHOT !\n"); 
+       return write(fd_spi,bytes,2);
+}
+
+int stdby ( int fd_spi ) {
+
+ unsigned char bytes[2]={0x00,0x2F};
+printf("STDBY !\n ");       
+ return write(fd_spi,bytes,2);
+}
+
+
+int main(int argc, char *argv[])
+{
+        int fd_spi;
+        char ligne[80];
+        int value;
+        unsigned char byte;
+
+        unsigned int speed = 250000;
+
+        if (argc != 3) {
+                fprintf(stderr, "usage: %s <spi-port> <spi-speed>n", argv[0]);
+                exit(EXIT_FAILURE);
+        }
+        fd_spi = open(argv[1], O_RDWR);
+        if (fd_spi < 0) {
+                perror(argv[1]);
+                exit(EXIT_FAILURE);
+        }
+
+        if (sscanf(argv[2], "%d", & speed) != 1) {
+                fprintf(stderr, "Wrong value for speed: %sn", argv[2]);
+                exit(EXIT_FAILURE);
+        }
+        if (ioctl(fd_spi, SPI_IOC_WR_MAX_SPEED_HZ, & speed) != 0) {
+                perror("ioctl");
+                exit(EXIT_FAILURE);
+        }
+
+	while ( 1 )
+	{
+		stdby(fd_spi);
+	 	sleep(20);	
+		focus(fd_spi);
+		usleep(200000);
+		shot(fd_spi);
+		usleep(100000);
+	}
+
+
+
+        while (fgets(ligne, 80, stdin) != NULL) {
+                if (sscanf(ligne, "%d", & value) != 1){
+                        fprintf(stderr, "integer value expectedn");
+                        continue;
+                }
+                byte = (unsigned char) (value & 0xFF);
+                if (write(fd_spi, & byte, 1) != 1) {
+                        perror("write");
+                        exit(EXIT_FAILURE);
+                }
+        }
+        close(fd_spi);
+        return EXIT_SUCCESS;
+}
+
+