diff options
author | David Zeuthen <davidz@redhat.com> | 2009-06-01 15:50:15 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2009-06-01 15:50:15 -0400 |
commit | 28f6667f07ce429cc7b5e9796d5490ec9d4748e2 (patch) | |
tree | d56daed55289cfdd965b9ca5e3ecb81e14ba6a35 /gudev/example.js | |
parent | 10cb151a809c82d4a1b3249229eedb641ba856a7 (diff) |
Add a GObject-based wrapper library for libudev
This makes it much simpler to use libudev from programs already using
GObject. It also makes it possible to easily use libudev from other
programming languages, such as Javascript, because of GObject
introspection support.
Diffstat (limited to 'gudev/example.js')
-rwxr-xr-x | gudev/example.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/gudev/example.js b/gudev/example.js new file mode 100755 index 0000000..93aa118 --- /dev/null +++ b/gudev/example.js @@ -0,0 +1,67 @@ + +// right now this only works with seed(1) + +const GLib = imports.gi.GLib; +const GUdev = imports.gi.GUdev; + +function print_device (device) { + print (" subsystem: " + device.get_subsystem ()); + print (" devtype: " + device.get_devtype ()); + print (" name: " + device.get_name ()); + print (" number: " + device.get_number ()); + print (" sysfs_path: " + device.get_sysfs_path ()); + print (" driver: " + device.get_driver ()); + print (" action: " + device.get_action ()); + print (" seqnum: " + device.get_seqnum ()); + print (" device type: " + device.get_device_type ()); + print (" device number: " + device.get_device_number ()); + print (" device file: " + device.get_device_file ()); + print (" device file symlinks: " + device.get_device_file_symlinks ()); + print (" foo: " + device.get_sysfs_attr_as_strv ("stat")); + var keys = device.get_property_keys (); + for (var n = 0; n < keys.length; n++) { + print (" " + keys[n] + "=" + device.get_property (keys[n])); + } +} + +function on_uevent (client, action, device) { + print ("action " + action + " on device " + device.get_sysfs_path()); + print_device (device); + print (""); +} + +var client = new GUdev.Client ({subsystems: ["block", "usb/usb_interface"]}); +client.signal.connect ("uevent", on_uevent); + +var block_devices = client.query_by_subsystem ("block"); +for (var n = 0; n < block_devices.length; n++) { + print ("block device: " + block_devices[n].get_device_file ()); +} + +var d; + +d = client.query_by_device_number (GUdev.DeviceType.BLOCK, 0x0810); +print ("query_by_device_number 0x810 -> " + d.get_device_file ()); +dd = d.get_parent_with_subsystem ("usb", null); +print_device (dd); +print ("--------------------------------------------------------------------------"); +while (d != null) { + print_device (d); + print (""); + d = d.get_parent (); +} + +d = client.query_by_sysfs_path ("/sys/block/sda/sda1"); +print ("query_by_sysfs_path (\"/sys/block/sda1\") -> " + d.get_device_file ()); + +d = client.query_by_subsystem_and_name ("block", "sda2"); +print ("query_by_subsystem_and_name (\"block\", \"sda2\") -> " + d.get_device_file ()); + +d = client.query_by_device_file ("/dev/sda"); +print ("query_by_device_file (\"/dev/sda\") -> " + d.get_device_file ()); + +d = client.query_by_device_file ("/dev/block/8:0"); +print ("query_by_device_file (\"/dev/block/8:0\") -> " + d.get_device_file ()); + +var mainloop = GLib.main_loop_new (); +GLib.main_loop_run (mainloop); |