@ya-modbus/cli 0.6.0 → 0.7.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.
Files changed (207) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/bin/ya-modbus.d.ts.map +1 -0
  3. package/dist/cjs/bin/ya-modbus.js +12 -0
  4. package/dist/cjs/bin/ya-modbus.js.map +1 -0
  5. package/dist/cjs/package.json +1 -0
  6. package/dist/cjs/src/commands/discover.d.ts.map +1 -0
  7. package/dist/cjs/src/commands/discover.js +196 -0
  8. package/dist/cjs/src/commands/discover.js.map +1 -0
  9. package/dist/cjs/src/commands/list-devices.d.ts.map +1 -0
  10. package/dist/cjs/src/commands/list-devices.js +79 -0
  11. package/dist/cjs/src/commands/list-devices.js.map +1 -0
  12. package/dist/cjs/src/commands/read.d.ts.map +1 -0
  13. package/dist/cjs/src/commands/read.js +79 -0
  14. package/dist/cjs/src/commands/read.js.map +1 -0
  15. package/dist/cjs/src/commands/show-defaults.d.ts.map +1 -0
  16. package/dist/cjs/src/commands/show-defaults.js +51 -0
  17. package/dist/cjs/src/commands/show-defaults.js.map +1 -0
  18. package/dist/cjs/src/commands/write.d.ts.map +1 -0
  19. package/dist/cjs/src/commands/write.js +65 -0
  20. package/dist/cjs/src/commands/write.js.map +1 -0
  21. package/dist/cjs/src/discovery/constants.d.ts.map +1 -0
  22. package/dist/cjs/src/discovery/constants.js +48 -0
  23. package/dist/cjs/src/discovery/constants.js.map +1 -0
  24. package/dist/cjs/src/discovery/device-identifier.d.ts.map +1 -0
  25. package/dist/cjs/src/discovery/device-identifier.js +196 -0
  26. package/dist/cjs/src/discovery/device-identifier.js.map +1 -0
  27. package/dist/cjs/src/discovery/parameter-generator-utils.d.ts.map +1 -0
  28. package/dist/cjs/src/discovery/parameter-generator-utils.js +63 -0
  29. package/dist/cjs/src/discovery/parameter-generator-utils.js.map +1 -0
  30. package/dist/cjs/src/discovery/parameter-generator.d.ts.map +1 -0
  31. package/dist/cjs/src/discovery/parameter-generator.js +188 -0
  32. package/dist/cjs/src/discovery/parameter-generator.js.map +1 -0
  33. package/dist/cjs/src/discovery/progress.d.ts.map +1 -0
  34. package/dist/cjs/src/discovery/progress.js +59 -0
  35. package/dist/cjs/src/discovery/progress.js.map +1 -0
  36. package/dist/cjs/src/discovery/scanner.d.ts.map +1 -0
  37. package/dist/cjs/src/discovery/scanner.js +147 -0
  38. package/dist/cjs/src/discovery/scanner.js.map +1 -0
  39. package/dist/cjs/src/formatters/discovery-results.d.ts.map +1 -0
  40. package/dist/cjs/src/formatters/discovery-results.js +62 -0
  41. package/dist/cjs/src/formatters/discovery-results.js.map +1 -0
  42. package/dist/cjs/src/formatters/json.d.ts.map +1 -0
  43. package/dist/cjs/src/formatters/json.js +36 -0
  44. package/dist/cjs/src/formatters/json.js.map +1 -0
  45. package/dist/cjs/src/formatters/performance.d.ts.map +1 -0
  46. package/dist/cjs/src/formatters/performance.js +28 -0
  47. package/dist/cjs/src/formatters/performance.js.map +1 -0
  48. package/dist/cjs/src/formatters/table.d.ts.map +1 -0
  49. package/dist/cjs/src/formatters/table.js +95 -0
  50. package/dist/cjs/src/formatters/table.js.map +1 -0
  51. package/dist/cjs/src/index.d.ts.map +1 -0
  52. package/dist/cjs/src/index.js +157 -0
  53. package/dist/cjs/src/index.js.map +1 -0
  54. package/dist/cjs/src/utils/commands.d.ts.map +1 -0
  55. package/dist/cjs/src/utils/commands.js +421 -0
  56. package/dist/cjs/src/utils/commands.js.map +1 -0
  57. package/dist/cjs/src/utils/object-utils.d.ts.map +1 -0
  58. package/dist/cjs/src/utils/object-utils.js +31 -0
  59. package/dist/cjs/src/utils/object-utils.js.map +1 -0
  60. package/dist/cjs/src/utils/validation.d.ts.map +1 -0
  61. package/dist/cjs/src/utils/validation.js +165 -0
  62. package/dist/cjs/src/utils/validation.js.map +1 -0
  63. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  64. package/dist/esm/bin/ya-modbus.d.ts +9 -0
  65. package/dist/esm/bin/ya-modbus.d.ts.map +1 -0
  66. package/dist/esm/bin/ya-modbus.js.map +1 -0
  67. package/dist/esm/package.json +1 -0
  68. package/dist/esm/src/commands/discover.d.ts +25 -0
  69. package/dist/esm/src/commands/discover.d.ts.map +1 -0
  70. package/dist/esm/src/commands/discover.js.map +1 -0
  71. package/dist/esm/src/commands/list-devices.d.ts +21 -0
  72. package/dist/esm/src/commands/list-devices.d.ts.map +1 -0
  73. package/dist/esm/src/commands/list-devices.js.map +1 -0
  74. package/dist/esm/src/commands/read.d.ts +25 -0
  75. package/dist/esm/src/commands/read.d.ts.map +1 -0
  76. package/dist/esm/src/commands/read.js.map +1 -0
  77. package/dist/esm/src/commands/show-defaults.d.ts +21 -0
  78. package/dist/esm/src/commands/show-defaults.d.ts.map +1 -0
  79. package/dist/esm/src/commands/show-defaults.js.map +1 -0
  80. package/dist/esm/src/commands/write.d.ts +26 -0
  81. package/dist/esm/src/commands/write.d.ts.map +1 -0
  82. package/dist/esm/src/commands/write.js.map +1 -0
  83. package/dist/esm/src/discovery/constants.d.ts +37 -0
  84. package/dist/esm/src/discovery/constants.d.ts.map +1 -0
  85. package/dist/esm/src/discovery/constants.js.map +1 -0
  86. package/dist/esm/src/discovery/device-identifier.d.ts +52 -0
  87. package/dist/esm/src/discovery/device-identifier.d.ts.map +1 -0
  88. package/dist/esm/src/discovery/device-identifier.js.map +1 -0
  89. package/dist/esm/src/discovery/parameter-generator-utils.d.ts +29 -0
  90. package/dist/esm/src/discovery/parameter-generator-utils.d.ts.map +1 -0
  91. package/dist/esm/src/discovery/parameter-generator-utils.js.map +1 -0
  92. package/dist/esm/src/discovery/parameter-generator.d.ts +97 -0
  93. package/dist/esm/src/discovery/parameter-generator.d.ts.map +1 -0
  94. package/dist/esm/src/discovery/parameter-generator.js.map +1 -0
  95. package/dist/esm/src/discovery/progress.d.ts +24 -0
  96. package/dist/esm/src/discovery/progress.d.ts.map +1 -0
  97. package/dist/{src → esm/src}/discovery/progress.js +2 -4
  98. package/dist/esm/src/discovery/progress.js.map +1 -0
  99. package/dist/esm/src/discovery/scanner.d.ts +46 -0
  100. package/dist/esm/src/discovery/scanner.d.ts.map +1 -0
  101. package/dist/esm/src/discovery/scanner.js.map +1 -0
  102. package/dist/esm/src/formatters/discovery-results.d.ts +10 -0
  103. package/dist/esm/src/formatters/discovery-results.d.ts.map +1 -0
  104. package/dist/esm/src/formatters/discovery-results.js.map +1 -0
  105. package/dist/esm/src/formatters/json.d.ts +30 -0
  106. package/dist/esm/src/formatters/json.d.ts.map +1 -0
  107. package/dist/esm/src/formatters/json.js.map +1 -0
  108. package/dist/esm/src/formatters/performance.d.ts +19 -0
  109. package/dist/esm/src/formatters/performance.d.ts.map +1 -0
  110. package/dist/esm/src/formatters/performance.js.map +1 -0
  111. package/dist/esm/src/formatters/table.d.ts +10 -0
  112. package/dist/esm/src/formatters/table.d.ts.map +1 -0
  113. package/dist/esm/src/formatters/table.js.map +1 -0
  114. package/dist/esm/src/index.d.ts +5 -0
  115. package/dist/esm/src/index.d.ts.map +1 -0
  116. package/dist/esm/src/index.js.map +1 -0
  117. package/dist/esm/src/utils/commands.d.ts +191 -0
  118. package/dist/esm/src/utils/commands.d.ts.map +1 -0
  119. package/dist/esm/src/utils/commands.js.map +1 -0
  120. package/dist/esm/src/utils/object-utils.d.ts +20 -0
  121. package/dist/esm/src/utils/object-utils.d.ts.map +1 -0
  122. package/dist/esm/src/utils/object-utils.js.map +1 -0
  123. package/dist/esm/src/utils/validation.d.ts +70 -0
  124. package/dist/esm/src/utils/validation.d.ts.map +1 -0
  125. package/dist/{src → esm/src}/utils/validation.js +0 -3
  126. package/dist/esm/src/utils/validation.js.map +1 -0
  127. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  128. package/package.json +26 -9
  129. package/dist/bin/ya-modbus.d.ts.map +0 -1
  130. package/dist/bin/ya-modbus.js.map +0 -1
  131. package/dist/src/commands/discover.d.ts.map +0 -1
  132. package/dist/src/commands/discover.js.map +0 -1
  133. package/dist/src/commands/list-devices.d.ts.map +0 -1
  134. package/dist/src/commands/list-devices.js.map +0 -1
  135. package/dist/src/commands/read.d.ts.map +0 -1
  136. package/dist/src/commands/read.js.map +0 -1
  137. package/dist/src/commands/show-defaults.d.ts.map +0 -1
  138. package/dist/src/commands/show-defaults.js.map +0 -1
  139. package/dist/src/commands/write.d.ts.map +0 -1
  140. package/dist/src/commands/write.js.map +0 -1
  141. package/dist/src/discovery/constants.d.ts.map +0 -1
  142. package/dist/src/discovery/constants.js.map +0 -1
  143. package/dist/src/discovery/device-identifier.d.ts.map +0 -1
  144. package/dist/src/discovery/device-identifier.js.map +0 -1
  145. package/dist/src/discovery/parameter-generator-utils.d.ts.map +0 -1
  146. package/dist/src/discovery/parameter-generator-utils.js.map +0 -1
  147. package/dist/src/discovery/parameter-generator.d.ts.map +0 -1
  148. package/dist/src/discovery/parameter-generator.js.map +0 -1
  149. package/dist/src/discovery/progress.d.ts.map +0 -1
  150. package/dist/src/discovery/progress.js.map +0 -1
  151. package/dist/src/discovery/scanner.d.ts.map +0 -1
  152. package/dist/src/discovery/scanner.js.map +0 -1
  153. package/dist/src/formatters/discovery-results.d.ts.map +0 -1
  154. package/dist/src/formatters/discovery-results.js.map +0 -1
  155. package/dist/src/formatters/json.d.ts.map +0 -1
  156. package/dist/src/formatters/json.js.map +0 -1
  157. package/dist/src/formatters/performance.d.ts.map +0 -1
  158. package/dist/src/formatters/performance.js.map +0 -1
  159. package/dist/src/formatters/table.d.ts.map +0 -1
  160. package/dist/src/formatters/table.js.map +0 -1
  161. package/dist/src/index.d.ts.map +0 -1
  162. package/dist/src/index.js.map +0 -1
  163. package/dist/src/utils/commands.d.ts.map +0 -1
  164. package/dist/src/utils/commands.js.map +0 -1
  165. package/dist/src/utils/object-utils.d.ts.map +0 -1
  166. package/dist/src/utils/object-utils.js.map +0 -1
  167. package/dist/src/utils/validation.d.ts.map +0 -1
  168. package/dist/src/utils/validation.js.map +0 -1
  169. package/dist/tsconfig.tsbuildinfo +0 -1
  170. /package/dist/{bin → cjs/bin}/ya-modbus.d.ts +0 -0
  171. /package/dist/{src → cjs/src}/commands/discover.d.ts +0 -0
  172. /package/dist/{src → cjs/src}/commands/list-devices.d.ts +0 -0
  173. /package/dist/{src → cjs/src}/commands/read.d.ts +0 -0
  174. /package/dist/{src → cjs/src}/commands/show-defaults.d.ts +0 -0
  175. /package/dist/{src → cjs/src}/commands/write.d.ts +0 -0
  176. /package/dist/{src → cjs/src}/discovery/constants.d.ts +0 -0
  177. /package/dist/{src → cjs/src}/discovery/device-identifier.d.ts +0 -0
  178. /package/dist/{src → cjs/src}/discovery/parameter-generator-utils.d.ts +0 -0
  179. /package/dist/{src → cjs/src}/discovery/parameter-generator.d.ts +0 -0
  180. /package/dist/{src → cjs/src}/discovery/progress.d.ts +0 -0
  181. /package/dist/{src → cjs/src}/discovery/scanner.d.ts +0 -0
  182. /package/dist/{src → cjs/src}/formatters/discovery-results.d.ts +0 -0
  183. /package/dist/{src → cjs/src}/formatters/json.d.ts +0 -0
  184. /package/dist/{src → cjs/src}/formatters/performance.d.ts +0 -0
  185. /package/dist/{src → cjs/src}/formatters/table.d.ts +0 -0
  186. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  187. /package/dist/{src → cjs/src}/utils/commands.d.ts +0 -0
  188. /package/dist/{src → cjs/src}/utils/object-utils.d.ts +0 -0
  189. /package/dist/{src → cjs/src}/utils/validation.d.ts +0 -0
  190. /package/dist/{bin → esm/bin}/ya-modbus.js +0 -0
  191. /package/dist/{src → esm/src}/commands/discover.js +0 -0
  192. /package/dist/{src → esm/src}/commands/list-devices.js +0 -0
  193. /package/dist/{src → esm/src}/commands/read.js +0 -0
  194. /package/dist/{src → esm/src}/commands/show-defaults.js +0 -0
  195. /package/dist/{src → esm/src}/commands/write.js +0 -0
  196. /package/dist/{src → esm/src}/discovery/constants.js +0 -0
  197. /package/dist/{src → esm/src}/discovery/device-identifier.js +0 -0
  198. /package/dist/{src → esm/src}/discovery/parameter-generator-utils.js +0 -0
  199. /package/dist/{src → esm/src}/discovery/parameter-generator.js +0 -0
  200. /package/dist/{src → esm/src}/discovery/scanner.js +0 -0
  201. /package/dist/{src → esm/src}/formatters/discovery-results.js +0 -0
  202. /package/dist/{src → esm/src}/formatters/json.js +0 -0
  203. /package/dist/{src → esm/src}/formatters/performance.js +0 -0
  204. /package/dist/{src → esm/src}/formatters/table.js +0 -0
  205. /package/dist/{src → esm/src}/index.js +0 -0
  206. /package/dist/{src → esm/src}/utils/commands.js +0 -0
  207. /package/dist/{src → esm/src}/utils/object-utils.js +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.7.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/cli@0.6.0...@ya-modbus/cli@0.7.0) (2026-01-11)
