From 2b647b2940745c97f1eab11b5b25096ab497f439 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 28 Mar 2016 00:09:44 -0700 Subject: [PATCH] raise event/ on event blocks --- libs/microbit/control.ts | 208 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 207 insertions(+), 1 deletion(-) diff --git a/libs/microbit/control.ts b/libs/microbit/control.ts index 3fe08d5c..24c9abcf 100644 --- a/libs/microbit/control.ts +++ b/libs/microbit/control.ts @@ -1,3 +1,184 @@ +enum EventCreationMode { + /** + * MicroBitEvent is initialised, and no further processing takes place. + */ + //% enumVal=CREATE_ONLY + CreateOnly, + /** + * MicroBitEvent is initialised, and queued on the MicroBitMessageBus. + */ + //% enumVal=CREATE_AND_QUEUE + CreateAndQueue, + /** + * MicroBitEvent is initialised, and its event handlers are immediately fired (not suitable for use in interrupts!). + */ + //% enumVal=CREATE_AND_FIRE + CreateAndFire +} + +enum RuntimeContants { + //% enumVal=MICROBIT_ID_BUTTON_A + MICROBIT_ID_BUTTON_A, + //% enumVal=MICROBIT_ID_BUTTON_B + MICROBIT_ID_BUTTON_B, + //% enumVal=MICROBIT_ID_BUTTON_AB + MICROBIT_ID_BUTTON_AB, + //% enumVal=MICROBIT_BUTTON_EVT_CLICK + MICROBIT_BUTTON_EVT_CLICK, + //% enumVal=MICROBIT_ID_IO_P0 + MICROBIT_ID_IO_P0, + //% enumVal=MICROBIT_ID_IO_P1 + MICROBIT_ID_IO_P1, + //% enumVal=MICROBIT_ID_IO_P2 + MICROBIT_ID_IO_P2, + //% enumVal=MICROBIT_ID_IO_P3 + MICROBIT_ID_IO_P3, + //% enumVal=MICROBIT_ID_IO_P4 + MICROBIT_ID_IO_P4, + //% enumVal=MICROBIT_ID_IO_P5 + MICROBIT_ID_IO_P5, + //% enumVal=MICROBIT_ID_IO_P6 + MICROBIT_ID_IO_P6, + //% enumVal=MICROBIT_ID_IO_P7 + MICROBIT_ID_IO_P7, + //% enumVal=MICROBIT_ID_IO_P8 + MICROBIT_ID_IO_P8, + //% enumVal=MICROBIT_ID_IO_P9 + MICROBIT_ID_IO_P9, + //% enumVal=MICROBIT_ID_IO_P10 + MICROBIT_ID_IO_P10, + //% enumVal=MICROBIT_ID_IO_P11 + MICROBIT_ID_IO_P11, + //% enumVal=MICROBIT_ID_IO_P12 + MICROBIT_ID_IO_P12, + //% enumVal=MICROBIT_ID_IO_P13 + MICROBIT_ID_IO_P13, + //% enumVal=MICROBIT_ID_IO_P14 + MICROBIT_ID_IO_P14, + //% enumVal=MICROBIT_ID_IO_P15 + MICROBIT_ID_IO_P15, + //% enumVal=MICROBIT_ID_IO_P16 + MICROBIT_ID_IO_P16, + //% enumVal=MICROBIT_ID_IO_P19 + MICROBIT_ID_IO_P19, + //% enumVal=MICROBIT_ID_IO_P20 + MICROBIT_ID_IO_P20, + //% enumVal=MES_BROADCAST_GENERAL_ID + MES_BROADCAST_GENERAL_ID, + //% enumVal=MICROBIT_ID_RADIO + MICROBIT_ID_RADIO, + //% enumVal=MICROBIT_RADIO_EVT_DATAGRAM + MICROBIT_RADIO_EVT_DATAGRAM, + //% enumVal=MICROBIT_ID_GESTURE + MICROBIT_ID_GESTURE, + //% enumVal=MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE + MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE, + //% enumVal=MICROBIT_ID_ACCELEROMETER + MICROBIT_ID_ACCELEROMETER, + //% enumVal=MES_ALERT_EVT_ALARM1 + MES_ALERT_EVT_ALARM1, + //% enumVal=MES_ALERT_EVT_ALARM2 + MES_ALERT_EVT_ALARM2, + //% enumVal=MES_ALERT_EVT_ALARM3 + MES_ALERT_EVT_ALARM3, + //% enumVal=MES_ALERT_EVT_ALARM4 + MES_ALERT_EVT_ALARM4, + //% enumVal=MES_ALERT_EVT_ALARM5 + MES_ALERT_EVT_ALARM5, + //% enumVal=MES_ALERT_EVT_ALARM6 + MES_ALERT_EVT_ALARM6, + //% enumVal=MES_ALERT_EVT_DISPLAY_TOAST + MES_ALERT_EVT_DISPLAY_TOAST, + //% enumVal=MES_ALERT_EVT_FIND_MY_PHONE + MES_ALERT_EVT_FIND_MY_PHONE, + //% enumVal=MES_ALERT_EVT_PLAY_RINGTONE + MES_ALERT_EVT_PLAY_RINGTONE, + //% enumVal=MES_ALERT_EVT_PLAY_SOUND + MES_ALERT_EVT_PLAY_SOUND, + //% enumVal=MES_ALERT_EVT_VIBRATE + MES_ALERT_EVT_VIBRATE, + //% enumVal=MES_CAMERA_EVT_LAUNCH_PHOTO_MODE + MES_CAMERA_EVT_LAUNCH_PHOTO_MODE, + //% enumVal=MES_CAMERA_EVT_LAUNCH_VIDEO_MODE + MES_CAMERA_EVT_LAUNCH_VIDEO_MODE, + //% enumVal=MES_CAMERA_EVT_START_VIDEO_CAPTURE + MES_CAMERA_EVT_START_VIDEO_CAPTURE, + //% enumVal=MES_CAMERA_EVT_STOP_PHOTO_MODE + MES_CAMERA_EVT_STOP_PHOTO_MODE, + //% enumVal=MES_CAMERA_EVT_STOP_VIDEO_CAPTURE + MES_CAMERA_EVT_STOP_VIDEO_CAPTURE, + //% enumVal=MES_CAMERA_EVT_STOP_VIDEO_MODE + MES_CAMERA_EVT_STOP_VIDEO_MODE, + //% enumVal=MES_CAMERA_EVT_TAKE_PHOTO + MES_CAMERA_EVT_TAKE_PHOTO, + //% enumVal=MES_CAMERA_EVT_TOGGLE_FRONT_REAR + MES_CAMERA_EVT_TOGGLE_FRONT_REAR, + //% enumVal=MES_DEVICE_DISPLAY_OFF + MES_DEVICE_DISPLAY_OFF, + //% enumVal=MES_DEVICE_DISPLAY_ON + MES_DEVICE_DISPLAY_ON, + //% enumVal=MES_DEVICE_GESTURE_DEVICE_SHAKEN + MES_DEVICE_GESTURE_DEVICE_SHAKEN, + //% enumVal=MES_DEVICE_INCOMING_CALL + MES_DEVICE_INCOMING_CALL, + //% enumVal=MES_DEVICE_INCOMING_MESSAGE + MES_DEVICE_INCOMING_MESSAGE, + //% enumVal=MES_DEVICE_ORIENTATION_LANDSCAPE + MES_DEVICE_ORIENTATION_LANDSCAPE, + //% enumVal=MES_DEVICE_ORIENTATION_PORTRAIT + MES_DEVICE_ORIENTATION_PORTRAIT, + //% enumVal=MES_DPAD_BUTTON_1_DOWN + MES_DPAD_BUTTON_1_DOWN, + //% enumVal=MES_DPAD_BUTTON_1_UP + MES_DPAD_BUTTON_1_UP, + //% enumVal=MES_DPAD_BUTTON_2_DOWN + MES_DPAD_BUTTON_2_DOWN, + //% enumVal=MES_DPAD_BUTTON_2_UP + MES_DPAD_BUTTON_2_UP, + //% enumVal=MES_DPAD_BUTTON_3_DOWN + MES_DPAD_BUTTON_3_DOWN, + //% enumVal=MES_DPAD_BUTTON_3_UP + MES_DPAD_BUTTON_3_UP, + //% enumVal=MES_DPAD_BUTTON_4_DOWN + MES_DPAD_BUTTON_4_DOWN, + //% enumVal=MES_DPAD_BUTTON_4_UP + MES_DPAD_BUTTON_4_UP, + //% enumVal=MES_DPAD_BUTTON_A_DOWN + MES_DPAD_BUTTON_A_DOWN, + //% enumVal=MES_DPAD_BUTTON_A_UP + MES_DPAD_BUTTON_A_UP, + //% enumVal=MES_DPAD_BUTTON_B_DOWN + MES_DPAD_BUTTON_B_DOWN, + //% enumVal=MES_DPAD_BUTTON_B_UP + MES_DPAD_BUTTON_B_UP, + //% enumVal=MES_DPAD_BUTTON_C_DOWN + MES_DPAD_BUTTON_C_DOWN, + //% enumVal=MES_DPAD_BUTTON_C_UP + MES_DPAD_BUTTON_C_UP, + //% enumVal=MES_DPAD_BUTTON_D_DOWN + MES_DPAD_BUTTON_D_DOWN, + //% enumVal=MES_DPAD_BUTTON_D_UP + MES_DPAD_BUTTON_D_UP, + //% enumVal=MES_REMOTE_CONTROL_EVT_FORWARD + MES_REMOTE_CONTROL_EVT_FORWARD, + //% enumVal=MES_REMOTE_CONTROL_EVT_NEXTTRACK + MES_REMOTE_CONTROL_EVT_NEXTTRACK, + //% enumVal=MES_REMOTE_CONTROL_EVT_PAUSE + MES_REMOTE_CONTROL_EVT_PAUSE, + //% enumVal=MES_REMOTE_CONTROL_EVT_PLAY + MES_REMOTE_CONTROL_EVT_PLAY, + //% enumVal=MES_REMOTE_CONTROL_EVT_PREVTRACK + MES_REMOTE_CONTROL_EVT_PREVTRACK, + //% enumVal=MES_REMOTE_CONTROL_EVT_REWIND + MES_REMOTE_CONTROL_EVT_REWIND, + //% enumVal=MES_REMOTE_CONTROL_EVT_STOP + MES_REMOTE_CONTROL_EVT_STOP, + //% enumVal=MES_REMOTE_CONTROL_EVT_VOLUMEDOWN + MES_REMOTE_CONTROL_EVT_VOLUMEDOWN, + //% enumVal=MES_REMOTE_CONTROL_EVT_VOLUMEUP + MES_REMOTE_CONTROL_EVT_VOLUMEUP, +} + //% weight=1 color="#333333" namespace control { /** @@ -7,10 +188,35 @@ namespace control { //% blockId="control_in_background" block="run in background" export function inBackground(body: Action): void { } + /** + * Raises an event in the event bus. + @param src ID of the MicroBit Component that generated the event e.g. MICROBIT_ID_BUTTON_A. + @param value Component specific code indicating the cause of the event. + @param mode optional definition of how the event should be processed after construction (default is CREATE_AND_QUEUE). + */ + //% shim=micro_bit::busRaiseEvent + //% weight=21 blockGap=8 blockId="control_raise_event" block="raise event|from source %src=control_constant|with value %value=control_constant" blockExternalInputs=1 + export function raiseEvent(src: number, value: number, mode: EventCreationMode = EventCreationMode.CreateAndQueue): void { } + + /** + * Raises an event in the event bus. + */ + //% shim=micro_bit::onBusEvent + //% weight=20 blockGap=8 blockId="control_on_event" block="on event|from %src=control_constant|value %value=control_constant" + export function onEvent(src: number, value: number, handler: Action): void { } + + /** + * Returns the value of a C++ runtime constant + */ + //% weight=19 shimw=TD_ID weight=19 blockId="control_constant" block="%id" + export function constant(id: RuntimeContants) : number { + return 0; + } + /** * Resets the BBC micro:bit. */ //% weight=1 shim=uBit.reset async help=control/reset //% blockId="control_reset" block="reset" - export function reset() : void { } + export function reset(): void { } }