@springfield/ham-radio-registry 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"extract-catalog-metadata.d.ts","sourceRoot":"","sources":["../../src/catalog/extract-catalog-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAqB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUxH;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,GAAE,kBAA2B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,CAkBnB"}
1
+ {"version":3,"file":"extract-catalog-metadata.d.ts","sourceRoot":"","sources":["../../src/catalog/extract-catalog-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAqB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAWxH;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,GAAE,kBAA2B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,CAmBnB"}
@@ -4,6 +4,7 @@ const DEFAULT_CAPABILITIES = {
4
4
  memoryWrite: false,
5
5
  channelProgramming: false,
6
6
  settingsProgramming: false,
7
+ liveControl: false,
7
8
  };
8
9
  /**
9
10
  * Extract lightweight catalog metadata from a hydrated radio config.
@@ -14,6 +15,7 @@ export function extractCatalogMetadata(radio, source = 'user', contentHash) {
14
15
  memoryWrite: radio.capabilities?.memoryWrite ?? DEFAULT_CAPABILITIES.memoryWrite,
15
16
  channelProgramming: radio.capabilities?.channelProgramming ?? DEFAULT_CAPABILITIES.channelProgramming,
16
17
  settingsProgramming: radio.capabilities?.settingsProgramming ?? DEFAULT_CAPABILITIES.settingsProgramming,
18
+ liveControl: radio.capabilities?.liveControl ?? DEFAULT_CAPABILITIES.liveControl,
17
19
  };
18
20
  return {
19
21
  modelId: radio.id.model,
@@ -1 +1 @@
1
- {"version":3,"file":"extract-catalog-metadata.js","sourceRoot":"","sources":["../../src/catalog/extract-catalog-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,oBAAoB,GAAsB;IAC9C,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,KAAK;IAClB,kBAAkB,EAAE,KAAK;IACzB,mBAAmB,EAAE,KAAK;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAoB,EACpB,MAAM,GAAuB,MAAM,EACnC,WAAoB;IAEpB,MAAM,YAAY,GAAsB;QACtC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,IAAI,oBAAoB,CAAC,UAAU;QAC7E,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;QAChF,kBAAkB,EAAE,KAAK,CAAC,YAAY,EAAE,kBAAkB,IAAI,oBAAoB,CAAC,kBAAkB;QACrG,mBAAmB,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,IAAI,oBAAoB,CAAC,mBAAmB;KACzG,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK;QACvB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI;QACnB,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY;QACZ,MAAM;QACN,WAAW,EAAE,WAAW,IAAI,eAAe,CAAC,KAAK,CAAC;KACnD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"extract-catalog-metadata.js","sourceRoot":"","sources":["../../src/catalog/extract-catalog-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,oBAAoB,GAAsB;IAC9C,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,KAAK;IAClB,kBAAkB,EAAE,KAAK;IACzB,mBAAmB,EAAE,KAAK;IAC1B,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAoB,EACpB,MAAM,GAAuB,MAAM,EACnC,WAAoB;IAEpB,MAAM,YAAY,GAAsB;QACtC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,IAAI,oBAAoB,CAAC,UAAU;QAC7E,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;QAChF,kBAAkB,EAAE,KAAK,CAAC,YAAY,EAAE,kBAAkB,IAAI,oBAAoB,CAAC,kBAAkB;QACrG,mBAAmB,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,IAAI,oBAAoB,CAAC,mBAAmB;QACxG,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,IAAI,oBAAoB,CAAC,WAAW;KACjF,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK;QACvB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI;QACnB,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY;QACZ,MAAM;QACN,WAAW,EAAE,WAAW,IAAI,eAAe,CAAC,KAAK,CAAC;KACnD,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { RadioConfigMetadata, RadioCapabilities, CodecConfig, RegistryRadio, RadioCatalogEntry, RadioCatalogSource, } from './types/radio-config.js';
1
+ export type { RadioConfigMetadata, RadioCapabilities, RadioCatConfig, CodecConfig, RegistryRadio, RadioCatalogEntry, RadioCatalogSource, } from './types/radio-config.js';
2
2
  export type { RadioModuleCatalog, RadioModuleCatalogEntry, CatalogValidationResult, } from './types/module-catalog.js';
3
3
  export type { ValidationResult } from '@springfield/ham-radio-api';
4
4
  export type { PluginModule, PluginCapabilities, SpringfieldPluginConfig, NpmPluginInfo, PluginManifest, PluginManifestConfiguration, PluginSharedComponents, PluginSecurity, } from './types/plugin-module.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8BA,wCAAwC;AACxC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA+BA,wCAAwC;AACxC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
@@ -18,6 +18,44 @@ export interface RadioCapabilities {
18
18
  memoryWrite: boolean;
19
19
  channelProgramming: boolean;
20
20
  settingsProgramming: boolean;
21
+ /**
22
+ * Live VFO / mode / PTT on the programming PC port.
23
+ * Independent of memory protocol: a radio may clone EEPROM and still speak CAT.
24
+ */
25
+ liveControl: boolean;
26
+ }
27
+ /**
28
+ * How live control talks on the PC port. Present when `capabilities.liveControl` is true.
29
+ *
30
+ * Kenwood command layout, mode names, and power labels belong here so HamBench
31
+ * does not special-case radio models.
32
+ */
33
+ export interface RadioCatConfig {
34
+ /** Command family, for example `kenwood`. */
35
+ protocol: string;
36
+ /** Send a wake CR and discard buffered replies before `ID`. */
37
+ wakeCr?: boolean;
38
+ /** How many VFOs to poll. Default 1. */
39
+ vfoCount?: number;
40
+ /** Frequency commands to try in order, for example `["FQ","FO"]` or `["FO"]`. */
41
+ frequencyCommands?: string[];
42
+ /** Digit width of the frequency field. Kenwood handhelds use 11; TM-D710 `FO` uses 10. */
43
+ frequencyWidth?: number;
44
+ /**
45
+ * When true, the frequency command is a multi-field VFO channel (`FO n` → 13 fields).
46
+ * Mode is the last field. There is no separate `MD` command.
47
+ */
48
+ vfoChannel?: boolean;
49
+ /** Mode names in CAT code order. */
50
+ modes?: string[];
51
+ /** Power names in CAT code order, as shown on the radio. */
52
+ powers?: string[];
53
+ /** Separate mode command, for example `MD`. Omit when `vfoChannel` is true. */
54
+ modeCommand?: string;
55
+ /** Pass the band index to `PC` (`PC n` / `PC n,x`). */
56
+ powerBandIndex?: boolean;
57
+ /** Read `BC` (no args) for CTRL/PTT band. */
58
+ bandControl?: boolean;
21
59
  }
