summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJizhou Liao <Jizhou.Liao@nxp.com>2016-02-29 16:21:45 -0800
committerMartijn Coenen <maco@google.com>2016-04-27 10:17:05 +0200
commit15c09be1b19562d8d84a79bd55dc18513a052598 (patch)
tree6aa5a4e7115f7d099d9898a10dd44da66b08fb01
parent3ec16ee778ece1efed269fbbd5c7b95cab613e5f (diff)
downloadlibnfc-nci-15c09be1b19562d8d84a79bd55dc18513a052598.tar.gz
Configure nfc device node through .conf file
NXP_NFC_DEV_NODE is used to specify nfc device node name in libnfc-nxp.conf. Change-Id: Ibb95248723aa56597cb092da97ac6d4a1b925a6a
-rw-r--r--halimpl/pn54x/hal/phNxpNciHal.c30
-rw-r--r--halimpl/pn54x/libnfc-nxp-PN547C2_example.conf4
-rw-r--r--halimpl/pn54x/libnfc-nxp-PN548AD_example.conf4
-rw-r--r--halimpl/pn54x/libnfc-nxp-PN65T_example.conf4
-rw-r--r--halimpl/pn54x/libnfc-nxp-PN66T_example.conf3
-rw-r--r--halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c35
-rw-r--r--halimpl/pn54x/utils/phNxpConfig.h1
7 files changed, 77 insertions, 4 deletions
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
index 15f74af..944b7b3 100644
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ b/halimpl/pn54x/hal/phNxpNciHal.c
@@ -436,6 +436,8 @@ int phNxpNciHal_open(nfc_stack_callback_t *p_cback, nfc_stack_data_callback_t *p
{
phOsalNfc_Config_t tOsalConfig;
phTmlNfc_Config_t tTmlConfig;
+ char *nfc_dev_node = NULL;
+ const uint16_t max_len = 260;
NFCSTATUS wConfigStatus = NFCSTATUS_SUCCESS;
NFCSTATUS status = NFCSTATUS_SUCCESS;
/*NCI_INIT_CMD*/
@@ -472,10 +474,23 @@ int phNxpNciHal_open(nfc_stack_callback_t *p_cback, nfc_stack_data_callback_t *p
nxpncihal_ctrl.p_nfc_stack_cback = p_cback;
nxpncihal_ctrl.p_nfc_stack_data_cback = p_data_cback;
+ /* Read the nfc device node name */
+ nfc_dev_node = (char*) malloc (max_len * sizeof (char *));
+ if (nfc_dev_node == NULL)
+ {
+ NXPLOG_NCIHAL_E ("malloc of nfc_dev_node failed ");
+ goto clean_and_return;
+ }
+ else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, sizeof (nfc_dev_node)))
+ {
+ NXPLOG_NCIHAL_E ("Invalid nfc device node name keeping the default device node /dev/pn54x");
+ strcpy (nfc_dev_node, "/dev/pn54x");
+ }
+
/* Configure hardware link */
nxpncihal_ctrl.gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
nxpncihal_ctrl.gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C;/* For PN54X */
- tTmlConfig.pDevName = (int8_t *) "/dev/pn54x";
+ tTmlConfig.pDevName = (int8_t *) nfc_dev_node;
tOsalConfig.dwCallbackThreadId
= (uintptr_t) nxpncihal_ctrl.gDrvCfg.nClientId;
tOsalConfig.pLogFile = NULL;
@@ -491,6 +506,14 @@ int phNxpNciHal_open(nfc_stack_callback_t *p_cback, nfc_stack_data_callback_t *p
NXPLOG_NCIHAL_E("phTmlNfc_Init Failed");
goto clean_and_return;
}
+ else
+ {
+ if (nfc_dev_node != NULL)
+ {
+ free (nfc_dev_node);
+ nfc_dev_node = NULL;
+ }
+ }
/* Create the client thread */
pthread_attr_t attr;
@@ -622,6 +645,11 @@ force_download:
clean_and_return:
CONCURRENCY_UNLOCK();
+ if (nfc_dev_node != NULL)
+ {
+ free (nfc_dev_node);
+ nfc_dev_node = NULL;
+ }
/* Report error status */
(*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_OPEN_CPLT_EVT,
HAL_NFC_STATUS_FAILED);
diff --git a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
index b160b11..b383474 100644
--- a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
@@ -18,6 +18,10 @@ NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
###############################################################################
+# Nfc Device Node name
+NXP_NFC_DEV_NODE="/dev/pn54x"
+
+###############################################################################
# Extension for Mifare reader enable
MIFARE_READER_ENABLE=0x01
diff --git a/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf b/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf
index eca60d8..637448d 100644
--- a/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf
@@ -18,6 +18,10 @@ NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
###############################################################################
+# Nfc Device Node name
+NXP_NFC_DEV_NODE="/dev/pn54x"
+
+###############################################################################
# Extension for Mifare reader enable
MIFARE_READER_ENABLE=0x01
diff --git a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
index 21f2c18..a1fec14 100644
--- a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
@@ -18,6 +18,10 @@ NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
###############################################################################
+# Nfc Device Node name
+NXP_NFC_DEV_NODE="/dev/pn54x"
+
+###############################################################################
# Extension for Mifare reader enable
MIFARE_READER_ENABLE=0x01
diff --git a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
index c96fbb3..269c49a 100644
--- a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
+++ b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
@@ -16,6 +16,9 @@ NXPLOG_NCIX_LOGLEVEL=0x03
NXPLOG_NCIR_LOGLEVEL=0x03
NXPLOG_FWDNLD_LOGLEVEL=0x03
NXPLOG_TML_LOGLEVEL=0x03
+###############################################################################
+# Nfc Device Node name
+NXP_NFC_DEV_NODE="/dev/pn54x"
###############################################################################
# Extension for Mifare reader enable
diff --git a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
index c45099f..97a2a15 100644
--- a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
+++ b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
@@ -21,6 +21,7 @@
#include <phNxpLog.h>
#include <pthread.h>
#include <phOsalNfc_Timer.h>
+#include <phNxpConfig.h>
#define HAL_WRITE_RSP_TIMEOUT (2000) /* Timeout value to wait for response from PN54X */
#define HAL_WRITE_MAX_RETRY (10)
@@ -1384,6 +1385,8 @@ NFCSTATUS phNxpNciHal_TestMode_open (void)
phOsalNfc_Config_t tOsalConfig;
phTmlNfc_Config_t tTmlConfig;
+ char *nfc_dev_node = NULL;
+ const uint16_t max_len = 260;
NFCSTATUS status = NFCSTATUS_SUCCESS;
uint16_t read_len = 255;
@@ -1401,9 +1404,22 @@ NFCSTATUS phNxpNciHal_TestMode_open (void)
memset(&tOsalConfig, 0x00, sizeof(tOsalConfig));
memset(&tTmlConfig, 0x00, sizeof(tTmlConfig));
+ /* Read the nfc device node name */
+ nfc_dev_node = (char*) malloc (max_len * sizeof (char*));
+ if (nfc_dev_node == NULL)
+ {
+ NXPLOG_NCIHAL_E ("malloc of nfc_dev_node failed ");
+ goto clean_and_return;
+ }
+ else if (!GetNxpStrValue (NAME_NXP_NFC_DEV_NODE, nfc_dev_node, sizeof (nfc_dev_node)))
+ {
+ NXPLOG_NCIHAL_E ("Invalid nfc device node name keeping the default device node /dev/pn544");
+ strcpy (nfc_dev_node, "/dev/pn544");
+ }
+
gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C;/* For PN54X */
- tTmlConfig.pDevName = (int8_t *) "/dev/pn54x";
+ tTmlConfig.pDevName = (int8_t *) nfc_dev_node;
tOsalConfig.dwCallbackThreadId = (uintptr_t) gDrvCfg.nClientId;
tOsalConfig.pLogFile = NULL;
tTmlConfig.dwGetMsgThreadId = (uintptr_t) gDrvCfg.nClientId;
@@ -1416,6 +1432,14 @@ NFCSTATUS phNxpNciHal_TestMode_open (void)
NXPLOG_NCIHAL_E("phTmlNfc_Init Failed");
goto clean_and_return;
}
+ else
+ {
+ if (nfc_dev_node != NULL)
+ {
+ free (nfc_dev_node);
+ nfc_dev_node = NULL;
+ }
+ }
pthread_attr_t attr;
pthread_attr_init(&attr);
@@ -1443,8 +1467,13 @@ NFCSTATUS phNxpNciHal_TestMode_open (void)
return NFCSTATUS_SUCCESS;
clean_and_return:
- CONCURRENCY_UNLOCK();
- phNxpNciHal_cleanup_monitor();
+ CONCURRENCY_UNLOCK ();
+ if (nfc_dev_node != NULL)
+ {
+ free (nfc_dev_node);
+ nfc_dev_node = NULL;
+ }
+ phNxpNciHal_cleanup_monitor ();
return NFCSTATUS_FAILED;
}
diff --git a/halimpl/pn54x/utils/phNxpConfig.h b/halimpl/pn54x/utils/phNxpConfig.h
index 45c1ecd..f733501 100644
--- a/halimpl/pn54x/utils/phNxpConfig.h
+++ b/halimpl/pn54x/utils/phNxpConfig.h
@@ -64,6 +64,7 @@ int updateNxpConfigTimestamp();
#define NAME_MIFARE_READER_ENABLE "MIFARE_READER_ENABLE"
#define NAME_FW_STORAGE "FW_STORAGE"
+#define NAME_NXP_NFC_DEV_NODE "NXP_NFC_DEV_NODE"
#define NAME_NXP_FW_PROTECION_OVERRIDE "NXP_FW_PROTECION_OVERRIDE"
#define NAME_NXP_SYS_CLK_SRC_SEL "NXP_SYS_CLK_SRC_SEL"
#define NAME_NXP_SYS_CLK_FREQ_SEL "NXP_SYS_CLK_FREQ_SEL"