@ya-modbus/emulator 0.8.0 → 0.10.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 (43) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +72 -4
  3. package/dist/cjs/src/cli.d.ts.map +1 -1
  4. package/dist/cjs/src/cli.js +3 -0
  5. package/dist/cjs/src/cli.js.map +1 -1
  6. package/dist/cjs/src/emulator.d.ts.map +1 -1
  7. package/dist/cjs/src/emulator.js +15 -1
  8. package/dist/cjs/src/emulator.js.map +1 -1
  9. package/dist/cjs/src/transports/rtu.d.ts +1 -0
  10. package/dist/cjs/src/transports/rtu.d.ts.map +1 -1
  11. package/dist/cjs/src/transports/rtu.js +4 -0
  12. package/dist/cjs/src/transports/rtu.js.map +1 -1
  13. package/dist/cjs/src/transports/tcp.d.ts +38 -0
  14. package/dist/cjs/src/transports/tcp.d.ts.map +1 -0
  15. package/dist/cjs/src/transports/tcp.js +209 -0
  16. package/dist/cjs/src/transports/tcp.js.map +1 -0
  17. package/dist/cjs/src/types/config.d.ts +2 -0
  18. package/dist/cjs/src/types/config.d.ts.map +1 -1
  19. package/dist/cjs/src/utils/config-loader.d.ts +1 -0
  20. package/dist/cjs/src/utils/config-loader.d.ts.map +1 -1
  21. package/dist/cjs/src/utils/config-loader.js.map +1 -1
  22. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  23. package/dist/esm/src/cli.d.ts.map +1 -1
  24. package/dist/esm/src/cli.js +3 -0
  25. package/dist/esm/src/cli.js.map +1 -1
  26. package/dist/esm/src/emulator.d.ts.map +1 -1
  27. package/dist/esm/src/emulator.js +15 -1
  28. package/dist/esm/src/emulator.js.map +1 -1
  29. package/dist/esm/src/transports/rtu.d.ts +1 -0
  30. package/dist/esm/src/transports/rtu.d.ts.map +1 -1
  31. package/dist/esm/src/transports/rtu.js +4 -0
  32. package/dist/esm/src/transports/rtu.js.map +1 -1
  33. package/dist/esm/src/transports/tcp.d.ts +38 -0
  34. package/dist/esm/src/transports/tcp.d.ts.map +1 -0
  35. package/dist/esm/src/transports/tcp.js +205 -0
  36. package/dist/esm/src/transports/tcp.js.map +1 -0
  37. package/dist/esm/src/types/config.d.ts +2 -0
  38. package/dist/esm/src/types/config.d.ts.map +1 -1
  39. package/dist/esm/src/utils/config-loader.d.ts +1 -0
  40. package/dist/esm/src/utils/config-loader.d.ts.map +1 -1
  41. package/dist/esm/src/utils/config-loader.js.map +1 -1
  42. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  43. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
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.10.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/emulator@0.9.0...@ya-modbus/emulator@0.10.0) (2026-02-07)
7
+
8
+ ### Features
9
+
10
+ - **emulator:** add configurable lock option for RTU transport ([#263](https://github.com/groupsky/ya-modbus/issues/263)) ([3e2a2f1](https://github.com/groupsky/ya-modbus/commit/3e2a2f195d6f7c14bb574aea1bb08f0ce38c23e7)), closes [#251](https://github.com/groupsky/ya-modbus/issues/251) [#264](https://github.com/groupsky/ya-modbus/issues/264) [#265](https://github.com/groupsky/ya-modbus/issues/265)
11
+
12
+ # [0.9.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/emulator@0.8.0...@ya-modbus/emulator@0.9.0) (2026-02-07)
13
+
14
+ ### Features
15
+
16
+ - **emulator:** implement TCP transport ([#252](https://github.com/groupsky/ya-modbus/issues/252)) ([3df8fda](https://github.com/groupsky/ya-modbus/commit/3df8fdac2c279ca13fb314867daa2ffc32194481)), closes [#244](https://github.com/groupsky/ya-modbus/issues/244)
17
+
6
18
  # [0.8.0](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/emulator@0.7.1...@ya-modbus/emulator@0.8.0) (2026-02-07)
7
19
 
8
20
  ### Features
package/README.md CHANGED
@@ -7,7 +7,7 @@ Software Modbus device emulator for testing device drivers without physical hard
7
7
  - **Realistic device simulation**: Mimic actual device constraints and timing characteristics
8
8
  - **Test acceleration**: Enable fast, deterministic testing without hardware
9
9
  - **Edge case coverage**: Simulate error conditions and edge cases
10
- - **Multiple transports**: RTU (virtual/real serial ports) and in-memory
10
+ - **Multiple transports**: TCP, RTU (virtual/real serial ports), and in-memory
11
11
  - **Custom function codes**: Support vendor-specific Modbus extensions
12
12
 
13
13
  ## Installation
@@ -49,6 +49,43 @@ await emulator.start()
49
49
  await emulator.stop()
50
50
  ```
51
51
 
52
+ ### TCP Transport (network)
53
+
54
+ ```typescript
55
+ import { ModbusEmulator } from '@ya-modbus/emulator'
56
+
57
+ // Create emulator with TCP transport
58
+ const emulator = new ModbusEmulator({
59
+ transport: 'tcp',
60
+ host: '0.0.0.0', // Listen on all interfaces
61
+ port: 502, // Standard Modbus TCP port
62
+ })
63
+
64
+ // Add devices
65
+ emulator.addDevice({
66
+ slaveId: 1,
67
+ registers: {
68
+ holding: { 0: 230, 1: 52 },
69
+ },
70
+ })
71
+
72
+ emulator.addDevice({
73
+ slaveId: 2,
74
+ registers: {
75
+ holding: { 0: 500, 1: 100 },
76
+ },
77
+ })
78
+
79
+ // Start emulator
80
+ await emulator.start()
81
+
82
+ // Use with your driver tests (clients connect to localhost:502)
83
+ // ...
84
+
85
+ // Stop emulator
86
+ await emulator.stop()
87
+ ```
88
+
52
89
  ### RTU Transport (serial port)
53
90
 
54
91
  ```typescript
@@ -62,6 +99,7 @@ const emulator = new ModbusEmulator({
62
99
  parity: 'none',
63
100
  dataBits: 8,
64
101
  stopBits: 1,
102
+ // lock: true, // Enable exclusive port locking (default)
65
103
  })
66
104
 
67
105
  // Add devices
@@ -113,6 +151,7 @@ Options:
113
151
  -H, --host <host> TCP host address (default: 0.0.0.0)
114
152
  -b, --baud-rate <rate> Serial baud rate (default: 9600)
115
153
  --parity <type> Serial parity: none|even|odd (default: none)
154
+ --no-lock Disable serial port locking (enabled by default)
116
155
  -s, --slave-id <id> Slave ID (required if no config file)
117
156
  -v, --verbose Enable verbose logging
118
157
  -q, --quiet Suppress all output except errors
@@ -125,6 +164,22 @@ Options:
125
164
 
126
165
  Create a YAML or JSON configuration file to define devices and behaviors:
127
166
 
167
+ **Basic TCP Example** (`basic-tcp.yaml`):
168
+
169
+ ```yaml
170
+ transport:
171
+ type: tcp
172
+ host: 0.0.0.0
173
+ port: 502
174
+
175
+ devices:
176
+ - slaveId: 1
177
+ registers:
178
+ holding:
179
+ 0: 230 # Voltage * 10 = 23.0V
180
+ 1: 52 # Current * 10 = 5.2A
181
+ ```
182
+
128
183
  **Basic RTU Example** (`basic-rtu.yaml`):
129
184
 
130
185
  ```yaml
@@ -195,20 +250,33 @@ For testing without physical hardware, create virtual serial port pairs:
195
250
  socat -d -d pty,raw,echo=0 pty,raw,echo=0
196
251
  # Note the output: /dev/pts/3 <-> /dev/pts/4
197
252
 
198
- # Terminal 2: Start emulator on first port
199
- ya-modbus-emulator --transport rtu --port /dev/pts/3 --slave-id 1
253
+ # Terminal 2: Start emulator on first port (disable locking for virtual ports)
254
+ ya-modbus-emulator --transport rtu --port /dev/pts/3 --slave-id 1 --no-lock
200
255
 
201
256
  # Terminal 3: Run your driver tests against second port
202
257
  node test-driver.js --port /dev/pts/4
203
258
  ```
204
259
 
260
+ > **Note:** Virtual serial ports created by `socat` don't properly support exclusive locking.
261
+ > Use `--no-lock` flag or set `lock: false` in config files when using virtual ports.
262
+
205
263
  **Windows** (using com0com):
206
264
 
207
265
  1. Install [com0com](https://sourceforge.net/projects/com0com/)
208
266
  2. Create a pair: COM10 <-> COM11
209
- 3. Start emulator: `ya-modbus-emulator --transport rtu --port COM10 --slave-id 1`
267
+ 3. Start emulator: `ya-modbus-emulator --transport rtu --port COM10 --slave-id 1 --no-lock`
210
268
  4. Run tests: `node test-driver.js --port COM11`
211
269
 
270
+ **Troubleshooting:**
271
+
272
+ If you encounter `Error: Resource temporarily unavailable Cannot lock port`:
273
+
274
+ - Add `--no-lock` flag to the CLI command, OR
275
+ - Set `lock: false` in your config file's transport section
276
+
277
+ This error occurs with virtual serial ports (socat PTYs, com0com) that don't properly reset
278
+ exclusive locks. For production use with real serial hardware, keep locking enabled (default).
279
+
212
280
  See `examples/virtual-serial-test.md` for detailed virtual serial port testing guide.
213
281
 
214
282
  ## Configuration
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":";AACA;;GAEG;AA8CH;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGnC;AAOD,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":";AACA;;GAEG;AAgDH;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqGnC;AAOD,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -20,6 +20,7 @@ program
20
20
  .option('-H, --host <host>', 'TCP host address (default: 0.0.0.0)')
21
21
  .option('-b, --baud-rate <rate>', 'Serial baud rate (default: 9600)', parseInt)
22
22
  .option('--parity <type>', 'Serial parity: none|even|odd (default: none)')
23
+ .option('--no-lock', 'Disable serial port locking (enabled by default)')
23
24
  .option('-s, --slave-id <id>', 'Slave ID (required if no config file)', parseInt)
24
25
  .option('-v, --verbose', 'Enable verbose logging')
25
26
  .option('-q, --quiet', 'Suppress all output except errors')
@@ -54,6 +55,7 @@ async function main() {
54
55
  ...(fileConfig.transport.stopBits !== undefined && {
55
56
  stopBits: fileConfig.transport.stopBits,
56
57
  }),
58
+ ...(fileConfig.transport.lock !== undefined && { lock: fileConfig.transport.lock }),
57
59
  };
58
60
  devices = fileConfig.devices;
59
61
  }
@@ -75,6 +77,7 @@ async function main() {
75
77
  ...(options.parity !== undefined && {
76
78
  parity: options.parity,
77
79
  }),
80
+ ...(typeof options.lock === 'boolean' && { lock: options.lock }),
78
81
  };
79
82
  devices = [{ slaveId: options.slaveId }];
80
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emulator.d.ts","sourceRoot":"","sources":["../../../src/emulator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,cAAc;IA+B5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQb,aAAa;IA2B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B,YAAY,IAAI,aAAa;IAI7B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc;IAU/C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;CAGvD"}
1
+ {"version":3,"file":"emulator.d.ts","sourceRoot":"","sources":["../../../src/emulator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAIzD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErE,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,cAAc;IA4C5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQb,aAAa;IA2B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyB1B,YAAY,IAAI,aAAa;IAI7B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc;IAU/C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;CAGvD"}
@@ -40,6 +40,7 @@ exports.ModbusEmulator = void 0;
40
40
  const device_js_1 = require("./device.js");
41
41
  const memory_js_1 = require("./transports/memory.js");
42
42
  const rtu_js_1 = require("./transports/rtu.js");
43
+ const tcp_js_1 = require("./transports/tcp.js");
43
44
  class ModbusEmulator {
44
45
  constructor(config) {
45
46
  this.devices = new Map();
@@ -59,11 +60,24 @@ class ModbusEmulator {
59
60
  ...(config.parity !== undefined && { parity: config.parity }),
60
61
  ...(config.dataBits !== undefined && { dataBits: config.dataBits }),
61
62
  ...(config.stopBits !== undefined && { stopBits: config.stopBits }),
63
+ ...(config.lock !== undefined && { lock: config.lock }),
62
64
  };
63
65
  this.transport = new rtu_js_1.RtuTransport(rtuConfig);
64
66
  }
67
+ else if (config.transport === 'tcp') {
68
+ if (!config.host) {
69
+ throw new Error('TCP transport requires host');
70
+ }
71
+ if (!config.port || typeof config.port !== 'number') {
72
+ throw new Error('TCP transport requires port');
73
+ }
74
+ this.transport = new tcp_js_1.TcpTransport({
75
+ host: config.host,
76
+ port: config.port,
77
+ });
78
+ }
65
79
  else {
66
- throw new Error(`Unsupported transport: ${config.transport}`);
80
+ throw new Error(`Unsupported transport: ${String(config.transport)}`);
67
81
  }
68
82
  // Set up request handler
69
83
  this.transport.onRequest(this.handleRequest.bind(this));
@@ -1 +1 @@
1
- {"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../../src/emulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../../src/emulator.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface RtuTransportConfig {
10
10
  parity?: 'none' | 'even' | 'odd';
11
11
  dataBits?: 7 | 8;
12
12
  stopBits?: 1 | 2;
13
+ lock?: boolean;
13
14
  }
14
15
  export declare class RtuTransport extends BaseTransport {
15
16
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"rtu.d.ts","sourceRoot":"","sources":["../../../../src/transports/rtu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CACjB;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAuD;IAC9E,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,kBAAkB;IAKhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAI/E;;OAEG;YACW,kBAAkB;IAmChC;;OAEG;YACW,mBAAmB;IAqCjC;;OAEG;YACW,cAAc;IAiC5B;;OAEG;YACW,eAAe;CAoB9B"}
1
+ {"version":3,"file":"rtu.d.ts","sourceRoot":"","sources":["../../../../src/transports/rtu.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAuD;IAC9E,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,kBAAkB;IAKhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8EtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAI/E;;OAEG;YACW,kBAAkB;IAmChC;;OAEG;YACW,mBAAmB;IAqCjC;;OAEG;YACW,cAAc;IAiC5B;;OAEG;YACW,eAAe;CAoB9B"}
@@ -71,6 +71,10 @@ class RtuTransport extends base_js_1.BaseTransport {
71
71
  resolve();
72
72
  }
73
73
  },
74
+ },
75
+ // @ts-expect-error - ServerSerial accepts third parameter serialportOptions but typedef is incomplete
76
+ {
77
+ lock: this.config.lock ?? true,
74
78
  });
75
79
  // Handle errors
76
80
  this.server.on('error', (err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rtu.js","sourceRoot":"","sources":["../../../../src/transports/rtu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rtu.js","sourceRoot":"","sources":["../../../../src/transports/rtu.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAA4C;AAG5C,uCAAyC;AAWzC,MAAa,YAAa,SAAQ,uBAAa;IAM7C,YAAY,MAA0B;QACpC,KAAK,EAAE,CAAA;QAHD,YAAO,GAAG,KAAK,CAAA;QAIrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC9C,CAAC;QAED,oFAAoF;QACpF,MAAM,aAAa,GAAmB;YACpC,kBAAkB,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;gBACzD,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACvD,CAAC;YACD,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;gBACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACvD,CAAC;YACD,2BAA2B,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;gBAClF,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC5D,CAAC;YACD,yBAAyB,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;gBAChF,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC5D,CAAC;YACD,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,MAAc,EAAE,EAAE;gBACjE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAC9D,CAAC;YACD,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,MAAgB,EAAE,MAAc,EAAE,EAAE;gBACzE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC7D,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC;YACD,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;gBACvD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACnD,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAc,EAAE,MAAc,EAAE,EAAE;gBAC9D,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YACxD,CAAC;SACF,CAAA;QAED,yDAAyD;QACzD,oEAAoE;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,MAAM,EAAE,GAAG,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;SAC/B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACc,CAAA;QAE7D,0BAA0B;QAC1B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAY,CAC5B,aAAa,EACb;gBACE,GAAG,OAAO;gBACV,YAAY,EAAE,CAAC,GAAiB,EAAE,EAAE;oBAClC,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAA;oBACb,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;wBACnB,OAAO,EAAE,CAAA;oBACX,CAAC;gBACH,CAAC;aACF;YACD,sGAAsG;YACtG;gBACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI;aAC/B,CACF,CAAA;YAED,gBAAgB;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9B,kCAAkC;gBAClC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAA;gBACT,OAAM;YACR,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;oBACpB,OAAO,IAAI,CAAC,MAAM,CAAA;oBAClB,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,QAAgB,EAAE,SAAiB;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;QAC3D,CAAC;QACD,2DAA2D;QAC3D,kDAAkD;QAClD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,SAAS,CAAC,OAA8D;QACtE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,MAAc,EACd,YAAoB,EACpB,IAAY,EACZ,MAAc;QAEd,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;QACnB,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAA;QACzB,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC9B,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAEhC,eAAe;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAE3D,iBAAiB;QACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACrC,CAAC;QAED,0BAA0B;QAC1B,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/C,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,MAAc,EACd,YAAoB,EACpB,IAAY,EACZ,MAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAe,CAAA;QACnB,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,wBAAwB;YACxB,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACzB,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAA;YACzB,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC9B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;YACnC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;YACrC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAA;YACzB,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC9B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACvC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAC1B,MAAc,EACd,YAAoB,EACpB,IAAY,EACZ,MAAc;QAEd,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;QACnB,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAA;QACzB,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC9B,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAEhC,eAAe;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAE3D,8DAA8D;QAC9D,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,YAAoB,EACpB,IAAY,EACZ,KAAc;QAEd,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;QACnB,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAA;QACzB,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC9B,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAEjD,mCAAmC;QACnC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;CACF;AAtQD,oCAsQC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * TCP transport for Modbus emulator
3
+ *
4
+ * This implementation uses modbus-serial ServerTCP for protocol handling.
5
+ */
6
+ import { BaseTransport } from './base.js';
7
+ export interface TcpTransportConfig {
8
+ host: string;
9
+ port: number;
10
+ }
11
+ export declare class TcpTransport extends BaseTransport {
12
+ private config;
13
+ private requestHandler?;
14
+ private server?;
15
+ private started;
16
+ constructor(config: TcpTransportConfig);
17
+ start(): Promise<void>;
18
+ stop(): Promise<void>;
19
+ send(_slaveId: number, _response: Buffer): Promise<void>;
20
+ onRequest(handler: (slaveId: number, request: Buffer) => Promise<Buffer>): void;
21
+ /**
22
+ * Handle register read operations
23
+ */
24
+ private handleRegisterRead;
25
+ /**
26
+ * Handle register write operations
27
+ */
28
+ private handleRegisterWrite;
29
+ /**
30
+ * Handle coil read operations
31
+ */
32
+ private handleCoilRead;
33
+ /**
34
+ * Handle coil write operations
35
+ */
36
+ private handleCoilWrite;
37
+ }
38
+ //# sourceMappingURL=tcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../../../src/transports/tcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAuD;IAC9E,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,kBAAkB;IAKhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAI/E;;OAEG;YACW,kBAAkB;IAmChC;;OAEG;YACW,mBAAmB;IAqCjC;;OAEG;YACW,cAAc;IAiC5B;;OAEG;YACW,eAAe;CAoB9B"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ /**
3
+ * TCP transport for Modbus emulator
4
+ *
5
+ * This implementation uses modbus-serial ServerTCP for protocol handling.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TcpTransport = void 0;
9
+ const modbus_serial_1 = require("modbus-serial");
10
+ const base_js_1 = require("./base.js");
11
+ class TcpTransport extends base_js_1.BaseTransport {
12
+ constructor(config) {
13
+ super();
14
+ this.started = false;
15
+ this.config = config;
16
+ }
17
+ async start() {
18
+ if (this.started) {
19
+ throw new Error('Transport already started');
20
+ }
21
+ // Create service vector that bridges modbus-serial callbacks to our request handler
22
+ const serviceVector = {
23
+ getHoldingRegister: async (addr, unitID) => {
24
+ return this.handleRegisterRead(unitID, 0x03, addr, 1);
25
+ },
26
+ getInputRegister: async (addr, unitID) => {
27
+ return this.handleRegisterRead(unitID, 0x04, addr, 1);
28
+ },
29
+ getMultipleHoldingRegisters: async (addr, length, unitID) => {
30
+ return this.handleRegisterRead(unitID, 0x03, addr, length);
31
+ },
32
+ getMultipleInputRegisters: async (addr, length, unitID) => {
33
+ return this.handleRegisterRead(unitID, 0x04, addr, length);
34
+ },
35
+ setRegister: async (addr, value, unitID) => {
36
+ return this.handleRegisterWrite(unitID, 0x06, addr, [value]);
37
+ },
38
+ setRegisterArray: async (addr, values, unitID) => {
39
+ return this.handleRegisterWrite(unitID, 0x10, addr, values);
40
+ },
41
+ getCoil: async (addr, unitID) => {
42
+ return this.handleCoilRead(unitID, 0x01, addr, 1);
43
+ },
44
+ getDiscreteInput: async (addr, unitID) => {
45
+ return this.handleCoilRead(unitID, 0x02, addr, 1);
46
+ },
47
+ setCoil: async (addr, value, unitID) => {
48
+ return this.handleCoilWrite(unitID, 0x05, addr, value);
49
+ },
50
+ };
51
+ // Build options - all values are required for TCP
52
+ const options = {
53
+ host: this.config.host,
54
+ port: this.config.port,
55
+ unitID: 255, // Listen to all unit IDs
56
+ };
57
+ // Create server
58
+ const server = new modbus_serial_1.ServerTCP(serviceVector, options);
59
+ this.server = server;
60
+ // Wait for initialized event
61
+ return new Promise((resolve) => {
62
+ server.on('initialized', () => {
63
+ this.started = true;
64
+ resolve();
65
+ });
66
+ // Handle errors
67
+ server.on('error', (err) => {
68
+ // Log error but don't stop server
69
+ console.error('TCP transport error:', err);
70
+ });
71
+ });
72
+ }
73
+ async stop() {
74
+ if (!this.started || !this.server) {
75
+ return;
76
+ }
77
+ return new Promise((resolve, reject) => {
78
+ if (!this.server) {
79
+ resolve();
80
+ return;
81
+ }
82
+ this.server.close((err) => {
83
+ if (err) {
84
+ reject(err);
85
+ }
86
+ else {
87
+ this.started = false;
88
+ delete this.server;
89
+ resolve();
90
+ }
91
+ });
92
+ });
93
+ }
94
+ send(_slaveId, _response) {
95
+ if (!this.started) {
96
+ return Promise.reject(new Error('Transport not started'));
97
+ }
98
+ // Responses are sent automatically by modbus-serial server
99
+ // This method is kept for interface compatibility
100
+ return Promise.resolve();
101
+ }
102
+ onRequest(handler) {
103
+ this.requestHandler = handler;
104
+ }
105
+ /**
106
+ * Handle register read operations
107
+ */
108
+ async handleRegisterRead(unitID, functionCode, addr, length) {
109
+ if (!this.requestHandler) {
110
+ throw new Error('No request handler set');
111
+ }
112
+ // Build Modbus request buffer
113
+ const request = Buffer.alloc(6);
114
+ request[0] = unitID;
115
+ request[1] = functionCode;
116
+ request.writeUInt16BE(addr, 2);
117
+ request.writeUInt16BE(length, 4);
118
+ // Call handler
119
+ const response = await this.requestHandler(unitID, request);
120
+ // Parse response
121
+ const byteCount = response[2];
122
+ if (byteCount === undefined || response.length < 3 + byteCount) {
123
+ throw new Error('Invalid response');
124
+ }
125
+ // Extract register values
126
+ const values = [];
127
+ for (let i = 0; i < byteCount / 2; i++) {
128
+ values.push(response.readUInt16BE(3 + i * 2));
129
+ }
130
+ return values;
131
+ }
132
+ /**
133
+ * Handle register write operations
134
+ */
135
+ async handleRegisterWrite(unitID, functionCode, addr, values) {
136
+ if (!this.requestHandler) {
137
+ throw new Error('No request handler set');
138
+ }
139
+ // Build Modbus request buffer
140
+ let request;
141
+ if (functionCode === 0x06) {
142
+ // Write single register
143
+ request = Buffer.alloc(6);
144
+ request[0] = unitID;
145
+ request[1] = functionCode;
146
+ request.writeUInt16BE(addr, 2);
147
+ request.writeUInt16BE(values[0] ?? 0, 4);
148
+ }
149
+ else {
150
+ // Write multiple registers
151
+ const byteCount = values.length * 2;
152
+ request = Buffer.alloc(7 + byteCount);
153
+ request[0] = unitID;
154
+ request[1] = functionCode;
155
+ request.writeUInt16BE(addr, 2);
156
+ request.writeUInt16BE(values.length, 4);
157
+ request[6] = byteCount;
158
+ for (let i = 0; i < values.length; i++) {
159
+ request.writeUInt16BE(values[i] ?? 0, 7 + i * 2);
160
+ }
161
+ }
162
+ // Call handler and ignore response
163
+ await this.requestHandler(unitID, request);
164
+ }
165
+ /**
166
+ * Handle coil read operations
167
+ */
168
+ async handleCoilRead(unitID, functionCode, addr, length) {
169
+ if (!this.requestHandler) {
170
+ throw new Error('No request handler set');
171
+ }
172
+ // Build Modbus request buffer
173
+ const request = Buffer.alloc(6);
174
+ request[0] = unitID;
175
+ request[1] = functionCode;
176
+ request.writeUInt16BE(addr, 2);
177
+ request.writeUInt16BE(length, 4);
178
+ // Call handler
179
+ const response = await this.requestHandler(unitID, request);
180
+ // Parse response - get first bit from first byte of coil data
181
+ const byteCount = response[2];
182
+ if (byteCount === undefined || response.length < 4) {
183
+ throw new Error('Invalid response');
184
+ }
185
+ const coilByte = response[3];
186
+ if (coilByte === undefined) {
187
+ throw new Error('Invalid response');
188
+ }
189
+ return (coilByte & 0x01) === 1;
190
+ }
191
+ /**
192
+ * Handle coil write operations
193
+ */
194
+ async handleCoilWrite(unitID, functionCode, addr, value) {
195
+ if (!this.requestHandler) {
196
+ throw new Error('No request handler set');
197
+ }
198
+ // Build Modbus request buffer
199
+ const request = Buffer.alloc(6);
200
+ request[0] = unitID;
201
+ request[1] = functionCode;
202
+ request.writeUInt16BE(addr, 2);
203
+ request.writeUInt16BE(value ? 0xff00 : 0x0000, 4);
204
+ // Call handler and ignore response
205
+ await this.requestHandler(unitID, request);
206
+ }
207
+ }
208
+ exports.TcpTransport = TcpTransport;
209
+ //# sourceMappingURL=tcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../../../src/transports/tcp.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export interface EmulatorConfig {
18
18
  stopBits?: 1 | 2;
19
19
  /** Data bits for RTU transport */
20
20
  dataBits?: 7 | 8;
21
+ /** Enable exclusive port locking (RTU) - default: true */
22
+ lock?: boolean;
21
23
  }
22
24
  export interface RegisterStorage {
23
25
  /** Holding registers (read/write) */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;IACnC,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IAChC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,qBAAqB,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3D,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IACrD,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,oCAAoC;IACpC,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;IACnC,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IAChC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,qBAAqB,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3D,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IACrD,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,oCAAoC;IACpC,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB"}
@@ -11,6 +11,7 @@ export interface ConfigFile {
11
11
  parity?: 'none' | 'even' | 'odd';
12
12
  dataBits?: 7 | 8;
13
13
  stopBits?: 1 | 2;
14
+ lock?: boolean;
14
15
  };
15
16
  devices: DeviceConfig[];
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;QAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;QACtB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;QAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;KACjB,CAAA;IACD,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBtE"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;QAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;QACtB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;QAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;IACD,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../src/utils/config-loader.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAwBH,gCAmBC;;AAzCD,0CAAsC;AAEtC,8DAA0B;AAiB1B;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEjD,gCAAgC;IAChC,IAAI,MAAe,CAAA;IAEnB,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,yBAAyB;IACzB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,OAAO,MAAoB,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAA;IAE7C,qBAAqB;IACrB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../src/utils/config-loader.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAyBH,gCAmBC;;AA1CD,0CAAsC;AAEtC,8DAA0B;AAkB1B;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEjD,gCAAgC;IAChC,IAAI,MAAe,CAAA;IAEnB,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,yBAAyB;IACzB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,OAAO,MAAoB,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAA;IAE7C,qBAAqB;IACrB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC"}