@robotical/roboticaljs
Version:
Javascript/TS library for Robotical products
110 lines • 4.64 kB
JavaScript
"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