Compare commits

...

21 Commits

Author SHA1 Message Date
8ab0dc450a 0.2.73 2016-04-14 21:42:18 -07:00
4afc887ee5 Bump pxt-core to 0.2.78 2016-04-14 21:42:17 -07:00
db4692843f fixing text scroll on simulator 2016-04-14 21:42:02 -07:00
ad98c1aaa6 0.2.72 2016-04-14 21:15:11 -07:00
6ff9652450 Bump pxt-core to 0.2.77 2016-04-14 21:15:09 -07:00
6182a80f41 0.2.71 2016-04-14 18:26:14 -07:00
06e59c8d02 Bump pxt-core to 0.2.75 2016-04-14 18:25:56 -07:00
b9f17c3143 Re-generate for new DAL 2016-04-14 17:58:10 -07:00
10e3fdf007 upated to 0.1.7. fixing rename issues 2016-04-14 14:29:28 -07:00
9a50050f7c 0.2.70 2016-04-14 10:18:05 -07:00
63ac41c4b4 Bump pxt-core to 0.2.74 2016-04-14 10:18:03 -07:00
602ebacb0b 0.2.69 2016-04-14 09:56:32 -07:00
4e55c0439e Bump pxt-core to 0.2.73 2016-04-14 09:56:30 -07:00
965deb5711 0.2.68 2016-04-14 08:57:32 -07:00
c24aba739b Bump pxt-core to 0.2.71 2016-04-14 08:57:30 -07:00
c55263889b 0.2.67 2016-04-14 07:39:40 -07:00
fc7325b0f6 handle null dereference in imagemethods + nicer panic 2016-04-14 07:39:24 -07:00
e46e02ad5e 0.2.66 2016-04-13 16:44:34 -07:00
7d12ee0cb4 Bump pxt-core to 0.2.70 2016-04-13 16:44:33 -07:00
6b339fdc15 Merge branch 'master' of github.com:Microsoft/kindscript-microbit 2016-04-13 16:44:31 -07:00
8bb3f74f09 Add configuration for running td2ts converter test 2016-04-13 14:34:45 -07:00
11 changed files with 944 additions and 209 deletions

View File

@ -5,6 +5,7 @@ script:
- "node node_modules/pxt-core/built/pxt.js travis"
- "(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js run)"
- "node node_modules/pxt-core/built/pxt.js uploaddoc"
- "(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv ../../testconv.json)"
sudo: false
notifications:
email:

View File

