Merge branch 'master' into jres

This commit is contained in:
Peli de Halleux 2017-10-30 18:48:18 +01:00 committed by GitHub
commit bfc95e075e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 220 additions and 195 deletions

View File

@ -15,6 +15,28 @@
"MMap.slice": "Read a range of bytes into a buffer.", "MMap.slice": "Read a range of bytes into a buffer.",
"MMap.write": "Perform write(2) on the underlaying file", "MMap.write": "Perform write(2) on the underlaying file",
"TouchSensorEvent": "Touch sensor interactions", "TouchSensorEvent": "Touch sensor interactions",
"brick.Button": "Generic button class, for device buttons and sensors.",
"brick.Button.isPressed": "Check if button is currently pressed or not.",
"brick.Button.onEvent": "Do something when a button or sensor is clicked, up or down.",
"brick.Button.onEvent|param|body": "code to run when the event is raised",
"brick.Button.wasPressed": "See if the button was pressed again since the last time you checked.",
"brick.buttonDown": "Down button on the EV3 Brick.",
"brick.buttonEnter": "Enter button on the EV3 Brick.",
"brick.buttonLeft": "Left button on the EV3 Brick.",
"brick.buttonRight": "Right button on the EV3 Brick.",
"brick.buttonUp": "Up button on the EV3 Brick.",
"brick.pattern": "Pattern block.",
"brick.pattern|param|pattern": "the lights pattern to use. eg: LightsPattern.Green",
"brick.print": "Show text on the screen.",
"brick.print|param|text": "the text to print on the screen, eg: \"Hello world\"",
"brick.print|param|x": "the starting position's x coordinate, eg: 0",
"brick.print|param|y": "the starting position's x coordinate, eg: 0",
"brick.setPixel": "Sets a pixel on or off",
"brick.setPixel|param|on": "a value indicating if the pixel should be on or off",
"brick.setPixel|param|x": "the starting position's x coordinate, eg: 0",
"brick.setPixel|param|y": "the starting position's x coordinate, eg: 0",
"brick.setStatusLight": "Set lights.",
"brick.setStatusLight|param|pattern": "the lights pattern to use.",
"control": "Program controls and events.", "control": "Program controls and events.",
"control.allocateNotifyEvent": "Allocates the next user notification event", "control.allocateNotifyEvent": "Allocates the next user notification event",
"control.deviceFirmwareVersion": "Determine the version of system software currently running.", "control.deviceFirmwareVersion": "Determine the version of system software currently running.",
@ -23,62 +45,20 @@
"control.raiseEvent": "Announce that an event happened to registered handlers.", "control.raiseEvent": "Announce that an event happened to registered handlers.",
"control.raiseEvent|param|src": "ID of the Component that generated the event", "control.raiseEvent|param|src": "ID of the Component that generated the event",
"control.raiseEvent|param|value": "Component specific code indicating the cause of the event.", "control.raiseEvent|param|value": "Component specific code indicating the cause of the event.",
"input": "Respond to and read data from buttons and sensors.", "motors.Motor.clearCount": "Clears the motor count",
"input.Button": "Generic button class, for device buttons and sensors.", "motors.Motor.count": "Gets motor step count.",
"input.Button.isPressed": "Check if button is currently pressed or not.", "motors.Motor.on": "Power on or off the motor.",
"input.Button.onEvent": "Do something when a button or sensor is clicked, up or down.", "motors.Motor.reset": "Resets the motor.",
"input.Button.onEvent|param|body": "code to run when the event is raised", "motors.Motor.setBrake": "Sets the automatic brake on or off when the motor is off",
"input.Button.wasPressed": "See if the button was pressed again since the last time you checked.", "motors.Motor.setBrake|param|brake": "a value indicating if the motor should break when off",
"input.ColorSensor.ambientLight": "Get current ambient light value from the color sensor.", "motors.Motor.setPower": "Sets the motor power level from ``-100`` to ``100``.",
"input.ColorSensor.color": "Get the current color from the color sensor.", "motors.Motor.setPower|param|power": "the desired speed to use. eg: 50",
"input.ColorSensor.onColorDetected": "Registers code to run when the given color is detected", "motors.Motor.setReversed": "Reverses the motor polarity",
"input.ColorSensor.onColorDetected|param|color": "the color to dtect", "motors.Motor.speed": "Gets motor actual speed.",
"input.ColorSensor.onColorDetected|param|handler": "the code to run when detected", "motors.Motor.tachoCount": "Gets motor tacho count.",
"input.ColorSensor.reflectedLight": "Get current reflected light value from the color sensor.", "motors.stopAllMotors": "Stops all motors",
"input.GyroSensor.angle": "Get the current angle from the gyroscope.",
"input.GyroSensor.rate": "Get the current rotation rate from the gyroscope.",
"input.InfraredSensor.onObjectNear": "Registers code to run when an object is getting near.",
"input.InfraredSensor.onObjectNear|param|handler": "the code to run when detected",
"input.InfraredSensor.proximity": "Get the promixity measured by the infrared sensor, from ``0`` (close) to ``100`` (far)",
"input.InfraredSensor.remoteCommand": "Get the remote commandreceived the infrared sensor.",
"input.RemoteInfraredBeaconButton.isPressed": "Check if a remote button is currently pressed or not.",
"input.RemoteInfraredBeaconButton.onEvent": "Do something when a button or sensor is clicked, up or down",
"input.RemoteInfraredBeaconButton.onEvent|param|body": "code to run when the event is raised",
"input.RemoteInfraredBeaconButton.wasPressed": "See if the remote button was pressed again since the last time you checked.",
"input.TouchSensor.isTouched": "Check if touch sensor is touched.",
"input.TouchSensor.onEvent": "Do something when a touch sensor is touched...",
"input.TouchSensor.onEvent|param|body": "code to run when the event is raised",
"input.UltraSonicSensor.distance": "Gets the distance from the sonar in millimeters",
"input.UltraSonicSensor.onObjectNear": "Registers code to run when the given color is close",
"input.UltraSonicSensor.onObjectNear|param|handler": "the code to run when detected",
"input.buttonDown": "Down button on the EV3 Brick.",
"input.buttonEnter": "Enter button on the EV3 Brick.",
"input.buttonLeft": "Left button on the EV3 Brick.",
"input.buttonRight": "Right button on the EV3 Brick.",
"input.buttonUp": "Up button on the EV3 Brick.",
"input.remoteButtonBottomLeft": "Remote bottom-left button.",
"input.remoteButtonBottomRight": "Remote bottom-right button.",
"input.remoteButtonCenter": "Remote beacon (center) button.",
"input.remoteButtonTopLeft": "Remote top-left button.",
"input.remoteButtonTopRight": "Remote top-right button.",
"output.Motor.clearCount": "Clears the motor count",
"output.Motor.count": "Gets motor step count.",
"output.Motor.on": "Power on or off the motor.",
"output.Motor.reset": "Resets the motor.",
"output.Motor.setBrake": "Sets the automatic brake on or off when the motor is off",
"output.Motor.setBrake|param|brake": "a value indicating if the motor should break when off",
"output.Motor.setPower": "Sets the motor power level from ``-100`` to ``100``.",
"output.Motor.setPower|param|power": "the desired speed to use. eg: 50",
"output.Motor.setReversed": "Reverses the motor polarity",
"output.Motor.speed": "Gets motor actual speed.",
"output.Motor.tachoCount": "Gets motor tacho count.",
"output.createBuffer": "Create a new zero-initialized buffer.", "output.createBuffer": "Create a new zero-initialized buffer.",
"output.createBuffer|param|size": "number of bytes in the buffer", "output.createBuffer|param|size": "number of bytes in the buffer",
"output.pattern": "Pattern block.",
"output.pattern|param|pattern": "the lights pattern to use. eg: LightsPattern.Green",
"output.setStatusLight": "Set lights.",
"output.setStatusLight|param|pattern": "the lights pattern to use.",
"output.stopAllMotors": "Stops all motors",
"screen.clear": "Clear screen and reset font to normal.", "screen.clear": "Clear screen and reset font to normal.",
"screen.imageOf": "Makes an image bound to a buffer.", "screen.imageOf": "Makes an image bound to a buffer.",
"screen.print": "Show text on the screen.", "screen.print": "Show text on the screen.",
@ -90,6 +70,35 @@
"screen.setPixel|param|x": "the starting position's x coordinate, eg: 0", "screen.setPixel|param|x": "the starting position's x coordinate, eg: 0",
"screen.setPixel|param|y": "the starting position's x coordinate, eg: 0", "screen.setPixel|param|y": "the starting position's x coordinate, eg: 0",
"screen.unpackPNG": "Decompresses a 1-bit gray scale PNG image to image format.", "screen.unpackPNG": "Decompresses a 1-bit gray scale PNG image to image format.",
"screen.doubleIcon": "Double size of an icon.",
"screen.drawIcon": "Draw an icon on the screen.",
"sensors.ColorSensor.ambientLight": "Get current ambient light value from the color sensor.",
"sensors.ColorSensor.color": "Get the current color from the color sensor.",
"sensors.ColorSensor.onColorDetected": "Registers code to run when the given color is detected",
"sensors.ColorSensor.onColorDetected|param|color": "the color to dtect",
"sensors.ColorSensor.onColorDetected|param|handler": "the code to run when detected",
"sensors.ColorSensor.reflectedLight": "Get current reflected light value from the color sensor.",
"sensors.GyroSensor.angle": "Get the current angle from the gyroscope.",
"sensors.GyroSensor.rate": "Get the current rotation rate from the gyroscope.",
"sensors.InfraredSensor.onObjectNear": "Registers code to run when an object is getting near.",
"sensors.InfraredSensor.onObjectNear|param|handler": "the code to run when detected",
"sensors.InfraredSensor.proximity": "Get the promixity measured by the infrared sensor, from ``0`` (close) to ``100`` (far)",
"sensors.InfraredSensor.remoteCommand": "Get the remote commandreceived the infrared sensor.",
"sensors.RemoteInfraredBeaconButton.isPressed": "Check if a remote button is currently pressed or not.",
"sensors.RemoteInfraredBeaconButton.onEvent": "Do something when a button or sensor is clicked, up or down",
"sensors.RemoteInfraredBeaconButton.onEvent|param|body": "code to run when the event is raised",
"sensors.RemoteInfraredBeaconButton.wasPressed": "See if the remote button was pressed again since the last time you checked.",
"sensors.TouchSensor.isTouched": "Check if touch sensor is touched.",
"sensors.TouchSensor.onEvent": "Do something when a touch sensor is touched...",
"sensors.TouchSensor.onEvent|param|body": "code to run when the event is raised",
"sensors.UltraSonicSensor.distance": "Gets the distance from the sonar in millimeters",
"sensors.UltraSonicSensor.onObjectNear": "Registers code to run when the given color is close",
"sensors.UltraSonicSensor.onObjectNear|param|handler": "the code to run when detected",
"sensors.remoteButtonBottomLeft": "Remote bottom-left button.",
"sensors.remoteButtonBottomRight": "Remote bottom-right button.",
"sensors.remoteButtonCenter": "Remote beacon (center) button.",
"sensors.remoteButtonTopLeft": "Remote top-left button.",
"sensors.remoteButtonTopRight": "Remote top-right button.",
"serial": "Reading and writing data over a serial connection.", "serial": "Reading and writing data over a serial connection.",
"serial.writeDmesg": "Send DMESG debug buffer over serial." "serial.writeDmesg": "Send DMESG debug buffer over serial."
} }

