From 025f9e643da7272123fb94fdf37d4284a356c4fe Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 16 Dec 2018 21:55:05 -0500 Subject: Switch back to sending all tag contents to clients Switch back to sending all tag records to subscribed clients on presence detection. While sending the first text record as the "uid" value the identity agent expects works, in the grand scheme of things, it is better to keep the NFC service generic and add the required parsing to the identity agent instead. Change-Id: I157dde987fb499772bb792b4c723e85734e2c9e4 Signed-off-by: Scott Murray --- README.md | 5 +++-- binding/afm-nfc-binding.c | 30 ++++++++++++------------------ 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index a9eec9b..506d984 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,8 @@ ## Overview NFC service uses neard package to detect the presence of NFC tags and signal clients via an event. -The NDEF data shall include a text record ('uid') to keep compatibility with the existing agl-service-identity-agent. +The presence event shall include a dictionary named "record" that contains entries with a "Type" +field and a value field named after the "Type" value. ## Verbs @@ -18,4 +19,4 @@ The NDEF data shall include a text record ('uid') to keep compatibility with the | Name | Description | JSON Response | |--------------------|:-------------------------------------|:-----------------------------------------------------------------------| | presence | event that reports NFC tag presence | *Response:* {"status": "detected", | -| | | "uid": "042eb3628e4981"}, | +| | | "record": { "Type": "URI", "URI": "http://www.nfc-forum.com" } } | diff --git a/binding/afm-nfc-binding.c b/binding/afm-nfc-binding.c index d605632..ef87a7d 100644 --- a/binding/afm-nfc-binding.c +++ b/binding/afm-nfc-binding.c @@ -103,34 +103,28 @@ static void record_found(const char *tag_name, void *ptr) gchar *str = g_variant_print(v, 0); str[strlen(str) - 1] = '\0'; - AFB_API_DEBUG(afbBindingV3root, - "%s tag, record %s= %s", tag_name, s, str); + AFB_API_WARNING(afbBindingV3root, + "%s tag, record %s= %s", tag_name, s, str); json_object_object_add(jdict, s, json_object_new_string(str + 1)); g_free(str); } + json_object_object_add(jresp, "record", jdict); + neardal_free_record(record); - /* - * get record dictionary and look for 'Representation' field which should - * contain the uid value the identity agent needs. - * - */ - if (json_object_object_get_ex(jdict, "Representation", &jtemp)) { - const char *uid = json_object_get_string(jtemp); + AFB_API_WARNING(afbBindingV3root, "sending: %s", + json_object_to_json_string_ext(jresp, JSON_C_TO_STRING_SPACED | JSON_C_TO_STRING_PRETTY)); - pthread_mutex_lock(&mutex); - data->jresp = jresp; - json_object_object_add(jresp, "uid", json_object_new_string(uid)); - pthread_mutex_unlock(&mutex); + pthread_mutex_lock(&mutex); + data->jresp = jresp; + json_object_get(jresp); + pthread_mutex_unlock(&mutex); - afb_event_push(presence_event, jresp); - AFB_API_DEBUG(afbBindingV3root, - "sent presence event, record content %s, tag %s", - uid, tag_name); - } + afb_event_push(presence_event, jresp); + AFB_API_WARNING(afbBindingV3root, "sent presence event"); return; } -- cgit 1.2.3-korg