UNPKG

ws2801-webserver

Version:

A ready-to-use webserver for the WS2801-Pi package.

37 lines (27 loc) 1.42 kB
import {LedColor, LedStrip} from 'ws2801-pi'; export function validateLedStrip(amountOfLeds: number, ledStrip: LedStrip): void { if (amountOfLeds !== ledStrip.length) { throw new Error(`The led strip consists of ${amountOfLeds} leds, but led colors that should be set consists of ${ledStrip.length} leds.`); } const invalidLedIndexes: Array<number> = []; for (let ledIndex: number = 0; ledIndex < ledStrip.length; ledIndex++) { const ledColor: LedColor = ledStrip[ledIndex]; if (ledColor.red == undefined || typeof ledColor.red !== 'number' || ledColor.red < 0 || ledColor.red > 255) { invalidLedIndexes.push(ledIndex); } if (ledColor.green == undefined || typeof ledColor.green !== 'number' || ledColor.green < 0 || ledColor.green > 255) { invalidLedIndexes.push(ledIndex); } if (ledColor.blue == undefined || typeof ledColor.blue !== 'number' || ledColor.blue < 0 || ledColor.blue > 255) { invalidLedIndexes.push(ledIndex); } } if (invalidLedIndexes.length !== 0) { let errorMessage: string = `Some led colors of the led strip are invalid. The following leds are invalid:\n`; for (const invalidLedIndex of invalidLedIndexes) { errorMessage += `${invalidLedIndex}: ${JSON.stringify(ledStrip[invalidLedIndex])}, `; } errorMessage = errorMessage.substring(0, errorMessage.length - 2); throw new Error(errorMessage); } }