Added flash

This commit is contained in:
Nathan Kunicki 2018-02-05 22:49:53 +00:00
parent c4969214e5
commit f8ba41fc60
2 changed files with 54 additions and 32 deletions

View File

@ -8,6 +8,13 @@ PanelStates[ToyPad.Panel.RIGHT] = 0;
PanelStates[ToyPad.Panel.CENTER] = 0;
const Colors = {
WYLDSTYLE: 0xff0000,
BATMAN: 0x00ff00,
GANDALF: 0x0000ff
}
toyPad.on("connect", () => {
console.log("ToyPad connected");
});
@ -28,20 +35,16 @@ toyPad.on("add", (data) => {
console.log(`Minifig added to panel ${data.panel} (Unknown signature - ${data.sig})`);
}
switch (name) {
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;
}
PanelStates[data.panel] = PanelStates[data.panel] | Colors[name.toUpperCase()];
//console.log(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})`);
}
switch (name) {
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;
}
PanelStates[data.panel] = PanelStates[data.panel] ^ Colors[name.toUpperCase()];
//console.log(PanelStates[data.panel]);
toyPad.setColor(data.panel, PanelStates[data.panel]);
});

View File

@ -38,7 +38,9 @@ const Panel = {
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) {
//console.log(data);
}
});
@ -151,16 +153,41 @@ class ToyPad extends EventEmitter {
}
setColor (panel, color) {
getColor (panel, callback) {
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,
(color >> 16) & 0xff,
(color >> 8) & 0xff,
color & 0xff
];
this._requestId++;
this._write([0x55, (data.length + 1) & 0xff, Request.COLOR].concat(data));
this._send([(data.length + 1) & 0xff, Request.SET_COLOR].concat(data), callback);
};
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) {
this._device.write(ToyPad._pad(ToyPad._checksum(data)));
_send (data, callback) {
if (callback) {
this._callbacks[data[3]] = callback;
}
this._device.write(ToyPad._pad(ToyPad._checksum([Type.RESPONSE].concat(data))));
}