Fix pattern enum decompilation and setSpeed when no speed is set.

This commit is contained in:
Sam El-Husseini 2017-08-09 10:02:58 -07:00
parent c0e2252157
commit a3f56f4c9a
5 changed files with 45 additions and 4 deletions

View File

@ -3,6 +3,16 @@
"ButtonEvent.Down|block": "down", "ButtonEvent.Down|block": "down",
"ButtonEvent.LongClick|block": "long click", "ButtonEvent.LongClick|block": "long click",
"ButtonEvent.Up|block": "up", "ButtonEvent.Up|block": "up",
"LightsPattern.GreenFlash|block": "Flashing Green",
"LightsPattern.GreenPulse|block": "Pulsing Green",
"LightsPattern.Green|block": "Green",
"LightsPattern.Off|block": "Off",
"LightsPattern.OrangeFlash|block": "Flashing Orange",
"LightsPattern.OrangePulse|block": "Pulsing Orange",
"LightsPattern.Orange|block": "Orange",
"LightsPattern.RedFlash|block": "Flashing Red",
"LightsPattern.RedPulse|block": "Pulsing Red",
"LightsPattern.Red|block": "Red",
"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.buttonDown|block": "button down", "input.buttonDown|block": "button down",

View File

@ -3,15 +3,35 @@
* Patterns for lights under the buttons. * Patterns for lights under the buttons.
*/ */
const enum LightsPattern { const enum LightsPattern {
//% block=Off enumval=0
//% blockIdentity=output.getPattern
Off = 0, Off = 0,
//% block=Green enumval=1
//% blockIdentity=output.getPattern
Green = 1, Green = 1,
//% block=Red enumval=2
//% blockIdentity=output.getPattern
Red = 2, Red = 2,
//% block=Orange enumval=3
//% blockIdentity=output.getPattern
Orange = 3, Orange = 3,
//% block="Flashing Green" enumval=4
//% blockIdentity=output.getPattern
GreenFlash = 4, GreenFlash = 4,
//% block="Flashing Red" enumval=5
//% blockIdentity=output.getPattern
RedFlash = 5, RedFlash = 5,
//% block="Flashing Orange" enumval=6
//% blockIdentity=output.getPattern
OrangeFlash = 6, OrangeFlash = 6,
//% block="Pulsing Green" enumval=7
//% blockIdentity=output.getPattern
GreenPulse = 7, GreenPulse = 7,
//% block="Pulsing Red" enumval=8
//% blockIdentity=output.getPattern
RedPulse = 8, RedPulse = 8,
//% block="Pulsing Orange" enumval=9
//% blockIdentity=output.getPattern
OrangePulse = 9, OrangePulse = 9,
} }
@ -238,7 +258,7 @@ namespace output {
*/ */
//% blockId=led_pattern block="%pattern" //% blockId=led_pattern block="%pattern"
//% shim=TD_ID colorSecondary="#6e9a36" //% shim=TD_ID colorSecondary="#6e9a36"
//% blockHidden=true //% blockHidden=true useEnumVal=1 pattern.fieldOptions.decompileLiterals=1
export function getPattern(pattern: LightsPattern): number { export function getPattern(pattern: LightsPattern): number {
return pattern; return pattern;
} }

View File

@ -15,6 +15,7 @@ enum OutputType {
namespace output { namespace output {
let pwmMM: MMap let pwmMM: MMap
let motorMM: MMap let motorMM: MMap
let currentSpeed: number[] = []
const enum MotorDataOff { const enum MotorDataOff {
TachoCounts = 0, // int32 TachoCounts = 0, // int32
@ -32,6 +33,12 @@ namespace output {
stop(Output.ALL) stop(Output.ALL)
currentSpeed[Output.A] = -1;
currentSpeed[Output.B] = -1;
currentSpeed[Output.C] = -1;
currentSpeed[Output.D] = -1;
currentSpeed[Output.ALL] = -1;
let buf = output.createBuffer(1) let buf = output.createBuffer(1)
buf[0] = DAL.opProgramStart buf[0] = DAL.opProgramStart
writePWM(buf) writePWM(buf)
@ -65,10 +72,11 @@ namespace output {
export function turn(out: Output, ms: number, useBrake = false) { export function turn(out: Output, ms: number, useBrake = false) {
// TODO: use current power / speed configuration // TODO: use current power / speed configuration
output.step(out, { output.step(out, {
power: 100, speed: 100,
step1: 0, step1: 0,
step2: ms, step2: ms,
step3: 0, step3: 0,
useSteps: false,
useBrake: useBrake useBrake: useBrake
}) })
} }
@ -92,6 +100,7 @@ namespace output {
//% blockId=output_start block="turn motor %out|on" //% blockId=output_start block="turn motor %out|on"
//% weight=95 group="Motors" //% weight=95 group="Motors"
export function start(out: Output) { export function start(out: Output) {
if (currentSpeed[out] == -1) setSpeed(out, 50)
let b = mkCmd(out, DAL.opOutputStart, 0) let b = mkCmd(out, DAL.opOutputStart, 0)
writePWM(b) writePWM(b)
} }
@ -154,6 +163,7 @@ namespace output {
//% weight=81 group="Motors" //% weight=81 group="Motors"
//% speed.min=-100 speed.max=100 //% speed.min=-100 speed.max=100
export function setSpeed(out: Output, speed: number) { export function setSpeed(out: Output, speed: number) {
currentSpeed[out] = speed;
let b = mkCmd(out, DAL.opOutputSpeed, 1) let b = mkCmd(out, DAL.opOutputSpeed, 1)
b.setNumber(NumberFormat.Int8LE, 2, Math.clamp(-100, 100, speed)) b.setNumber(NumberFormat.Int8LE, 2, Math.clamp(-100, 100, speed))
writePWM(b) writePWM(b)

View File

@ -94,6 +94,7 @@ namespace screen {
*/ */
//% blockId=screen_drawText block="print %text| at x: %x| y: %y" //% blockId=screen_drawText block="print %text| at x: %x| y: %y"
//% weight=99 group="Screen" blockNamespace=output inlineInputMode="inline" //% weight=99 group="Screen" blockNamespace=output inlineInputMode="inline"
//% x.min=0 x.max=178 y.min=0 y.max=128
export function drawText(text: string, x: number, y: number, mode = Draw.Normal) { export function drawText(text: string, x: number, y: number, mode = Draw.Normal) {
x |= 0 x |= 0
y |= 0 y |= 0

View File

@ -1,11 +1,11 @@
//% color="#D42878" //% color="#D42878"
//% groups="['Brick buttons']" //% groups='["Brick buttons"]'
namespace input { namespace input {
} }
//% color="#8AC044" weight=90 icon="\uf185" //% color="#8AC044" weight=90 icon="\uf185"
//% groups="['Lights', 'Screen', Motors']" //% groups='["Lights", "Screen", "Motors"]'
namespace output { namespace output {
} }