diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2013-10-26 13:28:00 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2013-11-10 17:57:09 +0100 |
commit | 28e596251e36cb7f3a4821bb876b34a1c395dd58 (patch) | |
tree | d8530f85d5ac533239b6df2b3b263c0a1c5ff74a | |
parent | 9403a1cfe0adccb1ff8a51873503be12bdfe3c1b (diff) | |
download | neard-28e596251e36cb7f3a4821bb876b34a1c395dd58.tar.gz neard-28e596251e36cb7f3a4821bb876b34a1c395dd58.tar.bz2 neard-28e596251e36cb7f3a4821bb876b34a1c395dd58.zip |
tag: ObjectManager conversion
Set and GetProperties are no longer relevant.
Also, there is no longer any need to update the Tags and Records Adapter
properties.
-rw-r--r-- | Makefile.am | 8 | ||||
-rw-r--r-- | doc/tag-api.txt | 28 | ||||
-rw-r--r-- | src/adapter.c | 113 | ||||
-rw-r--r-- | src/near.h | 4 | ||||
-rw-r--r-- | src/tag.c | 124 | ||||
-rwxr-xr-x | test/dump-tag | 52 | ||||
-rw-r--r-- | test/neardutils.py | 19 | ||||
-rwxr-xr-x | test/test-tag | 124 | ||||
-rwxr-xr-x | test/write-tag | 76 |
9 files changed, 181 insertions, 367 deletions
diff --git a/Makefile.am b/Makefile.am index 739f5f3..03468de 100644 --- a/Makefile.am +++ b/Makefile.am @@ -79,10 +79,10 @@ EXTRA_DIST = src/genbuiltin $(doc_files) dist_man_MANS = doc/neard.8 doc/neard.conf.5 doc/nfctool.1 test_scripts = test/test-adapter test/test-device \ - test/dump-tag test/dump-record \ - test/monitor-near test/write-tag \ - test/bt-handover test/handover-agent \ - test/phdc-simple-manager test/neardutils.py + test/test-tag test/dump-record \ + test/monitor-near test/bt-handover \ + test/handover-agent test/phdc-simple-manager \ + test/neardutils.py if TEST testdir = $(pkglibdir)/test diff --git a/doc/tag-api.txt b/doc/tag-api.txt index d11bd81..ea81af2 100644 --- a/doc/tag-api.txt +++ b/doc/tag-api.txt @@ -5,23 +5,7 @@ Service org.neard Interface org.neard.Tag Object path [variable prefix]/{nfc0}/{tag0, tag1...} -Method dict GetProperties() - - Returns all properties for the device. See the - properties section for available properties. - - Possible Errors: org.neard.Error.DoesNotExist - - void SetProperty(string name, variant value) - - Changes the value of the specified property. Only - properties that are listed a read-write are changeable. - On success this will emit a PropertyChanged signal. - - Possible Errors: org.neard.Error.DoesNotExist - org.neard.Error.InvalidArguments - - void Write(dict attributes) +Method void Write(dict attributes) Creates an NDEF record from the attributes dictionary. @@ -35,12 +19,6 @@ Method dict GetProperties() org.neard.Error.InProgress -Signals PropertyChanged(string name, variant value) - - This signal indicates a changed value of the given - property. - - Properties string Type [readonly] The NFC tag type. @@ -53,10 +31,6 @@ Properties string Type [readonly] Possible values are "Felica", "MIFARE", "Jewel", and "ISO-DEP". - array{object} Records [readonly] - - List of NDEF records object paths. - boolean ReadOnly [readonly] Give the current status of tag's read mode diff --git a/src/adapter.c b/src/adapter.c index ccef7ba..1e1fd20 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -161,14 +161,12 @@ static int adapter_start_poll(struct near_adapter *adapter) DBG("Clearing tags"); g_hash_table_remove_all(adapter->tags); - __near_adapter_tags_changed(adapter->idx); } if (g_hash_table_size(adapter->devices) > 0) { DBG("Clearing devices"); g_hash_table_remove_all(adapter->devices); - __near_adapter_devices_changed(adapter->idx); } DBG("Poll mode 0x%x", adapter->poll_mode); @@ -211,89 +209,6 @@ void __near_adapter_list(DBusMessageIter *iter, void *user_data) g_hash_table_foreach(adapter_hash, append_path, iter); } -static void append_tag_path(gpointer key, gpointer value, gpointer user_data) -{ - struct near_tag *tag = value; - DBusMessageIter *iter = user_data; - const char *tag_path; - - tag_path = __near_tag_get_path(tag); - if (!tag_path) - return; - - DBG("%s", tag_path); - - dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &tag_path); -} - -static void append_tags(DBusMessageIter *iter, void *user_data) -{ - struct near_adapter *adapter = user_data; - - DBG(""); - - g_hash_table_foreach(adapter->tags, append_tag_path, iter); -} - -static void append_device_path(gpointer key, gpointer value, gpointer user_data) -{ - struct near_device *device = value; - DBusMessageIter *iter = user_data; - const char *device_path; - - device_path = __near_device_get_path(device); - if (!device_path) - return; - - DBG("%s", device_path); - - dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, - &device_path); -} - -static void append_devices(DBusMessageIter *iter, void *user_data) -{ - struct near_adapter *adapter = user_data; - - DBG(""); - - g_hash_table_foreach(adapter->devices, append_device_path, iter); -} - -void __near_adapter_tags_changed(uint32_t adapter_idx) -{ - struct near_adapter *adapter; - - DBG(""); - - adapter = g_hash_table_lookup(adapter_hash, - GINT_TO_POINTER(adapter_idx)); - if (!adapter) - return; - - near_dbus_property_changed_array(adapter->path, - NFC_ADAPTER_INTERFACE, "Tags", - DBUS_TYPE_OBJECT_PATH, append_tags, - adapter); -} - -void __near_adapter_devices_changed(uint32_t adapter_idx) -{ - struct near_adapter *adapter; - - DBG(""); - - adapter = g_hash_table_lookup(adapter_hash, - GINT_TO_POINTER(adapter_idx)); - if (!adapter) - return; - - near_dbus_property_changed_array(adapter->path, - NFC_ADAPTER_INTERFACE, "Devices", - DBUS_TYPE_OBJECT_PATH, append_devices, - adapter); -} - static gboolean property_get_mode(const GDBusPropertyTable *property, DBusMessageIter *iter, void *user_data) { @@ -703,8 +618,6 @@ int __near_adapter_set_dep_state(uint32_t idx, bool dep) } else { if (adapter->dep_timer > 0) g_source_remove(adapter->dep_timer); - - __near_adapter_devices_changed(idx); } return 0; @@ -757,7 +670,6 @@ void __near_adapter_remove(struct near_adapter *adapter) static void tag_read_cb(uint32_t adapter_idx, uint32_t target_idx, int status) { struct near_adapter *adapter; - struct near_tag *tag; DBG("status %d", status); @@ -774,12 +686,6 @@ static void tag_read_cb(uint32_t adapter_idx, uint32_t target_idx, int status) return; } - __near_adapter_tags_changed(adapter_idx); - - tag = g_hash_table_lookup(adapter->tags, GINT_TO_POINTER(target_idx)); - if (tag) - __near_tag_found_signal(adapter, tag); - adapter->presence_timeout = g_timeout_add_seconds(CHECK_PRESENCE_PERIOD, check_presence, adapter); @@ -920,7 +826,6 @@ int __near_adapter_add_target(uint32_t idx, uint32_t target_idx, int __near_adapter_remove_target(uint32_t idx, uint32_t target_idx) { struct near_adapter *adapter; - struct near_tag *tag; DBG("idx %d", idx); @@ -931,22 +836,11 @@ int __near_adapter_remove_target(uint32_t idx, uint32_t target_idx) adapter->rf_mode = NEAR_ADAPTER_RF_MODE_IDLE; rf_mode_changed(adapter); - tag = g_hash_table_lookup(adapter->tags, GINT_TO_POINTER(target_idx)); - if (tag) { - __near_tag_lost_signal(adapter, tag); - g_hash_table_remove(adapter->tags, GINT_TO_POINTER(target_idx)); - - __near_adapter_tags_changed(idx); - + if (g_hash_table_remove(adapter->tags, GINT_TO_POINTER(target_idx))) return 0; - } - - if (g_hash_table_remove(adapter->devices, - GINT_TO_POINTER(target_idx))) { - __near_adapter_devices_changed(idx); + if (g_hash_table_remove(adapter->devices, GINT_TO_POINTER(target_idx))) return 0; - } return 0; } @@ -972,8 +866,6 @@ int __near_adapter_add_device(uint32_t idx, uint8_t *nfcid, uint8_t nfcid_len) if (ret < 0) return ret; - __near_adapter_devices_changed(idx); - return 0; } @@ -993,7 +885,6 @@ int __near_adapter_remove_device(uint32_t idx) adapter->rf_mode = NEAR_ADAPTER_RF_MODE_IDLE; rf_mode_changed(adapter); - __near_adapter_devices_changed(idx); adapter->dep_up = false; @@ -90,8 +90,6 @@ int __near_adapter_add_device(uint32_t idx, uint8_t *nfcid, uint8_t nfcid_len); int __near_adapter_remove_device(uint32_t idx); int __near_adapter_set_dep_state(uint32_t idx, bool dep); bool __near_adapter_get_dep_state(uint32_t idx); -void __near_adapter_tags_changed(uint32_t adapter_idx); -void __near_adapter_devices_changed(uint32_t adapter_idx); void __near_adapter_listen(struct near_device_driver *driver); void __near_adapter_list(DBusMessageIter *iter, void *user_data); void __near_adapter_start_check_presence(uint32_t adapter_idx, uint32_t target_idx); @@ -136,8 +134,6 @@ int __near_tag_write(struct near_tag *tag, struct near_ndef_message *ndef, near_tag_io_cb cb); int __near_tag_check_presence(struct near_tag *tag, near_tag_io_cb cb); -void __near_tag_found_signal(struct near_adapter *adapter, struct near_tag *tag); -void __near_tag_lost_signal(struct near_adapter *adapter, struct near_tag *tag); #include <near/device.h> @@ -181,98 +181,47 @@ static const char *protocol_string(struct near_tag *tag) return protocol; } -static void append_properties(DBusMessageIter *iter, struct near_tag *tag) +static gboolean property_get_type(const GDBusPropertyTable *property, + DBusMessageIter *iter, void *user_data) { - DBusMessageIter dict; - dbus_bool_t readonly; - const char *protocol, *type; - - near_dbus_dict_open(iter, &dict); - + struct near_tag *tag = user_data; + const char *type; + type = type_string(tag); - if (type) - near_dbus_dict_append_basic(&dict, "Type", - DBUS_TYPE_STRING, &type); + if (!type) + return FALSE; - protocol = protocol_string(tag); - if (protocol) - near_dbus_dict_append_basic(&dict, "Protocol", - DBUS_TYPE_STRING, &protocol); + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &type); - readonly = tag->readonly; - near_dbus_dict_append_basic(&dict, "ReadOnly", - DBUS_TYPE_BOOLEAN, &readonly); - - near_dbus_dict_append_array(&dict, "Records", - DBUS_TYPE_OBJECT_PATH, append_records, tag); - - near_dbus_dict_close(iter, &dict); + return TRUE; } -static DBusMessage *get_properties(DBusConnection *conn, - DBusMessage *msg, void *data) +static gboolean property_get_protocol(const GDBusPropertyTable *property, + DBusMessageIter *iter, void *user_data) { - struct near_tag *tag = data; - DBusMessage *reply; - DBusMessageIter array; - - DBG("conn %p", conn); - - reply = dbus_message_new_method_return(msg); - if (!reply) - return NULL; - - dbus_message_iter_init_append(reply, &array); - - append_properties(&array, tag); - - return reply; -} + struct near_tag *tag = user_data; + const char *protocol; + + protocol = protocol_string(tag); + if (!protocol) + return FALSE; -static DBusMessage *set_property(DBusConnection *conn, - DBusMessage *msg, void *data) -{ - DBG("conn %p", conn); + dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &protocol); - return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); + return TRUE; } -void __near_tag_found_signal(struct near_adapter *adapter, - struct near_tag *tag) +static gboolean property_get_readonly(const GDBusPropertyTable *property, + DBusMessageIter *iter, void *user_data) { - const char *path; - DBusMessage *signal; - DBusMessageIter iter; - - path = __near_adapter_get_path(adapter); - if (!path) - return; - - signal = dbus_message_new_signal(path, NFC_ADAPTER_INTERFACE, - "TagFound"); - if (!signal) - return; - - dbus_message_iter_init_append(signal, &iter); - dbus_message_iter_append_basic(&iter, DBUS_TYPE_OBJECT_PATH, - &tag->path); - append_properties(&iter, tag); - - dbus_connection_send(connection, signal, NULL); - dbus_message_unref(signal); -} + struct near_tag *tag = user_data; + dbus_bool_t readonly; -void __near_tag_lost_signal(struct near_adapter *adapter, struct near_tag *tag) -{ - const char *path; + readonly = tag->readonly; - path = __near_adapter_get_path(adapter); - if (!path) - return; + dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &readonly); - g_dbus_emit_signal(connection, path, NFC_ADAPTER_INTERFACE, - "TagLost", DBUS_TYPE_OBJECT_PATH, &tag->path, - DBUS_TYPE_INVALID); + return TRUE; } static void tag_read_cb(uint32_t adapter_idx, uint32_t target_idx, int status) @@ -290,8 +239,6 @@ static void tag_read_cb(uint32_t adapter_idx, uint32_t target_idx, int status) } __near_adapter_start_check_presence(adapter_idx, target_idx); - - __near_adapter_tags_changed(adapter_idx); } static void write_cb(uint32_t adapter_idx, uint32_t target_idx, int status) @@ -495,24 +442,19 @@ fail: } static const GDBusMethodTable tag_methods[] = { - { GDBUS_METHOD("GetProperties", - NULL, GDBUS_ARGS({"properties", "a{sv}"}), - get_properties) }, - { GDBUS_METHOD("SetProperty", - GDBUS_ARGS({"name", "s"}, {"value", "v"}), - NULL, set_property) }, { GDBUS_ASYNC_METHOD("Write", GDBUS_ARGS({"attributes", "a{sv}"}), NULL, write_ndef) }, { }, }; -static const GDBusSignalTable tag_signals[] = { - { GDBUS_SIGNAL("PropertyChanged", - GDBUS_ARGS({"name", "s"}, {"value", "v"})) }, +static const GDBusPropertyTable tag_properties[] = { + { "Type", "s", property_get_type }, + { "Protocol", "s", property_get_protocol }, + { "ReadOnly", "b", property_get_readonly }, + { } }; - void __near_tag_append_records(struct near_tag *tag, DBusMessageIter *iter) { GList *list; @@ -691,8 +633,8 @@ struct near_tag *__near_tag_add(uint32_t adapter_idx, uint32_t target_idx, g_dbus_register_interface(connection, tag->path, NFC_TAG_INTERFACE, - tag_methods, tag_signals, - NULL, tag, NULL); + tag_methods, NULL, + tag_properties, tag, NULL); return tag; } diff --git a/test/dump-tag b/test/dump-tag deleted file mode 100755 index 01652ea..0000000 --- a/test/dump-tag +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/python - -import sys -import dbus - -if len(sys.argv) < 2: - print "Usage: %s /org/neard/nfcN/tagT" % (sys.argv[0]) - sys.exit(1) - -bus = dbus.SystemBus() - -def extract_list(list): - val = "[" - for i in list: - val += " " + str(i) - val += " ]" - - return val - -def extract_record(key, list): - for i in list: - record = dbus.Interface(bus.get_object("org.neard", i), - "org.neard.Record") - - properties = record.GetProperties() - print " Record = [ %s ]" % (str(i)) - - for key in properties.keys(): - if key in ["Representation"]: - val = unicode(properties[key]) - else: - val = str(properties[key]) - print " %s = %s" % (key, val) - -tag = dbus.Interface(bus.get_object("org.neard", sys.argv[1]), - "org.neard.Tag") - -properties = tag.GetProperties() - -print "[ %s ]" % (sys.argv[1]) - -for key in properties.keys(): - if key in ["Type"]: - val = str(properties[key]) - print " %s = %s" % (key, val) - elif key in ["Protocol"]: - val = str(properties[key]) - print " %s = %s" % (key, val) - - if key in ["Records"]: - extract_record(key, properties[key]) - diff --git a/test/neardutils.py b/test/neardutils.py index a7b2946..378277a 100644 --- a/test/neardutils.py +++ b/test/neardutils.py @@ -3,6 +3,7 @@ import dbus SERVICE_NAME = "org.neard" ADAPTER_INTERFACE = SERVICE_NAME + ".Adapter" DEVICE_INTERFACE = SERVICE_NAME + ".Device" +TAG_INTERFACE = SERVICE_NAME + ".Tag" RECORD_INTERFACE = SERVICE_NAME + ".Record" def get_managed_objects(): @@ -37,7 +38,21 @@ def find_device_in_objects(objects, pattern=None): if not pattern or path.endswith(pattern): obj = bus.get_object(SERVICE_NAME, path) return dbus.Interface(obj, DEVICE_INTERFACE) - raise Exception("NFC adapter not found") + raise Exception("NFC device not found") + +def find_tag(pattern=None): + return find_tag_in_objects(get_managed_objects(), pattern) + +def find_tag_in_objects(objects, pattern=None): + bus = dbus.SystemBus() + for path, ifaces in objects.iteritems(): + tag = ifaces.get(TAG_INTERFACE) + if tag is None: + continue + if not pattern or path.endswith(pattern): + obj = bus.get_object(SERVICE_NAME, path) + return dbus.Interface(obj, TAG_INTERFACE) + raise Exception("NFC tag not found") def find_record(pattern=None): return find_record_in_objects(get_managed_objects(), pattern) @@ -51,4 +66,4 @@ def find_record_in_objects(objects, pattern=None): if not pattern or path.endswith(pattern): obj = bus.get_object(SERVICE_NAME, path) return dbus.Interface(obj, RECORD_INTERFACE) - raise Exception("NFC adapter not found") + raise Exception("NFC record not found") diff --git a/test/test-tag b/test/test-tag new file mode 100755 index 0000000..23bcc3b --- /dev/null +++ b/test/test-tag @@ -0,0 +1,124 @@ +#!/usr/bin/python + +import sys +import dbus +import neardutils + +bus = dbus.SystemBus() + +def extract_list(list): + val = "[" + for i in list: + val += " " + str(i) + val += " ]" + return val + +def usage(): + print("Usage: %s <command>" % (sys.argv[0]) ) + print("") + print(" list") + print(" dump <tag>") + print(" write <tag> <type> <...>") + print " If type is Text, parameters are <encoding> <language> <representation>" + print " If type is URI, parameters are <uri>" + print " If type is SmartPoster, parameters are <uri>" + print " If type is SMS, parameters are <phone number> <text>" + print " If type is E-Mail, parameters are <e-mail address>" + print " If type is MIME, and WiFi AP is passphrase protected" + print " Type is MIME, parameters are wifi_wsc <ssid> <passphrase>" + print " If type is MIME, and WiFi AP is open network" + print " Type is MIME, parameters are wifi_wsc <ssid>" + print "e.g. < %s /org/neard/nfc0/tag0 Text UTF-8 en-US hello,NFC! >" % (sys.argv[0]) + print "e.g. < %s /org/neard/nfc0/tag0 URI http://www.nfc-forum.com >" % (sys.argv[0]) + print "e.g. < %s /org/neard/nfc0/tag0 SmartPoster http://www.nfc-forum.com >" % (sys.argv[0]) + print "e.g. < %s /org/neard/nfc0/tag0 SMS 0102030405 YourSMSMessage >" % (sys.argv[0]) + print "e.g. < %s /org/neard/nfc0/tag0 E-Mail test@test.com >" % (sys.argv[0]) + print "e.g. < %s /org/neard/nfc0/tag0 MIME wifi_wsc YourAPname passphrase >" % (sys.argv[0]) + print "e.g. < %s /org/neard/nfc0/tag0 MIME wifi_wsc YourAPname >" % (sys.argv[0]) + + + sys.exit(1) + +if (len(sys.argv) < 2): + usage() + +if (sys.argv[1] == "list"): + if (len(sys.argv) < 3): + om = dbus.Interface(bus.get_object("org.neard", "/"), + "org.freedesktop.DBus.ObjectManager") + objects = om.GetManagedObjects() + for path, interfaces in objects.iteritems(): + if "org.neard.Tag" not in interfaces: + continue + + print(" [ %s ]" % (path)) + + sys.exit(0) + +if (sys.argv[1] == "dump"): + if (len(sys.argv) < 3): + usage() + else: + tag_path = sys.argv[2] + + om = dbus.Interface(bus.get_object("org.neard", "/"), + "org.freedesktop.DBus.ObjectManager") + objects = om.GetManagedObjects() + for path, interfaces in objects.iteritems(): + if "org.neard.Record" not in interfaces: + continue + + if path.startswith(tag_path): + print(" [ %s ]" % (path)) + + sys.exit(0) + + +if (sys.argv[1] == "write"): + if (len(sys.argv) < 5): + usage() + + tag = neardutils.find_tag(sys.argv[2]) + + if sys.argv[3] in ["Text"]: + tag.Write(({ "Type" : "Text", + "Encoding" : sys.argv[4], + "Language" : sys.argv[5], + "Representation" : sys.argv[6] })) + + elif sys.argv[3] in ["URI"]: + tag.Write(({ "Type" : "URI", + "URI" : sys.argv[4] })) + + elif sys.argv[3] in ["SmartPoster"]: + tag.Write(({ "Type" : "SmartPoster", + "URI" : sys.argv[4] })) + + elif sys.argv[3] in ["SMS"]: + URI = "sms:" + sys.argv[4] + "?body=" + sys.argv[5] + tag.Write(({ "Type" : "URI", + "URI" : URI })) + + elif sys.argv[3] in ["E-Mail"]: + URI = "mailto:" + sys.argv[4] + tag.Write(({ "Type" : "URI", + "URI" : URI })) + + elif sys.argv[3] in ["MIME"]: + if len(sys.argv) == 6: + if sys.argv[4] in ["wifi_wsc"]: + tag.Write(({ "Type" : "MIME", + "MIME" : "application/vnd.wfa.wsc", + "SSID" : sys.argv[5] })) + + elif len(sys.argv) == 7: + if sys.argv[4] in ["wifi_wsc"]: + tag.Write(({ "Type" : "MIME", + "MIME" : "application/vnd.wfa.wsc", + "SSID" : sys.argv[5], + "Passphrase" : sys.argv[6] })) + else: + usage() + +else: + usage()
\ No newline at end of file diff --git a/test/write-tag b/test/write-tag deleted file mode 100755 index 3635ff7..0000000 --- a/test/write-tag +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/python - -import sys -import dbus - -def help_text(): - print "Usage: %s <tag-path> <record-type> <...>" % (sys.argv[0]) - print " If type is Text, parameters are <encoding> <language> <representation>" - print " If type is URI, parameters are <uri>" - print " If type is SmartPoster, parameters are <uri>" - print " If type is SMS, parameters are <phone number> <text>" - print " If type is E-Mail, parameters are <e-mail address>" - print " If type is MIME, and WiFi AP is passphrase protected" - print " Type is MIME, parameters are wifi_wsc <ssid> <passphrase>" - print " If type is MIME, and WiFi AP is open network" - print " Type is MIME, parameters are wifi_wsc <ssid>" - print "e.g. < %s /org/neard/nfc0/tag0 Text UTF-8 en-US hello,NFC! >" % (sys.argv[0]) - print "e.g. < %s /org/neard/nfc0/tag0 URI http://www.nfc-forum.com >" % (sys.argv[0]) - print "e.g. < %s /org/neard/nfc0/tag0 SmartPoster http://www.nfc-forum.com >" % (sys.argv[0]) - print "e.g. < %s /org/neard/nfc0/tag0 SMS 0102030405 YourSMSMessage >" % (sys.argv[0]) - print "e.g. < %s /org/neard/nfc0/tag0 E-Mail test@test.com >" % (sys.argv[0]) - print "e.g. < %s /org/neard/nfc0/tag0 MIME wifi_wsc YourAPname passphrase >" % (sys.argv[0]) - print "e.g. < %s /org/neard/nfc0/tag0 MIME wifi_wsc YourAPname >" % (sys.argv[0]) - - sys.exit(1) - -if len(sys.argv) < 2: - help_text() - -bus = dbus.SystemBus() - -tag = dbus.Interface(bus.get_object("org.neard", sys.argv[1]), - "org.neard.Tag") - -if sys.argv[2] in ["Text"]: - tag.Write(({ "Type" : "Text", - "Encoding" : sys.argv[3], - "Language" : sys.argv[4], - "Representation" : sys.argv[5] })) - -elif sys.argv[2] in ["URI"]: - tag.Write(({ "Type" : "URI", - "URI" : sys.argv[3] })) - -elif sys.argv[2] in ["SmartPoster"]: - tag.Write(({ "Type" : "SmartPoster", - "URI" : sys.argv[3] })) - -elif sys.argv[2] in ["SMS"]: - URI = "sms:"+sys.argv[3]+"?body="+sys.argv[4] - tag.Write(({ "Type" : "URI", - "URI" : URI })) - -elif sys.argv[2] in ["E-Mail"]: - URI = "mailto:"+sys.argv[3] - tag.Write(({ "Type" : "URI", - "URI" : URI })) - -elif sys.argv[2] in ["MIME"]: - if len(sys.argv) == 5: - if sys.argv[3] in ["wifi_wsc"]: - tag.Write(({ "Type" : "MIME", - "MIME" : "application/vnd.wfa.wsc", - "SSID" : sys.argv[4] })) - - elif len(sys.argv) == 6: - if sys.argv[3] in ["wifi_wsc"]: - tag.Write(({ "Type" : "MIME", - "MIME" : "application/vnd.wfa.wsc", - "SSID" : sys.argv[4], - "Passphrase" : sys.argv[5] })) - else: - help_text() - -else: - help_text() |