abb-rws-client 0.7.2 → 1.0.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.
- package/CHANGELOG.md +137 -0
- package/README.md +17 -8
- package/dist/HalJsonParser.d.ts +55 -0
- package/dist/HalJsonParser.d.ts.map +1 -0
- package/dist/HalJsonParser.js +155 -0
- package/dist/HalJsonParser.js.map +1 -0
- package/dist/HttpSession.d.ts.map +1 -1
- package/dist/HttpSession.js +13 -2
- package/dist/HttpSession.js.map +1 -1
- package/dist/IRWSAdapter.d.ts +7 -1
- package/dist/IRWSAdapter.d.ts.map +1 -1
- package/dist/MdnsDiscovery.d.ts +57 -0
- package/dist/MdnsDiscovery.d.ts.map +1 -0
- package/dist/MdnsDiscovery.js +313 -0
- package/dist/MdnsDiscovery.js.map +1 -0
- package/dist/MultiRobotManager.d.ts +5 -2
- package/dist/MultiRobotManager.d.ts.map +1 -1
- package/dist/MultiRobotManager.js +8 -3
- package/dist/MultiRobotManager.js.map +1 -1
- package/dist/RWS1Adapter.d.ts +60 -2
- package/dist/RWS1Adapter.d.ts.map +1 -1
- package/dist/RWS1Adapter.js +152 -4
- package/dist/RWS1Adapter.js.map +1 -1
- package/dist/ResourceMapper.d.ts +4 -0
- package/dist/ResourceMapper.d.ts.map +1 -1
- package/dist/ResourceMapper.js +9 -1
- package/dist/ResourceMapper.js.map +1 -1
- package/dist/RobotManager.d.ts +72 -12
- package/dist/RobotManager.d.ts.map +1 -1
- package/dist/RobotManager.js +255 -50
- package/dist/RobotManager.js.map +1 -1
- package/dist/RwsClient2.d.ts +150 -10
- package/dist/RwsClient2.d.ts.map +1 -1
- package/dist/RwsClient2.js +599 -236
- package/dist/RwsClient2.js.map +1 -1
- package/dist/WsSubscriber.d.ts +31 -5
- package/dist/WsSubscriber.d.ts.map +1 -1
- package/dist/WsSubscriber.js +104 -50
- package/dist/WsSubscriber.js.map +1 -1
- package/dist/detect.d.ts +12 -3
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +69 -25
- package/dist/detect.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/examples/05-remote-control-rmmp.mjs +10 -12
- package/examples/06-pull-module-source.mjs +13 -20
- package/package.json +62 -60
- package/src/HalJsonParser.ts +137 -0
- package/src/HttpSession.ts +460 -0
- package/src/IRWSAdapter.ts +422 -0
- package/src/Logger.ts +54 -0
- package/src/MdnsDiscovery.ts +336 -0
- package/src/MultiRobotManager.ts +159 -0
- package/src/RWS1Adapter.ts +1018 -0
- package/src/RWS2Adapter.ts +19 -0
- package/src/ResourceMapper.ts +517 -0
- package/src/ResponseParser.ts +710 -0
- package/src/RobotManager.ts +1705 -0
- package/src/RwsClient.ts +1150 -0
- package/src/RwsClient2.ts +2214 -0
- package/src/WsSubscriber.ts +350 -0
- package/src/XhtmlParser.ts +53 -0
- package/src/detect.ts +261 -0
- package/src/index.ts +83 -0
- package/src/types.ts +336 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** A controller found via mDNS. RW6 units carry no TXT → only name/host/port. */
|
|
2
|
+
export interface MdnsController {
|
|
3
|
+
/** Full mDNS instance label, e.g. `RobotWebServices_MyRobot`. */
|
|
4
|
+
instanceName: string;
|
|
5
|
+
/** Controller system name — the instance label minus the `RobotWebServices_` prefix. */
|
|
6
|
+
systemName: string;
|
|
7
|
+
/** IPv4 address (A record of the SRV target, else the responder's source address). */
|
|
8
|
+
host: string;
|
|
9
|
+
/** RWS port — TXT `RwsPort` when present, else the SRV port. */
|
|
10
|
+
port: number;
|
|
11
|
+
/** RobotWare version from TXT `RwVer` (RW7 only). */
|
|
12
|
+
rwVersion?: string;
|
|
13
|
+
/** System GUID from TXT `SysGuid` (RW7 only). */
|
|
14
|
+
sysGuid?: string;
|
|
15
|
+
/** PC SDK (RobApi) port from TXT `RobApiP` (RW7 only). */
|
|
16
|
+
robApiPort?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Heuristic, not a probe: RW7/OmniCore advertisements carry TXT metadata
|
|
19
|
+
* (`RwsPort`/`RwVer`) → 'rws2'; advertisements with no TXT data → 'rws1'
|
|
20
|
+
* (matches RW6 behavior); TXT present but without the ABB keys → 'unknown'.
|
|
21
|
+
* Confirm with `RobotManager.probeSpecificPort` before trusting it.
|
|
22
|
+
*/
|
|
23
|
+
probableProtocol: 'rws1' | 'rws2' | 'unknown';
|
|
24
|
+
}
|
|
25
|
+
/** Minimal slice of `dgram.Socket` used here — injectable for offline tests. */
|
|
26
|
+
export interface MdnsSocket {
|
|
27
|
+
on(event: 'message', cb: (msg: Buffer, rinfo: {
|
|
28
|
+
address: string;
|
|
29
|
+
port: number;
|
|
30
|
+
}) => void): void;
|
|
31
|
+
on(event: 'error', cb: (err: Error) => void): void;
|
|
32
|
+
on(event: string, cb: (...args: never[]) => void): void;
|
|
33
|
+
bind(port: number, address: string, cb: () => void): void;
|
|
34
|
+
send(msg: Uint8Array, port: number, address: string, cb?: (err: Error | null) => void): void;
|
|
35
|
+
setMulticastInterface(addr: string): void;
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
export interface MdnsDiscoveryOptions {
|
|
39
|
+
/** How long to collect replies before resolving. Default 2000 ms. */
|
|
40
|
+
timeoutMs?: number;
|
|
41
|
+
/** Test seam — defaults to `dgram.createSocket('udp4')`. */
|
|
42
|
+
socketFactory?: () => MdnsSocket;
|
|
43
|
+
/**
|
|
44
|
+
* IPv4 interface addresses to use as multicast egress (in addition to the
|
|
45
|
+
* OS default route). Defaults to every local IPv4 address — on Windows the
|
|
46
|
+
* default-route interface is often NOT the one the VCs/robots live on.
|
|
47
|
+
*/
|
|
48
|
+
interfaceAddrs?: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* One-shot mDNS browse for ABB controllers. Resolves after `timeoutMs`
|
|
52
|
+
* (default 2000) with every `RobotWebServices_*` instance heard, deduped by
|
|
53
|
+
* instance name. Never rejects — socket errors resolve with what was
|
|
54
|
+
* collected so far.
|
|
55
|
+
*/
|
|
56
|
+
export declare function discoverControllersMdns(opts?: MdnsDiscoveryOptions): Promise<MdnsController[]>;
|
|
57
|
+
//# sourceMappingURL=MdnsDiscovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MdnsDiscovery.d.ts","sourceRoot":"","sources":["../src/MdnsDiscovery.ts"],"names":[],"mappings":"AA2BA,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7F,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,UAAU,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAsMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAyDlG"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mDNS/Bonjour discovery of ABB controllers — zero dependencies (node:dgram +
|
|
3
|
+
* hand-rolled DNS wire parsing).
|
|
4
|
+
*
|
|
5
|
+
* Live-verified 2026-07-08/09 against five RobotStudio VCs (1× RW6.16 IRC5,
|
|
6
|
+
* 4× RW7.21 OmniCore) on this network:
|
|
7
|
+
* - Every controller/VC advertises the `_http._tcp.local` service with
|
|
8
|
+
* instance name `RobotWebServices_<systemname>`. ABB's manual documents
|
|
9
|
+
* browsing the `rws` SUBTYPE (`dns-sd -B _http._tcp,rws`), so we query
|
|
10
|
+
* `rws._sub._http._tcp.local` first and plain `_http._tcp.local` as a
|
|
11
|
+
* fallback (some stacks don't answer subtype PTR queries).
|
|
12
|
+
* - RW7 VCs attach TXT records: `RwVer=7.21.0 SysGuid=<guid> RwsPort=5466
|
|
13
|
+
* RobApiP=2558 WanIp= VC=`. RW6 VCs advertise name + SRV(port) only —
|
|
14
|
+
* NO TXT metadata. That asymmetry is the protocol heuristic below.
|
|
15
|
+
* - The SRV target is the machine hostname (e.g. `DESKTOP-X.local`); the
|
|
16
|
+
* address comes from the A record in the additionals section, falling
|
|
17
|
+
* back to the UDP responder's source address.
|
|
18
|
+
*
|
|
19
|
+
* Strategy: one-shot LEGACY unicast query (RFC 6762 §6.7) — bind an ephemeral
|
|
20
|
+
* UDP port (never 5353 itself; mDNSResponder owns it), send standard DNS PTR
|
|
21
|
+
* queries to 224.0.0.251:5353, and collect the unicast replies until the
|
|
22
|
+
* timeout. Windows multicast egress is per-interface, so when the host has
|
|
23
|
+
* several IPv4 interfaces the query is re-sent through each one.
|
|
24
|
+
*/
|
|
25
|
+
import * as dgram from 'dgram';
|
|
26
|
+
import * as os from 'os';
|
|
27
|
+
const MDNS_ADDR = '224.0.0.251';
|
|
28
|
+
const MDNS_PORT = 5353;
|
|
29
|
+
const QUERY_NAMES = ['rws._sub._http._tcp.local', '_http._tcp.local'];
|
|
30
|
+
const INSTANCE_PREFIX = 'RobotWebServices_';
|
|
31
|
+
// DNS record types we care about
|
|
32
|
+
const TYPE_A = 1;
|
|
33
|
+
const TYPE_PTR = 12;
|
|
34
|
+
const TYPE_TXT = 16;
|
|
35
|
+
const TYPE_SRV = 33;
|
|
36
|
+
// ─── Wire encoding ────────────────────────────────────────────────────────────
|
|
37
|
+
/** Build a standard one-question DNS PTR query (legacy unicast — plain QCLASS IN). */
|
|
38
|
+
function buildPtrQuery(name, id) {
|
|
39
|
+
const parts = [];
|
|
40
|
+
const header = Buffer.alloc(12);
|
|
41
|
+
header.writeUInt16BE(id, 0);
|
|
42
|
+
header.writeUInt16BE(1, 4); // QDCOUNT
|
|
43
|
+
parts.push(header);
|
|
44
|
+
for (const label of name.split('.')) {
|
|
45
|
+
if (label.length === 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const lb = Buffer.from(label, 'utf8');
|
|
49
|
+
parts.push(Buffer.from([lb.length]), lb);
|
|
50
|
+
}
|
|
51
|
+
const tail = Buffer.alloc(5);
|
|
52
|
+
tail.writeUInt16BE(TYPE_PTR, 1); // byte 0 is the root-label terminator
|
|
53
|
+
tail.writeUInt16BE(1, 3); // QCLASS IN
|
|
54
|
+
parts.push(tail);
|
|
55
|
+
return Buffer.concat(parts);
|
|
56
|
+
}
|
|
57
|
+
// ─── Wire parsing ─────────────────────────────────────────────────────────────
|
|
58
|
+
/**
|
|
59
|
+
* Decode a (possibly compressed) domain name. Returns the labels and the
|
|
60
|
+
* offset just past the name in the original (non-pointer) stream. Throws on
|
|
61
|
+
* truncation and pointer loops — callers treat any throw as "malformed
|
|
62
|
+
* packet, ignore".
|
|
63
|
+
*/
|
|
64
|
+
function readName(buf, offset) {
|
|
65
|
+
const labels = [];
|
|
66
|
+
let pos = offset;
|
|
67
|
+
let next = -1; // set on the first compression jump
|
|
68
|
+
let jumps = 0;
|
|
69
|
+
for (;;) {
|
|
70
|
+
if (pos >= buf.length) {
|
|
71
|
+
throw new Error('name runs past end of packet');
|
|
72
|
+
}
|
|
73
|
+
const len = buf[pos];
|
|
74
|
+
if (len === 0) {
|
|
75
|
+
pos += 1;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
if ((len & 0xc0) === 0xc0) {
|
|
79
|
+
if (pos + 1 >= buf.length) {
|
|
80
|
+
throw new Error('truncated compression pointer');
|
|
81
|
+
}
|
|
82
|
+
if (++jumps > 64) {
|
|
83
|
+
throw new Error('compression pointer loop');
|
|
84
|
+
}
|
|
85
|
+
if (next < 0) {
|
|
86
|
+
next = pos + 2;
|
|
87
|
+
}
|
|
88
|
+
pos = ((len & 0x3f) << 8) | buf[pos + 1];
|
|
89
|
+
}
|
|
90
|
+
else if ((len & 0xc0) !== 0) {
|
|
91
|
+
throw new Error('reserved label type');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
if (pos + 1 + len > buf.length) {
|
|
95
|
+
throw new Error('label runs past end of packet');
|
|
96
|
+
}
|
|
97
|
+
labels.push(buf.toString('utf8', pos + 1, pos + 1 + len));
|
|
98
|
+
pos += 1 + len;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { labels, next: next < 0 ? pos : next };
|
|
102
|
+
}
|
|
103
|
+
/** Parse a TXT rdata (length-prefixed `key=value` strings) into a lowercase-keyed map. */
|
|
104
|
+
function parseTxt(buf, start, len) {
|
|
105
|
+
const out = {};
|
|
106
|
+
const end = start + len;
|
|
107
|
+
let pos = start;
|
|
108
|
+
while (pos < end) {
|
|
109
|
+
const l = buf[pos];
|
|
110
|
+
pos += 1;
|
|
111
|
+
if (l === 0) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const s = buf.toString('utf8', pos, Math.min(pos + l, end));
|
|
115
|
+
pos += l;
|
|
116
|
+
const eq = s.indexOf('=');
|
|
117
|
+
const key = (eq >= 0 ? s.slice(0, eq) : s).toLowerCase();
|
|
118
|
+
if (key) {
|
|
119
|
+
out[key] = eq >= 0 ? s.slice(eq + 1) : '';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parse one reply packet into the store. Answers, authority, and additionals
|
|
126
|
+
* are treated uniformly — responders put the A record for the SRV target in
|
|
127
|
+
* additionals. Throws on malformed data (caller ignores the packet).
|
|
128
|
+
*/
|
|
129
|
+
function ingestPacket(buf, srcAddr, store) {
|
|
130
|
+
if (buf.length < 12) {
|
|
131
|
+
throw new Error('packet shorter than DNS header');
|
|
132
|
+
}
|
|
133
|
+
if ((buf.readUInt16BE(2) & 0x8000) === 0) {
|
|
134
|
+
return;
|
|
135
|
+
} // a query, not a response
|
|
136
|
+
const qdCount = buf.readUInt16BE(4);
|
|
137
|
+
const rrCount = buf.readUInt16BE(6) + buf.readUInt16BE(8) + buf.readUInt16BE(10);
|
|
138
|
+
let pos = 12;
|
|
139
|
+
for (let i = 0; i < qdCount; i++) {
|
|
140
|
+
pos = readName(buf, pos).next + 4; // skip QTYPE + QCLASS
|
|
141
|
+
}
|
|
142
|
+
const register = (labels) => {
|
|
143
|
+
const key = labels.join('.').toLowerCase();
|
|
144
|
+
store.instances.set(key, { instanceLabel: labels[0], srcAddr });
|
|
145
|
+
return key;
|
|
146
|
+
};
|
|
147
|
+
for (let i = 0; i < rrCount; i++) {
|
|
148
|
+
const { labels, next } = readName(buf, pos);
|
|
149
|
+
pos = next;
|
|
150
|
+
if (pos + 10 > buf.length) {
|
|
151
|
+
throw new Error('record header runs past end of packet');
|
|
152
|
+
}
|
|
153
|
+
const type = buf.readUInt16BE(pos);
|
|
154
|
+
const rdLen = buf.readUInt16BE(pos + 8);
|
|
155
|
+
pos += 10;
|
|
156
|
+
if (pos + rdLen > buf.length) {
|
|
157
|
+
throw new Error('rdata runs past end of packet');
|
|
158
|
+
}
|
|
159
|
+
if (type === TYPE_PTR) {
|
|
160
|
+
const target = readName(buf, pos).labels;
|
|
161
|
+
if (target[0]?.startsWith(INSTANCE_PREFIX)) {
|
|
162
|
+
register(target);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else if (type === TYPE_SRV && labels[0]?.startsWith(INSTANCE_PREFIX)) {
|
|
166
|
+
if (rdLen < 8) {
|
|
167
|
+
throw new Error('SRV rdata too short');
|
|
168
|
+
}
|
|
169
|
+
const port = buf.readUInt16BE(pos + 4);
|
|
170
|
+
const target = readName(buf, pos + 6).labels.join('.');
|
|
171
|
+
store.srv.set(register(labels), { target, port });
|
|
172
|
+
}
|
|
173
|
+
else if (type === TYPE_TXT && labels[0]?.startsWith(INSTANCE_PREFIX)) {
|
|
174
|
+
store.txt.set(register(labels), parseTxt(buf, pos, rdLen));
|
|
175
|
+
}
|
|
176
|
+
else if (type === TYPE_A && rdLen >= 4) {
|
|
177
|
+
store.a.set(labels.join('.').toLowerCase(), `${buf[pos]}.${buf[pos + 1]}.${buf[pos + 2]}.${buf[pos + 3]}`);
|
|
178
|
+
}
|
|
179
|
+
pos += rdLen;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// ─── Aggregation ──────────────────────────────────────────────────────────────
|
|
183
|
+
function positiveInt(value) {
|
|
184
|
+
if (!value) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
const n = parseInt(value, 10);
|
|
188
|
+
return Number.isFinite(n) && n > 0 ? n : undefined;
|
|
189
|
+
}
|
|
190
|
+
function buildControllers(store) {
|
|
191
|
+
const byInstance = new Map();
|
|
192
|
+
for (const [key, inst] of store.instances) {
|
|
193
|
+
const srv = store.srv.get(key);
|
|
194
|
+
const txt = store.txt.get(key);
|
|
195
|
+
const hasTxtData = txt !== undefined && Object.keys(txt).length > 0;
|
|
196
|
+
const port = positiveInt(txt?.['rwsport']) ?? srv?.port;
|
|
197
|
+
if (!port) {
|
|
198
|
+
continue;
|
|
199
|
+
} // no SRV and no RwsPort — nothing to connect to
|
|
200
|
+
const host = (srv && store.a.get(srv.target.toLowerCase())) ?? inst.srcAddr;
|
|
201
|
+
const controller = {
|
|
202
|
+
instanceName: inst.instanceLabel,
|
|
203
|
+
systemName: inst.instanceLabel.slice(INSTANCE_PREFIX.length),
|
|
204
|
+
host,
|
|
205
|
+
port,
|
|
206
|
+
probableProtocol: hasTxtData
|
|
207
|
+
? (txt['rwsport'] || txt['rwver'] ? 'rws2' : 'unknown')
|
|
208
|
+
: 'rws1',
|
|
209
|
+
};
|
|
210
|
+
const rwVersion = txt?.['rwver'];
|
|
211
|
+
if (rwVersion) {
|
|
212
|
+
controller.rwVersion = rwVersion;
|
|
213
|
+
}
|
|
214
|
+
const sysGuid = txt?.['sysguid'];
|
|
215
|
+
if (sysGuid) {
|
|
216
|
+
controller.sysGuid = sysGuid;
|
|
217
|
+
}
|
|
218
|
+
const robApiPort = positiveInt(txt?.['robapip']);
|
|
219
|
+
if (robApiPort !== undefined) {
|
|
220
|
+
controller.robApiPort = robApiPort;
|
|
221
|
+
}
|
|
222
|
+
if (!byInstance.has(controller.instanceName)) {
|
|
223
|
+
byInstance.set(controller.instanceName, controller);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return [...byInstance.values()];
|
|
227
|
+
}
|
|
228
|
+
/** Non-internal-first list of local IPv4 addresses, for multicast egress retries. */
|
|
229
|
+
function ipv4InterfaceAddrs() {
|
|
230
|
+
const addrs = [];
|
|
231
|
+
for (const infos of Object.values(os.networkInterfaces())) {
|
|
232
|
+
for (const info of infos ?? []) {
|
|
233
|
+
// Node <18.0 reports family as the string 'IPv4', ≥18.0 sometimes as the number 4
|
|
234
|
+
if ((info.family === 'IPv4' || info.family === 4) && !info.internal) {
|
|
235
|
+
addrs.push(info.address);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return addrs;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* One-shot mDNS browse for ABB controllers. Resolves after `timeoutMs`
|
|
243
|
+
* (default 2000) with every `RobotWebServices_*` instance heard, deduped by
|
|
244
|
+
* instance name. Never rejects — socket errors resolve with what was
|
|
245
|
+
* collected so far.
|
|
246
|
+
*/
|
|
247
|
+
export function discoverControllersMdns(opts = {}) {
|
|
248
|
+
const timeoutMs = opts.timeoutMs ?? 2000;
|
|
249
|
+
const factory = opts.socketFactory ?? (() => dgram.createSocket({ type: 'udp4', reuseAddr: true }));
|
|
250
|
+
return new Promise(resolve => {
|
|
251
|
+
const store = { instances: new Map(), srv: new Map(), txt: new Map(), a: new Map() };
|
|
252
|
+
let socket;
|
|
253
|
+
try {
|
|
254
|
+
socket = factory();
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
resolve([]);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
let settled = false;
|
|
261
|
+
const finish = () => {
|
|
262
|
+
if (settled) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
settled = true;
|
|
266
|
+
clearTimeout(timer);
|
|
267
|
+
try {
|
|
268
|
+
socket.close();
|
|
269
|
+
}
|
|
270
|
+
catch { /* already closed */ }
|
|
271
|
+
resolve(buildControllers(store));
|
|
272
|
+
};
|
|
273
|
+
const timer = setTimeout(finish, timeoutMs);
|
|
274
|
+
socket.on('error', () => finish());
|
|
275
|
+
socket.on('message', (msg, rinfo) => {
|
|
276
|
+
try {
|
|
277
|
+
ingestPacket(msg, rinfo.address, store);
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
// malformed or non-DNS packet — 5353 traffic is noisy, just skip it
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
try {
|
|
284
|
+
socket.bind(0, '0.0.0.0', () => {
|
|
285
|
+
const queries = QUERY_NAMES.map((name, i) => buildPtrQuery(name, i + 1));
|
|
286
|
+
const sendAll = () => {
|
|
287
|
+
for (const q of queries) {
|
|
288
|
+
try {
|
|
289
|
+
socket.send(q, MDNS_PORT, MDNS_ADDR, () => { });
|
|
290
|
+
}
|
|
291
|
+
catch { /* ditto */ }
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
sendAll(); // OS default multicast egress
|
|
295
|
+
// Windows picks ONE egress interface per send — retry through each
|
|
296
|
+
// IPv4 interface so controllers on non-default-route networks answer.
|
|
297
|
+
for (const addr of opts.interfaceAddrs ?? ipv4InterfaceAddrs()) {
|
|
298
|
+
try {
|
|
299
|
+
socket.setMulticastInterface(addr);
|
|
300
|
+
sendAll();
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// interface can't multicast (VPN/virtual adapters) — skip
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
finish();
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=MdnsDiscovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MdnsDiscovery.js","sourceRoot":"","sources":["../src/MdnsDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RobotManager } from './RobotManager.js';
|
|
2
|
-
import type { RobotState, ErrorListener } from './RobotManager.js';
|
|
2
|
+
import type { RobotState, ErrorListener, RobotManagerOptions } from './RobotManager.js';
|
|
3
3
|
import type { FileEntry } from './types.js';
|
|
4
4
|
export interface RobotConfig {
|
|
5
5
|
id: string;
|
|
@@ -17,11 +17,14 @@ export interface RobotConfig {
|
|
|
17
17
|
* One robot is "active" at a time — all panels display that robot's state.
|
|
18
18
|
*/
|
|
19
19
|
export declare class MultiRobotManager {
|
|
20
|
+
private readonly managerOptions?;
|
|
20
21
|
private managers;
|
|
21
22
|
private configMap;
|
|
22
23
|
private _activeId;
|
|
23
24
|
private handlers;
|
|
24
25
|
private errorListener;
|
|
26
|
+
/** Options forwarded to every RobotManager this instance creates (current and future). */
|
|
27
|
+
constructor(managerOptions?: RobotManagerOptions | undefined);
|
|
25
28
|
/** The currently selected robot's manager, or null if no robots configured. */
|
|
26
29
|
get active(): RobotManager | null;
|
|
27
30
|
get activeId(): string | null;
|
|
@@ -48,7 +51,7 @@ export declare class MultiRobotManager {
|
|
|
48
51
|
connectRobot(id: string): Promise<void>;
|
|
49
52
|
disconnectRobot(id: string): Promise<void>;
|
|
50
53
|
/** Create a MultiRobotManager from persisted configs, with backward compatibility for legacy single-robot settings. */
|
|
51
|
-
static fromConfigs(configs: RobotConfig[]): MultiRobotManager;
|
|
54
|
+
static fromConfigs(configs: RobotConfig[], opts?: RobotManagerOptions): MultiRobotManager;
|
|
52
55
|
/** Generate a new robot config ID. */
|
|
53
56
|
static newId(): string;
|
|
54
57
|
private notify;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiRobotManager.d.ts","sourceRoot":"","sources":["../src/MultiRobotManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiRobotManager.d.ts","sourceRoot":"","sources":["../src/MultiRobotManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAQhB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAP5C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,aAAa,CAA8B;IAEnD,0FAA0F;gBAC7D,cAAc,CAAC,EAAE,mBAAmB,YAAA;IAIjE,+EAA+E;IAC/E,IAAI,MAAM,IAAI,YAAY,GAAG,IAAI,CAEhC;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAA2B;IAExD,kDAAkD;IAClD,IAAI,OAAO,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC,CAI/E;IAED,IAAI,OAAO,IAAI,WAAW,EAAE,CAAyC;IAIrE,IAAI,KAAK,IAAI,UAAU,CAOtB;IAED,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IAM1B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQ7D,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAUnC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;IAQvE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU7B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IASrB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,uHAAuH;IACvH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,iBAAiB;IAMzF,sCAAsC;IACtC,MAAM,CAAC,KAAK,IAAI,MAAM;IAMtB,OAAO,CAAC,MAAM;CACf"}
|
|
@@ -5,11 +5,16 @@ import { RobotManager } from './RobotManager.js';
|
|
|
5
5
|
* One robot is "active" at a time — all panels display that robot's state.
|
|
6
6
|
*/
|
|
7
7
|
export class MultiRobotManager {
|
|
8
|
+
managerOptions;
|
|
8
9
|
managers = new Map();
|
|
9
10
|
configMap = new Map();
|
|
10
11
|
_activeId = null;
|
|
11
12
|
handlers = [];
|
|
12
13
|
errorListener = null;
|
|
14
|
+
/** Options forwarded to every RobotManager this instance creates (current and future). */
|
|
15
|
+
constructor(managerOptions) {
|
|
16
|
+
this.managerOptions = managerOptions;
|
|
17
|
+
}
|
|
13
18
|
// ── Accessors ──────────────────────────────────────────────────────────────
|
|
14
19
|
/** The currently selected robot's manager, or null if no robots configured. */
|
|
15
20
|
get active() {
|
|
@@ -54,7 +59,7 @@ export class MultiRobotManager {
|
|
|
54
59
|
}
|
|
55
60
|
// ── Robot management ───────────────────────────────────────────────────────
|
|
56
61
|
addRobot(config) {
|
|
57
|
-
const mgr = new RobotManager();
|
|
62
|
+
const mgr = new RobotManager(this.managerOptions);
|
|
58
63
|
mgr.onDidChange(() => this.notify());
|
|
59
64
|
if (this.errorListener) {
|
|
60
65
|
mgr.onError(this.errorListener);
|
|
@@ -114,8 +119,8 @@ export class MultiRobotManager {
|
|
|
114
119
|
}
|
|
115
120
|
// ── Serialization ──────────────────────────────────────────────────────────
|
|
116
121
|
/** Create a MultiRobotManager from persisted configs, with backward compatibility for legacy single-robot settings. */
|
|
117
|
-
static fromConfigs(configs) {
|
|
118
|
-
const m = new MultiRobotManager();
|
|
122
|
+
static fromConfigs(configs, opts) {
|
|
123
|
+
const m = new MultiRobotManager(opts);
|
|
119
124
|
configs.forEach(c => m.addRobot(c));
|
|
120
125
|
return m;
|
|
121
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiRobotManager.js","sourceRoot":"","sources":["../src/MultiRobotManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBjD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"MultiRobotManager.js","sourceRoot":"","sources":["../src/MultiRobotManager.ts"],"names":[],"mappings":"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"}
|
package/dist/RWS1Adapter.d.ts
CHANGED
|
@@ -56,7 +56,7 @@ export declare class RWS1Adapter implements IRWSAdapter {
|
|
|
56
56
|
setUiInstructionParam(su: string, up: string, v: string): Promise<void>;
|
|
57
57
|
getJointPositions(u?: string): Promise<JointTarget>;
|
|
58
58
|
getCartesianFull(u?: string): Promise<import("./types.js").CartesianFull>;
|
|
59
|
-
/**
|
|
59
|
+
/** List mechanical units from the controller (positioners/track units show up beyond ROB_1). */
|
|
60
60
|
listMechunits(): Promise<string[]>;
|
|
61
61
|
getSystemInfo(): Promise<import("./types.js").SystemInfo>;
|
|
62
62
|
getControllerIdentity(): Promise<import("./types.js").ControllerIdentity>;
|
|
@@ -117,7 +117,7 @@ export declare class RWS1Adapter implements IRWSAdapter {
|
|
|
117
117
|
* Forward kinematics on RWS 1.0. Same VC-license caveat as IK.
|
|
118
118
|
*/
|
|
119
119
|
calcCartesianFromJoints(joints: JointTarget, mechunit?: string, tool?: string, wobj?: string): Promise<RobTarget>;
|
|
120
|
-
subscribe(resources: SubscriptionResource[], handler: (event: SubscriptionEvent) => void): Promise<() => Promise<void>>;
|
|
120
|
+
subscribe(resources: SubscriptionResource[], handler: (event: SubscriptionEvent) => void, _onLost?: () => void): Promise<() => Promise<void>>;
|
|
121
121
|
/** Monotonic counter required by RWS jog endpoint (rejects duplicate ccount values). */
|
|
122
122
|
private jogCcount;
|
|
123
123
|
jog(params: {
|
|
@@ -202,6 +202,36 @@ export declare class RWS1Adapter implements IRWSAdapter {
|
|
|
202
202
|
listCfgTypes(domain: string): Promise<string[]>;
|
|
203
203
|
listCfgInstances(domain: string, type: string): Promise<string[]>;
|
|
204
204
|
getCfgInstance(domain: string, type: string, instance: string): Promise<Record<string, string>>;
|
|
205
|
+
/**
|
|
206
|
+
* Update attributes on an existing configuration instance.
|
|
207
|
+
* Live-verified 2026-07-09 on IRC5 VC RW6.16 via probe-cfg-rws1.mjs:
|
|
208
|
+
* ✓ POST /rw/cfg/{domain}/{type}/instances/{instance}?action=set
|
|
209
|
+
* body: PLAIN form values `Attr=value&…` (percent-encoded) → 204,
|
|
210
|
+
* partial attribute sets accepted.
|
|
211
|
+
* Acquires cfg-domain mastership around the write. (The VC accepts cfg
|
|
212
|
+
* writes without it, but real controllers arbitrate cfg access through
|
|
213
|
+
* mastership — and taking it when free is harmless.)
|
|
214
|
+
*/
|
|
215
|
+
setCfgInstance(domain: string, type: string, instance: string, attrs: Record<string, string>): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* Create a new configuration instance, then apply `attrs`.
|
|
218
|
+
* Live-verified 2026-07-09 on IRC5 VC RW6.16:
|
|
219
|
+
* ✓ POST /rw/cfg/{domain}/{type}/instances?action=create-default
|
|
220
|
+
* body name={instance} → 201 (duplicate name → 400), then the
|
|
221
|
+
* ?action=set shape above for the attribute values.
|
|
222
|
+
* Acquires cfg-domain mastership once around the create+set pair.
|
|
223
|
+
*/
|
|
224
|
+
createCfgInstance(domain: string, type: string, instance: string, attrs: Record<string, string>): Promise<void>;
|
|
225
|
+
/**
|
|
226
|
+
* Delete a configuration instance.
|
|
227
|
+
* Live-verified 2026-07-09 on IRC5 VC RW6.16:
|
|
228
|
+
* ✓ DELETE /rw/cfg/{domain}/{type}/instances/{instance} → 204
|
|
229
|
+
* (reading the instance back afterwards → 400 "unknown instance",
|
|
230
|
+
* unlike RWS 2.0 which answers 404).
|
|
231
|
+
*/
|
|
232
|
+
removeCfgInstance(domain: string, type: string, instance: string): Promise<void>;
|
|
233
|
+
/** Shared ?action=set POST — plain `Attr=value` form pairs (RWS 1.0 wire shape). */
|
|
234
|
+
private postCfgSet;
|
|
205
235
|
listBackups(): Promise<Array<{
|
|
206
236
|
name: string;
|
|
207
237
|
created?: string;
|
|
@@ -257,7 +287,35 @@ export declare class RWS1Adapter implements IRWSAdapter {
|
|
|
257
287
|
}>>;
|
|
258
288
|
getVisionSystemInfo(name: string): Promise<Record<string, string>>;
|
|
259
289
|
triggerVisionJob(system: string): Promise<void>;
|
|
290
|
+
/**
|
|
291
|
+
* Save a loaded module's program-memory source to controller disk.
|
|
292
|
+
* Live-verified 2026-07-09 on IRC5 VC RW6.16:
|
|
293
|
+
* POST /rw/rapid/tasks/{task}?action=savemod is DEAD — 400 ARG_ERROR
|
|
294
|
+
* (-1073445879, rws_resource_rapid_task.cpp[952]) for every body shape
|
|
295
|
+
* including the empty body, and the task resource advertises no savemod
|
|
296
|
+
* action. The working endpoint is the module-save action (same one
|
|
297
|
+
* readModuleViaSave uses):
|
|
298
|
+
* POST /rw/rapid/modules/{module}?task={task}&action=save
|
|
299
|
+
* body name=<file>&path=<dir> → 204
|
|
300
|
+
* The controller blindly appends '.mod' to the given name — even when it
|
|
301
|
+
* already ends in .mod (name=save1.mod wrote $TEMP/save1.mod.mod) — so a
|
|
302
|
+
* trailing .mod/.sys extension on the destination is stripped here.
|
|
303
|
+
* `filepath` may be a directory ('$TEMP'), a full destination path
|
|
304
|
+
* ('$HOME/backups/Copy.mod'), or a bare file name ('Copy.mod', saved under
|
|
305
|
+
* $HOME); a directory destination saves under the module's own name.
|
|
306
|
+
*/
|
|
260
307
|
saveModule(task: string, moduleName: string, filepath: string): Promise<void>;
|
|
308
|
+
getModuleSource(task: string, moduleName: string): Promise<string>;
|
|
309
|
+
/**
|
|
310
|
+
* Read a module's source by round-tripping it through the $TEMP volume.
|
|
311
|
+
* Live-verified 2026-07-08 on IRC5 VC RW6.16:
|
|
312
|
+
* POST /rw/rapid/modules/{module}?task={task}&action=save body name=<tmp>&path=$TEMP
|
|
313
|
+
* → 204, no mastership required. The controller ALWAYS appends '.mod' to
|
|
314
|
+
* the given name (even for SysMod modules — never '.sys'), so the name is
|
|
315
|
+
* passed without extension. Note the $-root has no trailing colon/slash,
|
|
316
|
+
* unlike RWS 2.0's 'TEMP:'.
|
|
317
|
+
*/
|
|
318
|
+
private readModuleViaSave;
|
|
261
319
|
listModuleRoutines(task: string, moduleName: string): Promise<Array<{
|
|
262
320
|
name: string;
|
|
263
321
|
type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RWS1Adapter.d.ts","sourceRoot":"","sources":["../src/RWS1Adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RWS1Adapter.d.ts","sourceRoot":"","sources":["../src/RWS1Adapter.ts"],"names":[],"mappings":"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"}
|