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 ​

API Docs

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