diff --git a/readme.md b/readme.md index 5e6b9e0..5e0fe3b 100644 --- a/readme.md +++ b/readme.md @@ -100,7 +100,10 @@ const sACNServer = new Sender({ async function main() { await sACNServer.send({ - payload: { // required. object with the percentages for each DMX channel (or set `useRawDmxValues` per packet or in the `defaultPacketOptions` for the Sender to use raw DMX values) + payload: { + // Required. An object with the percentages (0-100) for each DMX channel. + // You can use 0-255 instead of 0-100 by setting `useRawDmxValues: true` + // per packet, or in the `defaultPacketOptions`. 1: 100, 2: 50, 3: 0, @@ -113,7 +116,6 @@ async function main() { } main(); // wrapped in a main() function so that we can `await` the promise - ``` ### Table 3 - Options for Sender @@ -147,6 +149,7 @@ The Architecture for Control Networks (ACN) and derived protocols are created by - RDMNet is defined in [ANSI E1.33](./docs/E1.33-2019.pdf) --- + 1­. Unicast is also supported by default, but this is not how sACN normally works. See [_Table 3_](#table-3---options-for-sender) for how to send data directly to a unicast address. [↩](#footnote-source1) diff --git a/src/packet.ts b/src/packet.ts index 147bc3e..93db168 100644 --- a/src/packet.ts +++ b/src/packet.ts @@ -21,8 +21,8 @@ export interface Options { cid?: Packet['cid']; /** * Whether to use 0-100 or 0-255 scale when creating the packet - * false (default): 0-100 - * true: 0-255 + * - `false` (default): 0-100 + * - `true`: 0-255 */ useRawDmxValues?: Packet['useRawDmxValues']; } diff --git a/test/packet.test.ts b/test/packet.test.ts index 750cefa..5008342 100644 --- a/test/packet.test.ts +++ b/test/packet.test.ts @@ -59,4 +59,29 @@ describe('Simple Packet', () => { // double wrapped so that it converts to buffer and back assert.deepStrictEqual(new Packet(packet.buffer).payload, {}); }); + + it('correctly sets channel values from the [0-100] range', () => { + const packet = new Packet({ + universe: 1, + payload: { 1: 91.76, 2: 100, 4: 100 }, + sequence: 172, + }); + assert.deepStrictEqual( + packet.buffer.slice(126, 130), // first 4 channel values + Buffer.from([0xea, 0xff, 0, 0xff]), + ); + }); + + it('correctly sets channel values from the [0-255] range', () => { + const packet = new Packet({ + universe: 1, + payload: { 1: 234, 2: 255, 4: 255 }, + sequence: 172, + useRawDmxValues: true, + }); + assert.deepStrictEqual( + packet.buffer.slice(126, 130), // first 4 channel values + Buffer.from([0xea, 0xff, 0, 0xff]), + ); + }); });