UNPKG

wesleytabaka-rpi-led-matrix

Version:

Fork of alexeden/rpi-led-matrix. Node.js/Typescript bindings for hzeller/rpi-rgb-led-matrix

310 lines (309 loc) 9.36 kB
/// <reference types="node" /> export declare enum ScanMode { Progressive = 0, Interlaced = 1 } export declare enum MuxType { Direct = 0, Stripe = 1, Checker = 2, Spiral = 3, ZStripe = 4, ZnMirrorZStripe = 5, Coreman = 6, Kaler2Scan = 7, ZStripeUneven = 8, P10128x4Z = 9, QiangLiQ8 = 10, InversedZStripe = 11, P10Outdoor1R1G1BMultiplexMapper1 = 12, P10Outdoor1R1G1BMultiplexMapper2 = 13, P10Outdoor1R1G1BMultiplexMapper3 = 14, P10CoremanMapper = 15, P8Outdoor1R1G1BMultiplexMapper = 16, FlippedStripeMultiplexMapper = 17, P10Outdoor32x16HalfScanMapper = 18 } export declare enum PixelMapperType { Chainlink = "Chainlink", U = "U-mapper", Rotate = "Rotate", V = "V-mapper", VZ = "V-mapper:Z" } export declare type PixelMapper = { type: PixelMapperType.Rotate; angle: number; } | { type: PixelMapperType.Chainlink; } | { type: PixelMapperType.U; } | { type: PixelMapperType.V; } | { type: PixelMapperType.VZ; }; /** * If a runtime option is set to Disabled, it's command line flag will be unavailable. */ export declare enum RuntimeFlag { Disabled = -1, Off = 0, On = 1 } export declare enum RowAddressType { /** * Corresponds to direct setting of the row. */ Direct = 0, /** * Used for panels that only have A/B. (typically some 64x64 panels) */ AB = 1, /** * Direct row select */ DirectRow = 2, /** * ABC addressed panels */ ABC = 3, /** * 4 = ABC Shift + DE direct */ ABCShift = 4 } export declare enum GpioMapping { Regular = "regular", AdafruitHat = "adafruit-hat", AdafruitHatPwm = "adafruit-hat-pwm", RegularPi1 = "regular-pi1", Classic = "classic", ClassicPi1 = "classic-pi1" } export interface MatrixOptions { /** * The initial brightness of the panel in percent. * @default 100 */ brightness: number; /** * The numbr of display panels daisy-chained together. * Acts as a multiplier of the total number of columns. * @default 1 */ chainLength: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; /** * The number of columns supported by a single display panel. * @default 32 */ cols: 16 | 32 | 40 | 64; /** * Disable the PWM hardware subsystem to create pulses. * Typically, you don't want to disable hardware pulsing, this is mostly * for debugging and figuring out if there is interference with the * sound system. * This won't do anything if output enable is not connected to GPIO 18 in * non-standard wirings. * * @default false */ disableHardwarePulsing: boolean; /** * The type of GPIO mapping of the device. * @default GpioMapping.Regular */ hardwareMapping: GpioMapping; /** * @default false */ inverseColors: boolean; /** * In case the internal sequence of mapping is not "RGB", this contains the * real mapping. Some panels mix up these colors. * * @default 'RGB' */ ledRgbSequence: 'RGB' | 'BGR' | 'BRG' | 'RBG' | 'GRB' | 'GBR'; /** * @default MuxType.Direct */ multiplexing: MuxType; /** * The number of parallel chains connected to the Pi. * Acts as a multiplier of the total number of rows. * @default 1 */ parallel: 1 | 2 | 3 | 4; /** * A special string representing selected pixel mappers used to match the * current display panel arrangement. * * Use LedMatrixUtils.encodeMappers() to conveniently get the formatted string from a * list of mappers. * * @default '' */ pixelMapperConfig: string; /** * Set PWM bits used for output. The maximum value is 11. Lower values * will increase performance at the expense of color precision. * @default 11 */ pwmBits: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11; /** * The lower bits can be time-dithered for higher refresh rate. * @default 0 */ pwmDitherBits: number; /** * Change the base time-unit for the on-time in the lowest * significant bit in nanoseconds. Higher values will provide better image quality * (more accurate color, less ghosting) at the expense of frame rate. * @default 130 */ pwmLsbNanoseconds: number; /** * @default RowAddressType.Direct */ rowAddressType: RowAddressType; /** * The number of rows supported by a single display panel. * @default 32 */ rows: 16 | 32 | 64; /** * @default ScanMode.Progressive */ scanMode: ScanMode; /** * Print the current refresh rate in real-time to the stderr. * @default false */ showRefreshRate: boolean; } /** * Runtime options to simplify doing common things for many programs such as * dropping privileges and becoming a daemon. */ export interface RuntimeOptions { /** * If daemon is Disabled, the user has to call StartRefresh() manually * once the matrix is created, to leave the decision to become a daemon * after the call (which requires that no threads have been started yet). * In the other cases (Off or On), the choice is already made, so the thread * is conveniently already started for you. * * Not recommended unless you have a specific reason for it (e.g. you need root * to access other hardware or you do the privilege dropping yourself). * * @default RuntimeFlag.Off */ daemon: RuntimeFlag; /** * By default, the gpio is initialized for you, but if you want to manually * do that yourself, set this flag to false. * Then, you have to initialize the matrix yourself with SetGPIO(). * * @default true */ doGpioInit: boolean; /** * Drop privileges from 'root' to 'daemon' once the hardware is initialized. * This is usually a good idea unless you need to stay on elevated privs. * * @default RuntimeFlag.On */ dropPrivileges: RuntimeFlag; /** * The Raspberry Pi starting with Pi2 are putting out data too fast for almost * all LED panels I have seen. In this case, you want to slow down writing to * GPIO. Zero for this parameter means 'no slowdown'. * * The default 1 (one) typically works fine, but often you have to even go further * by setting it to 2 (two). If you have a Raspberry Pi with a slower processor * (Model A, A+, B+, Zero), then a value of 0 (zero) might work and is desirable. * * A Raspberry Pi 3 or Pi4 might even need higher values for the panels to be * happy. * * @default 0 */ gpioSlowdown: 0 | 1 | 2 | 3 | 4; } export interface Color { r: number; g: number; b: number; } declare type SyncHook = (this: LedMatrixInstance, matrix: LedMatrixInstance, dt: number, t: number) => any; export interface LedMatrixInstance { afterSync(hook: SyncHook): LedMatrixInstance; bgColor(color: Color | number): this; bgColor(): Color; brightness(brightness: number): this; brightness(): number; clear(): this; clear(x0: number, y0: number, x1: number, y1: number): this; drawBuffer(buffer: Buffer | Uint8Array, w?: number, h?: number): this; drawCircle(x: number, y: number, r: number): this; drawFilledCircle(x: number, y: number, r: number): this; drawLine(x0: number, y0: number, x1: number, y1: number): this; drawRect(x0: number, y0: number, width: number, height: number): this; drawFilledRect(x0: number, y0: number, width: number, height: number): this; drawPolygon(points: number[]): this; drawFilledPolygon(points: number[]): this; drawText(text: string, x: number, y: number, kerning?: number): this; fgColor(color: Color | number): this; fgColor(): Color; fill(): this; fill(x0: number, y0: number, x1: number, y1: number): this; font(font: FontInstance): this; font(): string; getAvailablePixelMappers(): string[]; height(): number; luminanceCorrect(correct: boolean): this; luminanceCorrect(): boolean; map(cb: (coords: [number, number, number], t: number) => number): this; pwmBits(pwmBits: number): this; pwmBits(): number; setPixel(x: number, y: number): this; sync(): void; width(): number; } export interface LedMatrix { defaultMatrixOptions(): MatrixOptions; defaultRuntimeOptions(): RuntimeOptions; new (matrixOpts: MatrixOptions, runtimeOpts: RuntimeOptions): LedMatrixInstance; } export interface FontInstance { /** * Return the number of pixels from the font's top to its baseline. */ baseline(): number; /** * Return the number of pixels from the font's top to its bottom. */ height(): number; /** * Return the name of the font. */ name(): string; /** * Return the path of the font source. */ path(): string; /** * Return the number of pixels spanned by a string rendered with this font. */ stringWidth(str: string, kerning?: number): number; } export interface Font { new (name: string, path: string): FontInstance; } export interface LedMatrixAddon { isSupported: boolean; Font: Font; LedMatrix: LedMatrix; } export {};