Commit 03e5611d authored by Romuald Conty's avatar Romuald Conty

New feature: search in a directory for devices configuration files.

parent 84dc2687
......@@ -11,6 +11,8 @@ Configuration:
- "device.name" and "device.connstring" to define a user device,
this is the recommended method if user have a not-easily detectable
device (ie. serial ones).
Its also possible to define devices using dedicated configuration files and
put them into device search directory (/etc/nfc/devices.d under GNU/Linux).
API Changes:
......
......@@ -147,6 +147,7 @@ AC_CONFIG_FILES([
cmake/modules/Makefile
contrib/Makefile
contrib/devd/Makefile
contrib/libnfc/Makefile
contrib/linux/Makefile
contrib/udev/Makefile
contrib/win32/Makefile
......
SUBDIRS = \
devd \
libnfc \
linux \
udev \
win32
......
EXTRA_DIST = \
pn532_via_uart2usb.conf.sample \
arygon.conf.sample \
pn532_uart_on_rpi.conf.sample
## Typical configuration file for Arygon/IDentive device (with Arygon-MCU on board)
name = "IDentive"
connstring = arygon:/dev/ttyS0
## Typical configuration file for PN532 device on R-Pi connected using UART
## Note: to use UART port on R-Pi, you have to disable linux serial console:
## http://learn.adafruit.com/adafruit-nfc-rfid-on-raspberry-pi/freeing-uart-on-the-pi
name = "PN532 board"
connstring = pn532_uart:/dev/ttyAMA0
## Typical configuration file for PN532 board (ie. microbuilder.eu / Adafruit) device
name = "Adafruit PN532 board"
connstring = pn532_uart:/dev/ttyUSB0
# Allow device auto-detection (default: true)
# Note: if this auto-detection is disable, user have to set manually a device
# Note: if this auto-detection is disabled, user have to set manually a device
# configuration using file or environnement variable
#allow_autoscan = true
# Allow intrusive auto-detection (default: false)
# Warning: intrusive auto-detection can seriously disturb other devices
# This option is not recommended, user should prefers to add manually its device.
#allow_intrusive_autoscan = false
# Set log level (default: error)
......
......@@ -119,36 +119,39 @@ conf_keyvalue_device(void *data, const char* key, const char* value)
conf_keyvalue_context(data, newkey, value);
}
void
conf_load(nfc_context *context)
{
conf_parse_file(LIBNFC_CONFFILE, conf_keyvalue_context, context);
}
/*
int
main(int argc, char *argv[])
static void
conf_devices_load(const char *dirname, nfc_context *context)
{
DIR *d = opendir(LIBNFC_DEVICECONFDIR);
DIR *d = opendir(dirname);
if (!d) {
perror ("opendir");
} else {
struct dirent* de;
while (de = readdir(d)) {
while ((de = readdir(d))) {
if (de->d_name[0]!='.') {
printf ("\t%s\n", de->d_name);
char filename[BUFSIZ] = LIBNFC_DEVICECONFDIR"/";
strcat (filename, de->d_name);
struct stat s;
if (stat(filename, &s) == -1) {
perror("stat");
continue;
}
if(S_ISREG(s.st_mode)) {
nfc_open_from_file (filename);
const size_t filename_len = strlen(de->d_name);
const size_t extension_len = strlen(".conf");
if ((filename_len > extension_len) && (strncmp(".conf", de->d_name + (filename_len-extension_len), extension_len) == 0)) {
char filename[BUFSIZ] = LIBNFC_DEVICECONFDIR"/";
strcat (filename, de->d_name);
struct stat s;
if (stat(filename, &s) == -1) {
perror("stat");
continue;
}
if(S_ISREG(s.st_mode)) {
conf_parse_file (filename, conf_keyvalue_device, context);
}
}
}
}
}
}
*/
void
conf_load(nfc_context *context)
{
conf_parse_file(LIBNFC_CONFFILE, conf_keyvalue_context, context);
conf_devices_load(LIBNFC_DEVICECONFDIR, context);
}
......@@ -19,9 +19,9 @@
*/
/**
* @file nfc-device.c
* @brief Provide internal function to manipulate nfc_device type
*/
* @file nfc-device.c
* @brief Provide internal function to manipulate nfc_device type
*/
#include <stdlib.h>
#include <string.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment