From db048f22ad2134ff66a02713ebeb1f42e6441422 Mon Sep 17 00:00:00 2001
From: Hauke Petersen <hauke.petersen@fu-berlin.de>
Date: Thu, 26 Jan 2017 09:56:28 +0100
Subject: [PATCH] drivers/pn532: enabled test app to select SPI mode

---
 tests/driver_pn532/Makefile       | 17 ++++++++++++++++-
 tests/driver_pn532/main.c         |  7 ++++++-
 tests/driver_pn532/pn532_params.h |  7 +++++++
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/tests/driver_pn532/Makefile b/tests/driver_pn532/Makefile
index a3d1995b8b..5411dd627d 100644
--- a/tests/driver_pn532/Makefile
+++ b/tests/driver_pn532/Makefile
@@ -11,11 +11,26 @@ TEST_PN532_I2C ?= I2C_DEV\(0\)
 TEST_PN532_RESET ?= GPIO_PIN\(0,0\)
 TEST_PN532_IRQ ?= GPIO_PIN\(0,1\)
 
+# alternative SPI configuration
+TEST_PN532_SPI ?= SPI_DEV\(0\)
+TEST_PN532_NSS ?= GPIO_PIN\(0,2\)
+
 # export parameters
 CFLAGS += -DTEST_PN532_I2C=$(TEST_PN532_I2C)
 CFLAGS += -DTEST_PN532_RESET=$(TEST_PN532_RESET)
 CFLAGS += -DTEST_PN532_IRQ=$(TEST_PN532_IRQ)
-CFLAGS += -DPN532_SUPPORT_I2C
+CFLAGS += -DTEST_PN532_SPI=$(TEST_PN532_SPI)
+CFLAGS += -DTEST_PN532_NSS=$(TEST_PN532_NSS)
+
+# select if you want to build the SPI or the I2C version of the driver:
+# set PN532_MODE to `i2c` or to `spi`
+PN532_MODE ?= i2c
+ifeq ($(PN532_MODE),i2c)
+  CFLAGS += -DPN532_SUPPORT_I2C
+endif
+ifeq ($(PN532_MODE),spi)
+  CFLAGS += -DPN532_SUPPORT_SPI
+endif
 
 CFLAGS += -I$(CURDIR)
 
diff --git a/tests/driver_pn532/main.c b/tests/driver_pn532/main.c
index 4ca9862a76..3b501dd815 100644
--- a/tests/driver_pn532/main.c
+++ b/tests/driver_pn532/main.c
@@ -44,8 +44,13 @@ int main(void)
     static nfc_iso14443a_t card;
     static pn532_t pn532;
     unsigned len;
+    int ret;
 
-    int ret = pn532_init_i2c(&pn532, &pn532_conf[0]);
+#if defined(PN532_SUPPORT_I2C)
+    ret = pn532_init_i2c(&pn532, &pn532_conf[0]);
+#elif defined(PN532_SUPPORT_SPI)
+    ret = pn532_init_spi(&pn532, &pn532_conf[0]);
+#endif
 
     if (ret != 0) {
         LOG_INFO("init error %d\n", ret);
diff --git a/tests/driver_pn532/pn532_params.h b/tests/driver_pn532/pn532_params.h
index 590a1683c3..dea2cab7de 100644
--- a/tests/driver_pn532/pn532_params.h
+++ b/tests/driver_pn532/pn532_params.h
@@ -25,9 +25,16 @@ extern "C" {
 
 static const pn532_params_t pn532_conf[] = {
     {
+#if defined(PN532_SUPPORT_I2C)
         .i2c = TEST_PN532_I2C,
+#elif defined(PN532_SUPPORT_SPI)
+        .spi = TEST_PN532_SPI,
+#endif
         .reset = TEST_PN532_RESET,
         .irq = TEST_PN532_IRQ,
+#if defined(PN532_SUPPORT_SPI)
+        .nss   = TEST_PN532_NSS
+#endif
     },
 };
 
-- 
GitLab