buttplug 3.0.0-alpha.1 → 3.0.0-alpha.3
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/.eslintrc.js +20 -0
- package/.prettierrc.json +4 -0
- package/dist/main/src/client/ButtplugBrowserWebsocketClientConnector.d.ts +3 -3
- package/dist/main/src/client/ButtplugBrowserWebsocketClientConnector.js +8 -6
- package/dist/main/src/client/ButtplugBrowserWebsocketClientConnector.js.map +1 -1
- package/dist/main/src/client/ButtplugClientConnectorException.d.ts +1 -1
- package/dist/main/src/client/ButtplugClientDevice.d.ts +12 -8
- package/dist/main/src/client/ButtplugClientDevice.js +75 -59
- package/dist/main/src/client/ButtplugClientDevice.js.map +1 -1
- package/dist/main/src/client/Client.d.ts +9 -10
- package/dist/main/src/client/Client.js +34 -35
- package/dist/main/src/client/Client.js.map +1 -1
- package/dist/main/src/client/IButtplugClientConnector.d.ts +2 -2
- package/dist/main/src/core/Exceptions.d.ts +2 -2
- package/dist/main/src/core/Exceptions.js.map +1 -1
- package/dist/main/src/core/Logging.d.ts +1 -1
- package/dist/main/src/core/Logging.js +3 -2
- package/dist/main/src/core/Logging.js.map +1 -1
- package/dist/main/src/core/MessageUtils.d.ts +1 -1
- package/dist/main/src/core/MessageUtils.js +3 -3
- package/dist/main/src/core/MessageUtils.js.map +1 -1
- package/dist/main/src/core/Messages.d.ts +1 -1
- package/dist/main/src/core/Messages.js +10 -8
- package/dist/main/src/core/Messages.js.map +1 -1
- package/dist/main/src/index.d.ts +10 -10
- package/dist/main/src/utils/ButtplugBrowserWebsocketConnector.d.ts +2 -2
- package/dist/main/src/utils/ButtplugBrowserWebsocketConnector.js +23 -16
- package/dist/main/src/utils/ButtplugBrowserWebsocketConnector.js.map +1 -1
- package/dist/main/src/utils/ButtplugMessageSorter.d.ts +5 -2
- package/dist/main/src/utils/ButtplugMessageSorter.js +4 -1
- package/dist/main/src/utils/ButtplugMessageSorter.js.map +1 -1
- package/dist/web/buttplug.js +155 -125
- package/dist/web/buttplug.min.js +1 -1
- package/dist/web/buttplug.min.js.map +1 -1
- package/package.json +7 -1
- package/src/client/ButtplugBrowserWebsocketClientConnector.ts +21 -17
- package/src/client/ButtplugClientConnectorException.ts +2 -2
- package/src/client/ButtplugClientDevice.ts +238 -93
- package/src/client/Client.ts +110 -74
- package/src/client/IButtplugClientConnector.ts +2 -2
- package/src/core/Exceptions.ts +14 -11
- package/src/core/Logging.ts +10 -7
- package/src/core/MessageUtils.ts +9 -5
- package/src/core/Messages.ts +112 -94
- package/src/core/index.d.ts +3 -3
- package/src/index.ts +10 -10
- package/src/utils/ButtplugBrowserWebsocketConnector.ts +29 -23
- package/src/utils/ButtplugMessageSorter.ts +20 -9
- package/.eslintrc +0 -13
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
env: {
|
|
3
|
+
browser: true,
|
|
4
|
+
es2021: true,
|
|
5
|
+
node: true,
|
|
6
|
+
},
|
|
7
|
+
extends: [
|
|
8
|
+
"eslint:recommended",
|
|
9
|
+
"plugin:@typescript-eslint/recommended",
|
|
10
|
+
"./node_modules/gts",
|
|
11
|
+
],
|
|
12
|
+
overrides: [],
|
|
13
|
+
parser: "@typescript-eslint/parser",
|
|
14
|
+
parserOptions: {
|
|
15
|
+
ecmaVersion: "latest",
|
|
16
|
+
sourceType: "module",
|
|
17
|
+
},
|
|
18
|
+
plugins: ["@typescript-eslint"],
|
|
19
|
+
rules: {},
|
|
20
|
+
};
|
package/.prettierrc.json
ADDED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
|
|
7
7
|
*/
|
|
8
|
-
import { IButtplugClientConnector } from
|
|
9
|
-
import { ButtplugMessage } from
|
|
10
|
-
import { ButtplugBrowserWebsocketConnector } from
|
|
8
|
+
import { IButtplugClientConnector } from './IButtplugClientConnector';
|
|
9
|
+
import { ButtplugMessage } from '../core/Messages';
|
|
10
|
+
import { ButtplugBrowserWebsocketConnector } from '../utils/ButtplugBrowserWebsocketConnector';
|
|
11
11
|
export declare class ButtplugBrowserWebsocketClientConnector extends ButtplugBrowserWebsocketConnector implements IButtplugClientConnector {
|
|
12
12
|
private _sorter;
|
|
13
13
|
protected _ws: WebSocket | undefined;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
'use strict';
|
|
9
9
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
10
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
11
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -26,21 +26,23 @@ class ButtplugBrowserWebsocketClientConnector extends ButtplugBrowserWebsocketCo
|
|
|
26
26
|
this._sorter = new ButtplugMessageSorter_1.ButtplugMessageSorter(true);
|
|
27
27
|
this.Send = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
28
28
|
if (!this.Connected) {
|
|
29
|
-
throw new Error(
|
|
29
|
+
throw new Error('ButtplugClient not connected');
|
|
30
30
|
}
|
|
31
31
|
const p = this._sorter.PrepareOutgoingMessage(msg);
|
|
32
32
|
this.SendMessage(msg);
|
|
33
33
|
return yield p;
|
|
34
34
|
});
|
|
35
35
|
this.ParseIncomingMessage = (event) => {
|
|
36
|
-
if (typeof
|
|
36
|
+
if (typeof event.data === 'string') {
|
|
37
37
|
const msgs = (0, MessageUtils_1.FromJSON)(event.data);
|
|
38
38
|
const emitMsgs = this._sorter.ParseIncomingMessages(msgs);
|
|
39
|
-
this.emit(
|
|
39
|
+
this.emit('message', emitMsgs);
|
|
40
40
|
}
|
|
41
41
|
else if (event.data instanceof Blob) {
|
|
42
42
|
const reader = new FileReader();
|
|
43
|
-
reader.addEventListener(
|
|
43
|
+
reader.addEventListener('load', (ev) => {
|
|
44
|
+
this.OnReaderLoad(ev);
|
|
45
|
+
});
|
|
44
46
|
reader.readAsText(event.data);
|
|
45
47
|
}
|
|
46
48
|
};
|
|
@@ -51,7 +53,7 @@ class ButtplugBrowserWebsocketClientConnector extends ButtplugBrowserWebsocketCo
|
|
|
51
53
|
OnReaderLoad(event) {
|
|
52
54
|
const msgs = (0, MessageUtils_1.FromJSON)(event.target.result);
|
|
53
55
|
const emitMsgs = this._sorter.ParseIncomingMessages(msgs);
|
|
54
|
-
this.emit(
|
|
56
|
+
this.emit('message', emitMsgs);
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
exports.ButtplugBrowserWebsocketClientConnector = ButtplugBrowserWebsocketClientConnector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtplugBrowserWebsocketClientConnector.js","sourceRoot":"","sources":["../../../../src/client/ButtplugBrowserWebsocketClientConnector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,CAAC;;;;;;;;;;;;AAIb,uDAAgD;AAChD,0EAAuE;AACvE,kGAA+F;AAE/F,MAAa,
|
|
1
|
+
{"version":3,"file":"ButtplugBrowserWebsocketClientConnector.js","sourceRoot":"","sources":["../../../../src/client/ButtplugBrowserWebsocketClientConnector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,CAAC;;;;;;;;;;;;AAIb,uDAAgD;AAChD,0EAAuE;AACvE,kGAA+F;AAE/F,MAAa,uCACX,SAAQ,qEAAiC;IAMzC,YAAmB,IAAY;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;QAJN,YAAO,GAA0B,IAAI,6CAAqB,CAAC,IAAI,CAAC,CAAC;QAWlE,SAAI,GAAG,CAAO,GAAoB,EAA4B,EAAE;YACrE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACjD;YACD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC,CAAC;QACjB,CAAC,CAAA,CAAC;QAEQ,yBAAoB,GAAG,CAAC,KAAmB,EAAE,EAAE;YACvD,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAClC,MAAM,IAAI,GAAG,IAAA,uBAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;aAChC;iBAAM,IAAI,KAAK,CAAC,IAAI,YAAY,IAAI,EAAE;gBACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;oBACrC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;QACH,CAAC,CAAC;IA3BF,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC;IAChC,CAAC;IAyBS,YAAY,CAAC,KAAY;QACjC,MAAM,IAAI,GAAG,IAAA,uBAAQ,EAAE,KAAK,CAAC,MAAqB,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;CACF;AA3CD,0FA2CC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
|
|
7
7
|
*/
|
|
8
|
-
import { ButtplugException } from
|
|
8
|
+
import { ButtplugException } from '../core/Exceptions';
|
|
9
9
|
export declare class ButtplugClientConnectorException extends ButtplugException {
|
|
10
10
|
constructor(message: string);
|
|
11
11
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
|
|
7
7
|
*/
|
|
8
8
|
/// <reference types="node" />
|
|
9
|
-
import * as Messages from
|
|
10
|
-
import { EventEmitter } from
|
|
9
|
+
import * as Messages from '../core/Messages';
|
|
10
|
+
import { EventEmitter } from 'events';
|
|
11
11
|
/**
|
|
12
12
|
* Represents an abstract device, capable of taking certain kinds of messages.
|
|
13
13
|
*/
|
|
@@ -17,23 +17,23 @@ export declare class ButtplugClientDevice extends EventEmitter {
|
|
|
17
17
|
/**
|
|
18
18
|
* Return the name of the device.
|
|
19
19
|
*/
|
|
20
|
-
get
|
|
20
|
+
get name(): string;
|
|
21
21
|
/**
|
|
22
22
|
* Return the user set name of the device.
|
|
23
23
|
*/
|
|
24
|
-
get
|
|
24
|
+
get displayName(): string | undefined;
|
|
25
25
|
/**
|
|
26
26
|
* Return the index of the device.
|
|
27
27
|
*/
|
|
28
|
-
get
|
|
28
|
+
get index(): number;
|
|
29
29
|
/**
|
|
30
30
|
* Return the index of the device.
|
|
31
31
|
*/
|
|
32
|
-
get
|
|
32
|
+
get messageTimingGap(): number | undefined;
|
|
33
33
|
/**
|
|
34
34
|
* Return a list of message types the device accepts.
|
|
35
35
|
*/
|
|
36
|
-
get
|
|
36
|
+
get messageAttributes(): Messages.MessageAttributes;
|
|
37
37
|
static fromMsg(msg: Messages.DeviceInfo, sendClosure: (device: ButtplugClientDevice, msg: Messages.ButtplugDeviceMessage) => Promise<Messages.ButtplugMessage>): ButtplugClientDevice;
|
|
38
38
|
private allowedMsgs;
|
|
39
39
|
/**
|
|
@@ -46,9 +46,13 @@ export declare class ButtplugClientDevice extends EventEmitter {
|
|
|
46
46
|
sendExpectOk(msg: Messages.ButtplugDeviceMessage): Promise<void>;
|
|
47
47
|
scalar(scalar: Messages.ScalarSubcommand | Messages.ScalarSubcommand[]): Promise<void>;
|
|
48
48
|
private scalarCommandBuilder;
|
|
49
|
+
get vibrateAttributes(): Messages.GenericDeviceMessageAttributes[];
|
|
49
50
|
vibrate(speed: number | number[]): Promise<void>;
|
|
51
|
+
get oscillateAttributes(): Messages.GenericDeviceMessageAttributes[];
|
|
50
52
|
oscillate(speed: number | number[]): Promise<void>;
|
|
53
|
+
get rotateAttributes(): Messages.GenericDeviceMessageAttributes[];
|
|
51
54
|
rotate(values: number | [number, boolean][], clockwise?: boolean): Promise<void>;
|
|
55
|
+
get linearAttributes(): Messages.GenericDeviceMessageAttributes[];
|
|
52
56
|
linear(values: number | [number, number][], duration?: number): Promise<void>;
|
|
53
57
|
sensorRead(sensorIndex: number, sensorType: Messages.SensorType): Promise<number[]>;
|
|
54
58
|
battery(): Promise<number>;
|
|
@@ -58,5 +62,5 @@ export declare class ButtplugClientDevice extends EventEmitter {
|
|
|
58
62
|
rawSubscribe(endpoint: string): Promise<void>;
|
|
59
63
|
rawUnsubscribe(endpoint: string): Promise<void>;
|
|
60
64
|
stop(): Promise<void>;
|
|
61
|
-
|
|
65
|
+
emitDisconnected(): void;
|
|
62
66
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @copyright Copyright (c) Nonpolynomial Labs LLC. All rights reserved.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
'use strict';
|
|
9
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -50,31 +50,31 @@ class ButtplugClientDevice extends events_1.EventEmitter {
|
|
|
50
50
|
/**
|
|
51
51
|
* Return the name of the device.
|
|
52
52
|
*/
|
|
53
|
-
get
|
|
53
|
+
get name() {
|
|
54
54
|
return this._deviceInfo.DeviceName;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Return the user set name of the device.
|
|
58
58
|
*/
|
|
59
|
-
get
|
|
59
|
+
get displayName() {
|
|
60
60
|
return this._deviceInfo.DeviceDisplayName;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Return the index of the device.
|
|
64
64
|
*/
|
|
65
|
-
get
|
|
65
|
+
get index() {
|
|
66
66
|
return this._deviceInfo.DeviceIndex;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* Return the index of the device.
|
|
70
70
|
*/
|
|
71
|
-
get
|
|
71
|
+
get messageTimingGap() {
|
|
72
72
|
return this._deviceInfo.DeviceMessageTimingGap;
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
75
|
* Return a list of message types the device accepts.
|
|
76
76
|
*/
|
|
77
|
-
get
|
|
77
|
+
get messageAttributes() {
|
|
78
78
|
return this._deviceInfo.DeviceMessages;
|
|
79
79
|
}
|
|
80
80
|
static fromMsg(msg, sendClosure) {
|
|
@@ -116,22 +116,22 @@ class ButtplugClientDevice extends events_1.EventEmitter {
|
|
|
116
116
|
scalar(scalar) {
|
|
117
117
|
return __awaiter(this, void 0, void 0, function* () {
|
|
118
118
|
if (Array.isArray(scalar)) {
|
|
119
|
-
yield this.sendExpectOk(new Messages.ScalarCmd(scalar, this.
|
|
119
|
+
yield this.sendExpectOk(new Messages.ScalarCmd(scalar, this.index));
|
|
120
120
|
}
|
|
121
121
|
else {
|
|
122
|
-
yield this.sendExpectOk(new Messages.ScalarCmd([scalar], this.
|
|
122
|
+
yield this.sendExpectOk(new Messages.ScalarCmd([scalar], this.index));
|
|
123
123
|
}
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
126
|
scalarCommandBuilder(speed, actuator) {
|
|
127
127
|
var _a;
|
|
128
128
|
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
|
|
130
|
-
if (!scalarAttrs || scalarAttrs.length
|
|
131
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
129
|
+
const scalarAttrs = (_a = this.messageAttributes.ScalarCmd) === null || _a === void 0 ? void 0 : _a.filter((x) => x.ActuatorType === actuator);
|
|
130
|
+
if (!scalarAttrs || scalarAttrs.length === 0) {
|
|
131
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no ${actuator} capabilities`);
|
|
132
132
|
}
|
|
133
|
-
|
|
134
|
-
if (typeof
|
|
133
|
+
const cmds = [];
|
|
134
|
+
if (typeof speed === 'number') {
|
|
135
135
|
scalarAttrs.forEach((x) => cmds.push(new Messages.ScalarSubcommand(x.Index, speed, actuator)));
|
|
136
136
|
}
|
|
137
137
|
else if (Array.isArray(speed)) {
|
|
@@ -148,57 +148,73 @@ class ButtplugClientDevice extends events_1.EventEmitter {
|
|
|
148
148
|
yield this.scalar(cmds);
|
|
149
149
|
});
|
|
150
150
|
}
|
|
151
|
+
get vibrateAttributes() {
|
|
152
|
+
var _a, _b;
|
|
153
|
+
return ((_b = (_a = this.messageAttributes.ScalarCmd) === null || _a === void 0 ? void 0 : _a.filter((x) => x.ActuatorType === Messages.ActuatorType.Vibrate)) !== null && _b !== void 0 ? _b : []);
|
|
154
|
+
}
|
|
151
155
|
vibrate(speed) {
|
|
152
156
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
157
|
yield this.scalarCommandBuilder(speed, Messages.ActuatorType.Vibrate);
|
|
154
158
|
});
|
|
155
159
|
}
|
|
160
|
+
get oscillateAttributes() {
|
|
161
|
+
var _a, _b;
|
|
162
|
+
return ((_b = (_a = this.messageAttributes.ScalarCmd) === null || _a === void 0 ? void 0 : _a.filter((x) => x.ActuatorType === Messages.ActuatorType.Oscillate)) !== null && _b !== void 0 ? _b : []);
|
|
163
|
+
}
|
|
156
164
|
oscillate(speed) {
|
|
157
165
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
166
|
yield this.scalarCommandBuilder(speed, Messages.ActuatorType.Oscillate);
|
|
159
167
|
});
|
|
160
168
|
}
|
|
169
|
+
get rotateAttributes() {
|
|
170
|
+
var _a;
|
|
171
|
+
return (_a = this.messageAttributes.RotateCmd) !== null && _a !== void 0 ? _a : [];
|
|
172
|
+
}
|
|
161
173
|
rotate(values, clockwise) {
|
|
162
174
|
return __awaiter(this, void 0, void 0, function* () {
|
|
163
|
-
|
|
164
|
-
if (!rotateAttrs || rotateAttrs.length
|
|
165
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
175
|
+
const rotateAttrs = this.messageAttributes.RotateCmd;
|
|
176
|
+
if (!rotateAttrs || rotateAttrs.length === 0) {
|
|
177
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no Rotate capabilities`);
|
|
166
178
|
}
|
|
167
179
|
let msg;
|
|
168
|
-
if (typeof
|
|
169
|
-
msg = Messages.RotateCmd.Create(this.
|
|
180
|
+
if (typeof values === 'number') {
|
|
181
|
+
msg = Messages.RotateCmd.Create(this.index, new Array(rotateAttrs.length).fill([values, clockwise]));
|
|
170
182
|
}
|
|
171
183
|
else if (Array.isArray(values)) {
|
|
172
|
-
msg = Messages.RotateCmd.Create(this.
|
|
184
|
+
msg = Messages.RotateCmd.Create(this.index, values);
|
|
173
185
|
}
|
|
174
186
|
else {
|
|
175
|
-
throw new Exceptions_1.ButtplugDeviceException(
|
|
187
|
+
throw new Exceptions_1.ButtplugDeviceException('SendRotateCmd can only take a number and boolean, or an array of number/boolean tuples');
|
|
176
188
|
}
|
|
177
189
|
yield this.sendExpectOk(msg);
|
|
178
190
|
});
|
|
179
191
|
}
|
|
192
|
+
get linearAttributes() {
|
|
193
|
+
var _a;
|
|
194
|
+
return (_a = this.messageAttributes.RotateCmd) !== null && _a !== void 0 ? _a : [];
|
|
195
|
+
}
|
|
180
196
|
linear(values, duration) {
|
|
181
197
|
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
-
|
|
183
|
-
if (!linearAttrs || linearAttrs.length
|
|
184
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
198
|
+
const linearAttrs = this.messageAttributes.LinearCmd;
|
|
199
|
+
if (!linearAttrs || linearAttrs.length === 0) {
|
|
200
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no Linear capabilities`);
|
|
185
201
|
}
|
|
186
202
|
let msg;
|
|
187
|
-
if (typeof
|
|
188
|
-
msg = Messages.LinearCmd.Create(this.
|
|
203
|
+
if (typeof values === 'number') {
|
|
204
|
+
msg = Messages.LinearCmd.Create(this.index, new Array(linearAttrs.length).fill([values, duration]));
|
|
189
205
|
}
|
|
190
206
|
else if (Array.isArray(values)) {
|
|
191
|
-
msg = Messages.LinearCmd.Create(this.
|
|
207
|
+
msg = Messages.LinearCmd.Create(this.index, values);
|
|
192
208
|
}
|
|
193
209
|
else {
|
|
194
|
-
throw new Exceptions_1.ButtplugDeviceException(
|
|
210
|
+
throw new Exceptions_1.ButtplugDeviceException('SendLinearCmd can only take a number and number, or an array of number/number tuples');
|
|
195
211
|
}
|
|
196
212
|
yield this.sendExpectOk(msg);
|
|
197
213
|
});
|
|
198
214
|
}
|
|
199
215
|
sensorRead(sensorIndex, sensorType) {
|
|
200
216
|
return __awaiter(this, void 0, void 0, function* () {
|
|
201
|
-
|
|
217
|
+
const response = yield this.send(new Messages.SensorReadCmd(this.index, sensorIndex, sensorType));
|
|
202
218
|
switch (response.constructor) {
|
|
203
219
|
case Messages.SensorReading:
|
|
204
220
|
return response.Data;
|
|
@@ -212,36 +228,36 @@ class ButtplugClientDevice extends events_1.EventEmitter {
|
|
|
212
228
|
battery() {
|
|
213
229
|
var _a;
|
|
214
230
|
return __awaiter(this, void 0, void 0, function* () {
|
|
215
|
-
|
|
216
|
-
if (!batteryAttrs || batteryAttrs.length
|
|
217
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
231
|
+
const batteryAttrs = (_a = this.messageAttributes.SensorReadCmd) === null || _a === void 0 ? void 0 : _a.filter((x) => x.SensorType === Messages.SensorType.Battery);
|
|
232
|
+
if (!batteryAttrs || batteryAttrs.length === 0) {
|
|
233
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no Battery capabilities`);
|
|
218
234
|
}
|
|
219
235
|
// Find the battery sensor, we'll need its index.
|
|
220
|
-
|
|
236
|
+
const result = yield this.sensorRead(batteryAttrs[0].Index, Messages.SensorType.Battery);
|
|
221
237
|
return result[0] / 100.0;
|
|
222
238
|
});
|
|
223
239
|
}
|
|
224
240
|
rssi() {
|
|
225
241
|
var _a;
|
|
226
242
|
return __awaiter(this, void 0, void 0, function* () {
|
|
227
|
-
|
|
228
|
-
if (!rssiAttrs || rssiAttrs.length
|
|
229
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
243
|
+
const rssiAttrs = (_a = this.messageAttributes.SensorReadCmd) === null || _a === void 0 ? void 0 : _a.filter((x) => x.SensorType === Messages.SensorType.RSSI);
|
|
244
|
+
if (!rssiAttrs || rssiAttrs.length === 0) {
|
|
245
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no RSSI capabilities`);
|
|
230
246
|
}
|
|
231
247
|
// Find the battery sensor, we'll need its index.
|
|
232
|
-
|
|
248
|
+
const result = yield this.sensorRead(rssiAttrs[0].Index, Messages.SensorType.RSSI);
|
|
233
249
|
return result[0];
|
|
234
250
|
});
|
|
235
251
|
}
|
|
236
252
|
rawRead(endpoint, expectedLength, timeout) {
|
|
237
253
|
return __awaiter(this, void 0, void 0, function* () {
|
|
238
|
-
if (!this.
|
|
239
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
254
|
+
if (!this.messageAttributes.RawReadCmd) {
|
|
255
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw read capabilities`);
|
|
240
256
|
}
|
|
241
|
-
if (this.
|
|
242
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
257
|
+
if (this.messageAttributes.RawReadCmd.Endpoints.indexOf(endpoint) === -1) {
|
|
258
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw readable endpoint ${endpoint}`);
|
|
243
259
|
}
|
|
244
|
-
|
|
260
|
+
const response = yield this.send(new Messages.RawReadCmd(this.index, endpoint, expectedLength, timeout));
|
|
245
261
|
switch (response.constructor) {
|
|
246
262
|
case Messages.RawReading:
|
|
247
263
|
return new Uint8Array(response.Data);
|
|
@@ -254,45 +270,45 @@ class ButtplugClientDevice extends events_1.EventEmitter {
|
|
|
254
270
|
}
|
|
255
271
|
rawWrite(endpoint, data, writeWithResponse) {
|
|
256
272
|
return __awaiter(this, void 0, void 0, function* () {
|
|
257
|
-
if (!this.
|
|
258
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
273
|
+
if (!this.messageAttributes.RawWriteCmd) {
|
|
274
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw write capabilities`);
|
|
259
275
|
}
|
|
260
|
-
if (this.
|
|
261
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
276
|
+
if (this.messageAttributes.RawWriteCmd.Endpoints.indexOf(endpoint) === -1) {
|
|
277
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw writable endpoint ${endpoint}`);
|
|
262
278
|
}
|
|
263
|
-
yield this.sendExpectOk(new Messages.RawWriteCmd(this.
|
|
279
|
+
yield this.sendExpectOk(new Messages.RawWriteCmd(this.index, endpoint, data, writeWithResponse));
|
|
264
280
|
});
|
|
265
281
|
}
|
|
266
282
|
rawSubscribe(endpoint) {
|
|
267
283
|
return __awaiter(this, void 0, void 0, function* () {
|
|
268
|
-
if (!this.
|
|
269
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
284
|
+
if (!this.messageAttributes.RawSubscribeCmd) {
|
|
285
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw subscribe capabilities`);
|
|
270
286
|
}
|
|
271
|
-
if (this.
|
|
272
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
287
|
+
if (this.messageAttributes.RawSubscribeCmd.Endpoints.indexOf(endpoint) === -1) {
|
|
288
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw subscribable endpoint ${endpoint}`);
|
|
273
289
|
}
|
|
274
|
-
yield this.sendExpectOk(new Messages.RawSubscribeCmd(this.
|
|
290
|
+
yield this.sendExpectOk(new Messages.RawSubscribeCmd(this.index, endpoint));
|
|
275
291
|
});
|
|
276
292
|
}
|
|
277
293
|
rawUnsubscribe(endpoint) {
|
|
278
294
|
return __awaiter(this, void 0, void 0, function* () {
|
|
279
295
|
// This reuses raw subscribe's info.
|
|
280
|
-
if (!this.
|
|
281
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
296
|
+
if (!this.messageAttributes.RawSubscribeCmd) {
|
|
297
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw unsubscribe capabilities`);
|
|
282
298
|
}
|
|
283
|
-
if (this.
|
|
284
|
-
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.
|
|
299
|
+
if (this.messageAttributes.RawSubscribeCmd.Endpoints.indexOf(endpoint) === -1) {
|
|
300
|
+
throw new Exceptions_1.ButtplugDeviceException(`Device ${this.name} has no raw unsubscribable endpoint ${endpoint}`);
|
|
285
301
|
}
|
|
286
|
-
yield this.sendExpectOk(new Messages.RawUnsubscribeCmd(this.
|
|
302
|
+
yield this.sendExpectOk(new Messages.RawUnsubscribeCmd(this.index, endpoint));
|
|
287
303
|
});
|
|
288
304
|
}
|
|
289
305
|
stop() {
|
|
290
306
|
return __awaiter(this, void 0, void 0, function* () {
|
|
291
|
-
yield this.sendExpectOk(new Messages.StopDeviceCmd(this.
|
|
307
|
+
yield this.sendExpectOk(new Messages.StopDeviceCmd(this.index));
|
|
292
308
|
});
|
|
293
309
|
}
|
|
294
|
-
|
|
295
|
-
this.emit(
|
|
310
|
+
emitDisconnected() {
|
|
311
|
+
this.emit('deviceremoved');
|
|
296
312
|
}
|
|
297
313
|
}
|
|
298
314
|
exports.ButtplugClientDevice = ButtplugClientDevice;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtplugClientDevice.js","sourceRoot":"","sources":["../../../../src/client/ButtplugClientDevice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACb,2DAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"ButtplugClientDevice.js","sourceRoot":"","sources":["../../../../src/client/ButtplugClientDevice.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/// <reference types="node" />
|
|
9
9
|
/// <reference types="node" />
|
|
10
|
-
import { ButtplugLogger } from
|
|
11
|
-
import { EventEmitter } from
|
|
12
|
-
import { ButtplugClientDevice } from
|
|
13
|
-
import { IButtplugClientConnector } from
|
|
14
|
-
import * as Messages from
|
|
10
|
+
import { ButtplugLogger } from '../core/Logging';
|
|
11
|
+
import { EventEmitter } from 'events';
|
|
12
|
+
import { ButtplugClientDevice } from './ButtplugClientDevice';
|
|
13
|
+
import { IButtplugClientConnector } from './IButtplugClientConnector';
|
|
14
|
+
import * as Messages from '../core/Messages';
|
|
15
15
|
export declare class ButtplugClient extends EventEmitter {
|
|
16
16
|
protected _pingTimer: NodeJS.Timeout | null;
|
|
17
17
|
protected _connector: IButtplugClientConnector | null;
|
|
@@ -20,10 +20,9 @@ export declare class ButtplugClient extends EventEmitter {
|
|
|
20
20
|
protected _logger: ButtplugLogger;
|
|
21
21
|
protected _isScanning: boolean;
|
|
22
22
|
constructor(clientName?: string);
|
|
23
|
-
get
|
|
24
|
-
get
|
|
25
|
-
get
|
|
26
|
-
get IsScanning(): boolean;
|
|
23
|
+
get connected(): boolean;
|
|
24
|
+
get devices(): ButtplugClientDevice[];
|
|
25
|
+
get isScanning(): boolean;
|
|
27
26
|
connect: (connector: IButtplugClientConnector) => Promise<void>;
|
|
28
27
|
disconnect: () => Promise<void>;
|
|
29
28
|
startScanning: () => Promise<void>;
|
|
@@ -35,7 +34,7 @@ export declare class ButtplugClient extends EventEmitter {
|
|
|
35
34
|
protected initializeConnection: () => Promise<boolean>;
|
|
36
35
|
protected requestDeviceList: () => Promise<void>;
|
|
37
36
|
protected shutdownConnection: () => Promise<void>;
|
|
38
|
-
protected
|
|
37
|
+
protected sendMessage(msg: Messages.ButtplugMessage): Promise<Messages.ButtplugMessage>;
|
|
39
38
|
protected checkConnector(): void;
|
|
40
39
|
protected sendMsgExpectOk: (msg: Messages.ButtplugMessage) => Promise<void>;
|
|
41
40
|
protected sendDeviceMessageClosure: (device: ButtplugClientDevice, msg: Messages.ButtplugDeviceMessage) => Promise<Messages.ButtplugMessage>;
|