@ -8,10 +8,6 @@ enum class EventCreationMode {
* MicroBitEvent is initialised, and no further processing takes place.
*/
CreateOnly = CREATE_ONLY,
/**
* MicroBitEvent is initialised, and queued on the MicroBitMessageBus.
*/
CreateAndQueue = CREATE_AND_QUEUE,
/**
* MicroBitEvent is initialised, and its event handlers are immediately fired (not suitable for use in interrupts!).
*/
@ -143,10 +139,10 @@ namespace control {
* 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).
* @param mode optional definition of how the event should be processed after construction (default is CREATE_AND_FIRE).
*/
//% weight=21 blockGap=12 blockId="control_raise_event" block="raise event|from source %src=control_event_source|with value %value=control_event_value" blockExternalInputs=1
//% mode.defl=CREATE_AND_QUEUE
//% mode.defl=CREATE_AND_FIRE
void raiseEvent(int src, int value, EventCreationMode mode) {
MicroBitEvent evt(src, value, (MicroBitEventLaunchMode)mode);
}

336
libs/microbit/dal.d.ts vendored
View File

@ -1,26 +1,9 @@
// Auto-generated. Do not edit.
declare const enum DAL {
// DynamicPwm.h
NO_PWMS = 3,
MICROBIT_DEFAULT_PWM_PERIOD = 20000,
PWM_PERSISTENCE_TRANSIENT = 1,
PWM_PERSISTENCE_PERSISTENT = 2,
// ErrorNo.h
MICROBIT_OK = 0,
MICROBIT_INVALID_PARAMETER = -1001,
MICROBIT_NOT_SUPPORTED = -1002,
MICROBIT_CALIBRATION_IN_PROGRESS = -1003,
MICROBIT_CALIBRATION_REQUIRED = -1004,
MICROBIT_NO_RESOURCES = -1005,
MICROBIT_BUSY = -1006,
MICROBIT_CANCELLED = -1007,
MICROBIT_I2C_ERROR = -1010,
MICROBIT_OOM = 20,
MICROBIT_HEAP_ERROR = 30,
MICROBIT_NULL_DEREFERENCE = 40,
// ExternalEvents.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/ExternalEvents.h
MICROBIT_ID_BLE = 1000,
// MESEvents.h
MICROBIT_ID_BLE_UART = 1001,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MESEvents.h
MES_REMOTE_CONTROL_ID = 1001,
MES_REMOTE_CONTROL_EVT_PLAY = 1,
MES_REMOTE_CONTROL_EVT_PAUSE = 2,
@ -85,20 +68,130 @@ declare const enum DAL {
MES_DPAD_BUTTON_4_DOWN = 15,
MES_DPAD_BUTTON_4_UP = 16,
MES_BROADCAST_GENERAL_ID = 2000,
// ManagedString.h
// ManagedType.h
// Matrix4.h
// MemberFunctionCallback.h
// MicroBit.h
MICROBIT_FLAG_SCHEDULER_RUNNING = 0x00000001,
MICROBIT_FLAG_ACCELEROMETER_RUNNING = 0x00000002,
MICROBIT_FLAG_DISPLAY_RUNNING = 0x00000004,
MICROBIT_FLAG_COMPASS_RUNNING = 0x00000008,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitAccelerometerService.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitBLEManager.h
MICROBIT_BLE_PAIR_REQUEST = 0x01,
MICROBIT_BLE_PAIR_COMPLETE = 0x02,
MICROBIT_BLE_PAIR_PASSCODE = 0x04,
MICROBIT_BLE_PAIR_SUCCESSFUL = 0x08,
MICROBIT_BLE_PAIRING_TIMEOUT = 90,
MICROBIT_BLE_POWER_LEVELS = 8,
MICROBIT_BLE_MAXIMUM_BONDS = 4,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitButtonService.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitDFUService.h
MICROBIT_DFU_OPCODE_START_DFU = 1,
MICROBIT_DFU_HISTOGRAM_WIDTH = 5,
MICROBIT_DFU_HISTOGRAM_HEIGHT = 5,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitEventService.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitIOPinService.h
MICROBIT_IO_PIN_SERVICE_PINCOUNT = 20,
MICROBIT_IO_PIN_SERVICE_DATA_SIZE = 10,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitLEDService.h
MICROBIT_BLE_MAXIMUM_SCROLLTEXT = 20,
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitMagnetometerService.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitTemperatureService.h
// built/yt/yotta_modules/microbit-dal/inc//bluetooth/MicroBitUARTService.h
MICROBIT_UART_S_DEFAULT_BUF_SIZE = 20,
MICROBIT_UART_S_EVT_DELIM_MATCH = 1,
MICROBIT_UART_S_EVT_HEAD_MATCH = 2,
MICROBIT_UART_S_EVT_RX_FULL = 3,
// built/yt/yotta_modules/microbit-dal/inc//core/ErrorNo.h
MICROBIT_OK = 0,
MICROBIT_INVALID_PARAMETER = -1001,
MICROBIT_NOT_SUPPORTED = -1002,
MICROBIT_CALIBRATION_IN_PROGRESS = -1003,
MICROBIT_CALIBRATION_REQUIRED = -1004,
MICROBIT_NO_RESOURCES = -1005,
MICROBIT_BUSY = -1006,
MICROBIT_CANCELLED = -1007,
MICROBIT_I2C_ERROR = -1010,
MICROBIT_SERIAL_IN_USE = -1011,
MICROBIT_NO_DATA = -1012,
MICROBIT_OOM = 20,
MICROBIT_HEAP_ERROR = 30,
MICROBIT_NULL_DEREFERENCE = 40,
// built/yt/yotta_modules/microbit-dal/inc//core/EventModel.h
// built/yt/yotta_modules/microbit-dal/inc//core/MemberFunctionCallback.h
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitCompat.h
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitComponent.h
MICROBIT_ID_BUTTON_A = 1,
MICROBIT_ID_BUTTON_B = 2,
MICROBIT_ID_BUTTON_RESET = 3,
MICROBIT_ID_ACCELEROMETER = 4,
MICROBIT_ID_COMPASS = 5,
MICROBIT_ID_DISPLAY = 6,
MICROBIT_IO_PINS = 20,
MICROBIT_ID_IO_P0 = 7,
MICROBIT_ID_IO_P1 = 8,
MICROBIT_ID_IO_P2 = 9,
MICROBIT_ID_IO_P3 = 10,
MICROBIT_ID_IO_P4 = 11,
MICROBIT_ID_IO_P5 = 12,
MICROBIT_ID_IO_P6 = 13,
MICROBIT_ID_IO_P7 = 14,
MICROBIT_ID_IO_P8 = 15,
MICROBIT_ID_IO_P9 = 16,
MICROBIT_ID_IO_P10 = 17,
MICROBIT_ID_IO_P11 = 18,
MICROBIT_ID_IO_P12 = 19,
MICROBIT_ID_IO_P13 = 20,
MICROBIT_ID_IO_P14 = 21,
MICROBIT_ID_IO_P15 = 22,
MICROBIT_ID_IO_P16 = 23,
MICROBIT_ID_IO_P19 = 24,
MICROBIT_ID_IO_P20 = 25,
MICROBIT_ID_BUTTON_AB = 26,
MICROBIT_ID_GESTURE = 27,
MICROBIT_ID_THERMOMETER = 28,
MICROBIT_ID_RADIO = 29,
MICROBIT_ID_RADIO_DATA_READY = 30,
MICROBIT_ID_MULTIBUTTON_ATTACH = 31,
MICROBIT_ID_SERIAL = 32,
MICROBIT_ID_MESSAGE_BUS_LISTENER = 1021,
MICROBIT_ID_NOTIFY_ONE = 1022,
MICROBIT_ID_NOTIFY = 1023,
MICROBIT_COMPONENT_RUNNING = 0x01,
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitDevice.h
MICROBIT_NAME_LENGTH = 5,
MICROBIT_NAME_CODE_LETTERS = 5,
NRF51822_RNG_ADDRESS = 0x4000D000,
// MicroBitAccelerometer.h
MICROBIT_ACCEL_PITCH_ROLL_VALID = 0x01,
MICROBIT_PANIC_ERROR_CHARS = 4,
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitFiber.h
MICROBIT_SCHEDULER_RUNNING = 0x01,
MICROBIT_FIBER_FLAG_FOB = 0x01,
MICROBIT_FIBER_FLAG_PARENT = 0x02,
MICROBIT_FIBER_FLAG_CHILD = 0x04,
MICROBIT_FIBER_FLAG_DO_NOT_PAGE = 0x08,
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitFont.h
MICROBIT_FONT_WIDTH = 5,
MICROBIT_FONT_HEIGHT = 5,
MICROBIT_FONT_ASCII_START = 32,
MICROBIT_FONT_ASCII_END = 126,
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitHeapAllocator.h
MICROBIT_MAXIMUM_HEAPS = 2,
MICROBIT_HEAP_BLOCK_FREE = 0x80000000,
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitListener.h
MESSAGE_BUS_LISTENER_PARAMETERISED = 0x0001,
MESSAGE_BUS_LISTENER_METHOD = 0x0002,
MESSAGE_BUS_LISTENER_BUSY = 0x0004,
MESSAGE_BUS_LISTENER_REENTRANT = 0x0008,
MESSAGE_BUS_LISTENER_QUEUE_IF_BUSY = 0x0010,
MESSAGE_BUS_LISTENER_DROP_IF_BUSY = 0x0020,
MESSAGE_BUS_LISTENER_NONBLOCKING = 0x0040,
MESSAGE_BUS_LISTENER_URGENT = 0x0080,
MESSAGE_BUS_LISTENER_DELETING = 0x8000,
// built/yt/yotta_modules/microbit-dal/inc//core/MicroBitSystemTimer.h
// built/yt/yotta_modules/microbit-dal/inc//core/NotifyEvents.h
MICROBIT_DISPLAY_EVT_FREE = 1,
MICROBIT_SERIAL_EVT_TX_EMPTY = 2,
MICROBIT_UART_S_EVT_TX_EMPTY = 3,
// built/yt/yotta_modules/microbit-dal/inc//drivers/DynamicPwm.h
NO_PWMS = 3,
MICROBIT_DEFAULT_PWM_PERIOD = 20000,
PWM_PERSISTENCE_TRANSIENT = 1,
PWM_PERSISTENCE_PERSISTENT = 2,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitAccelerometer.h
MICROBIT_ACCEL_PITCH_ROLL_VALID = 0x02,
MICROBIT_ACCEL_ADDED_TO_IDLE = 0x04,
MMA8653_DEFAULT_ADDR = 0x3A,
MMA8653_STATUS = 0x00,
MMA8653_OUT_X_MSB = 0x01,
@ -146,16 +239,7 @@ declare const enum DAL {
GESTURE_6G = 9,
GESTURE_8G = 10,
GESTURE_SHAKE = 11,
// MicroBitAccelerometerService.h
// MicroBitBLEManager.h
MICROBIT_BLE_PAIR_REQUEST = 0x01,
MICROBIT_BLE_PAIR_COMPLETE = 0x02,
MICROBIT_BLE_PAIR_PASSCODE = 0x04,
MICROBIT_BLE_PAIR_SUCCESSFUL = 0x08,
MICROBIT_BLE_PAIRING_TIMEOUT = 90,
MICROBIT_BLE_POWER_LEVELS = 8,
MICROBIT_BLE_MAXIMUM_BONDS = 4,
// MicroBitButton.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitButton.h
MICROBIT_BUTTON_EVT_DOWN = 1,
MICROBIT_BUTTON_EVT_UP = 2,
MICROBIT_BUTTON_EVT_CLICK = 3,
@ -175,8 +259,7 @@ declare const enum DAL {
MICROBIT_BUTTON_DOUBLE_CLICK_THRESH = 50,
MICROBIT_BUTTON_SIMPLE_EVENTS = 0,
MICROBIT_BUTTON_ALL_EVENTS = 1,
// MicroBitButtonService.h
// MicroBitCompass.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitCompass.h
MAG3110_DEFAULT_ADDR = 0x1D,
MAG_DR_STATUS = 0x00,
MAG_OUT_X_MSB = 0x01,
@ -203,66 +286,17 @@ declare const enum DAL {
MICROBIT_COMPASS_EVT_DATA_UPDATE = 4,
MICROBIT_COMPASS_EVT_CONFIG_NEEDED = 5,
MICROBIT_COMPASS_EVT_CALIBRATE = 6,
MICROBIT_COMPASS_STATUS_CALIBRATED = 1,
MICROBIT_COMPASS_STATUS_CALIBRATING = 2,
MICROBIT_COMPASS_STATUS_CALIBRATED = 2,
MICROBIT_COMPASS_STATUS_CALIBRATING = 4,
MICROBIT_COMPASS_STATUS_ADDED_TO_IDLE = 8,
MAG3110_WHOAMI_VAL = 0xC4,
// MicroBitCompat.h
// MicroBitComponent.h
MICROBIT_ID_BUTTON_A = 1,
MICROBIT_ID_BUTTON_B = 2,
MICROBIT_ID_BUTTON_RESET = 3,
MICROBIT_ID_ACCELEROMETER = 4,
MICROBIT_ID_COMPASS = 5,
MICROBIT_ID_DISPLAY = 6,
MICROBIT_IO_PINS = 20,
MICROBIT_ID_IO_P0 = 7,
MICROBIT_ID_IO_P1 = 8,
MICROBIT_ID_IO_P2 = 9,
MICROBIT_ID_IO_P3 = 10,
MICROBIT_ID_IO_P4 = 11,
MICROBIT_ID_IO_P5 = 12,
MICROBIT_ID_IO_P6 = 13,
MICROBIT_ID_IO_P7 = 14,
MICROBIT_ID_IO_P8 = 15,
MICROBIT_ID_IO_P9 = 16,
MICROBIT_ID_IO_P10 = 17,
MICROBIT_ID_IO_P11 = 18,
MICROBIT_ID_IO_P12 = 19,
MICROBIT_ID_IO_P13 = 20,
MICROBIT_ID_IO_P14 = 21,
MICROBIT_ID_IO_P15 = 22,
MICROBIT_ID_IO_P16 = 23,
MICROBIT_ID_IO_P19 = 24,
MICROBIT_ID_IO_P20 = 25,
MICROBIT_ID_BUTTON_AB = 26,
MICROBIT_ID_GESTURE = 27,
MICROBIT_ID_THERMOMETER = 28,
MICROBIT_ID_RADIO = 29,
MICROBIT_ID_RADIO_DATA_READY = 30,
MICROBIT_ID_MULTIBUTTON_ATTACH = 31,
MICROBIT_ID_MESSAGE_BUS_LISTENER = 1021,
MICROBIT_ID_NOTIFY_ONE = 1022,
MICROBIT_ID_NOTIFY = 1023,
// MicroBitCoordinateSystem.h
RAW = 0,
SIMPLE_CARTESIAN = 1,
NORTH_EAST_DOWN = 2,
// MicroBitDFUService.h
MICROBIT_DFU_OPCODE_START_DFU = 1,
MICROBIT_DFU_OPCODE_START_PAIR = 2,
MICROBIT_DFU_HISTOGRAM_WIDTH = 5,
MICROBIT_DFU_HISTOGRAM_HEIGHT = 5,
// MicroBitDisplay.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitCompassCalibrator.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitDisplay.h
MICROBIT_DISPLAY_EVT_ANIMATION_COMPLETE = 1,
MICROBIT_DISPLAY_EVT_FREE = 2,
MICROBIT_DISPLAY_EVT_LIGHT_SENSE = 4,
MICROBIT_DISPLAY_WIDTH = 5,
MICROBIT_DISPLAY_HEIGHT = 5,
MICROBIT_DISPLAY_EVT_LIGHT_SENSE = 2,
MICROBIT_DISPLAY_SPACING = 1,
MICROBIT_DISPLAY_ERROR_CHARS = 4,
MICROBIT_DISPLAY_GREYSCALE_BIT_DEPTH = 8,
MICROBIT_DISPLAY_ANIMATE_DEFAULT_POS = -255,
MICROBIT_DISPLAY_ROW_RESET = 0x20,
ANIMATION_MODE_NONE = 0,
ANIMATION_MODE_STOPPED = 1,
ANIMATION_MODE_SCROLL_TEXT = 2,
@ -277,57 +311,21 @@ declare const enum DAL {
MICROBIT_DISPLAY_ROTATION_90 = 1,
MICROBIT_DISPLAY_ROTATION_180 = 2,
MICROBIT_DISPLAY_ROTATION_270 = 3,
// MicroBitEvent.h
CREATE_ONLY = 0,
CREATE_AND_QUEUE = 1,
CREATE_AND_FIRE = 2,
// MicroBitEventService.h
// MicroBitFiber.h
MICROBIT_FLAG_DATA_READY = 0x01,
MICROBIT_FIBER_FLAG_FOB = 0x01,
MICROBIT_FIBER_FLAG_PARENT = 0x02,
MICROBIT_FIBER_FLAG_CHILD = 0x04,
MICROBIT_FIBER_FLAG_DO_NOT_PAGE = 0x08,
// MicroBitFont.h
MICROBIT_FONT_WIDTH = 5,
MICROBIT_FONT_HEIGHT = 5,
MICROBIT_FONT_ASCII_START = 32,
MICROBIT_FONT_ASCII_END = 126,
// MicroBitHeapAllocator.h
MICROBIT_HEAP_COUNT = 2,
MICROBIT_HEAP_BLOCK_FREE = 0x80000000,
// MicroBitI2C.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitI2C.h
MICROBIT_I2C_MAX_RETRIES = 9,
// MicroBitIO.h
// MicroBitIOPinService.h
MICROBIT_IO_PIN_SERVICE_PINCOUNT = 20,
MICROBIT_IO_PIN_SERVICE_DATA_SIZE = 10,
// MicroBitImage.h
// MicroBitLEDService.h
// MicroBitLightSensor.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitIO.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitLightSensor.h
MICROBIT_LIGHT_SENSOR_CHAN_NUM = 3,
MICROBIT_LIGHT_SENSOR_AN_SET_TIME = 4000,
MICROBIT_LIGHT_SENSOR_TICK_PERIOD = 5,
MICROBIT_LIGHT_SENSOR_MAX_VALUE = 338,
MICROBIT_LIGHT_SENSOR_MIN_VALUE = 75,
// MicroBitListener.h
MESSAGE_BUS_LISTENER_PARAMETERISED = 0x0001,
MESSAGE_BUS_LISTENER_METHOD = 0x0002,
MESSAGE_BUS_LISTENER_BUSY = 0x0004,
MESSAGE_BUS_LISTENER_REENTRANT = 0x0008,
MESSAGE_BUS_LISTENER_QUEUE_IF_BUSY = 0x0010,
MESSAGE_BUS_LISTENER_DROP_IF_BUSY = 0x0020,
MESSAGE_BUS_LISTENER_NONBLOCKING = 0x0040,
MESSAGE_BUS_LISTENER_URGENT = 0x0080,
MESSAGE_BUS_LISTENER_DELETING = 0x8000,
// MicroBitMagnetometerService.h
// MicroBitMatrixMaps.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitMatrixMaps.h
NO_CONN = 0,
// MicroBitMessageBus.h
MICROBIT_CONTROL_BUS_ID = 0,
MICROBIT_ID_ANY = 0,
MICROBIT_EVT_ANY = 0,
// MicroBitMultiButton.h
MICROBIT_DISPLAY_WIDTH = 5,
MICROBIT_DISPLAY_HEIGHT = 5,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitMessageBus.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitMultiButton.h
MICROBIT_MULTI_BUTTON_STATE_1 = 0x01,
MICROBIT_MULTI_BUTTON_STATE_2 = 0x02,
MICROBIT_MULTI_BUTTON_HOLD_TRIGGERED_1 = 0x04,
@ -335,8 +333,7 @@ declare const enum DAL {
MICROBIT_MULTI_BUTTON_SUPRESSED_1 = 0X10,
MICROBIT_MULTI_BUTTON_SUPRESSED_2 = 0x20,
MICROBIT_MULTI_BUTTON_ATTACHED = 0x40,
// MicroBitPanic.h
// MicroBitPin.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitPin.h
IO_STATUS_DIGITAL_IN = 0x01,
IO_STATUS_DIGITAL_OUT = 0x02,
IO_STATUS_ANALOG_IN = 0x04,
@ -350,7 +347,7 @@ declare const enum DAL {
PIN_CAPABILITY_DIGITAL = 0x01,
PIN_CAPABILITY_ANALOG = 0x02,
PIN_CAPABILITY_TOUCH = 0x04,
// MicroBitRadio.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitRadio.h
MICROBIT_RADIO_STATUS_INITIALISED = 0x0001,
MICROBIT_RADIO_BASE_ADDRESS = 0x75626974,
MICROBIT_RADIO_DEFAULT_GROUP = 0,
@ -362,17 +359,44 @@ declare const enum DAL {
MICROBIT_RADIO_PROTOCOL_DATAGRAM = 1,
MICROBIT_RADIO_PROTOCOL_EVENTBUS = 2,
MICROBIT_RADIO_EVT_DATAGRAM = 1,
// MicroBitRadioDatagram.h
// MicroBitRadioEvent.h
// MicroBitSerial.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitRadioDatagram.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitRadioEvent.h
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitSerial.h
MICROBIT_SERIAL_DEFAULT_BAUD_RATE = 115200,
MICROBIT_SERIAL_BUFFER_SIZE = 20,
// MicroBitStorage.h
MICROBIT_STORAGE_CONFIG_MAGIC = 0xCAFECAFE,
// MicroBitTemperatureService.h
// MicroBitThermometer.h
MICROBIT_SERIAL_DEFAULT_BUFFER_SIZE = 20,
MICROBIT_SERIAL_EVT_DELIM_MATCH = 1,
MICROBIT_SERIAL_EVT_HEAD_MATCH = 2,
MICROBIT_SERIAL_EVT_RX_FULL = 3,
MICROBIT_SERIAL_RX_IN_USE = 1,
MICROBIT_SERIAL_TX_IN_USE = 2,
MICROBIT_SERIAL_RX_BUFF_INIT = 4,
MICROBIT_SERIAL_TX_BUFF_INIT = 8,
ASYNC = 0,
SYNC_SPINWAIT = 1,
SYNC_SLEEP = 2,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitStorage.h
MICROBIT_STORAGE_MAGIC = 0xCAFE,
MICROBIT_STORAGE_BLOCK_SIZE = 48,
MICROBIT_STORAGE_KEY_SIZE = 16,
MICROBIT_STORAGE_STORE_PAGE_OFFSET = 17,
MICROBIT_STORAGE_SCRATCH_PAGE_OFFSET = 19,
// built/yt/yotta_modules/microbit-dal/inc//drivers/MicroBitThermometer.h
MICROBIT_THERMOMETER_PERIOD = 1000,
MICROBIT_THERMOMETER_EVT_UPDATE = 1,
// PacketBuffer.h
// RefCounted.h
MICROBIT_THERMOMETER_ADDED_TO_IDLE = 2,
// built/yt/yotta_modules/microbit-dal/inc//types/ManagedString.h
// built/yt/yotta_modules/microbit-dal/inc//types/ManagedType.h
// built/yt/yotta_modules/microbit-dal/inc//types/Matrix4.h
// built/yt/yotta_modules/microbit-dal/inc//types/MicroBitCoordinateSystem.h
RAW = 0,
SIMPLE_CARTESIAN = 1,
NORTH_EAST_DOWN = 2,
// built/yt/yotta_modules/microbit-dal/inc//types/MicroBitEvent.h
MICROBIT_ID_ANY = 0,
MICROBIT_EVT_ANY = 0,
CREATE_ONLY = 0,
CREATE_AND_FIRE = 1,
// built/yt/yotta_modules/microbit-dal/inc//types/MicroBitImage.h
// built/yt/yotta_modules/microbit-dal/inc//types/PacketBuffer.h
// built/yt/yotta_modules/microbit-dal/inc//types/RefCounted.h
}

View File

@ -119,14 +119,10 @@ declare namespace input {
* MicroBitEvent is initialised, and no further processing takes place.
*/
CreateOnly = 0, // CREATE_ONLY
/**
* MicroBitEvent is initialised, and queued on the MicroBitMessageBus.
*/
CreateAndQueue = 1, // CREATE_AND_QUEUE
/**
* MicroBitEvent is initialised, and its event handlers are immediately fired (not suitable for use in interrupts!).
*/
CreateAndFire = 2, // CREATE_AND_FIRE
CreateAndFire = 1, // CREATE_AND_FIRE
}

View File

@ -105,9 +105,7 @@ namespace input {
* @param body TODO
*/
//% help=input/on-button-pressed weight=85
//% blockId=device_button_event
//% block="on button|%NAME|pressed"
//% icon="\uf192"
//% blockId=device_button_event block="on button|%NAME|pressed" icon="\uf192"
void onButtonPressed(Button button, Action body) {
registerWithDal((int)button, MICROBIT_BUTTON_EVT_CLICK, body);
}

View File

@ -9,7 +9,7 @@ namespace serial {
*/
//%
StringData* readString() {
return uBit.serial.readString().leakData();
return uBit.serial.readUntil(ManagedString("\r\n")).leakData();
}
/**
@ -17,6 +17,6 @@ namespace serial {
*/
//%
void writeString(StringData *text) {
uBit.serial.sendString(ManagedString(text));
uBit.serial.send(ManagedString(text));
}
}

View File

@ -201,9 +201,7 @@ declare namespace input {
* @param body TODO
*/
//% help=input/on-button-pressed weight=85
//% blockId=device_button_event
//% block="on button|%NAME|pressed"
//% icon="\uf192" shim=input::onButtonPressed
//% blockId=device_button_event block="on button|%NAME|pressed" icon="\uf192" shim=input::onButtonPressed
function onButtonPressed(button: Button, body: () => void): void;
/**
@ -332,7 +330,7 @@ declare namespace control {
* 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).
* @param mode optional definition of how the event should be processed after construction (default is CREATE_AND_FIRE).
*/
//% weight=21 blockGap=12 blockId="control_raise_event" block="raise event|from source %src=control_event_source|with value %value=control_event_value" blockExternalInputs=1
//% mode.defl=1 shim=control::raiseEvent

View File

@ -1,6 +1,6 @@
{
"name": "pxt-microbit",
"version": "0.2.65",
"version": "0.2.73",
"description": "BBC micro:bit target for PXT",
"keywords": [
"JavaScript",
@ -29,6 +29,6 @@
"typescript": "^1.8.7"
},
"dependencies": {
"pxt-core": "0.2.69"
"pxt-core": "0.2.78"
}
}

View File

@ -60,7 +60,7 @@
"autoRun": true
},
"compileService": {
"gittag": "v0.1.6",
"gittag": "v0.1.7",
"serviceId": "ws"
},
"serial": {

View File

@ -77,9 +77,45 @@ namespace pxsim {
})
}
}
/**
* Error codes used in the micro:bit runtime.
*/
export enum PanicCode {
// PANIC Codes. These are not return codes, but are terminal conditions.
// These induce a panic operation, where all code stops executing, and a panic state is
// entered where the panic code is diplayed.
// Out out memory error. Heap storage was requested, but is not available.
MICROBIT_OOM = 20,
// Corruption detected in the micro:bit heap space
MICROBIT_HEAP_ERROR = 30,
// Dereference of a NULL pointer through the ManagedType class,
MICROBIT_NULL_DEREFERENCE = 40,
};
export function panic(code: number) {
console.log("PANIC:", code)
led.setBrightness(255);
let img = board().image;
img.clear();
img.set(0, 4, 255);
img.set(1, 3, 255);
img.set(2, 3, 255);
img.set(3, 3, 255);
img.set(4, 4, 255);
img.set(0, 0, 255);
img.set(1, 0, 255);
img.set(0, 1, 255);
img.set(1, 1, 255);
img.set(3, 0, 255);
img.set(4, 0, 255);
img.set(3, 1, 255);
img.set(4, 1, 255);
runtime.updateDisplay();
throw new Error("PANIC " + code)
}
@ -161,9 +197,8 @@ namespace pxsim.basic {
clearScreen();
pause(interval * 5);
} else {
let leds = createImageFromString(s);
if (s.length == 1) showLeds(leds, interval * 5)
else ImageMethods.scrollImage(leds, interval, 1);
if (s.length == 1) showLeds(createImageFromString(s), interval * 5)
else ImageMethods.scrollImage(createImageFromString(s + ' '), interval, 1);
}
}
@ -285,8 +320,8 @@ namespace pxsim.input {
default: return Math.floor(Math.sqrt(acc.instantaneousAccelerationSquared()));
}
}
export function rotation(kind : number) : number {
export function rotation(kind: number): number {
let b = board();
let acc = b.accelerometer;
acc.activate();
@ -294,11 +329,11 @@ namespace pxsim.input {
let y = acc.getX(MicroBitCoordinateSystem.NORTH_EAST_DOWN);
let z = acc.getX(MicroBitCoordinateSystem.NORTH_EAST_DOWN);
let roll = Math.atan2(y,z);
let pitch = Math.atan(-x / (y*Math.sin(roll) + z*Math.cos(roll)));
let roll = Math.atan2(y, z);
let pitch = Math.atan(-x / (y * Math.sin(roll) + z * Math.cos(roll)));
let r = 0;
switch(kind) {
switch (kind) {
case 0: r = pitch; break;
case 1: r = roll; break;
}
@ -364,8 +399,8 @@ namespace pxsim.led {
board().displayMode = mode;
runtime.queueDisplayUpdate()
}
export function screenshot() : Image {
export function screenshot(): Image {
let img = createImage(5)
board().image.copyTo(0, 5, img, 0);
return img;
@ -515,30 +550,41 @@ namespace pxsim.images {
}
namespace pxsim.ImageMethods {
export function showImage(i: Image, offset: number) {
// TODO offset?
i.copyTo(0, 5, board().image, 0)
runtime.queueDisplayUpdate()
}
export function plotImage(leds: Image, offset:number): void {
export function showImage(leds: Image, offset: number) {
if (!leds) panic(PanicCode.MICROBIT_NULL_DEREFERENCE);
leds.copyTo(offset, 5, board().image, 0)
runtime.queueDisplayUpdate()
}
export function clear(i: Image) {
i.clear();
}
export function setPixelBrightness(i:Image, x:number, y:number, b:number) {
i.set(x,y,b);
}
export function pixelBrightness(i:Image, x:number, y:number) : number {
return i.get(x,y);
export function plotImage(leds: Image, offset: number): void {
if (!leds) panic(PanicCode.MICROBIT_NULL_DEREFERENCE);
leds.copyTo(offset, 5, board().image, 0)
runtime.queueDisplayUpdate()
}
export function clear(leds: Image) {
if (!leds) panic(PanicCode.MICROBIT_NULL_DEREFERENCE);
leds.clear();
}
export function setPixelBrightness(i: Image, x: number, y: number, b: number) {
if (!i) panic(PanicCode.MICROBIT_NULL_DEREFERENCE);
i.set(x, y, b);
}
export function pixelBrightness(i: Image, x: number, y: number): number {
if (!i) panic(PanicCode.MICROBIT_NULL_DEREFERENCE);
return i.get(x, y);
}
export function scrollImage(leds: Image, interval: number, stride: number): void {
if (!leds) panic(PanicCode.MICROBIT_NULL_DEREFERENCE);
let cb = getResume()
let off = stride > 0 ? 0 : leds.width - 1;
let display = board().image;
@ -555,5 +601,5 @@ namespace pxsim.ImageMethods {
},
whenDone: cb
})
}
}
}

676
testconv.json Normal file
View File

@ -0,0 +1,676 @@
{
"apiUrl": "https://www.microbit.co.uk/api/",
"fakeids": [
"zzltaj",
"zzpgxf",
"rhisri",
"zztzyk"
],
"ids": [
"balcxr",
"bambkh",
"bbfxnw",
"bbtlly",
"bbvscl",
"bbxapr",
"bcbxtu",
"bchtnm",
"bcpnpx",
"bcredt",
"bdbwuy",
"bdddfl",
"bedihg",
"behvrp",
"bevhll",
"bezbat",
"bfrafy",
"bfvuez",
"bgqdmi",
"bguxyx",
"bhbzvc",
"bhhzvr",
"bhollk",
"biczhe",
"bieoqj",
"biwfto",
"bjayrk",
"bjcbpf",
"bjcdte",
"bjomis",
"bjqlzz",
"bkaofs",
"bkbsfh",
"bkxbji",
"blbhmr",
"blkuau",
"bllhdc",
"blougi",
"blpvxv",
"bmevma",
"bmlwtk",
"bmmayl",
"bncsjd",
"bnlfif",
"bnsfch",
"bnucdu",
"bolvvm",
"bouhxx",
"bpbvyx",
"bpmeio",
"bpqvtv",
"bptlwr",
"bqceny",
"bqgsnm",
"bqkwia",
"bqvoqy",
"bqyoyn",
"brlcdr",
"bsmmsp",
"bsncre",
"bstaqt",
"butypx",
"buuzga",
"bvnciu",
"bwbuga",
"bwhttb",
"bwkezu",
"bxswvm",
"bynkeb",
"bypanj",
"bywqzx",
"byzegt",
"bzaaya",
"bzrusu",
"bzwbps",
"dalzjm",
"damymx",
"dbdpxx",
"dcapfd",
"dceikq",
"ddikkz",
"ddjpss",
"ddtadz",
"ddxbjj",
"dfkuyn",
"dfmpxf",
"dfypdn",
"dhabye",
"dhbioa",
"dieoiu",
"diuhli",
"djchkz",
"djohvc",
"djztxc",
"dkqbyq",
"dkvxwr",
"dmbcwi",
"dmekmj",
"dmghho",
"dnmrlu",
"dnnzgd",
"dooboj",
"dosuna",
"dqgnhz",
"dqqfgv",
"dqwrsw",
"drmbxg",
"drrrty",
"dscjnc",
"dsvguv",
"dtemsf",
"dtmmmc",
"dundpx",
"dushve",
"duupgd",
"dvgzyq",
"dvnoer",
"dwcxtn",
"dwtoyp",
"dxdfbw",
"dxqdqw",
"dxroxs",
"dxvgvs",
"dycuzj",
"dyhnkt",
"dyxejk",
"dzlocb",
"dzlogl",
"fadekj",
"faffgr",
"fapznm",
"fbgdog",
"fbpnng",
"fbyrog",
"fcfoox",
"fcgdzt",
"fcicvk",
"fcjlto",
"fcvwvj",
"fdjhpo",
"fdtayy",
"fdyxvx",
"fegzbd",
"felusd",
"fethzd",
"ffcqby",
"ffjeei",
"ffjuuz",
"fflxnx",
"ffpyfa",
"fhcyyx",
"fhoonu",
"fitucj",
"fitvxu",
"fjdnmb",
"fjhnpw",
"fjlzrt",
"fjwknw",
"fkgprd",
"fklpld",
"fllghh",
"flqpgb",
"fmdsdi",
"fmdzgg",
"fnimjx",
"fnjmfx",
"fnscgh",
"fomwmz",
"fpelnl",
"fpngwv",
"fpqusd",
"fpuclv",
"fpvrwv",
"fqmgsu",
"fqsbhp",
"fqsrdu",
"frlxvd",
"froxsb",
"frqqnm",
"ftcrip",
"ftrzta",
"fubsaf",
"fvgogo",
"fvgxfz",
"fvkluo",
"fvsfrv",
"fwkjkj",
"fxxsgy",
"fyazlp",
"fypaix",
"fzcoly",
"fzidej",
"hatpaz",
"haxiza",
"hbfvlb",
"hbklfv",
"hbwlkf",
"hcmpdm",
"hdnlmx",
"hetmho",
"hfklxz",
"hfkvpg",
"hfmkbt",
"hftxjx",
"hfunev",
"hgepqq",
"hivbxk",
"hjesfm",
"hklazc",
"hkncxl",
"hkrfni",
"hlenxc",
"hlhipg",
"hlhvoe",
"hlwdwo",
"hnljdp",
"howggk",
"hpjppy",
"hptebp",
"hpupwc",
"hqdpet",
"hqhclr",
"hqheal",
"hqoqjh",
"hqpuxt",
"hrnitd",
"hrooif",
"hsuiag",
"hsxmox",
"humerf",
"huqcpc",
"huydje",
"hwetsq",
"hxuwlt",
"hzcxdp",
"hzpfge",
"hzpkma",
"jaeeve",
"jcmkmq",
"jcojot",
"jcvdvp",
"jdcils",
"jddumo",
"jdsqxr",
"jerwei",
"jfwcov",
"jgdknu",
"jgjijp",
"jgofmw",
"jhjauh",
"jhrjvj",
"jhseak",
"jiyhsk",
"jiyoeq",
"jjumac",
"jkppnc",
"jkxyeh",
"jkymhg",
"jlatje",
"jlbxjm",
"jlmzps",
"jmmgyn",
"jmshop",
"jnengo",
"jnhcat",
"jnvrkr",
"jnxdok",
"jociyw",
"joryiq",
"jpbfze",
"jpcrcj",
"jrfuqz",
"jrfwyh",
"jrpbtk",
"jrwkyz",
"jrxhxe",
"jsxvju",
"jszrpp",
"jtbdng",
"jtglrx",
"jtodxy",
"julzbh",
"juqrkb",
"jvstzh",
"jwckaz",
"jwplaw",
"jwskcb",
"jxgcel",
"jxjryw",
"jxmrht",
"jxqobc",
"jzenhj",
"jzwxbr",
"jzzbqg",
"laanun",
"lagxjo",
"lamnpb",
"lapexp",
"lazmuu",
"lbeyfh",
"lbhuwc",
"lcdeuk",
"lchqfb",
"lcpmnp",
"ldgoae",
"lecrpo",
"lfpidi",
"lfrpst",
"lgsrwm",
"lhjcvy",
"licgsp",
"likrcp",
"ljauxo",
"ljkskx",
"llsepx",
"llxcdk",
"lmvoxp",
"lniybn",
"loafab",
"loehfe",
"lpnzct",
"lqwdio",
"lqxnnj",
"lracic",
"lrwotp",
"lryglt",
"lsikdy",
"ltchng",
"ltsbpa",
"lucaof",
"lvahkk",
"lvvdne",
"lwtsxc",
"lxleej",
"lxwstg",
"lxwwtd",
"lzndlk",
"lzosmg",
"lzsseg",
"naevvc",
"nawmtp",
"nbomql",
"nbuuii",
"nbwine",
"ndayhb",
"ndikwg",
"ndlikc",
"ndljim",
"ndooqj",
"ndqgow",
"nfjrxg",
"nfmunh",
"nghraa",
"nhpyof",
"nhtyzy",
"nikzhg",
"nitcfc",
"njfeff",
"njvcbs",
"njynsd",
"nkdbmy",
"nlyuwy",
"nmbxkh",
"nmdfik",
"nmuhlk",
"noftar",
"noikvz",
"novevx",
"noxyjg",
"noyovd",
"npkjbk",
"nqdtvd",
"nqgyno",
"nqxloa",
"nrjdzu",
"nsaumh",
"nsegbi",
"ntfmsx",
"ntsvek",
"nujrlc",
"nvogiv",
"nvrqzl",
"nvtfbc",
"nvymrn",
"nwowql",
"nwxlij",
"nxhnvy",
"nxpwae",
"nynwto",
"nytwlb",
"nyuakq",
"nzrgyf",
"nzrwza",
"nzzcea",
"pbsolq",
"pbtnpf",
"pcdvqu",
"pchzqo",
"pdmxpl",
"pdnntw",
"pdsghq",
"pewcsa",
"pflxxj",
"pfutwa",
"pgvoic",
"phehbm",
"phgmqm",
"phhkfi",
"phjonu",
"phvurr",
"piaksu",
"pijsrg",
"piubiw",
"pjsmac",
"pjxdoj",
"pjzfgn",
"pkmwkn",
"pkntkb",
"pkquey",
"pmxlhz",
"pnvgvr",
"pooqwk",
"ppslyh",
"ppxsux",
"prglvf",
"probjd",
"psmgrz",
"psptyd",
"psqjon",
"pughxs",
"puhetz",
"pujfoc",
"purkko",
"puthiz",
"pvjilh",
"pvqrgm",
"pvzmhz",
"pwlxyy",
"pxebwk",
"pxizap",
"pxyovu",
"pymfqh",
"pzmjbx",
"pzptoo",
"pzucty",
"rannhh",
"rbnvdq",
"rccfvy",
"rceosh",
"rcobok",
"rdamey",
"rdhndz",
"rdpdll",
"rdzfjv",
"redkby",
"reqjzm",
"revjgd",
"rfihyn",
"rfzukz",
"rgtmoz",
"rheeoa",
"rheyiw",
"rilbti",
"rilexn",
"riotng",
"riqiss",
"riupfo",
"rjglqu",
"rjthvx",
"rjvjwq",
"rlporb",
"rmazpa",
"rmyvbb",
"rnkxav",
"rnvzdo",
"ropkaf",
"rozudg",
"rrvdls",
"rsdjun",
"rudelg",
"rugwft",
"rupbjr",
"rvjwiu",
"rvqkwq",
"rwdqcz",
"rwjnfq",
"rxdqqf",
"rxnztr",
"rxugmm",
"rydpvf",
"ryftuq",
"rygikf",
"ryvkkx",
"rzmnrf",
"tbehov",
"tcaulx",
"tcrfuz",
"tcvaou",
"tdfxfg",
"tdkwue",
"tfrbqz",
"tgbxuq",
"tglsyl",
"tgorrv",
"theruf",
"thhvzq",
"thncnj",
"tiircu",
"tjdpzj",
"tjliry",
"tjpwmu",
"tjqgba",
"tkhgfo",
"tkxbfr",
"tmkbao",
"tmnhhx",
"tnripk",
"tnudiw",
"tnuuwe",
"tnvnko",
"toqcgf",
"tpdiyw",
"tpxxzl",
"tqeddl",
"tqhpqp",
"tqwach",
"trkitt",
"trkrrh",
"tsdmft",
"ttvzqd",
"ttxeud",
"tujsjf",
"tvbjyi",
"tvkqoe",
"twrsnj",
"txkmpg",
"txouzs",
"txszvu",
"txwbbf",
"tzqydt",
"vaszak",
"vaymbt",
"vbcdot",
"vbtmwf",
"vcijrw",
"vcmhms",
"vcoevo",
"vcrvjm",
"vcudrv",
"vczceh",
"vezrot",
"vfcwwr",
"vftxlg",
"vfusfw",
"vgovse",
"vgvkok",
"vgxdxq",
"vhhygu",
"vioniz",
"vipnog",
"vjkwgj",
"vjmnkh",
"vkhabg",
"vkhiga",
"vkybzm",
"vlrsar",
"vmhvfa",
"vndxor",
"vodekh",
"vopucc",
"vovivd",
"vpnspf",
"vpslsg",
"vreifv",
"vrikcc",
"vrxpod",
"vsbzms",
"vslnue",
"vsrguv",
"vsyfym",
"vtfund",
"vtviqj",
"vtzfzy",
"vuwzmu",
"vwkpiw",
"vwlohb",
"vwnjqy",
"vwtwos",
"vxjfnm",
"vyewot",
"vyhvrg",
"vzmvvw",
"vzniie",
"vzrycv",
"vztdyx",
"xascqb",
"xaurjv",
"xcenyy",
"xczuut",
"xdvawd",
"xdwebc",
"xdxlsd",
"xfdrwr",
"xfrysj",
"xfytns",
"xhgnmw",
"xhjkvj",
"xjngae",
"xjuzjz",
"xkrsfl",
"xlfmnd",
"xltsru",
"xmcivt",
"xmlisq",
"xmzztb",
"xndixq",
"xnhxka",
"xnurqq",
"xolqgf",
"xoojpa",
"xoulbi",
"xoygfg",
"xpekdp",
"xpiqbj",
"xrqriw",
"xrsohj",
"xrvzyi",
"xsvwgh",
"xtrrnu",
"xtsmne",
"xuxlra",
"xvjcdf",
"xvmxti",
"xvpkiq",
"xxuosa",
"xymixn",
"xzcsqr",
"xzlzgl",
"zaidka",
"zbiznd",
"zbqfmt",
"zdfkcr",
"zdntvf",
"zdwmwu",
"zehjio",
"zelzkd",
"zewaak",
"zgozuh",
"zifrtl",
"ziqeez",
"zldufm",
"zlfusn",
"zmrcwu",
"zoyilz",
"zqlcxg",
"zqotda",
"zswztj",
"zszuqa",
"zwkhxx",
"zwpewj",
"zytfqg",
"zywows",
"zzltaj",
"zzpgxf",
"zztzyk"
]
}