@robotical/webapp-types 1.0.0

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.
Files changed (88) hide show
  1. package/application-manager.ts +20 -0
  2. package/dist-types/src/application/ApplicationManager/ApplicationManager.d.ts +91 -0
  3. package/dist-types/src/application/ApplicationManager/ApplicationManager.js +448 -0
  4. package/dist-types/src/application/RAFTs/Cog/Cog.d.ts +39 -0
  5. package/dist-types/src/application/RAFTs/Cog/Cog.js +171 -0
  6. package/dist-types/src/application/RAFTs/Marty/Marty.d.ts +40 -0
  7. package/dist-types/src/application/RAFTs/Marty/Marty.js +179 -0
  8. package/dist-types/src/application/RAFTs/RAFT.d.ts +109 -0
  9. package/dist-types/src/application/RAFTs/RAFT.js +313 -0
  10. package/dist-types/src/application/RAFTs/RAFTInterface.d.ts +13 -0
  11. package/dist-types/src/application/RAFTs/RAFTInterface.js +6 -0
  12. package/dist-types/src/application/RAFTs/RaftObserver.d.ts +10 -0
  13. package/dist-types/src/application/RAFTs/RaftObserver.js +1 -0
  14. package/dist-types/src/application/RAFTs/raft-subscription-helpers.d.ts +59 -0
  15. package/dist-types/src/application/RAFTs/raft-subscription-helpers.js +324 -0
  16. package/dist-types/src/application/communicators/SelfdestructiveMessagePromise.d.ts +10 -0
  17. package/dist-types/src/application/communicators/SelfdestructiveMessagePromise.js +31 -0
  18. package/dist-types/src/application/communicators/WrapperCommunicator.d.ts +24 -0
  19. package/dist-types/src/application/communicators/WrapperCommunicator.js +137 -0
  20. package/dist-types/src/components/disposables/LoadingSpinner/index.d.ts +7 -0
  21. package/dist-types/src/components/disposables/LoadingSpinner/index.js +29 -0
  22. package/dist-types/src/components/disposables/buttons/SVGImageButton/index.d.ts +14 -0
  23. package/dist-types/src/components/disposables/buttons/SVGImageButton/index.js +19 -0
  24. package/dist-types/src/components/disposables/buttons/SimpleButton/index.d.ts +14 -0
  25. package/dist-types/src/components/disposables/buttons/SimpleButton/index.js +18 -0
  26. package/dist-types/src/components/modals/DisconnectConfirmation/index.d.ts +6 -0
  27. package/dist-types/src/components/modals/DisconnectConfirmation/index.js +63 -0
  28. package/dist-types/src/components/modals/DisconnectConfirmation/styles.d.ts +1 -0
  29. package/dist-types/src/components/modals/DisconnectConfirmation/styles.js +7 -0
  30. package/dist-types/src/components/modals/InUnplugged/index.d.ts +1 -0
  31. package/dist-types/src/components/modals/InUnplugged/index.js +12 -0
  32. package/dist-types/src/components/modals/InUnplugged/styles.d.ts +5 -0
  33. package/dist-types/src/components/modals/InUnplugged/styles.js +11 -0
  34. package/dist-types/src/components/modals/VerificationModal/index.d.ts +6 -0
  35. package/dist-types/src/components/modals/VerificationModal/index.js +124 -0
  36. package/dist-types/src/components/modals/VerificationModalPhoneApp/index.d.ts +6 -0
  37. package/dist-types/src/components/modals/VerificationModalPhoneApp/index.js +190 -0
  38. package/dist-types/src/components/oneoffs/LEDs/index.d.ts +8 -0
  39. package/dist-types/src/components/oneoffs/LEDs/index.js +39 -0
  40. package/dist-types/src/components/oneoffs/RICSignal/index.d.ts +7 -0
  41. package/dist-types/src/components/oneoffs/RICSignal/index.js +29 -0
  42. package/dist-types/src/services/logger/Logger.d.ts +7 -0
  43. package/dist-types/src/services/logger/Logger.js +19 -0
  44. package/dist-types/src/state-observables/modal/ModalObserver.d.ts +17 -0
  45. package/dist-types/src/state-observables/modal/ModalObserver.js +1 -0
  46. package/dist-types/src/state-observables/modal/ModalState.d.ts +24 -0
  47. package/dist-types/src/state-observables/modal/ModalState.js +69 -0
  48. package/dist-types/src/store/SelectedRaftContext.d.ts +17 -0
  49. package/dist-types/src/store/SelectedRaftContext.js +80 -0
  50. package/dist-types/src/styles/colors.d.ts +35 -0
  51. package/dist-types/src/styles/colors.js +42 -0
  52. package/dist-types/src/types/communication-between-apps/wrapper-communication.d.ts +45 -0
  53. package/dist-types/src/types/communication-between-apps/wrapper-communication.js +25 -0
  54. package/dist-types/src/types/events/raft-info.d.ts +10 -0
  55. package/dist-types/src/types/events/raft-info.js +11 -0
  56. package/dist-types/src/types/phone-app-communicator.d.ts +20 -0
  57. package/dist-types/src/types/phone-app-communicator.js +5 -0
  58. package/dist-types/src/types/raft.d.ts +18 -0
  59. package/dist-types/src/types/raft.js +14 -0
  60. package/dist-types/src/utils/Toaster.d.ts +13 -0
  61. package/dist-types/src/utils/Toaster.js +38 -0
  62. package/dist-types/src/utils/helpers/compare-version.d.ts +2 -0
  63. package/dist-types/src/utils/helpers/compare-version.js +19 -0
  64. package/dist-types/src/utils/helpers/randomHashGenerator.d.ts +1 -0
  65. package/dist-types/src/utils/helpers/randomHashGenerator.js +10 -0
  66. package/dist-types/src/utils/helpers/rescale-range.d.ts +2 -0
  67. package/dist-types/src/utils/helpers/rescale-range.js +4 -0
  68. package/dist-types/src/utils/helpers/wifi-configuration-subtitle-gen.d.ts +3 -0
  69. package/dist-types/src/utils/helpers/wifi-configuration-subtitle-gen.js +34 -0
  70. package/dist-types/src/utils/phone-app-communication/is-phone-app.d.ts +5 -0
  71. package/dist-types/src/utils/phone-app-communication/is-phone-app.js +7 -0
  72. package/dist-types/src/wrapper-app/WrapperAppManager.d.ts +58 -0
  73. package/dist-types/src/wrapper-app/WrapperAppManager.js +176 -0
  74. package/dist-types/src/wrapper-app/communicators/WebAppCommunicator.d.ts +24 -0
  75. package/dist-types/src/wrapper-app/communicators/WebAppCommunicator.js +243 -0
  76. package/dist-types/src/wrapper-app/connectors/CogConnector/CogConnector.d.ts +35 -0
  77. package/dist-types/src/wrapper-app/connectors/CogConnector/CogConnector.js +177 -0
  78. package/dist-types/src/wrapper-app/connectors/Connector.d.ts +69 -0
  79. package/dist-types/src/wrapper-app/connectors/Connector.js +315 -0
  80. package/dist-types/src/wrapper-app/connectors/ConnectorFactory.d.ts +15 -0
  81. package/dist-types/src/wrapper-app/connectors/ConnectorFactory.js +99 -0
  82. package/dist-types/src/wrapper-app/connectors/ConnectorInterface.d.ts +10 -0
  83. package/dist-types/src/wrapper-app/connectors/ConnectorInterface.js +6 -0
  84. package/dist-types/src/wrapper-app/connectors/MartyConnector/MartyConnector.d.ts +35 -0
  85. package/dist-types/src/wrapper-app/connectors/MartyConnector/MartyConnector.js +219 -0
  86. package/dist-types/types-package/application-manager.d.ts +17 -0
  87. package/dist-types/types-package/application-manager.js +5 -0
  88. package/package.json +13 -0
