47 #define LOG_GROUP NFC_LOG_GROUP_GENERAL
48 #define LOG_CATEGORY "libnfc.general"
51 string_as_boolean(
const char *s,
bool *value)
55 if ((strcmp(s,
"yes") == 0) ||
56 (strcmp(s,
"true") == 0) ||
57 (strcmp(s,
"1") == 0)) {
62 if ((strcmp(s,
"no") == 0) ||
63 (strcmp(s,
"false") == 0) ||
64 (strcmp(s,
"0") == 0)) {
82 res->allow_autoscan =
true;
83 res->allow_intrusive_scan =
false;
91 for (
int i = 0; i < MAX_USER_DEFINED_DEVICES; i++) {
92 strcpy(res->user_defined_devices[i].name,
"");
93 strcpy(res->user_defined_devices[i].connstring,
"");
94 res->user_defined_devices[i].optional =
false;
96 res->user_defined_device_count = 0;
100 char *envvar = getenv(
"LIBNFC_DEFAULT_DEVICE");
102 strcpy(res->user_defined_devices[0].name,
"user defined default device");
103 strncpy(res->user_defined_devices[0].connstring, envvar, NFC_BUFSIZE_CONNSTRING);
104 res->user_defined_devices[0].connstring[NFC_BUFSIZE_CONNSTRING - 1] =
'\0';
105 res->user_defined_device_count++;
119 envvar = getenv(
"LIBNFC_DEVICE");
121 strcpy(res->user_defined_devices[0].name,
"user defined device");
122 strncpy(res->user_defined_devices[0].connstring, envvar, NFC_BUFSIZE_CONNSTRING);
123 res->user_defined_devices[0].connstring[NFC_BUFSIZE_CONNSTRING - 1] =
'\0';
124 res->user_defined_device_count = 1;
128 envvar = getenv(
"LIBNFC_AUTO_SCAN");
129 string_as_boolean(envvar, &(res->allow_autoscan));
132 envvar = getenv(
"LIBNFC_INTRUSIVE_SCAN");
133 string_as_boolean(envvar, &(res->allow_intrusive_scan));
136 envvar = getenv(
"LIBNFC_LOG_LEVEL");
138 res->log_level = atoi(envvar);
147 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_NONE,
"log_level is set to %"PRIu32, res->log_level);
149 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"log_level is set to %"PRIu32, res->log_level);
151 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"allow_autoscan is set to %s", (res->allow_autoscan) ?
"true" :
"false");
152 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"allow_intrusive_scan is set to %s", (res->allow_intrusive_scan) ?
"true" :
"false");
154 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"%d device(s) defined by user", res->user_defined_device_count);
155 for (uint32_t i = 0; i < res->user_defined_device_count; i++) {
156 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
" #%d name: \"%s\", connstring: \"%s\"", i, res->user_defined_devices[i].name, res->user_defined_devices[i].connstring);
169 prepare_initiator_data(
const nfc_modulation nm, uint8_t **ppbtInitiatorData,
size_t *pszInitiatorData)
172 case NMT_ISO14443B: {
174 *ppbtInitiatorData = (uint8_t *)
"\x00";
175 *pszInitiatorData = 1;
178 case NMT_ISO14443BI: {
180 *ppbtInitiatorData = (uint8_t *)
"\x01\x0b\x3f\x80";
181 *pszInitiatorData = 4;
184 case NMT_ISO14443B2SR: {
186 *ppbtInitiatorData = (uint8_t *)
"\x0b";
187 *pszInitiatorData = 1;
190 case NMT_ISO14443B2CT: {
192 *ppbtInitiatorData = (uint8_t *)
"\x9F\xFF\xFF";
193 *pszInitiatorData = 3;
198 *ppbtInitiatorData = (uint8_t *)
"\x00\xff\xff\x01\x00";
199 *pszInitiatorData = 5;
205 *ppbtInitiatorData = NULL;
206 *pszInitiatorData = 0;
212 connstring_decode(
const nfc_connstring connstring,
const char *driver_name,
const char *bus_name,
char **pparam1,
char **pparam2)
214 if (driver_name == NULL) {
217 if (bus_name == NULL) {
220 int n = strlen(connstring) + 1;
221 char *param0 = malloc(n);
222 if (param0 == NULL) {
226 char *param1 = malloc(n);
227 if (param1 == NULL) {
232 char *param2 = malloc(n);
233 if (param2 == NULL) {
241 snprintf(format,
sizeof(format),
"%%%i[^:]:%%%i[^:]:%%%i[^:]", n - 1, n - 1, n - 1);
242 int res = sscanf(connstring, format, param0, param1, param2);
244 if (res < 1 || ((0 != strcmp(param0, driver_name)) &&
245 (bus_name != NULL) &&
246 (0 != strcmp(param0, bus_name)))) {
250 if (pparam1 != NULL) {
260 if (pparam2 != NULL) {