UNPKG

@robotical/ricjs

Version:

Javascript/TS library for Robotical RIC

160 lines (159 loc) 6.25 kB
import RICChannel from "./RICChannel"; import RICMsgHandler, { RICMsgResultCode } from "./RICMsgHandler"; import RICCommsStats from "./RICCommsStats"; import { RICEventFn, RICFileDownloadFn, RICLedLcdColours, RICOKFail, RICStateInfo } from "./RICTypes"; import RICAddOnManager from "./RICAddOnManager"; import RICSystem from "./RICSystem"; import { ROSSerialAddOnStatusList, ROSSerialIMU, ROSSerialMagneto, ROSSerialPowerStatus, ROSSerialRobotStatus, ROSSerialSmartServos } from "./RICROSSerial"; import { RICConnEvent } from "./RICConnEvents"; import RICUpdateManager from "./RICUpdateManager"; import { RICUpdateEvent } from "./RICUpdateEvents"; import RICServoFaultDetector from "./RICServoFaultDetector"; export default class RICConnector { private _ricChannel; private _channelConnMethod; private _channelConnLocator; private _commsStats; private _ricStateInfo; private _addOnManager; private _ricMsgHandler; private _ricSystem; private _ledPatternChecker; private _ledPatternTimeoutMs; private _ledPatternRefreshTimer; private _subscribeRateHz; private readonly _testConnPerfBlockSize; private readonly _testConnPerfNumBlocks; private readonly _connPerfRsltDelayMs; private _retryIfLostEnabled; private _retryIfLostForSecs; private _retryIfLostIsConnected; private _retryIfLostDisconnectTime; private readonly _retryIfLostRetryDelayMs; private _ricFileHandler; private _ricStreamHandler; private _ricUpdateManager; private _onEventFn; ricServoFaultDetector: RICServoFaultDetector; constructor(); setupUpdateManager(appVersion: string, appUpdateURL: string, firmwareBaseURL: string, fileDownloader: RICFileDownloadFn): void; configureFileHandler(fileBlockSize: number, batchAckSize: number): void; setEventListener(onEventFn: RICEventFn): void; isConnected(): boolean; setRetryConnectionIfLost(enableRetry: boolean, retryForSecs: number): void; getConnMethod(): string; getAddOnManager(): RICAddOnManager; getRICSystem(): RICSystem; getRICState(): RICStateInfo; getCommsStats(): RICCommsStats; getRICMsgHandler(): RICMsgHandler; getRICChannel(): RICChannel | null; getRICUpdateManager(): RICUpdateManager | null; getConnLocator(): any | null; pauseConnection(pause?: boolean): void; /** * Connect to a RIC * * @param {string} method - can be "WebBLE" or "WebSocket" * @param {string | object} locator - either a string (WebSocket URL) or an object (WebBLE) * @returns Promise<boolean> * */ connect(method: string, locator: string | object): Promise<boolean>; disconnect(): Promise<void>; /** * * sendRICRESTMsg * @param commandName command API string * @param params parameters (simple name value pairs only) to parameterize trajectory * @returns Promise<RICOKFail> * */ sendRICRESTMsg(commandName: string, params: object): Promise<RICOKFail>; onRxReply(msgHandle: number, msgRsltCode: RICMsgResultCode, msgRsltJsonObj: object | null): void; onRxUnnumberedMsg(msgRsltJsonObj: { [key: string]: number | string; }): void; onRxOtherROSSerialMsg(topicID: number, payload: Uint8Array): void; onRxSmartServo(smartServos: ROSSerialSmartServos): void; onRxIMU(imuData: ROSSerialIMU): void; onRxMagneto(magnetoData: ROSSerialMagneto): void; onRxPowerStatus(powerStatus: ROSSerialPowerStatus): void; onRxAddOnPub(addOnInfo: ROSSerialAddOnStatusList): void; onRobotStatus(robotStatus: ROSSerialRobotStatus): void; getRICStateInfo(): RICStateInfo; /** * Start checking correct RIC using LED pattern * * @param {string} ricToConnectTo - RIC to connect to * @return boolean - true if started ok * */ checkCorrectRICStart(ricLedLcdColours: RICLedLcdColours): Promise<boolean>; /** * Stop checking correct RIC * * @return void * */ checkCorrectRICStop(confirmCorrectRIC: boolean): Promise<boolean>; /** * Refresh LED pattern on RIC * * @return boolean - true if checking still active * */ _checkCorrectRICRefreshLEDs(): Promise<boolean>; _clearLedPatternRefreshTimer(): void; /** * Get information Marty system * * @return void * */ retrieveMartySystemInfo(): Promise<boolean>; /** * * subscribeForUpdates * @param enable - true to send command to enable subscription (false to remove sub) * @returns Promise<void> * */ subscribeForUpdates(enable: boolean): Promise<void>; sendFile(fileName: string, fileContents: Uint8Array, progressCallback: ((sent: number, total: number, progress: number) => void) | undefined): Promise<boolean>; streamAudio(streamContents: Uint8Array, clearExisting: boolean, duration: number): void; isStreamStarting(): boolean; setLegacySoktoMode(legacyMode: boolean): void; parkmiller_next(seed: number): number; checkConnPerformance(): Promise<number | undefined>; onConnEvent(eventEnum: RICConnEvent, data?: object | string | null | undefined): void; _retryConnection(): void; _connectToChannel(): Promise<boolean>; _onUpdateEvent(eventEnum: RICUpdateEvent, data?: object | string | null | undefined): void; otaUpdateCheck(): Promise<RICUpdateEvent>; otaUpdateStart(): Promise<RICUpdateEvent>; otaUpdateCancel(): Promise<void>; /** * * setAddOnConfig - set a specified add-on's configuration * @param serialNo used to identify the add-on * @param newName name to refer to add-on by * @returns Promise<RICOKFail> * */ setAddOnConfig(serialNo: string, newName: string): Promise<RICOKFail>; /** * deleteAddOn - remove an addon from the addonlist on RIC * @param serialNo used to identify the add-on * @returns Promise<RICOKFail> */ deleteAddOn(serialNo: string): Promise<RICOKFail>; /** * * identifyAddOn - send the 'identify' command to a specified add-on * @param name used to identify the add-on * @returns Promise<RICOKFail> * */ identifyAddOn(name: string): Promise<RICOKFail>; }