Added support for Duplo color sensor RGB values, reflectivity, and Duplo train system sounds

This commit is contained in:
Nathan Kellenicki 2020-02-24 21:43:52 -08:00
parent ecbf489148
commit 28fd0b5578
2 changed files with 41 additions and 3 deletions

View File

@ -32,15 +32,47 @@ export class DuploTrainBaseColorSensor extends Device {
}
break;
case Mode.REFLECTIVITY:
const reflect = message[4];
/**
* Emits when the light reflectivity changes.
* @event DuploTrainBaseColorSensor#reflect
* @type {object}
* @param {number} reflect Percentage, from 0 to 100.
*/
this.notify("reflect", { reflect });
break;
case Mode.RGB:
const red = Math.floor(message.readUInt16LE(4) / 4);
const green = Math.floor(message.readUInt16LE(6) / 4);
const blue = Math.floor(message.readUInt16LE(8) / 4);
/**
* Emits when the light reflectivity changes.
* @event DuploTrainBaseColorSensor#rgb
* @type {object}
* @param {number} red
* @param {number} green
* @param {number} blue
*/
this.notify("rgb", { red, green, blue });
break;
}
}
}
export enum Mode {
COLOR = 0x00
COLOR = 0x00,
REFLECTIVITY = 0x02,
RGB = 0x03
}
export const ModeMap: {[event: string]: number} = {
"color": Mode.COLOR
"color": Mode.COLOR,
"reflect": Mode.REFLECTIVITY,
"rgb": Mode.RGB
};

View File

@ -28,8 +28,14 @@ export class DuploTrainBaseSpeaker extends Device {
});
}
public playTone (tone: number) {
this.subscribe(Mode.TONE);
this.writeDirect(0x02, Buffer.from([tone]));
}
}
export enum Mode {
SOUND = 0x01
SOUND = 0x01,
TONE = 0x02
}