48 #define LOG_GROUP NFC_LOG_GROUP_GENERAL
49 #define LOG_CATEGORY "libnfc.general"
52 string_as_boolean(
const char *s,
bool *value)
56 if ((strcmp(s,
"yes") == 0) ||
57 (strcmp(s,
"true") == 0) ||
58 (strcmp(s,
"1") == 0)) {
63 if ((strcmp(s,
"no") == 0) ||
64 (strcmp(s,
"false") == 0) ||
65 (strcmp(s,
"0") == 0)) {
83 res->allow_autoscan =
true;
84 res->allow_intrusive_scan =
false;
92 for (
int i = 0; i < MAX_USER_DEFINED_DEVICES; i++) {
93 strcpy(res->user_defined_devices[i].name,
"");
94 strcpy(res->user_defined_devices[i].connstring,
"");
95 res->user_defined_devices[i].optional =
false;
97 res->user_defined_device_count = 0;
101 char *envvar = getenv(
"LIBNFC_DEFAULT_DEVICE");
103 strcpy(res->user_defined_devices[0].name,
"user defined default device");
104 strncpy(res->user_defined_devices[0].connstring, envvar, NFC_BUFSIZE_CONNSTRING);
105 res->user_defined_devices[0].connstring[NFC_BUFSIZE_CONNSTRING - 1] =
'\0';
106 res->user_defined_device_count++;
120 envvar = getenv(
"LIBNFC_DEVICE");
122 strcpy(res->user_defined_devices[0].name,
"user defined device");
123 strncpy(res->user_defined_devices[0].connstring, envvar, NFC_BUFSIZE_CONNSTRING);
124 res->user_defined_devices[0].connstring[NFC_BUFSIZE_CONNSTRING - 1] =
'\0';
125 res->user_defined_device_count = 1;
129 envvar = getenv(
"LIBNFC_AUTO_SCAN");
130 string_as_boolean(envvar, &(res->allow_autoscan));
133 envvar = getenv(
"LIBNFC_INTRUSIVE_SCAN");
134 string_as_boolean(envvar, &(res->allow_intrusive_scan));
137 envvar = getenv(
"LIBNFC_LOG_LEVEL");
139 res->log_level = atoi(envvar);
148 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_NONE,
"log_level is set to %"PRIu32, res->log_level);
150 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"log_level is set to %"PRIu32, res->log_level);
152 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"allow_autoscan is set to %s", (res->allow_autoscan) ?
"true" :
"false");
153 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"allow_intrusive_scan is set to %s", (res->allow_intrusive_scan) ?
"true" :
"false");
155 log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_DEBUG,
"%d device(s) defined by user", res->user_defined_device_count);
156 for (uint32_t i = 0; i < res->user_defined_device_count; i++) {
157 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);
170 prepare_initiator_data(
const nfc_modulation nm, uint8_t **ppbtInitiatorData,
size_t *pszInitiatorData)
175 *ppbtInitiatorData = (uint8_t *)
"\x00";
176 *pszInitiatorData = 1;
180 *ppbtInitiatorData = (uint8_t *)
"\x01\x0b\x3f\x80";
181 *pszInitiatorData = 4;
185 *ppbtInitiatorData = (uint8_t *)
"\x00\xff\xff\x01\x00";
186 *pszInitiatorData = 5;
189 case NMT_ISO14443B2CT:
190 case NMT_ISO14443B2SR:
191 case NMT_ISO14443BICLASS:
195 *ppbtInitiatorData = NULL;
196 *pszInitiatorData = 0;
202 connstring_decode(
const nfc_connstring connstring,
const char *driver_name,
const char *bus_name,
char **pparam1,
char **pparam2)
204 if (driver_name == NULL) {
207 if (bus_name == NULL) {
210 int n = strlen(connstring) + 1;
211 char *param0 = malloc(n);
212 if (param0 == NULL) {
216 char *param1 = malloc(n);
217 if (param1 == NULL) {
222 char *param2 = malloc(n);
223 if (param2 == NULL) {
231 snprintf(format,
sizeof(format),
"%%%i[^:]:%%%i[^:]:%%%i[^:]", n - 1, n - 1, n - 1);
232 int res = sscanf(connstring, format, param0, param1, param2);
234 if (res < 1 || ((0 != strcmp(param0, driver_name)) &&
235 (0 != strcmp(param0, bus_name)))) {
239 if (pparam1 != NULL) {
249 if (pparam2 != NULL) {
Internal defines and macros.
char nfc_connstring[NFC_BUFSIZE_CONNSTRING]
NFC library context Struct which contains internal options, references, pointers, etc....
NFC modulation structure.