@openhps/sphero
Version:
Open Hybrid Positioning System - Sphero component
1,142 lines (1,051 loc) • 101 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("@openhps/core"));
else if(typeof define === 'function' && define.amd)
define("OpenHPS", ["core"], factory);
else if(typeof exports === 'object')
exports["OpenHPS"] = factory(require("@openhps/core"));
else
root["OpenHPS"] = root["OpenHPS"] || {}, root["OpenHPS"]["sphero"] = factory(root["OpenHPS"]["core"]);
})((typeof self !== 'undefined' ? self : this), (__WEBPACK_EXTERNAL_MODULE__openhps_core__) => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./dist/cjs/data/SpheroDataFrame.js":
/*!******************************************!*\
!*** ./dist/cjs/data/SpheroDataFrame.js ***!
\******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SpheroDataFrame = void 0;
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
const core_1 = __webpack_require__(/*! @openhps/core */ "@openhps/core");
const object_1 = __webpack_require__(/*! ./object */ "./dist/cjs/data/object/index.js");
let SpheroDataFrame = class SpheroDataFrame extends core_1.DataFrame {
constructor(spheroObject) {
super(spheroObject);
}
};
tslib_1.__decorate([
(0, core_1.SerializableMember)(),
tslib_1.__metadata("design:type", Number)
], SpheroDataFrame.prototype, "x", void 0);
tslib_1.__decorate([
(0, core_1.SerializableMember)(),
tslib_1.__metadata("design:type", Number)
], SpheroDataFrame.prototype, "y", void 0);
SpheroDataFrame = tslib_1.__decorate([
(0, core_1.SerializableObject)(),
tslib_1.__metadata("design:paramtypes", [object_1.SpheroDataObject])
], SpheroDataFrame);
exports.SpheroDataFrame = SpheroDataFrame;
//# sourceMappingURL=SpheroDataFrame.js.map
/***/ }),
/***/ "./dist/cjs/data/index.js":
/*!********************************!*\
!*** ./dist/cjs/data/index.js ***!
\********************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
tslib_1.__exportStar(__webpack_require__(/*! ./object */ "./dist/cjs/data/object/index.js"), exports);
tslib_1.__exportStar(__webpack_require__(/*! ./SpheroDataFrame */ "./dist/cjs/data/SpheroDataFrame.js"), exports);
//# sourceMappingURL=index.js.map
/***/ }),
/***/ "./dist/cjs/data/object/SpheroDataObject.js":
/*!**************************************************!*\
!*** ./dist/cjs/data/object/SpheroDataObject.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var SpheroDataObject_1;
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SpheroDataObject = void 0;
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
const core_1 = __webpack_require__(/*! @openhps/core */ "@openhps/core");
const dist_1 = __webpack_require__(/*! ../../../lib/server/lib/dist */ "./lib/web/dist/index.js");
let SpheroDataObject = SpheroDataObject_1 = class SpheroDataObject extends core_1.DataObject {
constructor(toy, uid, displayName) {
super(uid, displayName);
this.toy = toy;
}
static findSpheroMini() {
return new Promise((resolve, reject) => {
dist_1.Scanner.findSpheroMini()
.then((toy) => {
const object = new SpheroDataObject_1(toy);
object.setPosition(new core_1.Absolute3DPosition(0, 0, 0));
resolve(object);
})
.catch((ex) => {
reject(ex);
});
});
}
};
SpheroDataObject = SpheroDataObject_1 = tslib_1.__decorate([
(0, core_1.SerializableObject)(),
tslib_1.__metadata("design:paramtypes", [Object, String, String])
], SpheroDataObject);
exports.SpheroDataObject = SpheroDataObject;
//# sourceMappingURL=SpheroDataObject.js.map
/***/ }),
/***/ "./dist/cjs/data/object/index.js":
/*!***************************************!*\
!*** ./dist/cjs/data/object/index.js ***!
\***************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
tslib_1.__exportStar(__webpack_require__(/*! ./SpheroDataObject */ "./dist/cjs/data/object/SpheroDataObject.js"), exports);
//# sourceMappingURL=index.js.map
/***/ }),
/***/ "./dist/cjs/index.js":
/*!***************************!*\
!*** ./dist/cjs/index.js ***!
\***************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
tslib_1.__exportStar(__webpack_require__(/*! ./nodes */ "./dist/cjs/nodes/index.js"), exports);
tslib_1.__exportStar(__webpack_require__(/*! ./data */ "./dist/cjs/data/index.js"), exports);
//# sourceMappingURL=index.js.map
/***/ }),
/***/ "./dist/cjs/nodes/SpheroInputSource.js":
/*!*********************************************!*\
!*** ./dist/cjs/nodes/SpheroInputSource.js ***!
\*********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SpheroInputSource = void 0;
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
const core_1 = __webpack_require__(/*! @openhps/core */ "@openhps/core");
const data_1 = __webpack_require__(/*! ../data */ "./dist/cjs/data/index.js");
class SpheroInputSource extends core_1.SourceNode {
constructor(source) {
super(source);
}
get toy() {
const spheroObject = this.source;
return spheroObject.toy;
}
onPull() {
return new Promise((resolve) => {
resolve(new data_1.SpheroDataFrame(this.source));
});
}
roll(speed, heading, flags = []) {
return new Promise((resolve, reject) => {
const spheroObject = this.source;
const position = spheroObject.getPosition() || new core_1.Absolute2DPosition(0, 0);
position.unit = core_1.LengthUnit.CENTIMETER;
position.timestamp = core_1.TimeService.now();
position.orientation = core_1.Orientation.fromEuler({ yaw: heading, pitch: 0, roll: 0, unit: core_1.AngleUnit.DEGREE });
position.velocity.linear = new core_1.LinearVelocity(
// Sphero Mini top speed is 1m/s
// https://support.sphero.com/article/6drb2qggx4-sphero-mini-faq#:~:text=How%20fast%20is%20Sphero%20Mini,of%201%20meter%20per%20second.
(1.0 / 255) * speed, 0, 0, core_1.LinearVelocityUnit.METER_PER_SECOND);
spheroObject.setPosition(position);
const frame = new data_1.SpheroDataFrame(spheroObject);
spheroObject.toy
.roll(speed, heading, flags)
.then(() => {
return this.push(frame);
})
.then(() => {
setTimeout(() => {
resolve();
}, 10);
})
.catch(reject);
});
}
rollTime(speed, heading, time, timeUnit, flags = []) {
// eslint-disable-next-line
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
let driving = true;
setTimeout(() => (driving = false), timeUnit.convert(time, core_1.TimeUnit.MILLISECOND));
while (driving) {
yield this.roll(speed, heading, flags);
}
this.roll(0, heading, flags)
.then(() => {
resolve();
})
.catch((ex) => {
reject(ex);
});
}));
}
}
exports.SpheroInputSource = SpheroInputSource;
//# sourceMappingURL=SpheroInputSource.js.map
/***/ }),
/***/ "./dist/cjs/nodes/SpheroSensorSource.js":
/*!**********************************************!*\
!*** ./dist/cjs/nodes/SpheroSensorSource.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.SpheroSensor = exports.SpheroSensorSource = void 0;
const core_1 = __webpack_require__(/*! @openhps/core */ "@openhps/core");
const data_1 = __webpack_require__(/*! ../data */ "./dist/cjs/data/index.js");
const dist_1 = __webpack_require__(/*! ../../lib/server/lib/dist */ "./lib/web/dist/index.js");
class SpheroSensorSource extends core_1.SourceNode {
constructor(options) {
super(options);
this._calibrated = false;
this._calibrated = this.options.skipCalibration;
this.once('build', this._initSensors.bind(this));
}
get toy() {
const spheroObject = this.source;
return spheroObject.toy;
}
_initSensors() {
return new Promise((resolve, reject) => {
this.referenceSpace = new core_1.ReferenceSpace(this.graph.referenceSpace);
const spheroObject = this.source;
spheroObject.toy.on(dist_1.Event.onSensor, this._onSensorEvent.bind(this));
if (!this.options.skipSensorConfiguration) {
spheroObject.toy
.configureSensorStream(this.options.interval)
.then(() => {
resolve();
})
.catch(reject);
}
else {
resolve();
}
});
}
_onSensorEvent(event) {
if (!this._calibrated) {
// Start orientation
this.referenceSpace.rotation(core_1.Quaternion.fromEuler({
yaw: -event.angles.yaw,
pitch: -event.angles.pitch,
roll: -event.angles.roll,
unit: core_1.AngleUnit.DEGREE,
}));
// Start origin should be (0, 0)
this.referenceSpace.translation(-event.locator.position.x, -event.locator.position.y);
// Apply axis rotation to match OpenHPS
this._calibrated = true;
}
const spheroObject = this.source;
const position = spheroObject.getPosition() || new core_1.Absolute2DPosition(0, 0);
position.timestamp = core_1.TimeService.now();
position.unit = core_1.LengthUnit.CENTIMETER;
if (this.options.sensors.includes(SpheroSensor.VELOCITY)) {
position.velocity.linear = new core_1.LinearVelocity(event.locator.velocity.x, event.locator.velocity.y, 0, core_1.LinearVelocityUnit.CENTIMETER_PER_SECOND);
}
if (this.options.sensors.includes(SpheroSensor.GYROSCOPE)) {
position.velocity.angular = new core_1.AngularVelocity(event.gyro.filtered.x, event.gyro.filtered.y, event.gyro.filtered.z, core_1.AngularVelocityUnit.DEGREE_PER_SECOND);
}
if (this.options.sensors.includes(SpheroSensor.LOCATION)) {
position.unit = core_1.LengthUnit.CENTIMETER;
position.x = event.locator.position.x;
position.y = event.locator.position.y;
position.orientation = core_1.Orientation.fromEuler({
yaw: event.angles.yaw,
pitch: event.angles.pitch,
roll: event.angles.roll,
unit: core_1.AngleUnit.DEGREE,
});
}
spheroObject.setPosition(position, this.referenceSpace);
// Clone the information to the sphero data frame
const frame = new data_1.SpheroDataFrame(spheroObject);
const angularVelocity = new core_1.Gyroscope(this.uid + '_gyro');
angularVelocity.value = position.velocity.angular.clone();
const linearVelocity = new core_1.LinearVelocitySensor(this.uid + '_linearvel');
linearVelocity.value = position.velocity.linear.clone();
const relativeOrientation = new core_1.RelativeOrientationSensor(this.uid + '_relativeorientation');
relativeOrientation.value = position.orientation.clone();
const linearAcceleration = new core_1.LinearAccelerationSensor(this.uid + '_linearaccl');
linearAcceleration.value = new core_1.Acceleration(event.accelerometer.filtered.x, event.accelerometer.filtered.y, event.accelerometer.filtered.z);
frame.x = position.x;
frame.y = position.y;
this.push(frame);
}
onPull() {
return new Promise((resolve) => {
resolve(new data_1.SpheroDataFrame(this.source));
});
}
}
exports.SpheroSensorSource = SpheroSensorSource;
var SpheroSensor;
(function (SpheroSensor) {
SpheroSensor[SpheroSensor["LOCATION"] = 0] = "LOCATION";
SpheroSensor[SpheroSensor["GYROSCOPE"] = 1] = "GYROSCOPE";
SpheroSensor[SpheroSensor["ACCELEROMETER"] = 2] = "ACCELEROMETER";
SpheroSensor[SpheroSensor["VELOCITY"] = 3] = "VELOCITY";
})(SpheroSensor = exports.SpheroSensor || (exports.SpheroSensor = {}));
//# sourceMappingURL=SpheroSensorSource.js.map
/***/ }),
/***/ "./dist/cjs/nodes/index.js":
/*!*********************************!*\
!*** ./dist/cjs/nodes/index.js ***!
\*********************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
tslib_1.__exportStar(__webpack_require__(/*! ./SpheroSensorSource */ "./dist/cjs/nodes/SpheroSensorSource.js"), exports);
tslib_1.__exportStar(__webpack_require__(/*! ./SpheroInputSource */ "./dist/cjs/nodes/SpheroInputSource.js"), exports);
//# sourceMappingURL=index.js.map
/***/ }),
/***/ "./lib/web/dist/commands/api.js":
/*!**************************************!*\
!*** ./lib/web/dist/commands/api.js ***!
\**************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.apiProcessor);
return {
echo: () => encode({
commandId: types_1.APIProcessCommandIds.echo
})
};
};
//# sourceMappingURL=api.js.map
/***/ }),
/***/ "./lib/web/dist/commands/decoder.js":
/*!******************************************!*\
!*** ./lib/web/dist/commands/decoder.js ***!
\******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.factory = exports.number = void 0;
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
const MINIMUN_PACKET_LENGTH = 6;
function number(buffer, offset) {
return Buffer.from(buffer).readInt16BE(offset);
}
exports.number = number;
const decodeFlags = (flags) => {
const isResponse = !!(flags & types_1.Flags.isResponse);
const requestsResponse = !!(flags & types_1.Flags.requestsResponse);
const requestsOnlyErrorResponse = !!(flags & types_1.Flags.requestsOnlyErrorResponse);
const resetsInactivityTimeout = !!(flags & types_1.Flags.resetsInactivityTimeout);
const commandHasTargetId = !!(flags & types_1.Flags.commandHasTargetId);
const commandHasSourceId = !!(flags & types_1.Flags.commandHasSourceId);
return {
isResponse,
requestsResponse,
requestsOnlyErrorResponse,
resetsInactivityTimeout,
commandHasTargetId,
commandHasSourceId
};
};
const classifyPacket = (packet) => {
const [_startPacket, flags, ...rest] = packet;
const { commandHasTargetId, commandHasSourceId } = decodeFlags(flags);
let sourceId;
let targetId;
if (commandHasTargetId) {
targetId = rest.shift();
}
if (commandHasSourceId) {
sourceId = rest.shift();
}
const deviceId = rest.shift();
const commandId = rest.shift();
const sequenceNumber = rest.shift();
const payload = rest.slice(0, rest.length - 2);
const [_checksum, _endPacket] = rest.slice(rest.length - 2, rest.length - 1);
return {
sourceId,
targetId,
commandId,
deviceId,
payload,
raw: packet,
sequenceNumber
};
};
function factory(callback) {
let msg = [];
let checksum = 0;
let isEscaping = false;
const init = () => {
msg = [];
checksum = 0;
isEscaping = false;
};
const error = (errorMessage) => {
init();
callback(errorMessage);
};
return {
add(byte) {
switch (byte) {
case types_1.APIConstants.startOfPacket:
if (msg.length !== 0) {
init();
return callback('Invalid first byte');
}
return msg.push(byte);
case types_1.APIConstants.endOfPacket:
if (msg.length === 0 || msg.length < MINIMUN_PACKET_LENGTH) {
return error('Invalid last byte ' + msg.length);
}
if (checksum !== 0xff) {
return error('Invalid checksum');
}
msg.push(byte);
callback(undefined, classifyPacket(new Uint8Array(msg)));
return init();
case types_1.APIConstants.escape:
if (isEscaping) {
return error('Invalid escape char position');
}
isEscaping = true;
return;
case types_1.APIConstants.escapedStartOfPacket:
case types_1.APIConstants.escapedEndOfPacket:
case types_1.APIConstants.escapedEscape:
if (isEscaping) {
byte = byte | types_1.APIConstants.escapeMask;
isEscaping = false;
}
}
if (isEscaping) {
return error('Invalid no escape char end found');
}
msg.push(byte);
checksum = (checksum & byte) | 0xff;
}
};
}
exports.factory = factory;
//# sourceMappingURL=decoder.js.map
/***/ }),
/***/ "./lib/web/dist/commands/driving.js":
/*!******************************************!*\
!*** ./lib/web/dist/commands/driving.js ***!
\******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const utils_1 = __webpack_require__(/*! ../utils */ "./lib/web/dist/utils.js");
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
const encodeNumberLM = (n) => {
const absN = Math.abs(n * 3968);
const nFirstHalfByte1 = n === 0 ? 0 : n > 0 ? 0x30 : 0xb0;
const nSecondHalfByte1 = (absN >> 8) & 0x0f;
return [
nFirstHalfByte1 | nSecondHalfByte1,
absN & 0xff,
(0 >> 8) & 0xff,
0 & 0xff
];
};
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.driving);
return {
drive: (speed, heading, flags) => encode({
commandId: types_1.DrivingCommandIds.driveWithHeading,
targetId: 0x12,
payload: [
speed,
(heading >> 8) & 0xff,
heading & 0xff,
(0, utils_1.combineFlags)(flags)
]
}),
driveAsRc: (heading, speed) => encode({
commandId: types_1.DrivingCommandIds.driveAsRc,
payload: [...encodeNumberLM(heading), ...encodeNumberLM(speed)]
})
};
};
//# sourceMappingURL=driving.js.map
/***/ }),
/***/ "./lib/web/dist/commands/encoder.js":
/*!******************************************!*\
!*** ./lib/web/dist/commands/encoder.js ***!
\******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.encode = void 0;
const utils_1 = __webpack_require__(/*! ../utils */ "./lib/web/dist/utils.js");
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
function encodeBytes(out, byte, appendChecksum = false) {
const unsignedInt = new Uint8Array([byte])[0];
switch (unsignedInt) {
case types_1.APIConstants.startOfPacket:
out.bytes.push(types_1.APIConstants.escape, types_1.APIConstants.escapedStartOfPacket);
break;
case types_1.APIConstants.endOfPacket:
out.bytes.push(types_1.APIConstants.escape, types_1.APIConstants.escapedEndOfPacket);
break;
case types_1.APIConstants.escape:
out.bytes.push(types_1.APIConstants.escape, types_1.APIConstants.escapedEscape);
break;
default:
out.bytes.push(byte);
}
out.checksum = (out.checksum + byte) & 0xff;
}
function encode(command) {
const { commandFlags = [types_1.Flags.requestsResponse, types_1.Flags.resetsInactivityTimeout], deviceId, commandId, sequenceNumber, payload = [] } = command;
const out = {
bytes: [],
checksum: 0x00
};
out.bytes.push(types_1.APIConstants.startOfPacket);
encodeBytes(out, (0, utils_1.combineFlags)([
...commandFlags,
command.targetId ? types_1.Flags.commandHasTargetId : 0
]), true);
if (command.targetId) {
encodeBytes(out, command.targetId, true);
}
encodeBytes(out, deviceId, true);
encodeBytes(out, commandId, true);
encodeBytes(out, sequenceNumber, true);
if (payload) {
payload.forEach(byte => {
encodeBytes(out, byte, true);
});
}
out.checksum = ~out.checksum;
encodeBytes(out, out.checksum);
out.bytes.push(types_1.APIConstants.endOfPacket);
return Object.assign(Object.assign({}, command), { raw: new Uint8Array(out.bytes) });
}
exports.encode = encode;
//# sourceMappingURL=encoder.js.map
/***/ }),
/***/ "./lib/web/dist/commands/index.js":
/*!****************************************!*\
!*** ./lib/web/dist/commands/index.js ***!
\****************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.factory = void 0;
const api_1 = __webpack_require__(/*! ./api */ "./lib/web/dist/commands/api.js");
const driving_1 = __webpack_require__(/*! ./driving */ "./lib/web/dist/commands/driving.js");
const encoder_1 = __webpack_require__(/*! ./encoder */ "./lib/web/dist/commands/encoder.js");
const power_1 = __webpack_require__(/*! ./power */ "./lib/web/dist/commands/power.js");
const something_api_1 = __webpack_require__(/*! ./something-api */ "./lib/web/dist/commands/something-api.js");
const system_info_1 = __webpack_require__(/*! ./system-info */ "./lib/web/dist/commands/system-info.js");
const sensor_1 = __webpack_require__(/*! ./sensor */ "./lib/web/dist/commands/sensor.js");
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
const user_io_1 = __webpack_require__(/*! ./user-io */ "./lib/web/dist/commands/user-io.js");
const sequencer = () => {
let s = 0;
return () => {
const temp = s;
s += 1;
if (s >= 255) {
s = 0;
}
return temp;
};
};
const factory = (seq) => {
const getSequence = seq || sequencer();
const gen = (deviceId) => (part) => (0, encoder_1.encode)(Object.assign(Object.assign({}, part), { commandFlags: [types_1.Flags.requestsResponse, types_1.Flags.resetsInactivityTimeout], deviceId, sequenceNumber: getSequence() }));
return {
api: (0, api_1.default)(gen),
driving: (0, driving_1.default)(gen),
power: (0, power_1.default)(gen),
somethingApi: (0, something_api_1.default)(gen),
systemInfo: (0, system_info_1.default)(gen),
userIo: (0, user_io_1.default)(gen),
sensor: (0, sensor_1.default)(gen)
};
};
exports.factory = factory;
//# sourceMappingURL=index.js.map
/***/ }),
/***/ "./lib/web/dist/commands/power.js":
/*!****************************************!*\
!*** ./lib/web/dist/commands/power.js ***!
\****************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.powerInfo);
return {
batteryVoltage: () => encode({
targetId: 0x11,
commandId: types_1.PowerCommandIds.batteryVoltage
}),
sleep: () => encode({
targetId: 0x11,
commandId: types_1.PowerCommandIds.sleep
}),
something2: () => encode({
commandId: types_1.PowerCommandIds.something2
}),
something3: () => encode({
commandId: types_1.PowerCommandIds.something3
}),
something4: () => encode({
commandId: types_1.PowerCommandIds.something4
}),
wake: () => encode({
targetId: 0x11,
commandId: types_1.PowerCommandIds.wake
})
};
};
//# sourceMappingURL=power.js.map
/***/ }),
/***/ "./lib/web/dist/commands/sensor.js":
/*!*****************************************!*\
!*** ./lib/web/dist/commands/sensor.js ***!
\*****************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.sensor);
return {
enableCollisionAsync: () => encode({
commandId: types_1.SensorCommandIds.enableCollisionAsync
}),
configureCollision: (xThreshold, yThreshold, xSpeed, ySpeed, deadTime, method = 0x01) => encode({
commandId: types_1.SensorCommandIds.configureCollision,
targetId: 0x12,
payload: [method, xThreshold, xSpeed, yThreshold, ySpeed, deadTime]
}),
sensorMask: (sensorRawValue, streamingRate) => {
const bytes = [
(streamingRate >> 8) & 0xff,
streamingRate & 0xff,
0,
(sensorRawValue >> 24) & 0xff,
(sensorRawValue >> 16) & 0xff,
(sensorRawValue >> 8) & 0xff,
sensorRawValue & 0xff
];
return encode({
commandId: types_1.SensorCommandIds.sensorMask,
targetId: 0x12,
payload: bytes
});
},
sensorMaskExtended: (mask) => {
const bytes = [
(mask >> 24) & 0xff,
(mask >> 16) & 0xff,
(mask >> 8) & 0xff,
mask & 0xff
];
return encode({
commandId: types_1.SensorCommandIds.sensorMaskExtended,
targetId: 0x12,
payload: bytes
});
}
};
};
//# sourceMappingURL=sensor.js.map
/***/ }),
/***/ "./lib/web/dist/commands/something-api.js":
/*!************************************************!*\
!*** ./lib/web/dist/commands/something-api.js ***!
\************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.somethingAPI);
return {
something5: () => encode({
commandId: types_1.SomethingApi.something5
})
};
};
//# sourceMappingURL=something-api.js.map
/***/ }),
/***/ "./lib/web/dist/commands/system-info.js":
/*!**********************************************!*\
!*** ./lib/web/dist/commands/system-info.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.systemInfo);
return {
appVersion: () => encode({
commandId: types_1.SystemInfoCommandIds.mainApplicationVersion
}),
something: () => encode({
commandId: types_1.SystemInfoCommandIds.something
}),
something6: () => encode({
commandId: types_1.SystemInfoCommandIds.something6
}),
something7: () => encode({
commandId: types_1.SystemInfoCommandIds.something7
})
};
};
//# sourceMappingURL=system-info.js.map
/***/ }),
/***/ "./lib/web/dist/commands/types.js":
/*!****************************************!*\
!*** ./lib/web/dist/commands/types.js ***!
\****************************************/
/***/ ((__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.DriveFlag = exports.APIConstants = exports.Flags = exports.UserIOCommandIds = exports.SensorCommandIds = exports.AnimatronicsCommandIds = exports.DrivingCommandIds = exports.PowerCommandIds = exports.SystemInfoCommandIds = exports.APIProcessCommandIds = exports.SomethingApi = exports.DeviceId = void 0;
var DeviceId;
(function (DeviceId) {
DeviceId[DeviceId["apiProcessor"] = 16] = "apiProcessor";
DeviceId[DeviceId["systemInfo"] = 17] = "systemInfo";
DeviceId[DeviceId["powerInfo"] = 19] = "powerInfo";
DeviceId[DeviceId["driving"] = 22] = "driving";
DeviceId[DeviceId["animatronics"] = 23] = "animatronics";
DeviceId[DeviceId["sensor"] = 24] = "sensor";
DeviceId[DeviceId["userIO"] = 26] = "userIO";
DeviceId[DeviceId["somethingAPI"] = 31] = "somethingAPI";
})(DeviceId = exports.DeviceId || (exports.DeviceId = {}));
var SomethingApi;
(function (SomethingApi) {
SomethingApi[SomethingApi["something5"] = 39] = "something5";
})(SomethingApi = exports.SomethingApi || (exports.SomethingApi = {}));
var APIProcessCommandIds;
(function (APIProcessCommandIds) {
APIProcessCommandIds[APIProcessCommandIds["echo"] = 0] = "echo";
})(APIProcessCommandIds = exports.APIProcessCommandIds || (exports.APIProcessCommandIds = {}));
var SystemInfoCommandIds;
(function (SystemInfoCommandIds) {
SystemInfoCommandIds[SystemInfoCommandIds["mainApplicationVersion"] = 0] = "mainApplicationVersion";
SystemInfoCommandIds[SystemInfoCommandIds["bootloaderVersion"] = 1] = "bootloaderVersion";
SystemInfoCommandIds[SystemInfoCommandIds["something"] = 6] = "something";
SystemInfoCommandIds[SystemInfoCommandIds["something6"] = 18] = "something6";
SystemInfoCommandIds[SystemInfoCommandIds["something7"] = 40] = "something7";
})(SystemInfoCommandIds = exports.SystemInfoCommandIds || (exports.SystemInfoCommandIds = {}));
var PowerCommandIds;
(function (PowerCommandIds) {
PowerCommandIds[PowerCommandIds["deepSleep"] = 0] = "deepSleep";
PowerCommandIds[PowerCommandIds["sleep"] = 1] = "sleep";
PowerCommandIds[PowerCommandIds["batteryVoltage"] = 3] = "batteryVoltage";
PowerCommandIds[PowerCommandIds["wake"] = 13] = "wake";
PowerCommandIds[PowerCommandIds["something2"] = 16] = "something2";
PowerCommandIds[PowerCommandIds["something3"] = 4] = "something3";
PowerCommandIds[PowerCommandIds["something4"] = 30] = "something4";
})(PowerCommandIds = exports.PowerCommandIds || (exports.PowerCommandIds = {}));
var DrivingCommandIds;
(function (DrivingCommandIds) {
DrivingCommandIds[DrivingCommandIds["rawMotor"] = 1] = "rawMotor";
DrivingCommandIds[DrivingCommandIds["resetYaw"] = 6] = "resetYaw";
DrivingCommandIds[DrivingCommandIds["driveAsSphero"] = 4] = "driveAsSphero";
DrivingCommandIds[DrivingCommandIds["driveAsRc"] = 2] = "driveAsRc";
DrivingCommandIds[DrivingCommandIds["driveWithHeading"] = 7] = "driveWithHeading";
DrivingCommandIds[DrivingCommandIds["stabilization"] = 12] = "stabilization";
})(DrivingCommandIds = exports.DrivingCommandIds || (exports.DrivingCommandIds = {}));
var AnimatronicsCommandIds;
(function (AnimatronicsCommandIds) {
AnimatronicsCommandIds[AnimatronicsCommandIds["animationBundle"] = 5] = "animationBundle";
AnimatronicsCommandIds[AnimatronicsCommandIds["shoulderAction"] = 13] = "shoulderAction";
AnimatronicsCommandIds[AnimatronicsCommandIds["domePosition"] = 15] = "domePosition";
AnimatronicsCommandIds[AnimatronicsCommandIds["shoulderActionComplete"] = 38] = "shoulderActionComplete";
AnimatronicsCommandIds[AnimatronicsCommandIds["enableShoulderActionCompleteAsync"] = 42] = "enableShoulderActionCompleteAsync";
})(AnimatronicsCommandIds = exports.AnimatronicsCommandIds || (exports.AnimatronicsCommandIds = {}));
var SensorCommandIds;
(function (SensorCommandIds) {
SensorCommandIds[SensorCommandIds["sensorMask"] = 0] = "sensorMask";
SensorCommandIds[SensorCommandIds["sensorResponse"] = 2] = "sensorResponse";
SensorCommandIds[SensorCommandIds["configureCollision"] = 17] = "configureCollision";
SensorCommandIds[SensorCommandIds["collisionDetectedAsync"] = 18] = "collisionDetectedAsync";
SensorCommandIds[SensorCommandIds["resetLocator"] = 19] = "resetLocator";
SensorCommandIds[SensorCommandIds["enableCollisionAsync"] = 20] = "enableCollisionAsync";
SensorCommandIds[SensorCommandIds["sensor1"] = 15] = "sensor1";
SensorCommandIds[SensorCommandIds["sensor2"] = 23] = "sensor2";
SensorCommandIds[SensorCommandIds["sensorMaskExtended"] = 12] = "sensorMaskExtended";
})(SensorCommandIds = exports.SensorCommandIds || (exports.SensorCommandIds = {}));
var UserIOCommandIds;
(function (UserIOCommandIds) {
UserIOCommandIds[UserIOCommandIds["allLEDs"] = 14] = "allLEDs";
UserIOCommandIds[UserIOCommandIds["allLEDsV21"] = 28] = "allLEDsV21";
UserIOCommandIds[UserIOCommandIds["playAudioFile"] = 7] = "playAudioFile";
UserIOCommandIds[UserIOCommandIds["audioVolume"] = 8] = "audioVolume";
UserIOCommandIds[UserIOCommandIds["stopAudio"] = 10] = "stopAudio";
UserIOCommandIds[UserIOCommandIds["testSound"] = 24] = "testSound";
UserIOCommandIds[UserIOCommandIds["matrixPixel"] = 45] = "matrixPixel";
UserIOCommandIds[UserIOCommandIds["matrixColor"] = 47] = "matrixColor";
UserIOCommandIds[UserIOCommandIds["clearMatrix"] = 56] = "clearMatrix";
UserIOCommandIds[UserIOCommandIds["matrixRotation"] = 58] = "matrixRotation";
UserIOCommandIds[UserIOCommandIds["matrixScrollText"] = 59] = "matrixScrollText";
UserIOCommandIds[UserIOCommandIds["matrixLine"] = 61] = "matrixLine";
UserIOCommandIds[UserIOCommandIds["matrixFill"] = 62] = "matrixFill";
})(UserIOCommandIds = exports.UserIOCommandIds || (exports.UserIOCommandIds = {}));
var Flags;
(function (Flags) {
Flags[Flags["isResponse"] = 1] = "isResponse";
Flags[Flags["requestsResponse"] = 2] = "requestsResponse";
Flags[Flags["requestsOnlyErrorResponse"] = 4] = "requestsOnlyErrorResponse";
Flags[Flags["resetsInactivityTimeout"] = 8] = "resetsInactivityTimeout";
Flags[Flags["commandHasTargetId"] = 16] = "commandHasTargetId";
Flags[Flags["commandHasSourceId"] = 32] = "commandHasSourceId";
})(Flags = exports.Flags || (exports.Flags = {}));
var APIConstants;
(function (APIConstants) {
APIConstants[APIConstants["escape"] = 171] = "escape";
APIConstants[APIConstants["startOfPacket"] = 141] = "startOfPacket";
APIConstants[APIConstants["endOfPacket"] = 216] = "endOfPacket";
APIConstants[APIConstants["escapeMask"] = 136] = "escapeMask";
APIConstants[APIConstants["escapedEscape"] = 35] = "escapedEscape";
APIConstants[APIConstants["escapedStartOfPacket"] = 5] = "escapedStartOfPacket";
APIConstants[APIConstants["escapedEndOfPacket"] = 80] = "escapedEndOfPacket";
})(APIConstants = exports.APIConstants || (exports.APIConstants = {}));
var DriveFlag;
(function (DriveFlag) {
DriveFlag[DriveFlag["reverse"] = 1] = "reverse";
DriveFlag[DriveFlag["boost"] = 2] = "boost";
DriveFlag[DriveFlag["fastTurnMode"] = 4] = "fastTurnMode";
DriveFlag[DriveFlag["tankDriveLeftMotorReverse"] = 8] = "tankDriveLeftMotorReverse";
DriveFlag[DriveFlag["tankDriveRightMotorReverse"] = 16] = "tankDriveRightMotorReverse";
})(DriveFlag = exports.DriveFlag || (exports.DriveFlag = {}));
//# sourceMappingURL=types.js.map
/***/ }),
/***/ "./lib/web/dist/commands/user-io.js":
/*!******************************************!*\
!*** ./lib/web/dist/commands/user-io.js ***!
\******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const types_1 = __webpack_require__(/*! ./types */ "./lib/web/dist/commands/types.js");
exports["default"] = (generator) => {
const encode = generator(types_1.DeviceId.userIO);
const encodeAnimatronics = generator(types_1.DeviceId.animatronics);
return {
allLEDsRaw: (payload) => encode({
commandId: types_1.UserIOCommandIds.allLEDs,
payload
}),
setBackLedIntensity: (i) => encode({
commandId: types_1.UserIOCommandIds.allLEDs,
payload: [0x00, 0x01, i]
}),
setMainLedBlueIntensity: (b) => encode({
commandId: types_1.UserIOCommandIds.allLEDs,
payload: [0x00, 0x08, b]
}),
setMainLedColor: (r, g, b) => encode({
commandId: types_1.UserIOCommandIds.allLEDs,
payload: [0x00, 0x70, r, g, b]
}),
setMainLedGreenIntensity: (g) => encode({
commandId: types_1.UserIOCommandIds.allLEDs,
payload: [0x00, 0x04, g]
}),
setMainLedRedIntensity: (r) => encode({
commandId: types_1.UserIOCommandIds.allLEDs,
payload: [0x00, 0x02, r]
}),
playAudioFile: (idx) => encode({
commandId: types_1.UserIOCommandIds.playAudioFile,
payload: [idx, 0x00, 0x00]
}),
turnDome: (angle) => encodeAnimatronics({
commandId: types_1.AnimatronicsCommandIds.domePosition,
payload: [angle[1], angle[0], 0x00, 0x00]
}),
setStance: (stance) => encodeAnimatronics({
commandId: types_1.AnimatronicsCommandIds.shoulderAction,
payload: [stance]
}),
playAnimation: (animation) => encodeAnimatronics({
commandId: types_1.AnimatronicsCommandIds.animationBundle,
payload: [0x00, animation]
})
};
};
//# sourceMappingURL=user-io.js.map
/***/ }),
/***/ "./lib/web/dist/index.js":
/*!*******************************!*\
!*** ./lib/web/dist/index.js ***!
\*******************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Utils = exports.Scanner = exports.Toys = exports.DriveFlag = exports.Stance = exports.Event = exports.Core = exports.RollableToy = exports.SpheroBolt = exports.SpheroMini = exports.R2Q5 = exports.R2D2 = exports.LightningMcQueen = exports.BB9E = void 0;
const toys_1 = __webpack_require__(/*! ./toys */ "./lib/web/dist/toys/index.js");
Object.defineProperty(exports, "Toys", ({ enumerable: true, get: function () { return toys_1.toys; } }));
const Scanner = __webpack_require__(/*! ./scanner */ "./lib/web/dist/scanner.js");
exports.Scanner = Scanner;
const Utils = __webpack_require__(/*! ./utils */ "./lib/web/dist/utils.js");
exports.Utils = Utils;
var bb9e_1 = __webpack_require__(/*! ./toys/bb9e */ "./lib/web/dist/toys/bb9e.js");
Object.defineProperty(exports, "BB9E", ({ enumerable: true, get: function () { return bb9e_1.BB9E; } }));
var lightning_mcqueen_1 = __webpack_require__(/*! ./toys/lightning-mcqueen */ "./lib/web/dist/toys/lightning-mcqueen.js");
Object.defineProperty(exports, "LightningMcQueen", ({ enumerable: true, get: function () { return lightning_mcqueen_1.LightningMcQueen; } }));
var r2d2_1 = __webpack_require__(/*! ./toys/r2d2 */ "./lib/web/dist/toys/r2d2.js");
Object.defineProperty(exports, "R2D2", ({ enumerable: true, get: function () { return r2d2_1.R2D2; } }));
var r2q5_1 = __webpack_require__(/*! ./toys/r2q5 */ "./lib/web/dist/toys/r2q5.js");
Object.defineProperty(exports, "R2Q5", ({ enumerable: true, get: function () { return r2q5_1.R2Q5; } }));
var sphero_mini_1 = __webpack_require__(/*! ./toys/sphero-mini */ "./lib/web/dist/toys/sphero-mini.js");
Object.defineProperty(exports, "SpheroMini", ({ enumerable: true, get: function () { return sphero_mini_1.SpheroMini; } }));
var sphero_bolt_1 = __webpack_require__(/*! ./toys/sphero-bolt */ "./lib/web/dist/toys/sphero-bolt.js");
Object.defineProperty(exports, "SpheroBolt", ({ enumerable: true, get: function () { return sphero_bolt_1.SpheroBolt; } }));
var rollable_toy_1 = __webpack_require__(/*! ./toys/rollable-toy */ "./lib/web/dist/toys/rollable-toy.js");
Object.defineProperty(exports, "RollableToy", ({ enumerable: true, get: function () { return rollable_toy_1.RollableToy; } }));
var core_1 = __webpack_require__(/*! ./toys/core */ "./lib/web/dist/toys/core.js");
Object.defineProperty(exports, "Core", ({ enumerable: true, get: function () { return core_1.Core; } }));
var core_2 = __webpack_require__(/*! ./toys/core */ "./lib/web/dist/toys/core.js");
Object.defineProperty(exports, "Event", ({ enumerable: true, get: function () { return core_2.Event; } }));
var types_1 = __webpack_require__(/*! ./toys/types */ "./lib/web/dist/toys/types.js");
Object.defineProperty(exports, "Stance", ({ enumerable: true, get: function () { return types_1.Stance; } }));
var types_2 = __webpack_require__(/*! ./commands/types */ "./lib/web/dist/commands/types.js");
Object.defineProperty(exports, "DriveFlag", ({ enumerable: true, get: function () { return types_2.DriveFlag; } }));
//# sourceMappingURL=index.js.map
/***/ }),
/***/ "./lib/web/dist/scanner.js":
/*!*********************************!*\
!*** ./lib/web/dist/scanner.js ***!
\*********************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.findLightningMcQueen = exports.findSpheroMiniByName = exports.findSpheroMini = exports.findR2Q5 = exports.findR2D2 = exports.findBB9E = exports.find = exports.findToy = void 0;
const bb9e_1 = __webpack_require__(/*! ./toys/bb9e */ "./lib/web/dist/toys/bb9e.js");
const lightning_mcqueen_1 = __webpack_require__(/*! ./toys/lightning-mcqueen */ "./lib/web/dist/toys/lightning-mcqueen.js");
const r2d2_1 = __webpack_require__(/*! ./toys/r2d2 */ "./lib/web/dist/toys/r2d2.js");
const r2q5_1 = __webpack_require__(/*! ./toys/r2q5 */ "./lib/web/dist/toys/r2q5.js");
const sphero_mini_1 = __webpack_require__(/*! ./toys/sphero-mini */ "./lib/web/dist/toys/sphero-mini.js");
const types_1 = __webpack_require__(/*! ./toys/types */ "./lib/web/dist/toys/types.js");
function findToy(type) {
return new Promise((resolve, reject) => {
navigator.bluetooth.requestDevice({
filters: [{
services: [types_1.ServicesUUID.apiV2ControlService]
}],
optionalServices: [types_1.ServicesUUID.nordicDfuService]
}).then((device) => {
resolve(device);
}).catch(ex => {
reject(ex);
});
});
}
exports.findToy = findToy;
const startToy = (toy) => __awaiter(void 0, void 0, void 0, function* () {
yield toy.start();
});
const find = (toyType, name) => __awaiter(void 0, void 0, void 0, function* () {
const device = yield findToy(toyType);
const toy = new toyType.class(device);
yield startToy(toy);
return toy;
});
exports.find = find;
const findBB9E = () => __awaiter(void 0, void 0, void 0, function* () {
return (yield (0, exports.find)(bb9e_1.BB9E.advertisement));
});
exports.findBB9E = findBB9E;
const findR2D2 = () => __awaiter(void 0, void 0, void 0, function* () {
return (yield (0, exports.find)(r2d2_1.R2D2.advertisement));
});
exports.findR2D2 = findR2D2;
const findR2Q5 = () => __awaiter(void 0, void 0, void 0, function* () {
return (yield (0, exports.find)(r2q5_1.R2Q5.advertisement));
});
exports.findR2Q5 = findR2Q5;
const findSpheroMini = () => __awaiter(void 0, void 0, void 0, function* () {
return (yield (0, exports.find)(sphero_mini_1.SpheroMini.advertisement));
});
exports.findSpheroMini = findSpheroMini;
const findSpheroMiniByName = (name) => __awaiter(void 0, void 0, void 0, function* () {
return (yield (0, exports.find)(sphero_mini_1.SpheroMini.advertisement, name));
});
exports.findSpheroMiniByName = findSpheroMiniByName;
const findLightningMcQueen = () => __awaiter(void 0, void 0, void 0, function* () {
return (yield (0, exports.find)(lightning_mcqueen_1.LightningMcQueen.advertisement));
});
exports.findLightningMcQueen = findLightningMcQueen;
//# sourceMappingURL=scanner.js.map
/***/ }),
/***/ "./lib/web/dist/toys/bb9e.js":
/*!***********************************!*\
!*** ./lib/web/dist/toys/bb9e.js ***!
\***********************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.BB9E = void 0;
const rollable_toy_1 = __webpack_require__(/*! ./rollable-toy */ "./lib/web/dist/toys/rollable-toy.js");
class BB9E extends rollable_toy_1.RollableToy {
constructor() {
super(...arguments);
this.maxVoltage = 7.8;
this.minVoltage = 6.5;
}
}
exports.BB9E = BB9E;
BB9E.advertisement = {
name: 'BB-9E',
prefix: 'GB-',
class: BB9E
};
//# sourceMappingURL=bb9e.js.map
/***/ }),
/***/ "./lib/web/dist/toys/core.js":
/*!***********************************!*\
!*** ./lib/web/dist/toys/core.js ***!
\***********************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.Core = exports.Event = exports.decodeType = exports.commandsType = void 0;
const commands_1 = __webpack_require__(/*! ../commands */ "./lib/web/dist/commands/index.js");
const decoder_1 = __webpack_require__(/*! ../commands/decoder */ "./lib/web/dist/commands/decoder.js");
const types_1 = __webpack_require__(/*! ../commands/types */ "./lib/web/dist/commands/types.js");
const queue_1 = __webpack_require__(/*! ./queue */ "./lib/web/dist/toys/queue.js");
const types_2 = __webpack_require__(/*! ./types */ "./lib/web/dist/toys/types.js");
const utils_1 = __webpack_require__(/*! ./utils */ "./lib/web/dist/toys/utils.js");
exports.commandsType = false && 0;
exports.decodeType = false && 0;
var Event;
(function (Event) {
Event["onCollision"] = "onCollision";
Event["onSensor"] = "onSensor";
})(Event = exports.Event || (exports.Event = {}));
class Core {
constructor(p) {
this.maxVoltage = 0;
this.minVoltage = 1;
this.apiVersion = types_2.APIVersion.V2;
this.sensorMask = {
v2: [],
v21: []
};
this.peripheral = p;
}
batteryVoltage() {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.queueCommand(this.commands.power.batteryVoltage());
return (0, decoder_1.number)(response.command.payload, 1) / 100;
});
}
batteryLevel() {
return __awaiter(this, void 0, void 0, function* () {
const voltage = yield this.batteryVoltage();
const