summaryrefslogtreecommitdiff
path: root/recipes-connectivity/lora/lora-gateway/lora-gateway-add-spi-path-function.patch
blob: fa5e68c55830ab23bfb97fde227dcab3c0e5299b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
diff --git a/libloragw/inc/loragw_spi.h b/libloragw/inc/loragw_spi.h
index fef1f48..74ef251 100644
--- a/libloragw/inc/loragw_spi.h
+++ b/libloragw/inc/loragw_spi.h
@@ -46,6 +46,14 @@ Maintainer: Sylvain Miermont
 /* -------------------------------------------------------------------------- */
 /* --- PUBLIC FUNCTIONS PROTOTYPES ------------------------------------------ */
 
+/* set SPI device */
+/**
+@brief LoRa concentrator SPI path configuration for spidev
+@param path pointer to spidev device
+@return LGW_SPI_SUCCESS if path is valid, LGW_SPI_ERROR if not
+*/
+int lgw_spi_set_path(const char *path);
+
 /**
 @brief LoRa concentrator SPI setup (configure I/O and peripherals)
 @param spi_target_ptr pointer on a generic pointer to SPI target (implementation dependant)
diff --git a/libloragw/src/loragw_spi.native.c b/libloragw/src/loragw_spi.native.c
index c01ed1c..3472133 100644
--- a/libloragw/src/loragw_spi.native.c
+++ b/libloragw/src/loragw_spi.native.c
@@ -56,10 +56,24 @@ Maintainer: Sylvain Miermont
 #define SPI_SPEED       8000000
 #define SPI_DEV_PATH    "/dev/spidev0.0"
 //#define SPI_DEV_PATH    "/dev/spidev32766.0"
+char* spi_dev_path = SPI_DEV_PATH;
 
 /* -------------------------------------------------------------------------- */
 /* --- PUBLIC FUNCTIONS DEFINITION ------------------------------------------ */
 
+/* set SPI device */
+int lgw_spi_set_path(const char *path) {
+    if (path) {
+        spi_dev_path = path;
+        return LGW_SPI_SUCCESS;
+    }
+    else {
+        return LGW_SPI_ERROR;
+    }
+}
+
+
+
 /* SPI initialization and configuration */
 int lgw_spi_open(void **spi_target_ptr) {
     int *spi_device = NULL;
@@ -78,7 +92,7 @@ int lgw_spi_open(void **spi_target_ptr) {
     }
 
     /* open SPI device */
-    dev = open(SPI_DEV_PATH, O_RDWR);
+    dev = open(spi_dev_path, O_RDWR);
     if (dev < 0) {
         DEBUG_PRINTF("ERROR: failed to open SPI device %s\n", SPI_DEV_PATH);
         return LGW_SPI_ERROR;