registry: Speaker, StepSpeaker, EqualizerController, PlaybackController, PlaybackStateReporter, InputController, ChannelController

Seven descriptors written from their pages replace seven stubs. All are version 3; 1.5.2 announced Speaker,
StepSpeaker, EqualizerController and PlaybackStateReporter as version 1, and all but ChannelController without
a property. StepSpeaker has no properties object in discovery and PlaybackController one without fields, next
to supportedOperations; a directive for an operation the device did not list is answered with
INVALID_DIRECTIVE. The equalizer declares bands, modes or both under "configurations", a TV its inputs from
the 61 names of the page.

Not described: the lineup of ChannelController, whose discovery example the page folds away. The discovery
examples of InputController spell one key "friendNames"; the fixtures have friendlyNames, as its table does.
62 examples of the six pages are saved as fixtures. 241 tests pass, 215 before.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
David 2026-09-28 20:54:53 +00:00
parent c59cf3ff10
commit d7dfc5b122
113 changed files with 3948 additions and 47 deletions

View file

@ -0,0 +1,24 @@
import { s } from "../schema.js";
import { defineInterface } from "../types.js";
/**
* A speaker that is turned up and down by steps and does not know its volume. It reports nothing: the capability
* has no properties object in discovery.
*/
export const StepSpeaker = defineInterface({
namespace: "Alexa.StepSpeaker",
version: "3",
doc: "https://developer.amazon.com/docs/alexaplus/device-apis/alexa-stepspeaker.html",
kind: "controller",
tier: 2,
instanced: false,
properties: {},
directives: {
AdjustVolume: {
name: "AdjustVolume",
payload: s.object({ volumeSteps: s.number({ min: -100, max: 100, integer: true }) }),
note: "above 0 louder, below 0 quieter",
},
SetMute: { name: "SetMute", payload: s.object({ mute: s.boolean() }) },
},
discovery: () => ({ properties: false }),
});