22
60
  /**
23
61
  * Codec configuration
@@ -33,6 +71,7 @@ export interface CodecConfig {
33
71
  export interface RegistryRadio extends Radio {
34
72
  $schema?: string;
35
73
  capabilities: RadioCapabilities;
74
+ cat?: RadioCatConfig;
36
75
  codec?: CodecConfig;
37
76
  metadata: RadioConfigMetadata;
38
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"radio-config.d.ts","sourceRoot":"","sources":["../../src/types/radio-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"radio-config.d.ts","sourceRoot":"","sources":["../../src/types/radio-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,iBAAiB,CAAC;IAChC,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@springfield/ham-radio-registry",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "author": "Bryan Hunt",
5
5
  "license": "MIT",
6
6
  "readme": "README.md",
@@ -6,6 +6,7 @@ const DEFAULT_CAPABILITIES: RadioCapabilities = {
6
6
  memoryWrite: false,
7
7
  channelProgramming: false,
8
8
  settingsProgramming: false,
9
+ liveControl: false,
9
10
  };
10
11
 
11
12
  /**
@@ -21,6 +22,7 @@ export function extractCatalogMetadata(
21
22
  memoryWrite: radio.capabilities?.memoryWrite ?? DEFAULT_CAPABILITIES.memoryWrite,
22
23
  channelProgramming: radio.capabilities?.channelProgramming ?? DEFAULT_CAPABILITIES.channelProgramming,
23
24
  settingsProgramming: radio.capabilities?.settingsProgramming ?? DEFAULT_CAPABILITIES.settingsProgramming,
25
+ liveControl: radio.capabilities?.liveControl ?? DEFAULT_CAPABILITIES.liveControl,
24
26
  };
25
27
 
26
28
  return {
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  export type {
3
3
  RadioConfigMetadata,
4
4
  RadioCapabilities,
5
+ RadioCatConfig,
5
6
  CodecConfig,
6
7
  RegistryRadio,
7
8
  RadioCatalogEntry,
@@ -20,6 +20,45 @@ export interface RadioCapabilities {
20
20
  memoryWrite: boolean;
21
21
  channelProgramming: boolean;
22
22
  settingsProgramming: boolean;
23
+ /**
24
+ * Live VFO / mode / PTT on the programming PC port.
25
+ * Independent of memory protocol: a radio may clone EEPROM and still speak CAT.
26
+ */
27
+ liveControl: boolean;
28
+ }
29
+
30
+ /**
31
+ * How live control talks on the PC port. Present when `capabilities.liveControl` is true.
32
+ *
33
+ * Kenwood command layout, mode names, and power labels belong here so HamBench
34
+ * does not special-case radio models.
35
+ */
36
+ export interface RadioCatConfig {
37
+ /** Command family, for example `kenwood`. */
38
+ protocol: string;
39
+ /** Send a wake CR and discard buffered replies before `ID`. */
40
+ wakeCr?: boolean;
41
+ /** How many VFOs to poll. Default 1. */
42
+ vfoCount?: number;
43
+ /** Frequency commands to try in order, for example `["FQ","FO"]` or `["FO"]`. */
44
+ frequencyCommands?: string[];
45
+ /** Digit width of the frequency field. Kenwood handhelds use 11; TM-D710 `FO` uses 10. */
46
+ frequencyWidth?: number;
47
+ /**
48
+ * When true, the frequency command is a multi-field VFO channel (`FO n` → 13 fields).
49
+ * Mode is the last field. There is no separate `MD` command.
50
+ */
51
+ vfoChannel?: boolean;
52
+ /** Mode names in CAT code order. */
53
+ modes?: string[];
54
+ /** Power names in CAT code order, as shown on the radio. */
55
+ powers?: string[];
56
+ /** Separate mode command, for example `MD`. Omit when `vfoChannel` is true. */
57
+ modeCommand?: string;
58
+ /** Pass the band index to `PC` (`PC n` / `PC n,x`). */
59
+ powerBandIndex?: boolean;
60
+ /** Read `BC` (no args) for CTRL/PTT band. */
61
+ bandControl?: boolean;
23
62
  }
24
63
 
25
64
  /**
@@ -37,6 +76,7 @@ export interface CodecConfig {
37
76
  export interface RegistryRadio extends Radio {
38
77
  $schema?: string;
39
78
  capabilities: RadioCapabilities;
79
+ cat?: RadioCatConfig;
40
80
  codec?: CodecConfig;
41
81
  metadata: RadioConfigMetadata;
42
82
  }