fix(relays): let the HTTP board's channel count be chosen
The selector offered 1, 2, 4, 8 and 16 and none of them took: the board stayed at four relays. The count is decided in three places — deviceRelayCount in Go, chanCount in the Station Control panel, relayCountUI in Settings. The new type was added to the first and the dropdown, and to neither of the others, so the panel resized the labels from a helper that had never heard of it and fell straight through to its fixed default. The Go side was right the whole time, which is why the driver would have been built correctly for a count the operator could not set. All three now know the type. A test pins the Go side against every count the dropdown offers, and against the fixed boards, whose hardware decides and which must keep ignoring the field.
This commit is contained in:
@@ -44,10 +44,16 @@ const TYPE_LABEL: Record<string, string> = { webswitch: 'WebSwitch 1216H', kmtro
|
||||
|
||||
// Relay count for a configured device: fixed by type, except Denkovi (4/8) and
|
||||
// the generic USB-serial board, whose channel count the user picks.
|
||||
// chanCount is the relay count for a device. It MUST agree with
|
||||
// deviceRelayCount in app.go: the two decide how many labels and URL rows the
|
||||
// editor shows and how many relays the driver is built for, and a type known to
|
||||
// one and not the other silently pins the count to its fixed default — which is
|
||||
// exactly what happened when the HTTP board was added here and not below.
|
||||
const chanCount = (d: Device): number =>
|
||||
(d.type === 'denkovi' || d.type === 'usbrelay') ? (d.channels && d.channels >= 1 ? d.channels : 8)
|
||||
: d.type === 'dingtian' ? (d.channels && d.channels >= 1 ? d.channels : 2)
|
||||
: (RELAY_COUNT[d.type] ?? 5);
|
||||
: d.type === 'httpgen' ? (d.channels && d.channels >= 1 ? d.channels : 4)
|
||||
: (RELAY_COUNT[d.type] ?? 5);
|
||||
|
||||
function blankDevice(): Device {
|
||||
return { id: '', type: 'webswitch', name: '', host: '', user: '', pass: '', labels: Array(5).fill('') };
|
||||
|
||||
Reference in New Issue
Block a user