2 UPnP Devices and Services
| (require racket-upnp) | package: base |
The main module provides general UPnP device discovery and a generic service interface.
2.1 Discovering devices
procedure
(query-upnp-devices [ kinds #:interface interface #:dns? dns?]) → (listof upnp-device?) kinds : (or/c 'all symbol? (listof symbol?)) = 'all interface : (or/c #f string?) = #f dns? : boolean? = #f
'all returns all described devices. A symbol such as 'media-renderer selects one known kind, and a list selects several kinds. When interface is a local IPv4 address, SSDP multicast is sent through that interface. Reverse DNS lookup is only attempted when dns? is true.
2.2 Device values
procedure
(upnp-device-kind device) → symbol?
device : upnp-device?
procedure
(upnp-device-name device) → string?
device : upnp-device?
procedure
(upnp-device-address device) → string?
device : upnp-device?
procedure
(upnp-device-services device) → (listof upnp-service?)
device : upnp-device?
2.3 Generic services
procedure
(upnp-service-kind service) → symbol?
service : upnp-service?
procedure
(upnp-device-service device kind) → (or/c #f upnp-service?)
device : upnp-device? kind : symbol?
procedure
(upnp-service-supports-action? service action) → boolean? service : upnp-service? action : (or/c string? symbol?)
procedure
(upnp-service-call service action [arguments]) → hash?
service : upnp-service? action : (or/c string? symbol?) arguments : list? = '()
A failed SOAP request raises exn:fail:upnp?.
procedure
(exn:fail:upnp-code error) → (or/c #f exact-integer?)
error : exn:fail:upnp?
2.4 Example
(define renderers (query-upnp-devices 'media-renderer #:interface "10.7.3.118" #:dns? #t)) (for ([device (in-list renderers)]) (printf "~a (~a)\n" (upnp-device-name device) (upnp-device-address device)))