Aller au contenu

Modèle de plugin

Voici un fichier modèle que vous pouvez utiliser avec quelques fonctions de base/initiales ; utilisez-le et modifiez-le à votre guise.

export function Name() { return "Device Name"; }
export function VendorId() { return 0x0000; }
export function ProductId() { return 0x0000; }
export function Publisher() { return "WhirlwindFX"; }
export function Documentation(){ return "troubleshooting/brand"; }
export function Size() { return [30, 10]; }
export function DefaultPosition(){return [240, 120];}
export function DefaultScale(){return 8.0;}
/* global
shutdownColor:readonly
LightingMode:readonly
forcedColor:readonly
*/
export function ControllableParameters(){
return [
{"property":"shutdownColor", "label":"Shutdown Color", "min":"0", "max":"360", "type":"color", "default":"009bde"},
{"property":"LightingMode", "label":"Lighting Mode", "type":"combobox", "values":["Canvas", "Forced"], "default":"Canvas"},
{"property":"forcedColor", "label":"Forced Color", "min":"0", "max":"360", "type":"color", "default":"009bde"},
];
}
let vLedNames = [
"Led 1"
];
let vLedPositions = [
[0, 0]
];
export function LedNames() {
return vLedNames;
}
export function LedPositions() {
return vLedPositions;
}
export function Initialize() {
}
export function Render() {
sendColors();
device.pause(1);
}
export function Shutdown(SystemSuspending) {
if(SystemSuspending){
sendColors("#000000"); // Go Dark on System Sleep/Shutdown
}else{
sendColors(shutdownColor);
}
}
function sendColors(overrideColor) {
// example header packet
let packet = [];
packet[0] = 0x00; //Zero Padding
packet[1] = 0x00;
packet[2] = 0x00;
packet[3] = 0x00;
packet[4] = 0x00;
packet[5] = 0x00;
packet[6] = 0x00;
for (var idx = 0; idx < vLedPositions.length; idx++) {
let iPxX = vLedPositions[idx][0];
let iPxY = vLedPositions[idx][1];
var color;
if(overrideColor){
color = hexToRgb(overrideColor);
}else if (LightingMode === "Forced") {
color = hexToRgb(forcedColor);
}else{
color = device.color(iPxX, iPxY);
}
packet[idx] = color[0];
packet[idx+1] = color[1];
packet[idx+2] = color[2];
}
//packet[89] = CalculateCrc(packet); // Example Crc
device.send_report(packet, 65); // Send commands
}
function hexToRgb(hex) {
let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
let colors = [];
colors[0] = parseInt(result[1], 16);
colors[1] = parseInt(result[2], 16);
colors[2] = parseInt(result[3], 16);
return colors;
}
export function Validate(endpoint) {
return endpoint.interface === 0 && endpoint.usage === 0x0000 && endpoint.usage_page === 0x0000 && endpoint.collection === 0x0000;
}
export function ImageUrl() {
return "";
}