Skip to content

headerset

Provides a shared HeaderSet instance and associated function for other script to use.

Description

The script provides a shared HeaderSet<Packet> instance.

Every packet received is added to the headerset (optionally replacing an older version of the "same" packet).

Once the headerset has reached the state that no previously unknown packets get added for some time, it is considered "settled".

Service

typescript
getSharedHeaderSet(): HeaderSet<Packet>;

preseedHeaderSet(packetIds: string[]): void;

waitForSettledHeaderSet(): Promise<HeaderSet<Packet>>;

getSharedHeaderSet

Get the shared HeaderSet<Packet> instance.

preseedHeaderSet

Adds empty packets for the provided packet IDs to the headerset to speed up settlement.

Example:

typescript
headerSetService.preseedHeaderSet([
  '00_0010_7112_10_0100',
  '00_0010_7113_10_0100',
  '00_0010_7E61_10_0100',
  '00_0015_7112_10_0100',
  '00_6651_7112_10_0200',
  '00_6652_7112_10_0200',
  '00_6653_7112_10_0200',
  '00_6654_7112_10_0200',
  '00_6655_7112_10_0200',
]);

waitForSettledHeaderSet

Wait for the shared headerset to settle and returns a sorted copy of it.

Example

Config:

typescript
export default defineConfig({
  connections: [{
    kind: 'serialPort',
    path: '/dev/tty.usbmodem',
  }],
  scripts: [
    import('../scripts/headerset'),
    defineScript(async ($) => {
      const headersetScript = await import('../scripts/headerset');
      const headersetService = await headersetScript.default.requireService();

      headersetService.preseedHeaderSet([
        '00_6651_1911_10_0200',
        '00_6652_1911_10_0200',
        '00_6653_1911_10_0200',
        '00_6654_1911_10_0200',
        '00_6655_1911_10_0200',
      ]);

      await $.connect();

      const startTimestamp = Date.now();

      const headerSet = await headersetService.waitForSettledHeaderSet();

      console.log(`Headerset took ${Date.now() - startTimestamp} ms to settle to:`);
      console.log(headerSet.getId());
    }),
  ],
});

Running it in the toolbox:

❯ bin/resol-vbus-core-toolbox.ts --config configs/above-config-saved-to-file.ts
Headerset took 24602 ms to settle to:
00_0010_1911_10_0100,00_0010_1911_10_0101,00_0010_1921_10_0100,00_0010_1931_10_0100,00_0010_1941_10_0100,00_0010_1942_10_0100,00_0010_1951_10_0100,00_0015_1911_10_0100,00_6651_1911_10_0200,00_6652_1911_10_0200,00_6653_1911_10_0200,00_6654_1911_10_0200,00_6655_1911_10_0200