Appearance
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