abb-rws-client 0.5.0 → 0.7.2
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 +203 -0
- package/README.md +215 -28
- package/dist/HttpSession.d.ts.map +1 -1
- package/dist/HttpSession.js +18 -1
- package/dist/HttpSession.js.map +1 -1
- package/dist/IRWSAdapter.d.ts +421 -0
- package/dist/IRWSAdapter.d.ts.map +1 -0
- package/dist/IRWSAdapter.js +2 -0
- package/dist/IRWSAdapter.js.map +1 -0
- package/dist/Logger.d.ts +35 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +24 -0
- package/dist/Logger.js.map +1 -0
- package/dist/MultiRobotManager.d.ts +56 -0
- package/dist/MultiRobotManager.d.ts.map +1 -0
- package/dist/MultiRobotManager.js +129 -0
- package/dist/MultiRobotManager.js.map +1 -0
- package/dist/RWS1Adapter.d.ts +297 -0
- package/dist/RWS1Adapter.d.ts.map +1 -0
- package/dist/RWS1Adapter.js +870 -0
- package/dist/RWS1Adapter.js.map +1 -0
- package/dist/RWS2Adapter.d.ts +20 -0
- package/dist/RWS2Adapter.d.ts.map +1 -0
- package/dist/RWS2Adapter.js +19 -0
- package/dist/RWS2Adapter.js.map +1 -0
- package/dist/ResourceMapper.d.ts +9 -2
- package/dist/ResourceMapper.d.ts.map +1 -1
- package/dist/ResourceMapper.js +11 -3
- package/dist/ResourceMapper.js.map +1 -1
- package/dist/RobotManager.d.ts +536 -0
- package/dist/RobotManager.d.ts.map +1 -0
- package/dist/RobotManager.js +1523 -0
- package/dist/RobotManager.js.map +1 -0
- package/dist/RwsClient.d.ts +33 -3
- package/dist/RwsClient.d.ts.map +1 -1
- package/dist/RwsClient.js +74 -10
- package/dist/RwsClient.js.map +1 -1
- package/dist/RwsClient2.d.ts +438 -0
- package/dist/RwsClient2.d.ts.map +1 -0
- package/dist/RwsClient2.js +1672 -0
- package/dist/RwsClient2.js.map +1 -0
- package/dist/XhtmlParser.d.ts +24 -0
- package/dist/XhtmlParser.d.ts.map +1 -0
- package/dist/XhtmlParser.js +56 -0
- package/dist/XhtmlParser.js.map +1 -0
- package/dist/detect.d.ts +54 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +187 -0
- package/dist/detect.js.map +1 -0
- package/dist/index.d.ts +29 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/examples/01-quickstart-auto.mjs +20 -0
- package/examples/02-rws1-explicit.mjs +30 -0
- package/examples/03-rws2-explicit.mjs +26 -0
- package/examples/04-multi-robot.mjs +35 -0
- package/examples/05-remote-control-rmmp.mjs +52 -0
- package/examples/06-pull-module-source.mjs +38 -0
- package/package.json +30 -4
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
import { RobotManager } from './RobotManager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Manages multiple RobotManager instances.
|
|
5
|
+
* One robot is "active" at a time — all panels display that robot's state.
|
|
6
|
+
*/
|
|
7
|
+
export class MultiRobotManager {
|
|
8
|
+
managers = new Map();
|
|
9
|
+
configMap = new Map();
|
|
10
|
+
_activeId = null;
|
|
11
|
+
handlers = [];
|
|
12
|
+
errorListener = null;
|
|
13
|
+
// ── Accessors ──────────────────────────────────────────────────────────────
|
|
14
|
+
/** The currently selected robot's manager, or null if no robots configured. */
|
|
15
|
+
get active() {
|
|
16
|
+
return this._activeId ? (this.managers.get(this._activeId) ?? null) : null;
|
|
17
|
+
}
|
|
18
|
+
get activeId() { return this._activeId; }
|
|
19
|
+
/** All robots with their configs and managers. */
|
|
20
|
+
get entries() {
|
|
21
|
+
return [...this.managers.entries()].map(([id, manager]) => ({
|
|
22
|
+
id, config: this.configMap.get(id), manager,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
get configs() { return [...this.configMap.values()]; }
|
|
26
|
+
// ── State interface (satisfies providers that only need state) ─────────────
|
|
27
|
+
get state() {
|
|
28
|
+
return this.active?.state ?? {
|
|
29
|
+
connected: false, host: '', ctrlstate: null, opmode: null,
|
|
30
|
+
execstate: null, execCycle: null, speedRatio: null, coldetstate: null,
|
|
31
|
+
tasks: [], modules: [], mechunits: [], joints: null, cartesian: null,
|
|
32
|
+
cartesianFull: null, identity: null, systemInfo: null, eventLog: [], ioSignals: [],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
onDidChange(fn) { this.handlers.push(fn); }
|
|
36
|
+
/**
|
|
37
|
+
* Install an error listener that gets attached to every current AND future
|
|
38
|
+
* RobotManager. Convenience for hosts that want a single sink for connection
|
|
39
|
+
* failures across all robots.
|
|
40
|
+
*/
|
|
41
|
+
onError(fn) {
|
|
42
|
+
this.errorListener = fn;
|
|
43
|
+
for (const mgr of this.managers.values()) {
|
|
44
|
+
mgr.onError(fn);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Delegated methods for providers that call manager methods directly
|
|
48
|
+
async listDirectory(remotePath) {
|
|
49
|
+
const m = this.active;
|
|
50
|
+
if (!m) {
|
|
51
|
+
throw new Error('No active robot');
|
|
52
|
+
}
|
|
53
|
+
return m.listDirectory(remotePath);
|
|
54
|
+
}
|
|
55
|
+
// ── Robot management ───────────────────────────────────────────────────────
|
|
56
|
+
addRobot(config) {
|
|
57
|
+
const mgr = new RobotManager();
|
|
58
|
+
mgr.onDidChange(() => this.notify());
|
|
59
|
+
if (this.errorListener) {
|
|
60
|
+
mgr.onError(this.errorListener);
|
|
61
|
+
}
|
|
62
|
+
this.managers.set(config.id, mgr);
|
|
63
|
+
this.configMap.set(config.id, config);
|
|
64
|
+
if (!this._activeId) {
|
|
65
|
+
this._activeId = config.id;
|
|
66
|
+
}
|
|
67
|
+
this.notify();
|
|
68
|
+
}
|
|
69
|
+
updateConfig(id, patch) {
|
|
70
|
+
const existing = this.configMap.get(id);
|
|
71
|
+
if (existing) {
|
|
72
|
+
this.configMap.set(id, { ...existing, ...patch });
|
|
73
|
+
this.notify();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
removeRobot(id) {
|
|
77
|
+
this.managers.get(id)?.disconnect().catch(() => { });
|
|
78
|
+
this.managers.delete(id);
|
|
79
|
+
this.configMap.delete(id);
|
|
80
|
+
if (this._activeId === id) {
|
|
81
|
+
this._activeId = [...this.managers.keys()][0] ?? null;
|
|
82
|
+
}
|
|
83
|
+
this.notify();
|
|
84
|
+
}
|
|
85
|
+
setActive(id) {
|
|
86
|
+
if (this.managers.has(id)) {
|
|
87
|
+
this._activeId = id;
|
|
88
|
+
this.notify();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ── Per-robot connect/disconnect ───────────────────────────────────────────
|
|
92
|
+
async connectRobot(id) {
|
|
93
|
+
const mgr = this.managers.get(id);
|
|
94
|
+
const cfg = this.configMap.get(id);
|
|
95
|
+
if (!mgr || !cfg) {
|
|
96
|
+
throw new Error(`Robot ${id} not found`);
|
|
97
|
+
}
|
|
98
|
+
// Pass stored port/useHttps so same-host robots go to different ports
|
|
99
|
+
await mgr.connect(cfg.host, cfg.username, cfg.password, cfg.port, cfg.useHttps);
|
|
100
|
+
// If RobotManager auto-recovered a different port (RobotStudio reassigned it),
|
|
101
|
+
// persist the new port so future connects skip the scan step.
|
|
102
|
+
const actualPort = mgr.currentPort;
|
|
103
|
+
const actualUseHttps = mgr.currentUseHttps;
|
|
104
|
+
if (actualPort !== undefined && actualPort !== cfg.port) {
|
|
105
|
+
this.configMap.set(id, { ...cfg, port: actualPort, useHttps: actualUseHttps });
|
|
106
|
+
}
|
|
107
|
+
if (!this.active?.state.connected) {
|
|
108
|
+
this._activeId = id;
|
|
109
|
+
}
|
|
110
|
+
this.notify();
|
|
111
|
+
}
|
|
112
|
+
async disconnectRobot(id) {
|
|
113
|
+
await this.managers.get(id)?.disconnect();
|
|
114
|
+
}
|
|
115
|
+
// ── Serialization ──────────────────────────────────────────────────────────
|
|
116
|
+
/** Create a MultiRobotManager from persisted configs, with backward compatibility for legacy single-robot settings. */
|
|
117
|
+
static fromConfigs(configs) {
|
|
118
|
+
const m = new MultiRobotManager();
|
|
119
|
+
configs.forEach(c => m.addRobot(c));
|
|
120
|
+
return m;
|
|
121
|
+
}
|
|
122
|
+
/** Generate a new robot config ID. */
|
|
123
|
+
static newId() {
|
|
124
|
+
return crypto.randomUUID ? crypto.randomUUID() : Math.random().toString(36).slice(2);
|
|
125
|
+
}
|
|
126
|
+
// ── Internal ───────────────────────────────────────────────────────────────
|
|
127
|
+
notify() { this.handlers.forEach(h => h()); }
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=MultiRobotManager.js.map
|
|
@@ -0,0 +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;IACpB,QAAQ,GAAI,IAAI,GAAG,EAAwB,CAAC;IAC5C,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,SAAS,GAAkB,IAAI,CAAC;IAChC,QAAQ,GAAsB,EAAE,CAAC;IACjC,aAAa,GAAyB,IAAI,CAAC;IAEnD,8EAA8E;IAE9E,+EAA+E;IAC/E,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,CAAC;IAED,IAAI,QAAQ,KAAoB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAExD,kDAAkD;IAClD,IAAI,OAAO;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,OAAO;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,OAAO,KAAoB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAErE,8EAA8E;IAE9E,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI;YAC3B,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;YACzD,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;YACrE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;YACpE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;SACnF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,EAAc,IAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7D;;;;OAIG;IACH,OAAO,CAAC,EAAiB;QACvB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAChE,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,CAAC,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,8EAA8E;IAE9E,QAAQ,CAAC,MAAmB;QAC1B,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,KAAuC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAAC,CAAC;QAC/D,sEAAsE;QACtE,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEhF,+EAA+E;QAC/E,8DAA8D;QAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,MAAM,cAAc,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,8EAA8E;IAE9E,uHAAuH;IACvH,MAAM,CAAC,WAAW,CAAC,OAAsB;QACvC,MAAM,CAAC,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sCAAsC;IACtC,MAAM,CAAC,KAAK;QACV,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,8EAA8E;IAEtE,MAAM,KAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5D"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { RwsClient } from './RwsClient.js';
|
|
2
|
+
import type { ExecutionCycle, JointTarget, RobTarget, RapidSymbolSearchParams, RestartMode, MastershipDomain, SubscriptionResource, SubscriptionEvent } from './types.js';
|
|
3
|
+
import type { IRWSAdapter } from './IRWSAdapter.js';
|
|
4
|
+
interface RWS1Credentials {
|
|
5
|
+
host: string;
|
|
6
|
+
port: number;
|
|
7
|
+
username: string;
|
|
8
|
+
password: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* RWS 1.0 adapter — thin wrapper around RwsClient (abb-rws-client).
|
|
12
|
+
* Every method delegates directly; zero logic change from pre-adapter behavior.
|
|
13
|
+
* Targets ABB IRC5 controllers running RobotWare 6.x.
|
|
14
|
+
*/
|
|
15
|
+
export declare class RWS1Adapter implements IRWSAdapter {
|
|
16
|
+
private readonly client;
|
|
17
|
+
private readonly creds?;
|
|
18
|
+
constructor(client: RwsClient, creds?: RWS1Credentials | undefined);
|
|
19
|
+
connect(): Promise<void>;
|
|
20
|
+
disconnect(): Promise<void>;
|
|
21
|
+
getSessionCookie(): string | null;
|
|
22
|
+
getControllerState(): Promise<import("./types.js").ControllerState>;
|
|
23
|
+
setControllerState(s: 'motoron' | 'motoroff'): Promise<void>;
|
|
24
|
+
getOperationMode(): Promise<import("./types.js").OperationMode>;
|
|
25
|
+
getSpeedRatio(): Promise<number>;
|
|
26
|
+
setSpeedRatio(r: number): Promise<void>;
|
|
27
|
+
getCollisionDetectionState(): Promise<import("./types.js").CollisionDetectionState>;
|
|
28
|
+
lockOperationMode(pin: string, p?: boolean): Promise<void>;
|
|
29
|
+
unlockOperationMode(): Promise<void>;
|
|
30
|
+
setOperationMode(mode: 'AUTO' | 'MANR' | 'MANF'): Promise<void>;
|
|
31
|
+
getRapidExecutionState(): Promise<import("./types.js").ExecutionState>;
|
|
32
|
+
getRapidExecutionInfo(): Promise<import("./types.js").ExecutionInfo>;
|
|
33
|
+
startRapid(): Promise<void>;
|
|
34
|
+
stopRapid(): Promise<void>;
|
|
35
|
+
resetRapid(): Promise<void>;
|
|
36
|
+
setExecutionCycle(c: ExecutionCycle): Promise<void>;
|
|
37
|
+
getRapidTasks(): Promise<import("./types.js").RapidTask[]>;
|
|
38
|
+
activateRapidTask(t: string): Promise<void>;
|
|
39
|
+
deactivateRapidTask(t: string): Promise<void>;
|
|
40
|
+
activateAllRapidTasks(): Promise<void>;
|
|
41
|
+
deactivateAllRapidTasks(): Promise<void>;
|
|
42
|
+
listModules(task: string): Promise<string[]>;
|
|
43
|
+
/** RWS 1.0 module-list also exposes name + type (SysMod / ProgMod) per entry. */
|
|
44
|
+
listModulesDetailed(task: string): Promise<Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
type: string;
|
|
47
|
+
}>>;
|
|
48
|
+
loadModule(task: string, path: string, r?: boolean): Promise<void>;
|
|
49
|
+
unloadModule(task: string, name: string): Promise<void>;
|
|
50
|
+
getRapidVariable(t: string, m: string, s: string): Promise<string>;
|
|
51
|
+
setRapidVariable(t: string, m: string, s: string, v: string): Promise<void>;
|
|
52
|
+
validateRapidValue(t: string, v: string, d: string): Promise<boolean>;
|
|
53
|
+
getRapidSymbolProperties(t: string, m: string, s: string): Promise<import("./types.js").RapidSymbolProperties>;
|
|
54
|
+
searchRapidSymbols(p: RapidSymbolSearchParams): Promise<import("./types.js").RapidSymbolInfo[]>;
|
|
55
|
+
getActiveUiInstruction(): Promise<import("./types.js").UiInstruction | null>;
|
|
56
|
+
setUiInstructionParam(su: string, up: string, v: string): Promise<void>;
|
|
57
|
+
getJointPositions(u?: string): Promise<JointTarget>;
|
|
58
|
+
getCartesianFull(u?: string): Promise<import("./types.js").CartesianFull>;
|
|
59
|
+
/** RwsClient has no listMechunits — IRC5 always has ROB_1 as the standard mechunit. */
|
|
60
|
+
listMechunits(): Promise<string[]>;
|
|
61
|
+
getSystemInfo(): Promise<import("./types.js").SystemInfo>;
|
|
62
|
+
getControllerIdentity(): Promise<import("./types.js").ControllerIdentity>;
|
|
63
|
+
getControllerClock(): Promise<import("./types.js").ControllerClock>;
|
|
64
|
+
setControllerClock(Y: number, Mo: number, D: number, H: number, Mi: number, S: number): Promise<void>;
|
|
65
|
+
restartController(m: RestartMode): Promise<void>;
|
|
66
|
+
getEventLog(d?: number, l?: string): Promise<import("./types.js").ElogMessage[]>;
|
|
67
|
+
clearEventLog(d?: number): Promise<void>;
|
|
68
|
+
clearAllEventLogs(): Promise<void>;
|
|
69
|
+
listAllSignals(s?: number, l?: number): Promise<import("./types.js").Signal[]>;
|
|
70
|
+
readSignal(n: string, d: string, name: string): Promise<import("./types.js").Signal>;
|
|
71
|
+
writeSignal(n: string, d: string, name: string, v: string): Promise<void>;
|
|
72
|
+
listNetworks(): Promise<import("./types.js").IoNetwork[]>;
|
|
73
|
+
listDevices(network: string): Promise<import("./types.js").IoDevice[]>;
|
|
74
|
+
listDirectory(path: string): Promise<import("./types.js").FileEntry[]>;
|
|
75
|
+
readFile(path: string): Promise<string>;
|
|
76
|
+
uploadFile(path: string, content: string): Promise<void>;
|
|
77
|
+
deleteFile(path: string): Promise<void>;
|
|
78
|
+
createDirectory(parent: string, dir: string): Promise<void>;
|
|
79
|
+
copyFile(src: string, dst: string): Promise<void>;
|
|
80
|
+
requestMastership(d: MastershipDomain): Promise<void>;
|
|
81
|
+
releaseMastership(d: MastershipDomain): Promise<void>;
|
|
82
|
+
/** Request mastership on all domains (cfg + motion + rapid) at once. */
|
|
83
|
+
requestMastershipAll(): Promise<void>;
|
|
84
|
+
/** Release mastership on all domains at once. */
|
|
85
|
+
releaseMastershipAll(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* RWS 1.0 doesn't expose `request-with-id` / `release-with-id` — those are
|
|
88
|
+
* RWS 2.0 / RobotWare 7+ additions. The `?` in the IRWSAdapter signature
|
|
89
|
+
* means we don't have to implement on this side; calls just throw.
|
|
90
|
+
*/
|
|
91
|
+
/**
|
|
92
|
+
* RWS 1.0 doesn't expose a watchdog endpoint — heartbeat is RWS 2.0 only.
|
|
93
|
+
* The optional method on IRWSAdapter is left undefined here so callers can
|
|
94
|
+
* feature-detect (`if ('resetMastershipWatchdog' in adapter)`).
|
|
95
|
+
*/
|
|
96
|
+
/** Read mastership status for one domain. */
|
|
97
|
+
getMastershipStatus(d: MastershipDomain): Promise<{
|
|
98
|
+
mastership: string;
|
|
99
|
+
uid?: string;
|
|
100
|
+
application?: string;
|
|
101
|
+
}>;
|
|
102
|
+
/** List mastership domains (RWS 1.0: ['cfg', 'motion', 'rapid']). */
|
|
103
|
+
listMastershipDomains(): Promise<string[]>;
|
|
104
|
+
listSystemDevices(): Promise<Array<{
|
|
105
|
+
id: string;
|
|
106
|
+
name: string;
|
|
107
|
+
}>>;
|
|
108
|
+
getDeviceTree(group: string): Promise<string>;
|
|
109
|
+
listAllIoDevices(): Promise<Array<{
|
|
110
|
+
name: string;
|
|
111
|
+
network: string;
|
|
112
|
+
lstate: string;
|
|
113
|
+
pstate: string;
|
|
114
|
+
address: string;
|
|
115
|
+
}>>;
|
|
116
|
+
/**
|
|
117
|
+
* Forward kinematics on RWS 1.0. Same VC-license caveat as IK.
|
|
118
|
+
*/
|
|
119
|
+
calcCartesianFromJoints(joints: JointTarget, mechunit?: string, tool?: string, wobj?: string): Promise<RobTarget>;
|
|
120
|
+
subscribe(resources: SubscriptionResource[], handler: (event: SubscriptionEvent) => void): Promise<() => Promise<void>>;
|
|
121
|
+
/** Monotonic counter required by RWS jog endpoint (rejects duplicate ccount values). */
|
|
122
|
+
private jogCcount;
|
|
123
|
+
jog(params: {
|
|
124
|
+
mode: 'Joint' | 'Cartesian';
|
|
125
|
+
axes: [number, number, number, number, number, number];
|
|
126
|
+
speed: number;
|
|
127
|
+
mechunit?: string;
|
|
128
|
+
}): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Generic GET that returns `_embedded._state[0]` (single resource) or [] (list).
|
|
131
|
+
* Most RWS 1.0 endpoints with `?json=1` return this HAL-like envelope.
|
|
132
|
+
* Returns empty result for HTTP 204 (no content) — common on /ctrl/options etc.
|
|
133
|
+
*/
|
|
134
|
+
private rws1Get;
|
|
135
|
+
/** Generic POST that throws on >=400, returns the parsed JSON body. */
|
|
136
|
+
private rws1Post;
|
|
137
|
+
getRobotType(): Promise<{
|
|
138
|
+
type: string;
|
|
139
|
+
variant?: string;
|
|
140
|
+
}>;
|
|
141
|
+
getLicenseInfo(): Promise<{
|
|
142
|
+
entries: Array<Record<string, string>>;
|
|
143
|
+
}>;
|
|
144
|
+
listProducts(): Promise<Array<Record<string, string>>>;
|
|
145
|
+
getEnergyStats(): Promise<Record<string, string>>;
|
|
146
|
+
getReturnCode(code: number, lang?: string): Promise<{
|
|
147
|
+
code: number;
|
|
148
|
+
title: string;
|
|
149
|
+
desc: string;
|
|
150
|
+
} | null>;
|
|
151
|
+
listControllerOptions(): Promise<Array<{
|
|
152
|
+
name: string;
|
|
153
|
+
description?: string;
|
|
154
|
+
}>>;
|
|
155
|
+
getMotionChangeCount(): Promise<number>;
|
|
156
|
+
getMotionErrorState(): Promise<{
|
|
157
|
+
state: string;
|
|
158
|
+
details?: Record<string, string>;
|
|
159
|
+
}>;
|
|
160
|
+
getNonMotionExecution(): Promise<boolean>;
|
|
161
|
+
setNonMotionExecution(enabled: boolean): Promise<void>;
|
|
162
|
+
getMechunitInfo(mechunit?: string): Promise<Record<string, string>>;
|
|
163
|
+
getMechunitBaseFrame(mechunit?: string): Promise<{
|
|
164
|
+
x: number;
|
|
165
|
+
y: number;
|
|
166
|
+
z: number;
|
|
167
|
+
q1: number;
|
|
168
|
+
q2: number;
|
|
169
|
+
q3: number;
|
|
170
|
+
q4: number;
|
|
171
|
+
}>;
|
|
172
|
+
getMechunitAxes(mechunit?: string): Promise<Array<Record<string, string>>>;
|
|
173
|
+
getActiveTool(mechunit?: string): Promise<{
|
|
174
|
+
name: string;
|
|
175
|
+
data?: Record<string, string>;
|
|
176
|
+
}>;
|
|
177
|
+
getActiveWobj(mechunit?: string): Promise<{
|
|
178
|
+
name: string;
|
|
179
|
+
data?: Record<string, string>;
|
|
180
|
+
}>;
|
|
181
|
+
getActivePayload(mechunit?: string): Promise<{
|
|
182
|
+
name: string;
|
|
183
|
+
data?: Record<string, string>;
|
|
184
|
+
}>;
|
|
185
|
+
listAliasIO(): Promise<Array<{
|
|
186
|
+
alias: string;
|
|
187
|
+
signal: string;
|
|
188
|
+
}>>;
|
|
189
|
+
getProgramPointer(task: string): Promise<{
|
|
190
|
+
module?: string;
|
|
191
|
+
routine?: string;
|
|
192
|
+
row?: number;
|
|
193
|
+
col?: number;
|
|
194
|
+
}>;
|
|
195
|
+
getMotionPointer(task: string): Promise<{
|
|
196
|
+
module?: string;
|
|
197
|
+
routine?: string;
|
|
198
|
+
row?: number;
|
|
199
|
+
col?: number;
|
|
200
|
+
}>;
|
|
201
|
+
listCfgDomains(): Promise<string[]>;
|
|
202
|
+
listCfgTypes(domain: string): Promise<string[]>;
|
|
203
|
+
listCfgInstances(domain: string, type: string): Promise<string[]>;
|
|
204
|
+
getCfgInstance(domain: string, type: string, instance: string): Promise<Record<string, string>>;
|
|
205
|
+
listBackups(): Promise<Array<{
|
|
206
|
+
name: string;
|
|
207
|
+
created?: string;
|
|
208
|
+
size?: number;
|
|
209
|
+
}>>;
|
|
210
|
+
getBackupStatus(): Promise<{
|
|
211
|
+
active: boolean;
|
|
212
|
+
progress?: number;
|
|
213
|
+
phase?: string;
|
|
214
|
+
}>;
|
|
215
|
+
getRmmpPrivilege(): Promise<string>;
|
|
216
|
+
requestRmmp(level?: 'modify' | 'exclusive'): Promise<void>;
|
|
217
|
+
createBackup(name: string): Promise<void>;
|
|
218
|
+
restoreBackup(name: string): Promise<void>;
|
|
219
|
+
listProgress(): Promise<Array<{
|
|
220
|
+
id: string;
|
|
221
|
+
state: string;
|
|
222
|
+
}>>;
|
|
223
|
+
getProgress(id: string): Promise<{
|
|
224
|
+
state: string;
|
|
225
|
+
details?: Record<string, string>;
|
|
226
|
+
} | null>;
|
|
227
|
+
listDipcQueues(): Promise<Array<{
|
|
228
|
+
name: string;
|
|
229
|
+
size?: number;
|
|
230
|
+
}>>;
|
|
231
|
+
createDipcQueue(name: string, options?: {
|
|
232
|
+
maxsize?: number;
|
|
233
|
+
maxmessages?: number;
|
|
234
|
+
}): Promise<void>;
|
|
235
|
+
sendDipcMessage(queue: string, payload: string, type?: 'string' | 'num' | 'dnum' | 'bool'): Promise<void>;
|
|
236
|
+
readDipcMessage(queue: string): Promise<{
|
|
237
|
+
payload: string;
|
|
238
|
+
type: string;
|
|
239
|
+
} | null>;
|
|
240
|
+
removeDipcQueue(name: string): Promise<void>;
|
|
241
|
+
getSafetyStatus(): Promise<{
|
|
242
|
+
state: string;
|
|
243
|
+
details?: Record<string, string>;
|
|
244
|
+
}>;
|
|
245
|
+
listSafetyZones(): Promise<Array<Record<string, string>>>;
|
|
246
|
+
runCyclicBrakeCheck(): Promise<void>;
|
|
247
|
+
getVirtualTime(): Promise<{
|
|
248
|
+
time: number;
|
|
249
|
+
running: boolean;
|
|
250
|
+
speed?: number;
|
|
251
|
+
}>;
|
|
252
|
+
setVirtualTimeRunning(running: boolean): Promise<void>;
|
|
253
|
+
setVirtualTimeScale(scale: number): Promise<void>;
|
|
254
|
+
listVisionSystems(): Promise<Array<{
|
|
255
|
+
name: string;
|
|
256
|
+
status?: string;
|
|
257
|
+
}>>;
|
|
258
|
+
getVisionSystemInfo(name: string): Promise<Record<string, string>>;
|
|
259
|
+
triggerVisionJob(system: string): Promise<void>;
|
|
260
|
+
saveModule(task: string, moduleName: string, filepath: string): Promise<void>;
|
|
261
|
+
listModuleRoutines(task: string, moduleName: string): Promise<Array<{
|
|
262
|
+
name: string;
|
|
263
|
+
type: string;
|
|
264
|
+
}>>;
|
|
265
|
+
listBreakpoints(task: string): Promise<Array<{
|
|
266
|
+
module: string;
|
|
267
|
+
row: number;
|
|
268
|
+
col?: number;
|
|
269
|
+
}>>;
|
|
270
|
+
holdToRun(task: string, action: 'press' | 'release'): Promise<void>;
|
|
271
|
+
startProductionMode(): Promise<void>;
|
|
272
|
+
getNetworkConfig(): Promise<Record<string, string>>;
|
|
273
|
+
getDnsConfig(): Promise<Record<string, string>>;
|
|
274
|
+
getRoutingTable(): Promise<Array<Record<string, string>>>;
|
|
275
|
+
getTimezone(): Promise<{
|
|
276
|
+
tz: string;
|
|
277
|
+
raw: Record<string, string>;
|
|
278
|
+
}>;
|
|
279
|
+
getCompatibility(): Promise<{
|
|
280
|
+
compatible: boolean;
|
|
281
|
+
details?: Record<string, string>;
|
|
282
|
+
}>;
|
|
283
|
+
setMechunitForJogging(mechunit: string): Promise<void>;
|
|
284
|
+
setRobtargetForJogging(target: {
|
|
285
|
+
x: number;
|
|
286
|
+
y: number;
|
|
287
|
+
z: number;
|
|
288
|
+
q1: number;
|
|
289
|
+
q2: number;
|
|
290
|
+
q3: number;
|
|
291
|
+
q4: number;
|
|
292
|
+
}): Promise<void>;
|
|
293
|
+
calcJointsFromCartesian(pos: RobTarget, seedJoints?: JointTarget, mechunit?: string): Promise<JointTarget>;
|
|
294
|
+
private digestPost;
|
|
295
|
+
}
|
|
296
|
+
export {};
|
|
297
|
+
//# sourceMappingURL=RWS1Adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RWS1Adapter.d.ts","sourceRoot":"","sources":["../src/RWS1Adapter.ts"],"names":[],"mappings":"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"}
|