Add LED support

This commit is contained in:
Michal Moskal 2017-07-05 12:27:54 +01:00
parent 9f8377f893
commit 0aeba646bd
3 changed files with 69 additions and 2 deletions

View File

@ -16,17 +16,35 @@ enum class ButtonEvent {
Down = 4,
};
/**
* Patterns for lights under the buttons.
*/
enum class LightsPattern {
Off = LED_BLACK,
Green = LED_GREEN,
Red = LED_RED,
Orange = LED_ORANGE,
GreenFlash = LED_GREEN_FLASH,
RedFlash = LED_RED_FLASH,
OrangeFlash = LED_ORANGE_FLASH,
GreenPulse = LED_GREEN_PULSE,
RedPulse = LED_RED_PULSE,
OrangePulse = LED_ORANGE_PULSE,
};
namespace pxt {
void *buttonPoll(void *);
class Button {
public:
void *ptr;
int id;
bool wasPressed;
bool isPressed;
int timePressed;
Button(int ev3id) {
ptr = 0; // make sure we're not treated as ref-counted object
id = ev3id;
wasPressed = false;
isPressed = false;
@ -121,7 +139,30 @@ Button *getButton(int id) {
}
}
//% noRefCounting fixedInstances
namespace control {
/**
* Determine the version of system software currently running.
*/
//%
String deviceFirmwareVersion() {
return mkString(HardwareVersionString());
}
}
// TODO rename this? move it somewhere?
namespace output {
/**
* Set lights.
*/
//% blockId=setLights block="set lights %pattern"
void setLights(LightsPattern pattern) {
SetLedPattern((uint8_t)pattern);
}
}
//% fixedInstances
namespace ButtonMethods {
/**
* Do something when a button (`A`, `B` or both `A` + `B`) is clicked, double clicked, etc...

18
libs/core/enums.d.ts vendored
View File

@ -16,4 +16,22 @@
Down = 4,
}
/**
* Patterns for lights under the buttons.
*/
declare enum LightsPattern {
Off = 0, // LED_BLACK
Green = 1, // LED_GREEN
Red = 2, // LED_RED
Orange = 3, // LED_ORANGE
GreenFlash = 4, // LED_GREEN_FLASH
RedFlash = 5, // LED_RED_FLASH
OrangeFlash = 6, // LED_ORANGE_FLASH
GreenPulse = 7, // LED_GREEN_PULSE
RedPulse = 8, // LED_RED_PULSE
OrangePulse = 9, // LED_ORANGE_PULSE
}
// Auto-generated. Do not edit. Really.

10
libs/core/shims.d.ts vendored
View File

@ -38,10 +38,18 @@ declare namespace input {
//% block="button exit" weight=95 fixedInstance shim=pxt::getButton(5)
const buttonExit: Button;
}
declare namespace output {
/**
* Set lights.
*/
//% blockId=setLights block="set lights %pattern" shim=output::setLights
function setLights(pattern: LightsPattern): void;
}
//% noRefCounting fixedInstances
//% fixedInstances
declare interface Button {
/**
* Do something when a button (`A`, `B` or both `A` + `B`) is clicked, double clicked, etc...