View File

@ -30,95 +30,102 @@
"TouchSensorEvent.Bumped|block": "bumped", "TouchSensorEvent.Bumped|block": "bumped",
"TouchSensorEvent.Pressed|block": "pressed", "TouchSensorEvent.Pressed|block": "pressed",
"TouchSensorEvent.Released|block": "released", "TouchSensorEvent.Released|block": "released",
"brick.Button.isPressed|block": "%button|is pressed",
"brick.Button.onEvent|block": "on %button|%event",
"brick.Button.wasPressed|block": "%button|was pressed",
"brick.buttonDown|block": "button down",
"brick.buttonEnter|block": "button enter",
"brick.buttonLeft|block": "button left",
"brick.buttonRight|block": "button right",
"brick.buttonUp|block": "button up",
"brick.pattern|block": "%pattern",
"brick.print|block": "print %text| at x: %x| y: %y",
"brick.setPixel|block": "set pixel %on| at x: %x| y: %y",
"brick.setStatusLight|block": "set status light %pattern=led_pattern",
"brick|block": "brick",
"control.raiseEvent|block": "raise event|from %src|with value %value", "control.raiseEvent|block": "raise event|from %src|with value %value",
"control|block": "control", "control|block": "control",
"input.Button.isPressed|block": "%button|is pressed", "motors.Motor.count|block": "%motor|count",
"input.Button.onEvent|block": "on %button|%event", "motors.Motor.on|block": "%motor|%onOrOff",
"input.Button.wasPressed|block": "%button|was pressed", "motors.Motor.setBrake|block": "%motor|set brake %brake",
"input.ColorSensor.ambientLight|block": "%color| ambient light", "motors.Motor.setPower|block": "%motor|set power to %speed",
"input.ColorSensor.color|block": "%color| color", "motors.Motor.setReversed|block": "%motor|set reversed %reversed",
"input.ColorSensor.onColorDetected|block": "on %sensor|detected %color", "motors.Motor.speed|block": "%motor|speed",
"input.ColorSensor.reflectedLight|block": "%color| reflected light", "motors.Motor.tachoCount|block": "%motor|tacho count",
"input.GyroSensor.angle|block": "%sensor|angle", "motors.largeMotorA|block": "large motor A",
"input.GyroSensor.rate|block": "%sensor|rotation rate", "motors.largeMotorB|block": "large motor B",
"input.InfraredSensor.onObjectNear|block": "on %sensor|object near", "motors.largeMotorC|block": "large motor C",
"input.InfraredSensor.proximity|block": "%infrared|proximity", "motors.largeMotorD|block": "large motor D",
"input.InfraredSensor.remoteCommand|block": "%infrared|remote command", "motors.mediumMotorA|block": "medium motor A",
"input.RemoteInfraredBeaconButton.isPressed|block": "%button|is pressed", "motors.mediumMotorB|block": "medium motor B",
"input.RemoteInfraredBeaconButton.onEvent|block": "on %button|%event", "motors.mediumMotorC|block": "medium motor C",
"input.RemoteInfraredBeaconButton.wasPressed|block": "%button|was pressed", "motors.mediumMotorD|block": "medium motor D",
"input.TouchSensor.isTouched|block": "%sensor|is touched", "motors.stopAllMotors|block": "stop all motors",
"input.TouchSensor.onEvent|block": "on %sensor|%event", "motors|block": "motors",
"input.UltraSonicSensor.distance|block": "%sensor|distance",
"input.UltraSonicSensor.onObjectNear|block": "on %sensor|object near",
"input.buttonDown|block": "brick button down",
"input.buttonEnter|block": "brick button enter",
"input.buttonLeft|block": "brick button left",
"input.buttonRight|block": "brick button right",
"input.buttonUp|block": "brick button up",
"input.color1|block": "color sensor 1",
"input.color2|block": "color sensor 2",
"input.color3|block": "color sensor 3",
"input.color4|block": "color sensor 4",
"input.gyro1|block": "gyro sensor 1",
"input.gyro2|block": "gyro sensor 2",
"input.gyro3|block": "gyro sensor 3",
"input.gyro4|block": "gyro sensor 4",
"input.infraredSensor1|block": "infrared sensor 1",
"input.infraredSensor2|block": "infrared sensor 2",
"input.infraredSensor3|block": "infrared sensor 3",
"input.infraredSensor4|block": "infrared sensor 4",
"input.remoteButtonBottomLeft|block": "remote button bottom-left",
"input.remoteButtonBottomRight|block": "remote button bottom-right",
"input.remoteButtonCenter|block": "remote button center",
"input.remoteButtonTopLeft|block": "remote button top-left",
"input.remoteButtonTopRight|block": "remote button top-right",
"input.touchSensor1|block": "touch sensor 1",
"input.touchSensor2|block": "touch sensor 2",
"input.touchSensor3|block": "touch sensor 3",
"input.touchSensor4|block": "touch sensor 4",
"input.ultrasonic1|block": "ultrasonic sensor 1",
"input.ultrasonic2|block": "ultrasonic sensor 2",
"input.ultrasonic3|block": "ultrasonic sensor 3",
"input.ultrasonic4|block": "ultrasonic sensor 4",
"input|block": "input",
"output.Motor.count|block": "%motor|count",
"output.Motor.on|block": "%motor|%onOrOff",
"output.Motor.setBrake|block": "%motor|set brake %brake",
"output.Motor.setPower|block": "%motor|set power to %speed",
"output.Motor.setReversed|block": "%motor|set reversed %reversed",
"output.Motor.speed|block": "%motor|speed",
"output.Motor.tachoCount|block": "%motor|tacho count",
"output.largeMotorA|block": "large motor A",
"output.largeMotorB|block": "large motor B",
"output.largeMotorC|block": "large motor C",
"output.largeMotorD|block": "large motor D",
"output.mediumMotorA|block": "medium motor A",
"output.mediumMotorB|block": "medium motor B",
"output.mediumMotorC|block": "medium motor C",
"output.mediumMotorD|block": "medium motor D",
"output.pattern|block": "%pattern",
"output.setStatusLight|block": "set status light %pattern=led_pattern",
"output.stopAllMotors|block": "stop all motors",
"output|block": "output", "output|block": "output",
"screen.print|block": "print %text| at x: %x| y: %y",
"screen.setPixel|block": "set pixel %on| at x: %x| y: %y",
"screen|block": "screen", "screen|block": "screen",
"sensors.ColorSensor.ambientLight|block": "%color| ambient light",
"sensors.ColorSensor.color|block": "%color| color",
"sensors.ColorSensor.onColorDetected|block": "on %sensor|detected %color",
"sensors.ColorSensor.reflectedLight|block": "%color| reflected light",
"sensors.GyroSensor.angle|block": "%sensor|angle",
"sensors.GyroSensor.rate|block": "%sensor|rotation rate",
"sensors.InfraredSensor.onObjectNear|block": "on %sensor|object near",
"sensors.InfraredSensor.proximity|block": "%infrared|proximity",
"sensors.InfraredSensor.remoteCommand|block": "%infrared|remote command",
"sensors.RemoteInfraredBeaconButton.isPressed|block": "%button|is pressed",
"sensors.RemoteInfraredBeaconButton.onEvent|block": "on %button|%event",
"sensors.RemoteInfraredBeaconButton.wasPressed|block": "%button|was pressed",
"sensors.TouchSensor.isTouched|block": "%sensor|is touched",
"sensors.TouchSensor.onEvent|block": "on %sensor|%event",
"sensors.UltraSonicSensor.distance|block": "%sensor|distance",
"sensors.UltraSonicSensor.onObjectNear|block": "on %sensor|object near",
"sensors.color1|block": "color sensor 1",
"sensors.color2|block": "color sensor 2",
"sensors.color3|block": "color sensor 3",
"sensors.color4|block": "color sensor 4",
"sensors.gyro1|block": "gyro sensor 1",
"sensors.gyro2|block": "gyro sensor 2",
"sensors.gyro3|block": "gyro sensor 3",
"sensors.gyro4|block": "gyro sensor 4",
"sensors.infraredSensor1|block": "infrared sensor 1",
"sensors.infraredSensor2|block": "infrared sensor 2",
"sensors.infraredSensor3|block": "infrared sensor 3",
"sensors.infraredSensor4|block": "infrared sensor 4",
"sensors.remoteButtonBottomLeft|block": "remote button bottom-left",
"sensors.remoteButtonBottomRight|block": "remote button bottom-right",
"sensors.remoteButtonCenter|block": "remote button center",
"sensors.remoteButtonTopLeft|block": "remote button top-left",
"sensors.remoteButtonTopRight|block": "remote button top-right",
"sensors.touchSensor1|block": "touch sensor 1",
"sensors.touchSensor2|block": "touch sensor 2",
"sensors.touchSensor3|block": "touch sensor 3",
"sensors.touchSensor4|block": "touch sensor 4",
"sensors.ultrasonic1|block": "ultrasonic sensor 1",
"sensors.ultrasonic2|block": "ultrasonic sensor 2",
"sensors.ultrasonic3|block": "ultrasonic sensor 3",
"sensors.ultrasonic4|block": "ultrasonic sensor 4",
"sensors|block": "sensors",
"serial|block": "serial", "serial|block": "serial",
"{id:category}Brick": "Brick",
"{id:category}Control": "Control", "{id:category}Control": "Control",
"{id:category}Image": "Image", "{id:category}Image": "Image",
"{id:category}Images": "Images", "{id:category}Images": "Images",
"{id:category}Input": "Input", "{id:category}Input": "Input",
"{id:category}MMap": "MMap", "{id:category}MMap": "MMap",
"{id:category}Motors": "Motors",
"{id:category}Output": "Output", "{id:category}Output": "Output",
"{id:category}Screen": "Screen", "{id:category}Screen": "Screen",
"{id:category}Sensors": "Sensors",
"{id:category}Serial": "Serial", "{id:category}Serial": "Serial",
"{id:group}Brick": "Brick", "{id:group}Buttons": "Buttons",
"{id:group}Color Sensor": "Color Sensor", "{id:group}Color Sensor": "Color Sensor",
"{id:group}Gyro Sensor": "Gyro Sensor", "{id:group}Gyro Sensor": "Gyro Sensor",
"{id:group}Infrared Sensor": "Infrared Sensor", "{id:group}Infrared Sensor": "Infrared Sensor",
"{id:group}Light": "Light",
"{id:group}Motors": "Motors", "{id:group}Motors": "Motors",
"{id:group}Remote Infrared Beacon": "Remote Infrared Beacon", "{id:group}Remote Infrared Beacon": "Remote Infrared Beacon",
"{id:group}Screen": "Screen",
"{id:group}Touch Sensor": "Touch Sensor", "{id:group}Touch Sensor": "Touch Sensor",
"{id:group}Ultrasonic Sensor": "Ultrasonic Sensor" "{id:group}Ultrasonic Sensor": "Ultrasonic Sensor"
} }

