- From: Dave Raggett <dsr@w3.org>
- Date: Fri, 10 Jun 2011 06:58:24 +0100
- To: "Tran, Dzung D" <dzung.d.tran@intel.com>
- CC: Dong-Young Lee <dongyoung.lee@lge.com>, "public-device-apis@w3.org" <public-device-apis@w3.org>
Just to note to draw attention to the open source discovery demo I wrote
a few months back and described on the W3C Blog, see:
http://www.w3.org/QA/2011/04/discovery_and_the_web_of_thing.html
It allows you to scan independently for services on mDNS, SSDP (i.e. for
UPnP devices), SLP, Bluetooth and USB.
The demo uses a NPAPI plugin that exposes the following asynchronous
methods:
scan_mdns(obj)
scan_ssdp(obj)
scan_slp(obj)
scan_bluetooth(obj)
scan_usb(obj)
These return immediately after spawning threads that call back to the
following methods respectively on the object passed to the scan methods:
mdns(name, type, interface, address, port)
ssdp(address, port, description)
slp(description)
bluetooth(address, name, devclass)
usb(address, devclass, description)
The various discovery protocols can be invoked concurrently. For SSDP,
the UPnP XML service description is obtained from the device via HTTP
and passed up to JavaScript in the description argument. The demo maps
the Bluetooth device class fields to human friendly names using
javascript. The usb scan does this internally based upon the vendor and
product identifiers using a copy of the list maintained by Stephen
Gowdy, see:
http://www.linux-usb.org/usb-ids.html
The next level of refinement would be a way to constrain discovery to
filter the kinds of service within the scan itself, rather than as part
of the JavaScript code based upon each call back. There is also the
question for controlling how long each scan lasts, e.g. via a timeout
argument or a stopScan method. I would be very interested in discussing
ideas for refining the interface for each of the discovery mechanisms,
as well as suggestions for enabling scripts to drill down on further
details for each service/device, prior to binding to a given service.
The demo plugin is further described at:
http://www.w3.org/2011/04/discovery.html
The service discovery plugin can be loaded as part of a JavaScript
library either within the web page or in a separate security context
such as a Firefox addon or Chrome extension. This latter approach is
valuable when you want to separate trusted script code from the
relatively untrusted script code running within a regular web page.
p.s. the plugin is currently limited to Linux, but I would be interested
in collaborating on extending it to other platforms, as well as any
suggestions on the code itself, which is released under the Apache 2
license. I am next planning on adding a mechanism for loading service
drivers as part of the plugin for demo purposes using shared object
libraries plus JavaScript.
--
Dave Raggett<dsr@w3.org> http://www.w3.org/People/Raggett
Received on Friday, 10 June 2011 05:58:55 UTC