Added flash
This commit is contained in:
parent
c4969214e5
commit
f8ba41fc60
@ -8,6 +8,13 @@ PanelStates[ToyPad.Panel.RIGHT] = 0;
|
|||||||
PanelStates[ToyPad.Panel.CENTER] = 0;
|
PanelStates[ToyPad.Panel.CENTER] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
const Colors = {
|
||||||
|
WYLDSTYLE: 0xff0000,
|
||||||
|
BATMAN: 0x00ff00,
|
||||||
|
GANDALF: 0x0000ff
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
toyPad.on("connect", () => {
|
toyPad.on("connect", () => {
|
||||||
console.log("ToyPad connected");
|
console.log("ToyPad connected");
|
||||||
});
|
});
|
||||||
@ -28,20 +35,16 @@ toyPad.on("add", (data) => {
|
|||||||
console.log(`Minifig added to panel ${data.panel} (Unknown signature - ${data.sig})`);
|
console.log(`Minifig added to panel ${data.panel} (Unknown signature - ${data.sig})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (name) {
|
PanelStates[data.panel] = PanelStates[data.panel] | Colors[name.toUpperCase()];
|
||||||
case "Wyldstyle":
|
|
||||||
PanelStates[data.panel] = PanelStates[data.panel] | 0xff0000;
|
|
||||||
break;
|
|
||||||
case "Batman":
|
|
||||||
PanelStates[data.panel] = PanelStates[data.panel] | 0x00ff00;
|
|
||||||
break;
|
|
||||||
case "Gandalf":
|
|
||||||
PanelStates[data.panel] = PanelStates[data.panel] | 0x0000ff;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log(PanelStates[data.panel]);
|
|
||||||
toyPad.setColor(data.panel, PanelStates[data.panel]);
|
toyPad.setColor(data.panel, PanelStates[data.panel]);
|
||||||
|
toyPad.flash(data.panel, Colors[name.toUpperCase()], 4);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
toyPad.getColor(data.panel, (blah) => {
|
||||||
|
console.log(blah);
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -55,19 +58,8 @@ toyPad.on("remove", (data) => {
|
|||||||
console.log(`Minifig removed from panel ${data.panel} (Unknown signature - ${data.sig})`);
|
console.log(`Minifig removed from panel ${data.panel} (Unknown signature - ${data.sig})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (name) {
|
PanelStates[data.panel] = PanelStates[data.panel] ^ Colors[name.toUpperCase()];
|
||||||
case "Wyldstyle":
|
|
||||||
PanelStates[data.panel] = PanelStates[data.panel] ^ 0xff0000;
|
|
||||||
break;
|
|
||||||
case "Batman":
|
|
||||||
PanelStates[data.panel] = PanelStates[data.panel] ^ 0x00ff00;
|
|
||||||
break;
|
|
||||||
case "Gandalf":
|
|
||||||
PanelStates[data.panel] = PanelStates[data.panel] ^ 0x0000ff;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//console.log(PanelStates[data.panel]);
|
|
||||||
toyPad.setColor(data.panel, PanelStates[data.panel]);
|
toyPad.setColor(data.panel, PanelStates[data.panel]);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -38,7 +38,9 @@ const Panel = {
|
|||||||
|
|
||||||
|
|
||||||
const Request = {
|
const Request = {
|
||||||
COLOR: 0xc0
|
GET_COLOR: 0xc1,
|
||||||
|
SET_COLOR: 0xc0,
|
||||||
|
FLASH: 0xc3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -133,7 +135,7 @@ class ToyPad extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (type === Type.RESPONSE) {
|
} else if (type === Type.RESPONSE) {
|
||||||
//console.log(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -151,16 +153,41 @@ class ToyPad extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
setColor (panel, color) {
|
getColor (panel, callback) {
|
||||||
let data = [
|
let data = [
|
||||||
this._requestId & 0xff,
|
this._requestId++ & 0xff,
|
||||||
|
(panel - 1) & 0xff
|
||||||
|
];
|
||||||
|
this._send([(data.length + 1) & 0xff, Request.GET_COLOR].concat(data), callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
setColor (panel, color, callback) {
|
||||||
|
let data = [
|
||||||
|
this._requestId++ & 0xff,
|
||||||
panel & 0xff,
|
panel & 0xff,
|
||||||
(color >> 16) & 0xff,
|
(color >> 16) & 0xff,
|
||||||
(color >> 8) & 0xff,
|
(color >> 8) & 0xff,
|
||||||
color & 0xff
|
color & 0xff
|
||||||
];
|
];
|
||||||
this._requestId++;
|
this._send([(data.length + 1) & 0xff, Request.SET_COLOR].concat(data), callback);
|
||||||
this._write([0x55, (data.length + 1) & 0xff, Request.COLOR].concat(data));
|
};
|
||||||
|
|
||||||
|
|
||||||
|
flash (panel, color, count, options = {}, callback) {
|
||||||
|
options.offTicks = options.offTicks || 10;
|
||||||
|
options.onTicks = options.onTicks || 10;
|
||||||
|
let data = [
|
||||||
|
this._requestId++ & 0xff,
|
||||||
|
panel & 0xff,
|
||||||
|
options.offTicks & 0xff,
|
||||||
|
options.onTicks & 0xff,
|
||||||
|
count & 0xff,
|
||||||
|
(color >> 16) & 0xff,
|
||||||
|
(color >> 8) & 0xff,
|
||||||
|
color & 0xff
|
||||||
|
];
|
||||||
|
this._send([(data.length + 1) & 0xff, Request.FLASH].concat(data), callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -177,8 +204,11 @@ class ToyPad extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
_write (data) {
|
_send (data, callback) {
|
||||||
this._device.write(ToyPad._pad(ToyPad._checksum(data)));
|
if (callback) {
|
||||||
|
this._callbacks[data[3]] = callback;
|
||||||
|
}
|
||||||
|
this._device.write(ToyPad._pad(ToyPad._checksum([Type.RESPONSE].concat(data))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user