summaryrefslogtreecommitdiff
path: root/libloragw/src/loragw_spi.ftdi.c
diff options
context:
space:
mode:
Diffstat (limited to 'libloragw/src/loragw_spi.ftdi.c')
-rw-r--r--libloragw/src/loragw_spi.ftdi.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libloragw/src/loragw_spi.ftdi.c b/libloragw/src/loragw_spi.ftdi.c
index 35bc951..23b2a19 100644
--- a/libloragw/src/loragw_spi.ftdi.c
+++ b/libloragw/src/loragw_spi.ftdi.c
@@ -60,6 +60,7 @@ Maintainer: Sylvain Miermont
/* SPI initialization and configuration */
int lgw_spi_open(void **spi_target_ptr) {
struct mpsse_context *mpsse = NULL;
+ int a, b;
/* check input variables */
CHECK_NULL(spi_target_ptr); /* cannot be null, must point on a void pointer (*spi_target_ptr can be null) */
@@ -75,6 +76,15 @@ int lgw_spi_open(void **spi_target_ptr) {
return LGW_SPI_ERROR;
}
+ /* toggle pin ADBUS5 of the FT2232H */
+ /* On the Semtech reference board, it resets the SX1301 */
+ a = PinHigh(mpsse, GPIOL1);
+ b = PinLow(mpsse, GPIOL1);
+ if ((a != MPSSE_OK) || (b != MPSSE_OK)) {
+ DEBUG_MSG("ERROR: IMPOSSIBLE TO TOGGLE GPIOL1/ADBUS5\n");
+ return LGW_SPI_ERROR;
+ }
+
DEBUG_PRINTF("SPI port opened and configured ok\ndesc: %s\nPID: 0x%04X\nVID: 0x%04X\nclock: %d\nLibmpsse version: 0x%02X\n", GetDescription(mpsse), GetPid(mpsse), GetVid(mpsse), GetClock(mpsse), Version());
*spi_target_ptr = (void *)mpsse;
return LGW_SPI_SUCCESS;