From 2a1eb02692def3224bfe4b95617f85a2a85cadde Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 26 Oct 2012 01:27:03 +0200 Subject: tag: Implement a raw NDEF accessor --- doc/tag-api.txt | 4 ++++ src/tag.c | 29 +++++++++++++++++++++++++++++ test/dump-tag | 7 +++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/doc/tag-api.txt b/doc/tag-api.txt index 579e02e..43050f7 100644 --- a/doc/tag-api.txt +++ b/doc/tag-api.txt @@ -36,6 +36,10 @@ Method dict GetProperties() org.neard.Error.InvalidArguments org.neard.Error.InProgress + array{byte} GetRawNDEF() + + Return the tag's NDEF as a raw bytes stream. + Signals PropertyChanged(string name, variant value) diff --git a/src/tag.c b/src/tag.c index 62923b1..f196e77 100644 --- a/src/tag.c +++ b/src/tag.c @@ -445,6 +445,32 @@ fail: return __near_error_failed(msg, ENOMEM); } +static DBusMessage *get_raw_ndef(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + struct near_tag *tag = data; + DBusMessage *reply; + DBusMessageIter iter, array; + + DBG(""); + + reply = dbus_message_new_method_return(msg); + if (reply == NULL) + return NULL; + + dbus_message_iter_init_append(reply, &iter); + + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_TYPE_BYTE_AS_STRING, + &array); + + __near_ndef_append_records(&array, tag->records); + + dbus_message_iter_close_container(&iter, &array); + + return reply; +} + static const GDBusMethodTable tag_methods[] = { { GDBUS_METHOD("GetProperties", NULL, GDBUS_ARGS({"properties", "a{sv}"}), @@ -454,6 +480,9 @@ static const GDBusMethodTable tag_methods[] = { NULL, set_property) }, { GDBUS_ASYNC_METHOD("Write", GDBUS_ARGS({"attributes", "a{sv}"}), NULL, write_ndef) }, + { GDBUS_METHOD("GetRawNDEF", + NULL, GDBUS_ARGS({"raw NDEF", "ay"}), + get_raw_ndef) }, { }, }; diff --git a/test/dump-tag b/test/dump-tag index 01652ea..2092f28 100755 --- a/test/dump-tag +++ b/test/dump-tag @@ -9,10 +9,10 @@ if len(sys.argv) < 2: bus = dbus.SystemBus() -def extract_list(list): +def extract_ndef(list): val = "[" for i in list: - val += " " + str(i) + val += " 0x%x" % i val += " ]" return val @@ -36,9 +36,12 @@ tag = dbus.Interface(bus.get_object("org.neard", sys.argv[1]), "org.neard.Tag") properties = tag.GetProperties() +raw_ndef = tag.GetRawNDEF() print "[ %s ]" % (sys.argv[1]) +print " Raw NDEF = %s" % (extract_ndef(raw_ndef)) + for key in properties.keys(): if key in ["Type"]: val = str(properties[key]) -- cgit v1.2.3