@robotical/ricjs
Version:
Javascript/TS library for Robotical RIC
79 lines (78 loc) • 4.2 kB
TypeScript
import RICCommsStats from './RICCommsStats';
import { ROSSerialIMU, ROSSerialSmartServos, ROSSerialPowerStatus, ROSSerialAddOnStatusList, ROSSerialRobotStatus, ROSSerialMagneto } from './RICROSSerial';
import RICAddOnManager from './RICAddOnManager';
import { RICReportMsg } from './RICTypes';
export declare enum RICRESTElemCode {
RICREST_ELEM_CODE_URL = 0,
RICREST_ELEM_CODE_CMDRESPJSON = 1,
RICREST_ELEM_CODE_BODY = 2,
RICREST_ELEM_CODE_COMMAND_FRAME = 3,
RICREST_ELEM_CODE_FILEBLOCK = 4
}
export declare enum RICCommsMsgTypeCode {
MSG_TYPE_COMMAND = 0,
MSG_TYPE_RESPONSE = 1,
MSG_TYPE_PUBLISH = 2,
MSG_TYPE_REPORT = 3
}
export declare enum RICCommsMsgProtocol {
MSG_PROTOCOL_ROSSERIAL = 0,
MSG_PROTOCOL_RESERVED_1 = 1,
MSG_PROTOCOL_RICREST = 2
}
export declare enum RICMsgResultCode {
MESSAGE_RESULT_TIMEOUT = 0,
MESSAGE_RESULT_OK = 1,
MESSAGE_RESULT_FAIL = 2,
MESSAGE_RESULT_UNKNOWN = 3
}
export interface RICMessageResult {
onRxReply(msgHandle: number, msgRsltCode: RICMsgResultCode, msgRsltJsonObj: object | null): void;
onRxUnnumberedMsg(msgRsltJsonObj: object): 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;
onRxOtherROSSerialMsg(topicID: number, payload: Uint8Array): void;
}
export interface RICMessageSender {
sendTxMsg(msg: Uint8Array, sendWithResponse: boolean): Promise<boolean>;
sendTxMsgNoAwait(msg: Uint8Array, sendWithResponse: boolean): Promise<boolean>;
}
export default class RICMsgHandler {
private _currentMsgNumber;
private _currentMsgHandle;
private _msgTrackInfos;
private _msgTrackTimerMs;
private _msgTrackLastCheckIdx;
private _reportMsgCallbacks;
private _msgResultHandler;
private _msgSender;
private _commsStats;
private _miniHDLC;
private _addOnManager;
constructor(commsStats: RICCommsStats, addOnManager: RICAddOnManager);
registerForResults(msgResultHandler: RICMessageResult): void;
registerMsgSender(RICMessageSender: RICMessageSender): void;
handleNewRxMsg(rxMsg: Uint8Array): void;
reportMsgCallbacksSet(callbackName: string, callback: (report: RICReportMsg) => void): void;
reportMsgCallbacksDelete(callbackName: string): void;
_onHDLCFrameDecode(rxMsg: Uint8Array): void;
_handleResponseMessages(restStr: string, rxMsgNum: number): void;
_handleReportMessages(restStr: string): void;
sendRICRESTURL<T>(cmdStr: string, msgTimeoutMs?: number | undefined): Promise<T>;
sendRICRESTCmdFrame<T>(cmdStr: string, msgTimeoutMs?: number | undefined): Promise<T>;
sendRICREST<T>(cmdStr: string, ricRESTElemCode: RICRESTElemCode, msgTimeoutMs?: number | undefined): Promise<T>;
sendRICRESTBytes<T>(cmdBytes: Uint8Array, ricRESTElemCode: RICRESTElemCode, withResponse: boolean, msgTimeoutMs?: number | undefined): Promise<T>;
sendMsgAndWaitForReply<T>(msgPayload: Uint8Array, msgDirection: RICCommsMsgTypeCode, msgProtocol: RICCommsMsgProtocol, withResponse: boolean, msgTimeoutMs: number | undefined): Promise<T>;
frameCommsMsg(msgPayload: Uint8Array, msgDirection: RICCommsMsgTypeCode, msgProtocol: RICCommsMsgProtocol, isNumbered: boolean): Uint8Array;
msgTrackingTxCmdMsg<T>(msgFrame: Uint8Array, withResponse: boolean, msgTimeoutMs: number | undefined, resolve: (arg: T) => void, reject: (reason: Error) => void): void;
msgTrackingRxRespMsg(msgNum: number, msgRsltCode: RICMsgResultCode, msgRsltJsonObj: object): void;
_msgCompleted(msgNum: number, msgRsltCode: RICMsgResultCode, msgRsltObj: object | null): void;
_onMsgTrackTimer(chainRecall: boolean): Promise<void>;
encodeFileStreamBlock(blockContents: Uint8Array, blockStart: number, streamID: number): Uint8Array;
sendFileBlock(blockContents: Uint8Array, blockStart: number): Promise<boolean>;
sendStreamBlock(blockContents: Uint8Array, blockStart: number, streamID: number): Promise<boolean>;
}