View File

@ -47,7 +47,7 @@ const enum ButtonEvent {
Down = 4, Down = 4,
} }
namespace input { namespace brick {
/** /**
* Generic button class, for device buttons and sensors. * Generic button class, for device buttons and sensors.
*/ */
@ -87,9 +87,9 @@ namespace input {
//% block="%button|is pressed" //% block="%button|is pressed"
//% blockId=buttonIsPressed //% blockId=buttonIsPressed
//% parts="brick" //% parts="brick"
//% blockNamespace=input //% blockNamespace=brick
//% weight=81 blockGap=8 //% weight=81 blockGap=8
//% group="Brick" //% group="Buttons"
isPressed() { isPressed() {
return this._isPressed return this._isPressed
} }
@ -102,9 +102,9 @@ namespace input {
//% block="%button|was pressed" //% block="%button|was pressed"
//% blockId=buttonWasPressed //% blockId=buttonWasPressed
//% parts="brick" //% parts="brick"
//% blockNamespace=input //% blockNamespace=brick
//% weight=80 blockGap=8 //% weight=80 blockGap=8
//% group="Brick" //% group="Buttons"
wasPressed() { wasPressed() {
const r = this._wasPressed const r = this._wasPressed
this._wasPressed = false this._wasPressed = false
@ -120,16 +120,16 @@ namespace input {
//% help=input/button/on-event //% help=input/button/on-event
//% blockId=buttonEvent block="on %button|%event" //% blockId=buttonEvent block="on %button|%event"
//% parts="brick" //% parts="brick"
//% blockNamespace=input //% blockNamespace=brick
//% weight=99 blockGap=8 //% weight=99 blockGap=8
//% group="Brick" //% group="Buttons"
onEvent(ev: ButtonEvent, body: () => void) { onEvent(ev: ButtonEvent, body: () => void) {
control.onEvent(this._id, ev, body) control.onEvent(this._id, ev, body)
} }
} }
} }
namespace input { namespace brick {
let btnsMM: MMap let btnsMM: MMap
let buttons: DevButton[] let buttons: DevButton[]
@ -155,7 +155,7 @@ namespace input {
btnsMM = control.mmap("/dev/lms_ui", DAL.NUM_BUTTONS, 0) btnsMM = control.mmap("/dev/lms_ui", DAL.NUM_BUTTONS, 0)
if (!btnsMM) control.fail("no buttons?") if (!btnsMM) control.fail("no buttons?")
buttons = [] buttons = []
input.internal.unsafePollForChanges(50, readButtons, (prev, curr) => { sensors.internal.unsafePollForChanges(50, readButtons, (prev, curr) => {
if (curr & DAL.BUTTON_ID_ESCAPE) if (curr & DAL.BUTTON_ID_ESCAPE)
control.reset() control.reset()
for (let b of buttons) for (let b of buttons)
@ -180,31 +180,31 @@ namespace input {
/** /**
* Enter button on the EV3 Brick. * Enter button on the EV3 Brick.
*/ */
//% whenUsed block="brick button enter" weight=95 fixedInstance //% whenUsed block="button enter" weight=95 fixedInstance
export const buttonEnter: Button = new DevButton(DAL.BUTTON_ID_ENTER) export const buttonEnter: Button = new DevButton(DAL.BUTTON_ID_ENTER)
/** /**
* Left button on the EV3 Brick. * Left button on the EV3 Brick.
*/ */
//% whenUsed block="brick button left" weight=95 fixedInstance //% whenUsed block="button left" weight=95 fixedInstance
export const buttonLeft: Button = new DevButton(DAL.BUTTON_ID_LEFT) export const buttonLeft: Button = new DevButton(DAL.BUTTON_ID_LEFT)
/** /**
* Right button on the EV3 Brick. * Right button on the EV3 Brick.
*/ */
//% whenUsed block="brick button right" weight=94 fixedInstance //% whenUsed block="button right" weight=94 fixedInstance
export const buttonRight: Button = new DevButton(DAL.BUTTON_ID_RIGHT) export const buttonRight: Button = new DevButton(DAL.BUTTON_ID_RIGHT)
/** /**
* Up button on the EV3 Brick. * Up button on the EV3 Brick.
*/ */
//% whenUsed block="brick button up" weight=95 fixedInstance //% whenUsed block="button up" weight=95 fixedInstance
export const buttonUp: Button = new DevButton(DAL.BUTTON_ID_UP) export const buttonUp: Button = new DevButton(DAL.BUTTON_ID_UP)
/** /**
* Down button on the EV3 Brick. * Down button on the EV3 Brick.
*/ */
//% whenUsed block="brick button down" weight=95 fixedInstance //% whenUsed block="button down" weight=95 fixedInstance
export const buttonDown: Button = new DevButton(DAL.BUTTON_ID_DOWN) export const buttonDown: Button = new DevButton(DAL.BUTTON_ID_DOWN)
} }
@ -215,7 +215,7 @@ namespace control {
*/ */
export function deviceFirmwareVersion(): string { export function deviceFirmwareVersion(): string {
let buf = output.createBuffer(6) let buf = output.createBuffer(6)
input.internal.getBtnsMM().read(buf) brick.internal.getBtnsMM().read(buf)
let r = "" let r = ""
for (let i = 0; i < buf.length; ++i) { for (let i = 0; i < buf.length; ++i) {
let c = buf[i] let c = buf[i]
@ -226,7 +226,7 @@ namespace control {
} }
} }
namespace output { namespace brick {
let currPattern: LightsPattern let currPattern: LightsPattern
/** /**
@ -234,14 +234,14 @@ namespace output {
* @param pattern the lights pattern to use. * @param pattern the lights pattern to use.
*/ */
//% blockId=setLights block="set status light %pattern=led_pattern" //% blockId=setLights block="set status light %pattern=led_pattern"
//% weight=100 group="Brick" //% weight=100 group="Light"
export function setStatusLight(pattern: number): void { export function setStatusLight(pattern: number): void {
if (currPattern === pattern) if (currPattern === pattern)
return return
currPattern = pattern currPattern = pattern
let cmd = output.createBuffer(2) let cmd = output.createBuffer(2)
cmd[0] = pattern + 48 cmd[0] = pattern + 48
input.internal.getBtnsMM().write(cmd) brick.internal.getBtnsMM().write(cmd)
} }
@ -250,7 +250,7 @@ namespace output {
* @param pattern the lights pattern to use. eg: LightsPattern.Green * @param pattern the lights pattern to use. eg: LightsPattern.Green
*/ */
//% blockId=led_pattern block="%pattern" //% blockId=led_pattern block="%pattern"
//% shim=TD_ID colorSecondary="#6e9a36" //% shim=TD_ID colorSecondary="#6e9a36" group="Light"
//% blockHidden=true useEnumVal=1 pattern.fieldOptions.decompileLiterals=1 //% blockHidden=true useEnumVal=1 pattern.fieldOptions.decompileLiterals=1
export function pattern(pattern: LightsPattern): number { export function pattern(pattern: LightsPattern): number {
return pattern; return pattern;

View File

@ -27,7 +27,7 @@ const enum ColorSensorColor {
Brown, Brown,
} }
namespace input { namespace sensors {
//% fixedInstances //% fixedInstances
export class ColorSensor extends internal.UartSensor { export class ColorSensor extends internal.UartSensor {
@ -62,7 +62,7 @@ namespace input {
//% block="on %sensor|detected %color" //% block="on %sensor|detected %color"
//% blockId=colorOnColorDetected //% blockId=colorOnColorDetected
//% parts="colorsensor" //% parts="colorsensor"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=100 blockGap=8 //% weight=100 blockGap=8
//% group="Color Sensor" //% group="Color Sensor"
onColorDetected(color: ColorSensorColor, handler: () => void) { onColorDetected(color: ColorSensorColor, handler: () => void) {
@ -80,7 +80,7 @@ namespace input {
//% block="%color| ambient light" //% block="%color| ambient light"
//% blockId=colorGetAmbient //% blockId=colorGetAmbient
//% parts="colorsensor" //% parts="colorsensor"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=65 blockGap=8 //% weight=65 blockGap=8
//% group="Color Sensor" //% group="Color Sensor"
ambientLight() { ambientLight() {
@ -96,7 +96,7 @@ namespace input {
//% block="%color| reflected light" //% block="%color| reflected light"
//% blockId=colorGetReflected //% blockId=colorGetReflected
//% parts="colorsensor" //% parts="colorsensor"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=64 blockGap=8 //% weight=64 blockGap=8
//% group="Color Sensor" //% group="Color Sensor"
reflectedLight(): number { reflectedLight(): number {
@ -112,7 +112,7 @@ namespace input {
//% block="%color| color" //% block="%color| color"
//% blockId=colorGetColor //% blockId=colorGetColor
//% parts="colorsensor" //% parts="colorsensor"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=66 blockGap=8 //% weight=66 blockGap=8
//% group="Color Sensor" //% group="Color Sensor"
color(): ColorSensorColor { color(): ColorSensorColor {

View File

@ -4,7 +4,7 @@ const enum GyroSensorMode {
Rate = 1, Rate = 1,
} }
namespace input { namespace sensors {
//% fixedInstances //% fixedInstances
export class GyroSensor extends internal.UartSensor { export class GyroSensor extends internal.UartSensor {
constructor(port: number) { constructor(port: number) {
@ -27,7 +27,7 @@ namespace input {
//% block="%sensor|angle" //% block="%sensor|angle"
//% blockId=gyroGetAngle //% blockId=gyroGetAngle
//% parts="gyroscope" //% parts="gyroscope"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=65 blockGap=8 //% weight=65 blockGap=8
//% group="Gyro Sensor" //% group="Gyro Sensor"
angle() { angle() {
@ -43,7 +43,7 @@ namespace input {
//% block="%sensor|rotation rate" //% block="%sensor|rotation rate"
//% blockId=gyroGetRate //% blockId=gyroGetRate
//% parts="gyroscope" //% parts="gyroscope"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=65 blockGap=8 //% weight=65 blockGap=8
//% group="Gyro Sensor" //% group="Gyro Sensor"
rate() { rate() {

View File

@ -1,4 +1,4 @@
namespace input.internal { namespace sensors.internal {
//% shim=pxt::unsafePollForChanges //% shim=pxt::unsafePollForChanges
export function unsafePollForChanges( export function unsafePollForChanges(
periodMs: number, periodMs: number,

View File

@ -21,7 +21,7 @@ const enum IrRemoteButton {
BottomRight = 0x10, BottomRight = 0x10,
} }
namespace input { namespace sensors {
function mapButton(v: number) { function mapButton(v: number) {
switch (v) { switch (v) {
case 0: return IrRemoteButton.None case 0: return IrRemoteButton.None
@ -50,7 +50,7 @@ namespace input {
if (buttons == null) { if (buttons == null) {
buttons = [] buttons = []
for (let i = 0; i < 5; ++i) { for (let i = 0; i < 5; ++i) {
buttons.push(new RemoteInfraredBeaconButton(new Button())) buttons.push(new RemoteInfraredBeaconButton(new brick.Button()))
} }
// make sure sensors are up // make sure sensors are up
@ -71,8 +71,8 @@ namespace input {
//% fixedInstances //% fixedInstances
export class RemoteInfraredBeaconButton extends control.Component { export class RemoteInfraredBeaconButton extends control.Component {
private button: Button; private button: brick.Button;
constructor(button: Button) { constructor(button: brick.Button) {
super(); super();
this.button = button; this.button = button;
} }
@ -89,7 +89,7 @@ namespace input {
//% block="%button|is pressed" //% block="%button|is pressed"
//% blockId=remoteButtonIsPressed //% blockId=remoteButtonIsPressed
//% parts="remote" //% parts="remote"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=81 blockGap=8 //% weight=81 blockGap=8
//% group="Remote Infrared Beacon" //% group="Remote Infrared Beacon"
isPressed() { isPressed() {
@ -104,7 +104,7 @@ namespace input {
//% block="%button|was pressed" //% block="%button|was pressed"
//% blockId=remotebuttonWasPressed //% blockId=remotebuttonWasPressed
//% parts="remote" //% parts="remote"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=80 blockGap=8 //% weight=80 blockGap=8
//% group="Remote Infrared Beacon" //% group="Remote Infrared Beacon"
wasPressed() { wasPressed() {
@ -120,7 +120,7 @@ namespace input {
//% help=input/remote-infrared-beacon/on-event //% help=input/remote-infrared-beacon/on-event
//% blockId=remotebuttonEvent block="on %button|%event" //% blockId=remotebuttonEvent block="on %button|%event"
//% parts="remote" //% parts="remote"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=99 blockGap=8 //% weight=99 blockGap=8
//% group="Remote Infrared Beacon" //% group="Remote Infrared Beacon"
onEvent(ev: ButtonEvent, body: () => void) { onEvent(ev: ButtonEvent, body: () => void) {
@ -189,7 +189,7 @@ namespace input {
//% block="on %sensor|object near" //% block="on %sensor|object near"
//% blockId=infraredOnObjectNear //% blockId=infraredOnObjectNear
//% parts="infraredsensor" //% parts="infraredsensor"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=100 blockGap=8 //% weight=100 blockGap=8
//% group="Infrared Sensor" //% group="Infrared Sensor"
onObjectNear(handler: () => void) { onObjectNear(handler: () => void) {
@ -210,7 +210,7 @@ namespace input {
//% block="%infrared|proximity" //% block="%infrared|proximity"
//% blockId=infraredGetProximity //% blockId=infraredGetProximity
//% parts="infrared" //% parts="infrared"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=65 blockGap=8 //% weight=65 blockGap=8
//% group="Infrared Sensor" //% group="Infrared Sensor"
proximity() { proximity() {
@ -226,7 +226,7 @@ namespace input {
//% block="%infrared|remote command" //% block="%infrared|remote command"
//% blockId=infraredGetRemoteCommand //% blockId=infraredGetRemoteCommand
//% parts="infrared" //% parts="infrared"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=65 blockGap=8 //% weight=65 blockGap=8
//% group="Infrared Sensor" //% group="Infrared Sensor"
remoteCommand() { remoteCommand() {

View File

@ -1,5 +1,9 @@
//% weight=100
namespace brick {
}
//% color="#B4009E" weight=98 icon="\uf192" //% color="#B4009E" weight=98 icon="\uf192"
//% groups='["Brick", "Touch Sensor", "Color Sensor", "Ultrasonic Sensor", "Infrared Sensor", "Remote Infrared Beacon", "Gyro Sensor"]' //% groups='["Touch Sensor", "Color Sensor", "Ultrasonic Sensor", "Infrared Sensor", "Remote Infrared Beacon", "Gyro Sensor"]'
namespace input { namespace sensors {
} }

View File

@ -17,7 +17,7 @@ enum OutputType {
MiniTacho = 8, MiniTacho = 8,
} }
namespace output { namespace motors {
let pwmMM: MMap let pwmMM: MMap
let motorMM: MMap let motorMM: MMap
@ -53,7 +53,7 @@ namespace output {
} }
function mkCmd(out: Output, cmd: number, addSize: number) { function mkCmd(out: Output, cmd: number, addSize: number) {
const b = createBuffer(2 + addSize) const b = output.createBuffer(2 + addSize)
b.setNumber(NumberFormat.UInt8LE, 0, cmd) b.setNumber(NumberFormat.UInt8LE, 0, cmd)
b.setNumber(NumberFormat.UInt8LE, 1, out) b.setNumber(NumberFormat.UInt8LE, 1, out)
return b return b

View File

@ -1,4 +1,4 @@
namespace screen { namespace brick {
//% shim=screen::_setPixel //% shim=screen::_setPixel
function _setPixel(p0: uint32, p1: uint32, mode: Draw): void { } function _setPixel(p0: uint32, p1: uint32, mode: Draw): void { }
@ -85,7 +85,7 @@ namespace screen {
* @param y the starting position's x coordinate, eg: 0 * @param y the starting position's x coordinate, eg: 0
*/ */
//% blockId=screen_setpixel block="set pixel %on| at x: %x| y: %y" //% blockId=screen_setpixel block="set pixel %on| at x: %x| y: %y"
//% weight=98 group="Brick" blockNamespace=output //% weight=98 group="Screen"
//% x.min=0 x.max=178 y.min=0 y.max=128 on.fieldEditor=toggleonoff //% x.min=0 x.max=178 y.min=0 y.max=128 on.fieldEditor=toggleonoff
export function setPixel(on: boolean, x: number, y: number) { export function setPixel(on: boolean, x: number, y: number) {
x |= 0 x |= 0
@ -101,7 +101,7 @@ namespace screen {
* @param y the starting position's x coordinate, eg: 0 * @param y the starting position's x coordinate, eg: 0
*/ */
//% blockId=screen_print block="print %text| at x: %x| y: %y" //% blockId=screen_print block="print %text| at x: %x| y: %y"
//% weight=99 group="Brick" blockNamespace=output inlineInputMode="inline" //% weight=99 group="Screen" inlineInputMode="inline" blockGap=8
//% x.min=0 x.max=178 y.min=0 y.max=128 //% x.min=0 x.max=178 y.min=0 y.max=128
export function print(text: string, x: number, y: number, mode = Draw.Normal) { export function print(text: string, x: number, y: number, mode = Draw.Normal) {
x |= 0 x |= 0

View File

@ -2,46 +2,46 @@ screen.clear()
screen.print("PXT!", 10, 30, Draw.Quad) screen.print("PXT!", 10, 30, Draw.Quad)
screen.drawRect(40, 40, 20, 10, Draw.Fill) screen.drawRect(40, 40, 20, 10, Draw.Fill)
output.setStatusLight(LightsPattern.Orange) motors.setStatusLight(LightsPattern.Orange)
screen.heart.doubled().draw(100, 50, Draw.Double | Draw.Transparent) screen.heart.doubled().draw(100, 50, Draw.Double | Draw.Transparent)
input.buttonEnter.onEvent(ButtonEvent.Click, () => { sensors.buttonEnter.onEvent(ButtonEvent.Click, () => {
screen.clear() screen.clear()
}) })
input.buttonLeft.onEvent(ButtonEvent.Click, () => { sensors.buttonLeft.onEvent(ButtonEvent.Click, () => {
screen.drawRect(10, 70, 20, 10, Draw.Fill) screen.drawRect(10, 70, 20, 10, Draw.Fill)
output.setStatusLight(LightsPattern.Red) motors.setStatusLight(LightsPattern.Red)
screen.setFont(screen.microbitFont()) screen.setFont(screen.microbitFont())
}) })
input.buttonRight.onEvent(ButtonEvent.Click, () => { sensors.buttonRight.onEvent(ButtonEvent.Click, () => {
screen.print("Right!", 10, 60) screen.print("Right!", 10, 60)
}) })
input.buttonDown.onEvent(ButtonEvent.Click, () => { sensors.buttonDown.onEvent(ButtonEvent.Click, () => {
screen.print("Down! ", 10, 60) screen.print("Down! ", 10, 60)
}) })
input.buttonUp.onEvent(ButtonEvent.Click, () => { sensors.buttonUp.onEvent(ButtonEvent.Click, () => {
screen.print("Up! ", 10, 60) screen.print("Up! ", 10, 60)
}) })
let num = 0 let num = 0
input.touchSensor1.onEvent(TouchSensorEvent.Bumped, () => { sensors.touchSensor1.onEvent(TouchSensorEvent.Bumped, () => {
screen.print("Click! " + num, 10, 60) screen.print("Click! " + num, 10, 60)
num++ num++
}) })
input.remoteButtonTopLeft.onEvent(ButtonEvent.Click, () => { sensors.remoteButtonTopLeft.onEvent(ButtonEvent.Click, () => {
screen.print("TOPLEFT " + num, 10, 60) screen.print("TOPLEFT " + num, 10, 60)
num++ num++
}) })
input.remoteButtonTopRight.onEvent(ButtonEvent.Down, () => { sensors.remoteButtonTopRight.onEvent(ButtonEvent.Down, () => {
screen.print("TOPRIGH " + num, 10, 60) screen.print("TOPRIGH " + num, 10, 60)
num++ num++
}) })

View File

@ -12,15 +12,15 @@ const enum TouchSensorEvent {
Released = 3, Released = 3,
} }
namespace input { namespace sensors {
//% fixedInstances //% fixedInstances
export class TouchSensor extends internal.AnalogSensor { export class TouchSensor extends internal.AnalogSensor {
private button: Button; private button: brick.Button;
constructor(port: number) { constructor(port: number) {
super(port) super(port)
this.button = new Button(); this.button = new brick.Button();
} }
_query() { _query() {
@ -43,7 +43,7 @@ namespace input {
//% block="%sensor|is touched" //% block="%sensor|is touched"
//% blockId=touchIsTouched //% blockId=touchIsTouched
//% parts="touch" //% parts="touch"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=81 blockGap=8 //% weight=81 blockGap=8
//% group="Touch Sensor" //% group="Touch Sensor"
isTouched() { isTouched() {
@ -59,7 +59,7 @@ namespace input {
//% help=input/touch/on-event //% help=input/touch/on-event
//% blockId=touchEvent block="on %sensor|%event" //% blockId=touchEvent block="on %sensor|%event"
//% parts="touch" //% parts="touch"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=99 blockGap=8 //% weight=99 blockGap=8
//% group="Touch Sensor" //% group="Touch Sensor"
onEvent(ev: TouchSensorEvent, body: () => void) { onEvent(ev: TouchSensorEvent, body: () => void) {

View File

@ -5,7 +5,7 @@ const enum PromixityEvent {
ObjectDetected = 2 ObjectDetected = 2
} }
namespace input { namespace sensors {
//% fixedInstances //% fixedInstances
export class UltraSonicSensor extends internal.UartSensor { export class UltraSonicSensor extends internal.UartSensor {
@ -40,7 +40,7 @@ namespace input {
//% block="on %sensor|object near" //% block="on %sensor|object near"
//% blockId=ultrasonicOnObjectClose //% blockId=ultrasonicOnObjectClose
//% parts="infraredsensor" //% parts="infraredsensor"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=100 blockGap=8 //% weight=100 blockGap=8
//% group="Ultrasonic Sensor" //% group="Ultrasonic Sensor"
onObjectNear(handler: () => void) { onObjectNear(handler: () => void) {
@ -61,7 +61,7 @@ namespace input {
//% block="%sensor|distance" //% block="%sensor|distance"
//% blockId=sonarGetDistance //% blockId=sonarGetDistance
//% parts="ultrasonic" //% parts="ultrasonic"
//% blockNamespace=input //% blockNamespace=sensors
//% weight=65 blockGap=8 //% weight=65 blockGap=8
//% group="Ultrasonic Sensor" //% group="Ultrasonic Sensor"
distance() { distance() {

View File

@ -1,11 +1,16 @@
//% color="#D42878" //% color="#00A5C8" weight=100
namespace input { //% groups='["Light", "Buttons", "Screen"]'
namespace brick {
} }
//% color="#8AC044" weight=90 icon="\uf185"
//% groups='["Motors", "Brick"]' //% color="#8AC044" weight=95 icon="\uf185"
namespace output { namespace motors {
}
//% color="#D42878" weight=90
namespace sensors {
} }
//% color="#DF5014" weight=80 //% color="#DF5014" weight=80

View File

@ -39,8 +39,8 @@
"semantic-ui-less": "^2.2.4" "semantic-ui-less": "^2.2.4"
}, },
"dependencies": { "dependencies": {
"pxt-common-packages": "0.11.7", "pxt-common-packages": "0.12.4",
"pxt-core": "2.3.4" "pxt-core": "2.3.5"
}, },
"scripts": { "scripts": {
"test": "node node_modules/pxt-core/built/pxt.js travis" "test": "node node_modules/pxt-core/built/pxt.js travis"