@@ -0,0 +1,69 @@
1
+ import { RaftInfoEvents } from "../../types/events/raft-info";
2
+ import { ConnectionAttemptResults, RaftTypeE } from "../../types/raft";
3
+ import ConnectorInterface from "./ConnectorInterface";
4
+ import { ConnManager, RICLedLcdColours } from "@robotical/roboticaljs";
5
+ import { RaftOKFail, RaftConnEvent, RaftUpdateEvent, RaftPublishEvent } from "@robdobsn/raftjs";
6
+ declare class Connector implements ConnectorInterface {
7
+ id: string;
8
+ type: RaftTypeE;
9
+ private _observers;
10
+ connManager: ConnManager;
11
+ constructor(id: string, connManager: ConnManager);
12
+ /**
13
+ * Connect to a RAFT after having found the RAFT type
14
+ */
15
+ connect(): Promise<ConnectionAttemptResults>;
16
+ /**
17
+ * Get connected raft info
18
+ */
19
+ getSystemInfo(): Promise<import("@robdobsn/raftjs").RaftSystemInfo>;
20
+ /**
21
+ * Gets the RAFT name
22
+ */
23
+ getRaftName(): Promise<string>;
24
+ /**
25
+ * Send a REST message to the RAFT
26
+ */
27
+ sendRestMessage(msg: string, params?: object): Promise<RaftOKFail>;
28
+ /**
29
+ * Verify correct RAFT is selected
30
+ */
31
+ verifyRaft(ledLcdColours: RICLedLcdColours): Promise<boolean>;
32
+ /**
33
+ * Disconnect from a RAFT
34
+ */
35
+ disconnect(): Promise<boolean>;
36
+ /**
37
+ * Stop verifying RAFT
38
+ * @param confirmCorrectRIC - indicates if the correct RAFT was selected (user input)
39
+ */
40
+ stopVerifyingRaft(confirmCorrectRIC: boolean): Promise<boolean>;
41
+ /**
42
+ * Audio streaming
43
+ */
44
+ streamAudio(streamContents: Uint8Array, clearExisting: boolean, duration: number): Promise<void>;
45
+ /**
46
+ * Publish an event to all observers
47
+ * Set in RICConnector as an event listener callback
48
+ */
49
+ publish(eventType: string, eventEnum: RaftConnEvent | RaftUpdateEvent | RaftPublishEvent | RaftInfoEvents, eventName: string, eventData: any): void;
50
+ /**
51
+ * Event handler
52
+ */
53
+ eventHandler(eventType: string, eventEnum: RaftConnEvent | RaftUpdateEvent | RaftPublishEvent | RaftInfoEvents, eventName: string, data: any): Promise<void>;
54
+ /**
55
+ * Connection Event Handler
56
+ * This handles the events that are the same for all RAFT systems (e.g., Marty, Cog, etc.)
57
+ * While the system-specific events are handled in the system-specific connectors
58
+ */
59
+ _connectionEventHandler(eventEnum: RaftConnEvent, eventName: string, data: any): Promise<void>;
60
+ /**
61
+ * Update Event Handler
62
+ */
63
+ _updateEventHandler(eventEnum: RaftUpdateEvent, eventName: string, data: any): Promise<void>;
64
+ /**
65
+ * Pub Event Handler
66
+ */
67
+ _pubEventHandler(eventEnum: RaftPublishEvent, eventName: string, data: any): Promise<void>;
68
+ }
69
+ export default Connector;
@@ -0,0 +1,315 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { RaftInfoEvents } from "../../types/events/raft-info";
38
+ import { WrapperSentMessage } from "../../types/communication-between-apps/wrapper-communication";
39
+ import Logger from "../../services/logger/Logger";
40
+ import { RaftTypeE } from "../../types/raft";
41
+ import { RaftConnEvent, RaftUpdateEvent, RaftPublishEvent } from "@robdobsn/raftjs";
42
+ var SHOW_LOGS = true;
43
+ var TAG = "Connector";
44
+ var Connector = /** @class */ (function () {
45
+ function Connector(id, connManager) {
46
+ var _this = this;
47
+ this.id = id;
48
+ this.type = RaftTypeE.undefined;
49
+ // RAFT
50
+ // Observers
51
+ this._observers = {};
52
+ this.connManager = connManager;
53
+ // Set the listener function
54
+ // Subscribe to connManager events
55
+ this.connManager.setConnectionEventListener(function (eventType, eventEnum, eventName, eventData) {
56
+ if (eventType !== "pub") {
57
+ Logger.info(SHOW_LOGS, TAG, "eventType: ".concat(eventType, " eventEnum: ").concat(eventEnum, " eventName: ").concat(eventName, " eventData: ").concat(eventData));
58
+ }
59
+ _this.eventHandler(eventType, eventEnum, eventName, eventData);
60
+ _this.publish(eventType, eventEnum, eventName, eventData);
61
+ });
62
+ }
63
+ /**
64
+ * Connect to a RAFT after having found the RAFT type
65
+ */
66
+ Connector.prototype.connect = function () {
67
+ return __awaiter(this, void 0, void 0, function () {
68
+ return __generator(this, function (_a) {
69
+ throw new Error("Method should be implemented in child class");
70
+ });
71
+ });
72
+ };
73
+ /**
74
+ * Get connected raft info
75
+ */
76
+ Connector.prototype.getSystemInfo = function () {
77
+ return __awaiter(this, void 0, void 0, function () {
78
+ return __generator(this, function (_a) {
79
+ return [2 /*return*/, this.connManager.getConnector().getRaftSystemUtils().getSystemInfo()];
80
+ });
81
+ });
82
+ };
83
+ /**
84
+ * Gets the RAFT name
85
+ */
86
+ Connector.prototype.getRaftName = function () {
87
+ var _a;
88
+ return __awaiter(this, void 0, void 0, function () {
89
+ return __generator(this, function (_b) {
90
+ return [2 /*return*/, ((_a = this.connManager.getConnector().getRaftSystemUtils().getFriendlyName()) === null || _a === void 0 ? void 0 : _a.friendlyName) || ""];
91
+ });
92
+ });
93
+ };
94
+ /**
95
+ * Send a REST message to the RAFT
96
+ */
97
+ Connector.prototype.sendRestMessage = function (msg, params) {
98
+ return __awaiter(this, void 0, void 0, function () {
99
+ return __generator(this, function (_a) {
100
+ return [2 /*return*/, this.connManager.getConnector().sendRICRESTMsg(msg, params || {})];
101
+ });
102
+ });
103
+ };
104
+ /**
105
+ * Verify correct RAFT is selected
106
+ */
107
+ Connector.prototype.verifyRaft = function (ledLcdColours) {
108
+ var _a;
109
+ return __awaiter(this, void 0, void 0, function () {
110
+ var msgHandler, onConnEvent, isConnectedFn;
111
+ return __generator(this, function (_b) {
112
+ msgHandler = this.connManager.getConnector().getRaftSystemUtils().getMsgHandler();
113
+ onConnEvent = this.connManager.getConnector().onConnEvent.bind(this.connManager.getConnector());
114
+ isConnectedFn = this.connManager.isConnected.bind(this.connManager);
115
+ return [2 /*return*/, (_a = this.connManager.getConnector().getSystemType()) === null || _a === void 0 ? void 0 : _a.getLEDPatternChecker().checkCorrectRICStart(ledLcdColours, msgHandler, onConnEvent, isConnectedFn)];
116
+ });
117
+ });
118
+ };
119
+ /**
120
+ * Disconnect from a RAFT
121
+ */
122
+ Connector.prototype.disconnect = function () {
123
+ return __awaiter(this, void 0, void 0, function () {
124
+ return __generator(this, function (_a) {
125
+ switch (_a.label) {
126
+ case 0:
127
+ // this.sendRestMessage('blerestart');
128
+ return [4 /*yield*/, this.connManager.disconnect()];
129
+ case 1:
130
+ // this.sendRestMessage('blerestart');
131
+ _a.sent();
132
+ return [2 /*return*/, true];
133
+ }
134
+ });
135
+ });
136
+ };
137
+ /**
138
+ * Stop verifying RAFT
139
+ * @param confirmCorrectRIC - indicates if the correct RAFT was selected (user input)
140
+ */
141
+ Connector.prototype.stopVerifyingRaft = function (confirmCorrectRIC) {
142
+ var _a;
143
+ return __awaiter(this, void 0, void 0, function () {
144
+ return __generator(this, function (_b) {
145
+ if (confirmCorrectRIC) {
146
+ // successful connection to RAFT
147
+ // const ricSystem = this.connManager.getConnector().getRICSystem();
148
+ // await ricSystem.getRICSystemInfo(true);
149
+ // this.publish("conn", RaftInfoEvents.SYSTEM_INFO, "SystemInfo", systemInfo);
150
+ // this.publish("conn", RaftInfoEvents.MARTY_VERSION, "MartyVersion", systemInfo.SystemVersion);
151
+ // this.publish("conn", RaftInfoEvents.MARTY_SERIAL_NO, "MartySerialNo", systemInfo.SerialNo);
152
+ // this.publish("conn", RaftInfoEvents.MARTY_IS_VERIFIED, "MartyIsVerified", true);
153
+ // this.analytics_RobotStartSession(systemInfo); TODO: respond to the systemInfo event and call this function
154
+ // this.isVerified = true; TODO: this event should be published from RICJS, listen for it in the front-end
155
+ // const serialNo = systemInfo.SerialNo!;
156
+ // TODO: respond to the MartySerialNo event and call this block
157
+ // const isSerialNoRegisteredInWarranty = await isSerialNumberRegistered(serialNo);
158
+ // const dbManager = DatabaseManager.getInstance();
159
+ // dbManager.isSerialNoRegisteredInWarranty = isSerialNoRegisteredInWarranty;
160
+ // this.isSerialNoRegisteredInWarranty = isSerialNoRegisteredInWarranty;
161
+ // if (isSerialNoRegisteredInWarranty) {
162
+ // addMartyNameToSerialNumber(serialNo, this.RICFriendlyName);
163
+ // }
164
+ // store ble conn performance
165
+ // as promise because we don't want to wait for it to finish
166
+ // Promise.resolve().then(async () => {
167
+ // const bleConnPerf = await this.connManager.getConnector().checkConnPerformance();
168
+ // const dbManager = DatabaseManager.getInstance();
169
+ // const appDb = await dbManager.initializeOrGetDatabase(DatabaseEnum.APP, DatabaseEnum.APP) as AppDatabase;
170
+ // bleConnPerf && appDb.storeBlePerformance(bleConnPerf);
171
+ // this.soundStreamingStats.configureSoundStreamingForRobot(systemInfo, bleConnPerf);
172
+ // });
173
+ }
174
+ return [2 /*return*/, (_a = this.connManager.getConnector().getSystemType()) === null || _a === void 0 ? void 0 : _a.getLEDPatternChecker().checkCorrectRICStop(confirmCorrectRIC)];
175
+ });
176
+ });
177
+ };
178
+ /**
179
+ * Audio streaming
180
+ */
181
+ Connector.prototype.streamAudio = function (streamContents, clearExisting, duration) {
182
+ return __awaiter(this, void 0, void 0, function () {
183
+ var streamContentsNewUint8Array;
184
+ return __generator(this, function (_a) {
185
+ streamContentsNewUint8Array = new Uint8Array(streamContents);
186
+ return [2 /*return*/, this.connManager.getConnector().streamAudio(streamContentsNewUint8Array, clearExisting, duration)];
187
+ });
188
+ });
189
+ };
190
+ /**
191
+ * Publish an event to all observers
192
+ * Set in RICConnector as an event listener callback
193
+ */
194
+ Connector.prototype.publish = function (eventType, eventEnum, eventName, eventData) {
195
+ window.WebAppCommunicator.sendMessageNoWait(WrapperSentMessage.RAFT_PUBLISHED_EVENT, { raftId: this.id, eventType: eventType, eventEnum: eventEnum, eventName: eventName, eventData: eventData });
196
+ if (this._observers.hasOwnProperty(eventType)) {
197
+ for (var _i = 0, _a = this._observers[eventType]; _i < _a.length; _i++) {
198
+ var observer = _a[_i];
199
+ observer.notify(eventType, eventEnum, eventName, eventData);
200
+ }
201
+ }
202
+ };
203
+ /**
204
+ * Event handler
205
+ */
206
+ Connector.prototype.eventHandler = function (eventType, eventEnum, eventName, data) {
207
+ return __awaiter(this, void 0, void 0, function () {
208
+ return __generator(this, function (_a) {
209
+ switch (eventType) {
210
+ case "conn":
211
+ this._connectionEventHandler(eventEnum, eventName, data);
212
+ break;
213
+ case "update":
214
+ this._updateEventHandler(eventEnum, eventName, data);
215
+ break;
216
+ case "pub":
217
+ this._pubEventHandler(eventEnum, eventName, data);
218
+ break;
219
+ default:
220
+ break;
221
+ }
222
+ return [2 /*return*/];
223
+ });
224
+ });
225
+ };
226
+ /**
227
+ * Connection Event Handler
228
+ * This handles the events that are the same for all RAFT systems (e.g., Marty, Cog, etc.)
229
+ * While the system-specific events are handled in the system-specific connectors
230
+ */
231
+ Connector.prototype._connectionEventHandler = function (eventEnum, eventName, data) {
232
+ return __awaiter(this, void 0, void 0, function () {
233
+ var _a, systemInfo, raftName, raftMsgHandler;
234
+ var _this = this;
235
+ return __generator(this, function (_b) {
236
+ switch (_b.label) {
237
+ case 0:
238
+ Logger.info(SHOW_LOGS, TAG, "Event: ".concat(eventEnum, " data: ").concat(data));
239
+ _a = eventEnum;
240
+ switch (_a) {
241
+ case RaftConnEvent.CONN_CONNECTED: return [3 /*break*/, 1];
242
+ case RaftConnEvent.CONN_VERIFIED_CORRECT: return [3 /*break*/, 6];
243
+ }
244
+ return [3 /*break*/, 7];
245
+ case 1:
246
+ systemInfo = this.connManager.getConnector().getRaftSystemUtils().getCachedSystemInfo();
247
+ if (!!systemInfo) return [3 /*break*/, 3];
248
+ return [4 /*yield*/, this.connManager.getConnector().getRaftSystemUtils().getSystemInfo()];
249
+ case 2:
250
+ systemInfo = _b.sent();
251
+ _b.label = 3;
252
+ case 3:
253
+ raftName = this.connManager.getConnector().getRaftSystemUtils().getCachedRaftName() || this.connManager.getConnector().getRaftSystemUtils().getFriendlyName();
254
+ if (!!raftName) return [3 /*break*/, 5];
255
+ return [4 /*yield*/, this.connManager.getConnector().getRaftSystemUtils().getRaftName()];
256
+ case 4:
257
+ raftName = _b.sent();
258
+ _b.label = 5;
259
+ case 5:
260
+ systemInfo.Friendly = raftName.friendlyName;
261
+ this.publish("raftinfo", RaftInfoEvents.SYSTEM_INFO, "SystemInfo", { systemInfo: systemInfo });
262
+ return [3 /*break*/, 8];
263
+ case 6:
264
+ raftMsgHandler = this.connManager.getConnector().getRaftMsgHandler();
265
+ raftMsgHandler.reportMsgCallbacksSet("notifyCB", function (report) { return _this.publish("msg", RaftInfoEvents.RAFT_MSG, "RICMsg", report); });
266
+ return [3 /*break*/, 8];
267
+ case 7: return [3 /*break*/, 8];
268
+ case 8: return [2 /*return*/];
269
+ }
270
+ });
271
+ });
272
+ };
273
+ /**
274
+ * Update Event Handler
275
+ */
276
+ Connector.prototype._updateEventHandler = function (eventEnum, eventName, data) {
277
+ return __awaiter(this, void 0, void 0, function () {
278
+ return __generator(this, function (_a) {
279
+ Logger.info(SHOW_LOGS, TAG, "Event: ".concat(eventEnum, " data: ").concat(data));
280
+ switch (eventEnum) {
281
+ case RaftUpdateEvent.UPDATE_APP_UPDATE_REQUIRED:
282
+ // do something
283
+ break;
284
+ default:
285
+ break;
286
+ }
287
+ return [2 /*return*/];
288
+ });
289
+ });
290
+ };
291
+ /**
292
+ * Pub Event Handler
293
+ */
294
+ Connector.prototype._pubEventHandler = function (eventEnum, eventName, data) {
295
+ return __awaiter(this, void 0, void 0, function () {
296
+ var systemType, stateInfo;
297
+ return __generator(this, function (_a) {
298
+ switch (eventEnum) {
299
+ case RaftPublishEvent.PUBLISH_EVENT_DATA:
300
+ systemType = this.connManager.getConnector().getSystemType();
301
+ if (systemType) {
302
+ stateInfo = systemType.getStateInfo();
303
+ this.publish("raftinfo", RaftInfoEvents.STATE_INFO, "StateInfo", { stateInfo: stateInfo });
304
+ }
305
+ break;
306
+ default:
307
+ break;
308
+ }
309
+ return [2 /*return*/];
310
+ });
311
+ });
312
+ };
313
+ return Connector;
314
+ }());
315
+ export default Connector;
@@ -0,0 +1,15 @@
1
+ import { ConnManager } from "@robotical/roboticaljs";
2
+ import { RaftConnectionMethod } from "../../types/raft";
3
+ import Connector from "./Connector";
4
+ export default class ConnectorFactory {
5
+ /**
6
+ * Connect to a RAFT
7
+ *
8
+ * @param {string} method - can be "WebBLE" or "WebSocket"
9
+ * @param {string | object} locator - either a string (WebSocket URL) or an object (WebBLE)
10
+ * @returns Promise<ConnectionAttemptResults>
11
+ *
12
+ */
13
+ static connectToRaftHelper(method: RaftConnectionMethod): Promise<Connector | null>;
14
+ static createConnector(raftType: string | undefined, connManager: ConnManager): Connector;
15
+ }
@@ -0,0 +1,99 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { ConnManager } from "@robotical/roboticaljs";
38
+ import randomHashGenerator from "../../utils/helpers/randomHashGenerator";
39
+ import CogConnector from "./CogConnector/CogConnector";
40
+ import MartyConnector from "./MartyConnector/MartyConnector";
41
+ import Logger from "../../services/logger/Logger";
42
+ var SHOW_LOGS = true;
43
+ var TAG = "ConnectorFactory";
44
+ var ConnectorFactory = /** @class */ (function () {
45
+ function ConnectorFactory() {
46
+ }
47
+ /**
48
+ * Connect to a RAFT
49
+ *
50
+ * @param {string} method - can be "WebBLE" or "WebSocket"
51
+ * @param {string | object} locator - either a string (WebSocket URL) or an object (WebBLE)
52
+ * @returns Promise<ConnectionAttemptResults>
53
+ *
54
+ */
55
+ ConnectorFactory.connectToRaftHelper = function (method) {
56
+ return __awaiter(this, void 0, void 0, function () {
57
+ var connManager, wasConnected, systemInfo, raftType, connector;
58
+ return __generator(this, function (_a) {
59
+ switch (_a.label) {
60
+ case 0:
61
+ connManager = new ConnManager();
62
+ Logger.info(SHOW_LOGS, TAG, "Connecting to RAFT with method: ".concat(method));
63
+ return [4 /*yield*/, connManager.connect(method, "")];
64
+ case 1:
65
+ wasConnected = _a.sent();
66
+ Logger.info(SHOW_LOGS, TAG, "Was connected to RAFT: ".concat(wasConnected));
67
+ if (!wasConnected) {
68
+ return [2 /*return*/, null];
69
+ }
70
+ systemInfo = connManager.getConnector().getRaftSystemUtils().getCachedSystemInfo();
71
+ raftType = systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.SystemName;
72
+ connector = this.createConnector(raftType, connManager);
73
+ return [2 /*return*/, connector];
74
+ }
75
+ });
76
+ });
77
+ };
78
+ ConnectorFactory.createConnector = function (raftType, connManager) {
79
+ var systemInfo = connManager.getConnector().getRaftSystemUtils().getCachedSystemInfo();
80
+ var serialNo = systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.SerialNo;
81
+ var connector;
82
+ var randomId = serialNo || randomHashGenerator();
83
+ switch (raftType) {
84
+ case "RIC":
85
+ connector = new MartyConnector(randomId, connManager);
86
+ break;
87
+ case "Cog":
88
+ connector = new CogConnector(randomId, connManager);
89
+ break;
90
+ case "Axiom":
91
+ throw new Error("Axiom not supported yet");
92
+ default:
93
+ throw new Error("Unknown RAFT type");
94
+ }
95
+ return connector;
96
+ };
97
+ return ConnectorFactory;
98
+ }());
99
+ export default ConnectorFactory;
@@ -0,0 +1,10 @@
1
+ import { RaftConnEvent, RaftPublishEvent, RaftUpdateEvent } from "@robdobsn/raftjs";
2
+ import { ConnectionAttemptResults, RaftTypeE } from "../../types/raft";
3
+ import { RaftInfoEvents } from "../../types/events/raft-info";
4
+ import { RICLedLcdColours } from "@robotical/roboticaljs";
5
+ export default abstract class ConnectorInterface {
6
+ abstract type: RaftTypeE;
7
+ abstract eventHandler: (eventType: string, eventEnum: RaftConnEvent | RaftUpdateEvent | RaftPublishEvent | RaftInfoEvents, eventName: string, eventData: any) => void;
8
+ abstract verifyRaft(ledLcdColours: RICLedLcdColours): Promise<boolean>;
9
+ abstract connect(): Promise<ConnectionAttemptResults>;
10
+ }
@@ -0,0 +1,6 @@
1
+ var ConnectorInterface = /** @class */ (function () {
2
+ function ConnectorInterface() {
3
+ }
4
+ return ConnectorInterface;
5
+ }());
6
+ export default ConnectorInterface;
@@ -0,0 +1,35 @@
1
+ import { RaftInfoEvents } from "../../../types/events/raft-info";
2
+ import { ConnectionAttemptResults, RaftTypeE } from "../../../types/raft";
3
+ import Connector from "../Connector";
4
+ import ConnectorInterface from "../ConnectorInterface";
5
+ import { RaftConnEvent, RaftUpdateEvent, RaftPublishEvent } from "@robdobsn/raftjs";
6
+ import { ConnManager } from "@robotical/roboticaljs";
7
+ declare class MartyConnector extends Connector implements ConnectorInterface {
8
+ type: RaftTypeE;
9
+ constructor(raftId: string, connManager: ConnManager);
10
+ /**
11
+ * Connect to a RAFT
12
+ */
13
+ connect(): Promise<ConnectionAttemptResults>;
14
+ /**
15
+ * Disconnect from Marty
16
+ */
17
+ disconnect(): Promise<boolean>;
18
+ /**
19
+ * Event handler
20
+ */
21
+ eventHandler(eventType: string, eventEnum: RaftConnEvent | RaftUpdateEvent | RaftPublishEvent | RaftInfoEvents, eventName: string, data: any): Promise<void>;
22
+ /**
23
+ * Connection Event Handler
24
+ */
25
+ connectionEventHandler(eventEnum: RaftConnEvent, eventName: string, data: any): Promise<void>;
26
+ /**
27
+ * Update Event Handler
28
+ */
29
+ updateEventHandler(eventEnum: RaftUpdateEvent, eventName: string, data: any): Promise<void>;
30
+ /**
31
+ * Pub Event Handler
32
+ */
33
+ pubEventHandler(eventEnum: RaftPublishEvent, eventName: string, data: any): Promise<void>;
34
+ }
35
+ export default MartyConnector;