companion-rgblink-openapi-connector
Version:
This is POC of connector between modules for Bitfocus Companion (https://bitfocus.io/companion) and RGBlink (https://www.rgblink.com/) devices managed by RGBLink OpenAPI
81 lines • 4.72 kB
TypeScript
import { LogLevel } from "@companion-module/base";
export type Hex = '00' | '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' | '0A' | '0B' | '0C' | '0D' | '0E' | '0F' | '10' | '11' | '12' | '13' | '14' | '15' | '16' | '17' | '18' | '19' | '1A' | '1B' | '1C' | '1D' | '1E' | '1F' | '20' | '21' | '22' | '23' | '24' | '25' | '26' | '27' | '28' | '29' | '2A' | '2B' | '2C' | '2D' | '2E' | '2F' | '30' | '31' | '32' | '33' | '34' | '35' | '36' | '37' | '38' | '39' | '3A' | '3B' | '3C' | '3D' | '3E' | '3F' | '40' | '41' | '42' | '43' | '44' | '45' | '46' | '47' | '48' | '49' | '4A' | '4B' | '4C' | '4D' | '4E' | '4F' | '50' | '51' | '52' | '53' | '54' | '55' | '56' | '57' | '58' | '59' | '5A' | '5B' | '5C' | '5D' | '5E' | '5F' | '60' | '61' | '62' | '63' | '64' | '65' | '66' | '67' | '68' | '69' | '6A' | '6B' | '6C' | '6D' | '6E' | '6F' | '70' | '71' | '72' | '73' | '74' | '75' | '76' | '77' | '78' | '79' | '7A' | '7B' | '7C' | '7D' | '7E' | '7F' | '80' | '81' | '82' | '83' | '84' | '85' | '86' | '87' | '88' | '89' | '8A' | '8B' | '8C' | '8D' | '8E' | '8F' | '90' | '91' | '92' | '93' | '94' | '95' | '96' | '97' | '98' | '99' | '9A' | '9B' | '9C' | '9D' | '9E' | '9F' | 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'A7' | 'A8' | 'A9' | 'AA' | 'AB' | 'AC' | 'AD' | 'AE' | 'AF' | 'B0' | 'B1' | 'B2' | 'B3' | 'B4' | 'B5' | 'B6' | 'B7' | 'B8' | 'B9' | 'BA' | 'BB' | 'BC' | 'BD' | 'BE' | 'BF' | 'C0' | 'C1' | 'C2' | 'C3' | 'C4' | 'C5' | 'C6' | 'C7' | 'C8' | 'C9' | 'CA' | 'CB' | 'CC' | 'CD' | 'CE' | 'CF' | 'D0' | 'D1' | 'D2' | 'D3' | 'D4' | 'D5' | 'D6' | 'D7' | 'D8' | 'D9' | 'DA' | 'DB' | 'DC' | 'DD' | 'DE' | 'DF' | 'E0' | 'E1' | 'E2' | 'E3' | 'E4' | 'E5' | 'E6' | 'E7' | 'E8' | 'E9' | 'EA' | 'EB' | 'EC' | 'ED' | 'EE' | 'EF' | 'F0' | 'F1' | 'F2' | 'F3' | 'F4' | 'F5' | 'F6' | 'F7' | 'F8' | 'F9' | 'FA' | 'FB' | 'FC' | 'FD' | 'FE' | 'FF';
export interface Logger {
log(level: LogLevel, message: string): void;
}
export declare class PollingCommand {
CMD: Hex;
DAT1: Hex;
DAT2: Hex;
DAT3: Hex;
DAT4: Hex;
constructor(CMD: Hex, DAT1: Hex, DAT2: Hex, DAT3: Hex, DAT4: Hex);
}
export declare class SentCommand {
sentDate: number;
command: string;
constructor(command: string, sentDate: number);
}
export declare class SentCommandStorage {
private commandsSentWithoutResponse;
private expireTimeSeconds;
registerSentCommand(cmd: string): void;
registerReceivedCommand(cmd: string): void;
getCountElementsWithoutRespond(): number;
deleteExpiredCommands(): SentCommand[];
deleteAll(): void;
setExpireTimeSecons(seconds: number): void;
private internalRememberCommand;
private internalCompareResponseWithSentCommands;
private internalGetCmdId;
}
export declare class ApiConfig {
host: string;
port: number;
polling: boolean;
logEveryCommand: boolean;
constructor(host: string, port: number, polling: boolean, logEveryCommand: boolean);
}
export declare class RGBLinkApiConnector {
static EVENT_NAME_ON_DATA_API: string;
static EVENT_NAME_ON_DATA_API_NOT_STANDARD_LENGTH: string;
static EVENT_NAME_ON_CONNECTION_OK: string;
static EVENT_NAME_ON_CONNECTION_WARNING: string;
static EVENT_NAME_ON_CONNECTION_ERROR: string;
private PARSE_INT_HEX_MODE;
private config;
private logProvider;
private socket;
private eventsListeners;
private nextSn;
private intervalHandler100ms;
private sentCommandStorage;
private pollingQueue;
private pollingCommands;
constructor(config: ApiConfig, pollingCommands: PollingCommand[]);
enableLog(logProvider: Logger): void;
disableLog(): void;
protected myDebug(msg: string): void;
protected myWarn(msg: string): void;
private internalMyLog;
private onEvery100Miliseconds;
private doPolling;
onHostPortUpdate(host: string, port: number): void;
private createSocket;
onDataReceived(message: Buffer): void;
protected logFeedback(redeableMsg: string, info: string): void;
onDestroy(): void;
on(event: string, listener: any): void;
protected emit(event: string, args: any): void;
private sendCommandNative;
setPolling(polling: boolean): void;
setLogEveryCommand(logEveryCommand: boolean): void;
protected sendCommand(CMD: Hex, DAT1: Hex, DAT2: Hex, DAT3: Hex, DAT4: Hex): void;
private sendCommandWithAddr;
byteToTwoSignHex(b: number): Hex;
private incrementNextSn;
validateReceivedDataAndEmitIfValid(message: Buffer): void;
calculateChecksum(ADDR: Hex, SN: Hex, CMD: Hex, DAT1: Hex, DAT2: Hex, DAT3: Hex, DAT4: Hex): Hex;
getNumberOfCommandsWithoutRespond(): number;
}
//# sourceMappingURL=rgblinkopenapiconnector.d.ts.map