7
+
8
+ ### Features
9
+
10
+ - **build:** add dual CommonJS/ESM package support ([#187](https://github.com/groupsky/ya-modbus/issues/187)) ([3d78130](https://github.com/groupsky/ya-modbus/commit/3d781304d42edba335cdc320ba25275f3b4ea6c9))
11
+
6
12
  # 0.6.0 (2026-01-04)
7
13
 
8
14
  ### Bug Fixes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ya-modbus.d.ts","sourceRoot":"","sources":["../../../bin/ya-modbus.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * CLI entry point
5
+ *
6
+ * This file is the executable entry point that parses command-line arguments.
7
+ * The actual CLI implementation is in src/index.ts
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const index_js_1 = require("../src/index.js");
11
+ index_js_1.program.parse();
12
+ //# sourceMappingURL=ya-modbus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ya-modbus.js","sourceRoot":"","sources":["../../../bin/ya-modbus.ts"],"names":[],"mappings":";;AAEA;;;;;GAKG;;AAEH,8CAAyC;AAEzC,kBAAO,CAAC,KAAK,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/commands/discover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAK5E;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,IAAI,EAAE,MAAM,CAAA;IAGZ,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAGhB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgK7E"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.discoverCommand = discoverCommand;
37
+ const driver_loader_1 = require("@ya-modbus/driver-loader");
38
+ const progress_js_1 = require("../discovery/progress.js");
39
+ const scanner_js_1 = require("../discovery/scanner.js");
40
+ const discovery_results_js_1 = require("../formatters/discovery-results.js");
41
+ /**
42
+ * Discover command implementation
43
+ *
44
+ * Scans for Modbus RTU devices on the specified port by testing
45
+ * different slave IDs and serial parameters.
46
+ *
47
+ * @param options - Command options
48
+ */
49
+ async function discoverCommand(options) {
50
+ const strategy = options.strategy ?? 'quick';
51
+ const timeout = options.timeout ?? 1000; // Device response timeout
52
+ const delay = options.delay ?? 100; // Inter-command delay for bus recovery
53
+ const format = options.format ?? 'table';
54
+ const maxDevices = options.maxDevices ?? 1; // Default: stop after finding 1 device
55
+ const verbose = options.verbose ?? false;
56
+ const silent = options.silent ?? false;
57
+ if (!silent) {
58
+ console.log(`Starting Modbus device discovery on ${options.port}...`);
59
+ console.log(`Strategy: ${strategy}`);
60
+ console.log(`Timeout: ${timeout}ms, Delay: ${delay}ms`);
61
+ if (maxDevices === 0) {
62
+ console.log('Mode: Find all devices');
63
+ }
64
+ else {
65
+ console.log(`Mode: Find up to ${maxDevices} device(s)`);
66
+ }
67
+ if (verbose) {
68
+ console.log('Verbose: Enabled');
69
+ }
70
+ console.log('');
71
+ }
72
+ // Try to load driver metadata (explicit --driver or auto-detect from cwd)
73
+ let driverMetadata;
74
+ try {
75
+ driverMetadata = await (0, driver_loader_1.loadDriver)(options.driver ? { driverPackage: options.driver } : {});
76
+ if (!silent) {
77
+ if (options.driver) {
78
+ console.log(`Using driver: ${options.driver}`);
79
+ }
80
+ else {
81
+ console.log('Using local driver package');
82
+ }
83
+ if (driverMetadata?.defaultConfig) {
84
+ console.log('Using driver DEFAULT_CONFIG for parameter prioritization');
85
+ }
86
+ if (driverMetadata?.supportedConfig) {
87
+ console.log('Using driver SUPPORTED_CONFIG to limit parameter combinations');
88
+ }
89
+ console.log('');
90
+ }
91
+ }
92
+ catch (error) {
93
+ // Driver loading failed - continue with generic Modbus parameters
94
+ if (!silent) {
95
+ console.log('No driver available, using generic Modbus parameters...');
96
+ if (verbose) {
97
+ console.log(` (${error.message})`);
98
+ }
99
+ console.log('');
100
+ }
101
+ }
102
+ // Create progress tracker (calculate total combinations without materializing)
103
+ const { countParameterCombinations } = await Promise.resolve().then(() => __importStar(require('../discovery/parameter-generator-utils.js')));
104
+ // Build generator options conditionally to avoid passing undefined
105
+ const generatorOptions = {
106
+ strategy,
107
+ };
108
+ if (driverMetadata?.defaultConfig && 'baudRate' in driverMetadata.defaultConfig) {
109
+ generatorOptions.defaultConfig = driverMetadata.defaultConfig;
110
+ }
111
+ if (driverMetadata?.supportedConfig && 'validBaudRates' in driverMetadata.supportedConfig) {
112
+ generatorOptions.supportedConfig = driverMetadata.supportedConfig;
113
+ }
114
+ const totalCombinations = countParameterCombinations(generatorOptions);
115
+ const progress = new progress_js_1.ProgressTracker(totalCombinations);
116
+ if (!silent) {
117
+ console.log(`Testing ${totalCombinations} parameter combinations...`);
118
+ console.log('');
119
+ }
120
+ // Build scan options conditionally
121
+ const scanOptions = {
122
+ port: options.port,
123
+ timeout,
124
+ delayMs: delay,
125
+ maxDevices,
126
+ verbose,
127
+ onProgress: (current, _total, devicesFound) => {
128
+ // Only show progress bar if not in verbose mode, silent mode, or json format
129
+ if (!verbose && !silent) {
130
+ const progressText = progress.update(current, devicesFound);
131
+ if (progressText && format !== 'json') {
132
+ // Clear line and write progress
133
+ process.stdout.clearLine?.(0);
134
+ process.stdout.cursorTo?.(0);
135
+ process.stdout.write(progressText);
136
+ }
137
+ }
138
+ },
139
+ onDeviceFound: (device) => {
140
+ if (!silent && format !== 'json') {
141
+ // Clear progress line (if not verbose)
142
+ if (!verbose) {
143
+ process.stdout.clearLine?.(0);
144
+ process.stdout.cursorTo?.(0);
145
+ }
146
+ // Show found device
147
+ console.log(`✓ Found device: Slave ID ${device.slaveId} @ ${device.baudRate},${device.parity === 'none' ? 'N' : device.parity === 'even' ? 'E' : 'O'},${device.dataBits},${device.stopBits}`);
148
+ }
149
+ },
150
+ };
151
+ // Add verbose callback if verbose mode is enabled (and not silent)
152
+ if (verbose && !silent) {
153
+ scanOptions.onTestAttempt = (params, result) => {
154
+ if (format !== 'json') {
155
+ const parityChar = params.parity === 'none' ? 'N' : params.parity === 'even' ? 'E' : 'O';
156
+ const status = result === 'found' ? '✓' : result === 'testing' ? '·' : '✗';
157
+ const paramStr = `${params.slaveId}@${params.baudRate},${parityChar},${params.dataBits},${params.stopBits}`;
158
+ if (result === 'testing') {
159
+ // Show what we're testing
160
+ process.stdout.clearLine?.(0);
161
+ process.stdout.cursorTo?.(0);
162
+ process.stdout.write(`${status} Testing: ${paramStr}`);
163
+ }
164
+ else if (result === 'found') {
165
+ // Device found - print on new line
166
+ process.stdout.clearLine?.(0);
167
+ process.stdout.cursorTo?.(0);
168
+ console.log(`${status} Found: ${paramStr}`);
169
+ }
170
+ // Don't print anything for 'not-found' - just move to next test
171
+ }
172
+ };
173
+ }
174
+ // Scan for devices
175
+ const devices = await (0, scanner_js_1.scanForDevices)(generatorOptions, scanOptions);
176
+ // Clear progress line (if not silent)
177
+ if (!silent && format !== 'json') {
178
+ process.stdout.clearLine?.(0);
179
+ process.stdout.cursorTo?.(0);
180
+ }
181
+ if (!silent) {
182
+ console.log('');
183
+ console.log(`Discovery complete! Found ${devices.length} device(s).`);
184
+ console.log('');
185
+ }
186
+ // Format and display results (always show, even in silent mode)
187
+ if (devices.length > 0) {
188
+ if (format === 'json') {
189
+ console.log((0, discovery_results_js_1.formatDiscoveryJSON)(devices));
190
+ }
191
+ else {
192
+ console.log((0, discovery_results_js_1.formatDiscoveryTable)(devices));
193
+ }
194
+ }
195
+ }
196
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../../src/commands/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-devices.d.ts","sourceRoot":"","sources":["../../../../src/commands/list-devices.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC1B;AAoBD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DnF"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * List devices command
4
+ *
5
+ * Displays supported devices from a driver package's DEVICES export.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.listDevicesCommand = listDevicesCommand;
9
+ const tslib_1 = require("tslib");
10
+ const driver_loader_1 = require("@ya-modbus/driver-loader");
11
+ const cli_table3_1 = tslib_1.__importDefault(require("cli-table3"));
12
+ /**
13
+ * Format default config as a short string
14
+ */
15
+ function formatDefaultConfig(config) {
16
+ if (!config)
17
+ return '-';
18
+ if ('baudRate' in config) {
19
+ // Serial config
20
+ const parityChar = config.parity === 'none' ? 'N' : config.parity === 'even' ? 'E' : 'O';
21
+ return `${config.baudRate} ${config.dataBits}${parityChar}${config.stopBits}`;
22
+ }
23
+ else if ('defaultPort' in config) {
24
+ // TCP config
25
+ return `TCP:${config.defaultPort}`;
26
+ }
27
+ return '-';
28
+ }
29
+ /**
30
+ * List devices command handler
31
+ *
32
+ * @param options - Command options
33
+ */
34
+ async function listDevicesCommand(options) {
35
+ // Load driver metadata (auto-detects from cwd if no --driver specified)
36
+ const driverMetadata = await (0, driver_loader_1.loadDriver)(options.driver ? { driverPackage: options.driver } : {});
37
+ if (options.format === 'json') {
38
+ // JSON output
39
+ console.log(JSON.stringify({
40
+ devices: driverMetadata.devices ?? null,
41
+ defaultConfig: driverMetadata.defaultConfig,
42
+ supportedConfig: driverMetadata.supportedConfig,
43
+ }, null, 2));
44
+ return;
45
+ }
46
+ // Human-readable table output
47
+ const devices = driverMetadata.devices;
48
+ if (!devices || Object.keys(devices).length === 0) {
49
+ console.log('This driver does not export a DEVICES registry.');
50
+ console.log('It is a single-device driver.\n');
51
+ if (driverMetadata.defaultConfig) {
52
+ console.log('Default config:', formatDefaultConfig(driverMetadata.defaultConfig));
53
+ }
54
+ return;
55
+ }
56
+ console.log('Supported Devices\n');
57
+ // Create table
58
+ const table = new cli_table3_1.default({
59
+ head: ['Device', 'Manufacturer', 'Model', 'Config', 'Description'],
60
+ style: {
61
+ head: ['cyan', 'bold'],
62
+ },
63
+ });
64
+ // Add rows
65
+ const entries = Object.entries(devices);
66
+ for (const [key, info] of entries) {
67
+ const config = info.defaultConfig ?? driverMetadata.defaultConfig;
68
+ table.push([
69
+ key,
70
+ info.manufacturer,
71
+ info.model,
72
+ formatDefaultConfig(config),
73
+ info.description ?? '',
74
+ ]);
75
+ }
76
+ console.log(table.toString());
77
+ console.log(`\nTotal: ${entries.length} device(s)`);
78
+ }
79
+ //# sourceMappingURL=list-devices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-devices.js","sourceRoot":"","sources":["../../../../src/commands/list-devices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/commands/read.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,WAAW;IAE1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAA;IAGb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IAGb,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;CACzB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ErE"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readCommand = readCommand;
4
+ const json_js_1 = require("../formatters/json.js");
5
+ const performance_js_1 = require("../formatters/performance.js");
6
+ const table_js_1 = require("../formatters/table.js");
7
+ const commands_js_1 = require("../utils/commands.js");
8
+ /**
9
+ * Read command implementation
10
+ *
11
+ * @param options - Command options
12
+ */
13
+ async function readCommand(options) {
14
+ const startTime = performance.now();
15
+ await (0, commands_js_1.withDriver)(options, async (driver, mergedOptions) => {
16
+ // Determine which data points to read
17
+ let dataPointIds;
18
+ if (options.all) {
19
+ // Read all readable data points
20
+ dataPointIds = driver.dataPoints.filter(commands_js_1.isReadable).map((dp) => dp.id);
21
+ }
22
+ else if (options.dataPoint && options.dataPoint.length > 0) {
23
+ dataPointIds = options.dataPoint;
24
+ }
25
+ else {
26
+ throw new Error('Either --data-point or --all must be specified');
27
+ }
28
+ // Validate data points exist and are readable (O(N) using Map lookup)
29
+ const dataPointMap = new Map(driver.dataPoints.map((dp) => [dp.id, dp]));
30
+ for (const id of dataPointIds) {
31
+ const dataPoint = dataPointMap.get(id);
32
+ if (!dataPoint) {
33
+ throw new Error(`Data point not found: ${id}`);
34
+ }
35
+ if (!(0, commands_js_1.isReadable)(dataPoint)) {
36
+ throw new Error(`Data point is write-only: ${id}`);
37
+ }
38
+ }
39
+ // Read data points
40
+ let values;
41
+ if (dataPointIds.length === 1) {
42
+ // Single data point - use readDataPoint
43
+ const dataPointId = dataPointIds[0]; // length === 1, so [0] is guaranteed to exist
44
+ const value = await driver.readDataPoint(dataPointId);
45
+ values = { [dataPointId]: value };
46
+ }
47
+ else {
48
+ // Multiple data points - use batch read
49
+ values = await driver.readDataPoints(dataPointIds);
50
+ }
51
+ // Calculate performance metrics
52
+ const endTime = performance.now();
53
+ const metrics = {
54
+ responseTimeMs: endTime - startTime,
55
+ operations: dataPointIds.length,
56
+ errors: 0, // Errors cause exceptions, so this is always 0 for successful reads
57
+ };
58
+ // Format output
59
+ if (options.format === 'json') {
60
+ const output = (0, json_js_1.formatJSON)(driver.dataPoints.filter((dp) => dp.id in values), values, {
61
+ driver: options.driver,
62
+ connection: options.host
63
+ ? { host: options.host, slaveId: mergedOptions.slaveId }
64
+ : mergedOptions.port && typeof mergedOptions.port === 'string'
65
+ ? { port: mergedOptions.port, slaveId: mergedOptions.slaveId }
66
+ : undefined,
67
+ performance: metrics,
68
+ });
69
+ console.log(output);
70
+ }
71
+ else {
72
+ // Table format (default)
73
+ const table = (0, table_js_1.formatTable)(driver.dataPoints.filter((dp) => dp.id in values), values);
74
+ console.log(table);
75
+ console.log((0, performance_js_1.formatPerformance)(metrics));
76
+ }
77
+ });
78
+ }
79
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../src/commands/read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-defaults.d.ts","sourceRoot":"","sources":["../../../../src/commands/show-defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCrF"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Show driver defaults command
4
+ *
5
+ * Displays DEFAULT_CONFIG and SUPPORTED_CONFIG from a driver package.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.showDefaultsCommand = showDefaultsCommand;
9
+ const driver_loader_1 = require("@ya-modbus/driver-loader");
10
+ /**
11
+ * Show driver defaults command handler
12
+ *
13
+ * @param options - Command options
14
+ */
15
+ async function showDefaultsCommand(options) {
16
+ // Load driver metadata (auto-detects from cwd if no --driver specified)
17
+ const driverMetadata = await (0, driver_loader_1.loadDriver)(options.driver ? { driverPackage: options.driver } : {});
18
+ if (options.format === 'json') {
19
+ // JSON output
20
+ console.log(JSON.stringify({
21
+ defaultConfig: driverMetadata.defaultConfig,
22
+ supportedConfig: driverMetadata.supportedConfig,
23
+ }, null, 2));
24
+ }
25
+ else {
26
+ // Human-readable table output
27
+ console.log('Driver Defaults');
28
+ console.log('===============\n');
29
+ if (driverMetadata.defaultConfig) {
30
+ console.log('DEFAULT_CONFIG:');
31
+ for (const [key, value] of Object.entries(driverMetadata.defaultConfig)) {
32
+ console.log(` ${key}: ${JSON.stringify(value)}`);
33
+ }
34
+ console.log();
35
+ }
36
+ else {
37
+ console.log('No DEFAULT_CONFIG exported by this driver.\n');
38
+ }
39
+ if (driverMetadata.supportedConfig) {
40
+ console.log('SUPPORTED_CONFIG:');
41
+ for (const [key, value] of Object.entries(driverMetadata.supportedConfig)) {
42
+ console.log(` ${key}: ${JSON.stringify(value)}`);
43
+ }
44
+ console.log();
45
+ }
46
+ else {
47
+ console.log('No SUPPORTED_CONFIG exported by this driver.\n');
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=show-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-defaults.js","sourceRoot":"","sources":["../../../../src/commands/show-defaults.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAoBH,kDAyCC;AA3DD,4DAAqD;AAarD;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,OAA4B;IACpE,wEAAwE;IACxE,MAAM,cAAc,GAAG,MAAM,IAAA,0BAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAEhG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,cAAc;QACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,aAAa,EAAE,cAAc,CAAC,aAAa;YAC3C,eAAe,EAAE,cAAc,CAAC,eAAe;SAChD,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAEhC,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACnD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;QAC7D,CAAC;QAED,IAAI,cAAc,CAAC,eAAe,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACnD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../src/commands/write.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAA;IAGb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEvE"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeCommand = writeCommand;
4
+ const tslib_1 = require("tslib");
5
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
+ const commands_js_1 = require("../utils/commands.js");
7
+ /**
8
+ * Write command implementation
9
+ *
10
+ * @param options - Command options
11
+ */
12
+ async function writeCommand(options) {
13
+ await (0, commands_js_1.withDriver)(options, async (driver) => {
14
+ // Find and validate writable data point
15
+ const dataPoint = (0, commands_js_1.findWritableDataPoint)(driver, options.dataPoint);
16
+ // Parse and validate value
17
+ const parsedValue = (0, commands_js_1.parseValue)(options.value, dataPoint);
18
+ (0, commands_js_1.validateValue)(parsedValue, dataPoint);
19
+ // Show current value if readable and request confirmation
20
+ if (!options.yes) {
21
+ if ((0, commands_js_1.isReadable)(dataPoint)) {
22
+ try {
23
+ const currentValue = await driver.readDataPoint(options.dataPoint);
24
+ console.log(chalk_1.default.cyan(`Current value: ${String(currentValue)}`));
25
+ }
26
+ catch {
27
+ console.log(chalk_1.default.yellow('Could not read current value'));
28
+ }
29
+ }
30
+ console.log(chalk_1.default.cyan(`New value: ${String(parsedValue)}`));
31
+ const confirmed = await (0, commands_js_1.confirm)(chalk_1.default.bold(`Write ${String(parsedValue)} to ${options.dataPoint}?`));
32
+ if (!confirmed) {
33
+ console.log('Write aborted');
34
+ return;
35
+ }
36
+ }
37
+ // Write value
38
+ await driver.writeDataPoint(options.dataPoint, parsedValue);
39
+ console.log(chalk_1.default.green(`Successfully wrote ${String(parsedValue)} to ${options.dataPoint}`));
40
+ // Verify if requested
41
+ if (options.verify) {
42
+ if (!(0, commands_js_1.isReadable)(dataPoint)) {
43
+ console.log(chalk_1.default.yellow('Cannot verify write-only data point'));
44
+ return;
45
+ }
46
+ try {
47
+ const readValue = await driver.readDataPoint(options.dataPoint);
48
+ // Compare values (handle floating point precision)
49
+ const match = dataPoint.type === 'float'
50
+ ? (0, commands_js_1.floatsEqual)(readValue, parsedValue)
51
+ : readValue === parsedValue;
52
+ if (match) {
53
+ console.log(chalk_1.default.green(`Verification: OK (read back ${String(readValue)})`));
54
+ }
55
+ else {
56
+ console.log(chalk_1.default.red(`Verification: MISMATCH (expected ${String(parsedValue)}, got ${String(readValue)})`));
57
+ }
58
+ }
59
+ catch (error) {
60
+ console.log(chalk_1.default.red(`Verification failed: ${error.message}`));
61
+ }
62
+ }
63
+ });
64
+ }
65
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../src/commands/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/discovery/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEnF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,EASzC,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,QAAQ,EAA2B,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAqC,CAAA;AAElF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,QAAQ,EAAoB,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,QAAQ,EAAiB,CAAA;AAEjE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,QAAQ,EAAoB,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,QAAQ,EAAiB,CAAA;AAEjE;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAA;AAC7B,eAAO,MAAM,YAAY,MAAM,CAAA"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_SLAVE_ID = exports.MIN_SLAVE_ID = exports.COMMON_STOP_BITS = exports.STANDARD_STOP_BITS = exports.COMMON_DATA_BITS = exports.STANDARD_DATA_BITS = exports.STANDARD_PARITY = exports.COMMON_BAUD_RATES = exports.STANDARD_BAUD_RATES = void 0;
4
+ /**
5
+ * Standard Modbus baud rates for thorough scanning
6
+ * Ordered by commonality (most common first)
7
+ */
8
+ exports.STANDARD_BAUD_RATES = [
9
+ 9600, // Most common
10
+ 19200, // Modbus spec default
11
+ 14400,
12
+ 38400,
13
+ 57600,
14
+ 115200,
15
+ 4800, // Less common
16
+ 2400, // Legacy
17
+ ];
18
+ /**
19
+ * Common baud rates for quick scanning
20
+ */
21
+ exports.COMMON_BAUD_RATES = [9600, 19200];
22
+ /**
23
+ * Standard Modbus parity settings
24
+ * Ordered by commonality
25
+ */
26
+ exports.STANDARD_PARITY = ['none', 'even', 'odd'];
27
+ /**
28
+ * Standard data bits options
29
+ */
30
+ exports.STANDARD_DATA_BITS = [8, 7];
31
+ /**
32
+ * Common data bits for quick scanning
33
+ */
34
+ exports.COMMON_DATA_BITS = [8];
35
+ /**
36
+ * Standard stop bits options
37
+ */
38
+ exports.STANDARD_STOP_BITS = [1, 2];
39
+ /**
40
+ * Common stop bits for quick scanning
41
+ */
42
+ exports.COMMON_STOP_BITS = [1];
43
+ /**
44
+ * Valid Modbus slave address range (0 is broadcast, 248-255 reserved)
45
+ */
46
+ exports.MIN_SLAVE_ID = 1;
47
+ exports.MAX_SLAVE_ID = 247;
48
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/discovery/constants.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACU,QAAA,mBAAmB,GAAwB;IACtD,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,sBAAsB;IAC7B,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,SAAS;CACP,CAAA;AAEV;;GAEG;AACU,QAAA,iBAAiB,GAAwB,CAAC,IAAI,EAAE,KAAK,CAAU,CAAA;AAE5E;;;GAGG;AACU,QAAA,eAAe,GAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAElF;;GAEG;AACU,QAAA,kBAAkB,GAAwB,CAAC,CAAC,EAAE,CAAC,CAAU,CAAA;AAEtE;;GAEG;AACU,QAAA,gBAAgB,GAAwB,CAAC,CAAC,CAAU,CAAA;AAEjE;;GAEG;AACU,QAAA,kBAAkB,GAAwB,CAAC,CAAC,EAAE,CAAC,CAAU,CAAA;AAEtE;;GAEG;AACU,QAAA,gBAAgB,GAAwB,CAAC,CAAC,CAAU,CAAA;AAEjE;;GAEG;AACU,QAAA,YAAY,GAAG,CAAC,CAAA;AAChB,QAAA,YAAY,GAAG,GAAG,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-identifier.d.ts","sourceRoot":"","sources":["../../../../src/discovery/device-identifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,eAAe,CAAA;AAsC1C;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAA;IAEhB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAA;IAGtB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAA;IAGtB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAgID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAgC3F"}