@robotical/ricjs
Version:
Javascript/TS library for Robotical RIC
160 lines (159 loc) • 6.25 kB
TypeScript
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>;
}