UNPKG

@robotical/roboticaljs

Version:

Javascript/TS library for Robotical products

110 lines 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const raftjs_1 = require("@robotical/raftjs"); const RICAddOnManager_1 = tslib_1.__importDefault(require("./RICAddOnManager")); const RICCommsStats_1 = tslib_1.__importDefault(require("./RICCommsStats")); const RICLEDPatternChecker_1 = tslib_1.__importDefault(require("./RICLEDPatternChecker")); const RICServoFaultDetector_1 = tslib_1.__importDefault(require("./RICServoFaultDetector")); const RICStateInfo_1 = require("./RICStateInfo"); class SystemTypeMarty { constructor() { this.nameForDialogs = "Robotical Marty"; this.defaultWiFiHostname = "Marty"; this.firmwareDestName = "ricfw"; this.normalFileDestName = "fs"; this.connectorOptions = { wsSuffix: "ws", bleConnItvlMs: 7.5 }; this.BLEServiceUUIDs = ["aa76677e-9cfd-4626-a510-0d305be57c8d"]; this.BLECmdUUID = "aa76677e-9cfd-4626-a510-0d305be57c8e"; this.BLERespUUID = "aa76677e-9cfd-4626-a510-0d305be57c8f"; // LED Pattern checker this._ledPatternChecker = new RICLEDPatternChecker_1.default(); // Latest data from servos, IMU, etc this._ricStateInfo = new RICStateInfo_1.RICStateInfo(); // Add-on Manager this._addOnManager = new RICAddOnManager_1.default(); // Properties for Marty this._ricServoFaultDetector = null; // RIC comms stats this._commsStats = new RICCommsStats_1.default(); // Event handler this._onEvent = null; // Raft system utils this._systemUtils = null; // Device manager interface this.deviceMgrIF = this._ricStateInfo; } getLEDPatternChecker() { return this._ledPatternChecker; } getRICStateInfo() { return this._ricStateInfo; } getAddOnManager() { return this._addOnManager; } getRICServoFaultDetector() { return this._ricServoFaultDetector; } getCommsStats() { return this._commsStats; } // Setup setup(systemUtils, onEvent) { this._systemUtils = systemUtils; this._onEvent = onEvent; this._ricServoFaultDetector = new RICServoFaultDetector_1.default(this._systemUtils.getMsgHandler(), this._ricStateInfo); } // Latest data from servos, IMU, etc getStateInfo() { return this._ricStateInfo; } // Subscribe for updates async subscribeForUpdates(systemUtils, enable) { // Subscription rate const subscribeRateHz = 10; try { const subscribeDisable = '{"cmdName":"subscription","action":"update",' + '"pubRecs":[' + `{"name":"MultiStatus","rateHz":0,}` + '{"name":"PowerStatus","rateHz":0},' + `{"name":"AddOnStatus","rateHz":0}` + ']}'; const subscribeEnable = '{"cmdName":"subscription","action":"update",' + '"pubRecs":[' + `{"name":"MultiStatus","rateHz":${subscribeRateHz.toString()}}` + `{"name":"PowerStatus","rateHz":1.0},` + `{"name":"AddOnStatus","rateHz":${subscribeRateHz.toString()}}` + ']}'; const msgHandler = systemUtils.getMsgHandler(); const ricResp = await msgHandler.sendRICRESTCmdFrame(enable ? subscribeEnable : subscribeDisable); // Debug raftjs_1.RaftLog.debug(`subscribe enable/disable returned ${JSON.stringify(ricResp)}`); } catch (error) { raftjs_1.RaftLog.warn(`getRICCalibInfo Failed subscribe for updates ${error}`); } } // Invalidate state stateIsInvalid() { if (this._systemUtils) { this._systemUtils.invalidate(); } } // Other message type rxOtherMsgType(payload, frameTimeMs) { // RICLog.debug(`onRxROSSerialMsg payload ${RaftUtils.bufferToHex(payload)}`); raftjs_1.RaftLog.verbose(`onRxROSSerialMsg payloadLen ${payload.length}`); const topicIDs = this._ricStateInfo.updateFromROSSerialMsg(payload, this._commsStats, this._addOnManager, frameTimeMs); // Call event handler if registered if (this._onEvent) { this._onEvent("pub", raftjs_1.RaftPublishEvent.PUBLISH_EVENT_DATA, raftjs_1.RaftPublishEventNames[raftjs_1.RaftPublishEvent.PUBLISH_EVENT_DATA], { topicIDs: topicIDs, payload: payload, frameTimeMs: frameTimeMs }); } } } exports.default = SystemTypeMarty; //# sourceMappingURL=SystemTypeMarty.js.map