#lang scribble/manual @(require (for-label racket/base racket/contract (file "../main.rkt") (file "../services/rendering-control.rkt"))) @title{RenderingControl} @defmodule[@racketmodname[racket-upnp/services/rendering-control] #:module-paths ((file "../services/rendering-control.rkt"))] RenderingControl manages rendering properties such as volume and mute. @defproc[(device-rendering-control [device upnp-device?]) (or/c #f upnp-service?)]{Returns the device's RenderingControl service.} @defproc[(rendering-control? [value any/c]) boolean?]{Recognises a RenderingControl service.} @defproc[(rendering-control-volume [control rendering-control?] [#:channel channel string? "Master"] [#:instance-id instance-id exact-nonnegative-integer? 0]) (or/c #f exact-integer?)]{Returns the device-specific UPnP volume value.} @defproc[(rendering-control-set-volume! [control rendering-control?] [volume (integer-in 0 65535)] [#:channel channel string? "Master"] [#:instance-id instance-id exact-nonnegative-integer? 0]) void?]{Sets the device-specific UPnP volume value. The device's SCPD determines the actual supported maximum.} @defproc[(rendering-control-muted? [control rendering-control?] [#:channel channel string? "Master"] [#:instance-id instance-id exact-nonnegative-integer? 0]) boolean?]{Returns the mute state.} @defproc[(rendering-control-set-muted! [control rendering-control?] [muted? boolean?] [#:channel channel string? "Master"] [#:instance-id instance-id exact-nonnegative-integer? 0]) void?]{Sets the mute state.}