From a62f2b00b4589bd09e4036176e39203bb23114f2 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 10 May 2016 21:13:16 -0700 Subject: [PATCH 01/16] updated radio apis to support key/value pair --- libs/microbit-radio/radio.cpp | 115 ++++++++++++++++++--------------- libs/microbit-radio/radio.ts | 9 --- libs/microbit-radio/shims.d.ts | 31 +++++---- sim/libmbit.ts | 16 ++++- sim/state.ts | 29 +++++---- 5 files changed, 114 insertions(+), 86 deletions(-) diff --git a/libs/microbit-radio/radio.cpp b/libs/microbit-radio/radio.cpp index 836b9a7e..f1731994 100644 --- a/libs/microbit-radio/radio.cpp +++ b/libs/microbit-radio/radio.cpp @@ -2,7 +2,7 @@ using namespace pxt; -#define RADIO_VALUE_PACKET_TYPE 24641622 +#define MAX_FIELD_NAME_LENGTH 12 //% color=270 weight=34 namespace radio { @@ -11,6 +11,8 @@ namespace radio { // Radio // ------------------------------------------------------------------------- bool radioEnabled = false; + bool transmitSerialNumber = false; + PacketBuffer packet; int radioEnable() { @@ -36,83 +38,84 @@ namespace radio { registerWithDal(MES_BROADCAST_GENERAL_ID, message, f); } - /** - * Broadcasts 4 numbers over radio to any connected micro:bit in the group. - */ - //% help=radio/send-numbers - //% weight=59 debug=true - //% blockId=radio_datagram_send_numbers block="send numbers|0: %VALUE0|1: %VALUE1|2: %VALUE2|3: %VALUE3" - void sendNumbers(int value_0, int value_1, int value_2, int value_3) { - if (radioEnable() != MICROBIT_OK) return; - int buf[] = { value_0, value_1, value_2, value_3 }; - uBit.radio.datagram.send((uint8_t*)buf, 4*sizeof(int)); + * Broadcasts a number over radio to any connected micro:bit in the group. + */ + //% help=radio/send-number + //% weight=60 + //% blockId=radio_datagram_send block="send number %MESSAGE" blockGap=8 + void sendNumber(int value) { + if (radioEnable() != MICROBIT_OK) return; + uint32_t t = system_timer_current_time(); + uint32_t sn = transmitSerialNumber ? microbit_serial_number() : 0; + uint32_t buf[] = { (uint32_t)value, t, sn }; + uBit.radio.datagram.send((uint8_t*)buf, 3*sizeof(uint32_t)); } /** * Broadcasts a name / value pair along with the device serial number * and running time to any connected BBC micro:bit in the group. * @param name the field name (max 12 characters), eg: "data" - * @param the numberic value + * @param value the numberic value */ //% help=radio/send-value - //% weight=4 debug=true + //% weight=59 //% blockId=radio_datagram_send_value block="send|value %name|= %value" - void sendValue(StringData* name, int number) { + void sendValue(StringData* name, int value) { if (radioEnable() != MICROBIT_OK) return; - ManagedString n(name); + ManagedString n(name); + uint32_t t = system_timer_current_time(); + uint32_t sn = transmitSerialNumber ? microbit_serial_number() : 0; uint8_t buf[32]; uint32_t* buf32 = (uint32_t*)buf; memset(buf, 32, 0); - buf32[0] = number; // 4 bytes: value - buf32[1] = microbit_serial_number(); // 4 bytes: serial number - buf32[2] = system_timer_current_time(); // 4 bytes: running time - memcpy(buf + 12, n.toCharArray(), min(12, n.length())); // 12-24: field name - buf32[7] = RADIO_VALUE_PACKET_TYPE; // last 4 bytes: magic number of package type - uBit.radio.datagram.send(buf, 32); + buf32[0] = value; // 4 bytes: value + buf32[1] = t; // 4 bytes: running time + buf32[2] = sn; // 4 bytes: serial number + uint8_t len = min(MAX_FIELD_NAME_LENGTH, n.length()); // 1 byte: string length + if (len > 0) { + buf[12] = len; // + memcpy(buf + 13, n.toCharArray(), len); // 13-25: field name + } + uBit.radio.datagram.send(buf, 13 + len); } /** * Reads a value sent with `stream value` and writes it * to the serial stream as JSON */ - //% help=radio/read-value-to-serial - //% weight=3 debug=true - void readValueToSerial() { + //% help=radio/write-value-to-serial + //% weight=3 + //% blockId=radio_write_value_serial block="write value to serial" + void writeValueToSerial() { if (radioEnable() != MICROBIT_OK) return; PacketBuffer p = uBit.radio.datagram.recv(); int length = p.length(); - if (length < 32) { - return; - } - uint8_t* bytes = p.getBytes(); - //uint32_t* buf32 = (uint32_t*)bytes; - //uint32_t type = buf32[7]; - //if (type != RADIO_VALUE_PACKET_TYPE) - //{ - // uBit.serial.send("type: "); - // uBit.serial.send(type); - // uBit.serial.send("\r\n"); - // return; - //} - int value; - int serial; - int time; - char name[12+1]; memset(name, 0, 13 * sizeof(char)); - memcpy(&value, bytes, 4); - memcpy(&serial, bytes + 4, 4); - memcpy(&time, bytes + 8, 4); - memcpy(&name, bytes + 12, 12); - - uBit.serial.send("{s:"); uBit.serial.send(serial); - uBit.serial.send(",t:"); uBit.serial.send(time); - uBit.serial.send(",v:"); uBit.serial.send(value); - uBit.serial.send(",n:\""); uBit.serial.send(name); - uBit.serial.send("\"}\r\n"); + uBit.serial.send("{"); + if (length >= 4) { + memcpy(&value, bytes, 4); + uBit.serial.send("v:"); uBit.serial.send(value); + if(length >= 8) { + memcpy(&value, bytes + 4, 4); + uBit.serial.send(",t:"); uBit.serial.send(value); + if (length >= 12) { + memcpy(&value, bytes + 8, 4); + uBit.serial.send(",s:"); uBit.serial.send(value); + if (length >= 13) { + char name[MAX_FIELD_NAME_LENGTH+1]; + uint8_t len = min(MAX_FIELD_NAME_LENGTH, bytes[12]); + memcpy(name, bytes + 13, len); + name[len] = 0; + uBit.serial.send(",n:\""); uBit.serial.send(name); uBit.serial.send("\""); + } + } + } + } + uBit.serial.send("}\r\n"); } /** @@ -192,4 +195,14 @@ namespace radio { if (radioEnable() != MICROBIT_OK) return; uBit.radio.setTransmitPower(power); } + + /** + * Set the radio to transmit the serial number in each message. + */ + //% help=radio/set-transmit-serial-number + //% weight=8 + //% block=radio_set_transmit_serial_number block="set tranmist serial number %transmit" + void setTransmitSerialNumber(bool transmit) { + transmitSerialNumber = transmit; + } } diff --git a/libs/microbit-radio/radio.ts b/libs/microbit-radio/radio.ts index 4106ca2c..942ca022 100644 --- a/libs/microbit-radio/radio.ts +++ b/libs/microbit-radio/radio.ts @@ -3,13 +3,4 @@ */ //% color=270 weight=34 namespace radio { - /** - * Broadcasts a number over radio to any connected micro:bit in the group. - */ - //% help=radio/send-number - //% weight=60 - //% blockId=radio_datagram_send block="send number %MESSAGE" blockGap=8 - export function sendNumber(value: number) : void { - sendNumbers(value, 0, 0, 0); - } } diff --git a/libs/microbit-radio/shims.d.ts b/libs/microbit-radio/shims.d.ts index 02ce7354..2887f967 100644 --- a/libs/microbit-radio/shims.d.ts +++ b/libs/microbit-radio/shims.d.ts @@ -6,31 +6,32 @@ declare namespace radio { /** - * Broadcasts 4 numbers over radio to any connected micro:bit in the group. + * Broadcasts a number over radio to any connected micro:bit in the group. */ - //% help=radio/send-numbers - //% weight=59 debug=true - //% blockId=radio_datagram_send_numbers block="send numbers|0: %VALUE0|1: %VALUE1|2: %VALUE2|3: %VALUE3" shim=radio::sendNumbers - function sendNumbers(value_0: number, value_1: number, value_2: number, value_3: number): void; + //% help=radio/send-number + //% weight=60 + //% blockId=radio_datagram_send block="send number %MESSAGE" blockGap=8 shim=radio::sendNumber + function sendNumber(value: number): void; /** * Broadcasts a name / value pair along with the device serial number * and running time to any connected BBC micro:bit in the group. * @param name the field name (max 12 characters), eg: "data" - * @param the numberic value + * @param value the numberic value */ //% help=radio/send-value - //% weight=4 debug=true + //% weight=59 //% blockId=radio_datagram_send_value block="send|value %name|= %value" shim=radio::sendValue - function sendValue(name: string, number: number): void; + function sendValue(name: string, value: number): void; /** * Reads a value sent with `stream value` and writes it * to the serial stream as JSON */ - //% help=radio/read-value-to-serial - //% weight=3 debug=true shim=radio::readValueToSerial - function readValueToSerial(): void; + //% help=radio/write-value-to-serial + //% weight=3 + //% blockId=radio_write_value_serial block="write value to serial" shim=radio::writeValueToSerial + function writeValueToSerial(): void; /** * Registers code to run when a packet is received over radio. @@ -83,6 +84,14 @@ declare namespace radio { //% weight=9 //% blockId=radio_set_transmit_power block="set transmit power %power" shim=radio::setTransmitPower function setTransmitPower(power: number): void; + + /** + * Set the radio to transmit the serial number in each message. + */ + //% help=radio/set-transmit-serial-number + //% weight=8 + //% block=radio_set_transmit_serial_number block="set tranmist serial number %transmit" shim=radio::setTransmitSerialNumber + function setTransmitSerialNumber(transmit: boolean): void; } // Auto-generated. Do not edit. Really. diff --git a/sim/libmbit.ts b/sim/libmbit.ts index fbe0557f..d0d7d19c 100644 --- a/sim/libmbit.ts +++ b/sim/libmbit.ts @@ -449,11 +449,21 @@ namespace pxsim.radio { board().radio.setTransmitPower(power); } - export function sendNumbers(value0: number, value1: number, value2: number, value3: number): void { - board().radio.datagram.send([value0, value1, value2, value3]); + export function setTransmitSerialNumber(transmit: boolean): void { + board().radio.setTransmitSerialNumber(transmit); } - export function streamValue(name: string, value: number) { + export function sendNumber(value: number): void { + board().radio.datagram.send([value]); + } + + export function writeValueToSerial(): void { + let b = board(); + let v = b.radio.datagram.recv().data[0]; + b.writeSerial(`{v:${v}}`); + } + + export function sendValue(name: string, value: number) { board().radio.datagram.send([value]); } diff --git a/sim/state.ts b/sim/state.ts index e639534e..e1452e48 100644 --- a/sim/state.ts +++ b/sim/state.ts @@ -85,7 +85,7 @@ namespace pxsim { } recv(): PacketBuffer { - var r = this.datagram.shift(); + let r = this.datagram.shift(); if (!r) r = { data: [0, 0, 0, 0], rssi: -1 @@ -98,6 +98,7 @@ namespace pxsim { // uint8_t radioDefaultGroup = MICROBIT_RADIO_DEFAULT_GROUP; groupId = 0; // todo power = 0; + transmitSerialNumber = false; datagram: RadioDatagram; constructor(private runtime: Runtime) { @@ -112,6 +113,10 @@ namespace pxsim { this.power = Math.max(0, Math.min(7, power)); } + setTransmitSerialNumber(sn: boolean) { + this.transmitSerialNumber = !!sn; + } + broadcast(msg: number) { Runtime.postMessage({ type: 'eventbus', @@ -511,7 +516,7 @@ namespace pxsim { constructor() { super() - this.id = "b" +Math_.random(2147483647); + this.id = "b" + Math_.random(2147483647); this.animationQ = new AnimationQueue(runtime); this.bus = new EventBus(runtime); this.radio = new RadioBus(runtime); @@ -598,13 +603,13 @@ namespace pxsim { let c = s[i]; this.serialOutBuffer += c; if (c == '\n') { - Runtime.postMessage({ - type: 'serial', - data: this.serialOutBuffer, - id: runtime.id - }) - this.serialOutBuffer = '' - break; + Runtime.postMessage({ + type: 'serial', + data: this.serialOutBuffer, + id: runtime.id + }) + this.serialOutBuffer = '' + break; } } } @@ -647,7 +652,7 @@ namespace pxsim { } public clear(): void { - for (var i = 0; i < this.data.length; ++i) + for (let i = 0; i < this.data.length; ++i) this.data[i] = 0; } } @@ -683,11 +688,11 @@ namespace pxsim { } export function createFont(): Image { - var data = [0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x8, 0x0, 0x8, 0xa, 0x4a, 0x40, 0x0, 0x0, 0xa, 0x5f, 0xea, 0x5f, 0xea, 0xe, 0xd9, 0x2e, 0xd3, 0x6e, 0x19, 0x32, 0x44, 0x89, 0x33, 0xc, 0x92, 0x4c, 0x92, 0x4d, 0x8, 0x8, 0x0, 0x0, 0x0, 0x4, 0x88, 0x8, 0x8, 0x4, 0x8, 0x4, 0x84, 0x84, 0x88, 0x0, 0xa, 0x44, 0x8a, 0x40, 0x0, 0x4, 0x8e, 0xc4, 0x80, 0x0, 0x0, 0x0, 0x4, 0x88, 0x0, 0x0, 0xe, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x1, 0x22, 0x44, 0x88, 0x10, 0xc, 0x92, 0x52, 0x52, 0x4c, 0x4, 0x8c, 0x84, 0x84, 0x8e, 0x1c, 0x82, 0x4c, 0x90, 0x1e, 0x1e, 0xc2, 0x44, 0x92, 0x4c, 0x6, 0xca, 0x52, 0x5f, 0xe2, 0x1f, 0xf0, 0x1e, 0xc1, 0x3e, 0x2, 0x44, 0x8e, 0xd1, 0x2e, 0x1f, 0xe2, 0x44, 0x88, 0x10, 0xe, 0xd1, 0x2e, 0xd1, 0x2e, 0xe, 0xd1, 0x2e, 0xc4, 0x88, 0x0, 0x8, 0x0, 0x8, 0x0, 0x0, 0x4, 0x80, 0x4, 0x88, 0x2, 0x44, 0x88, 0x4, 0x82, 0x0, 0xe, 0xc0, 0xe, 0xc0, 0x8, 0x4, 0x82, 0x44, 0x88, 0xe, 0xd1, 0x26, 0xc0, 0x4, 0xe, 0xd1, 0x35, 0xb3, 0x6c, 0xc, 0x92, 0x5e, 0xd2, 0x52, 0x1c, 0x92, 0x5c, 0x92, 0x5c, 0xe, 0xd0, 0x10, 0x10, 0xe, 0x1c, 0x92, 0x52, 0x52, 0x5c, 0x1e, 0xd0, 0x1c, 0x90, 0x1e, 0x1e, 0xd0, 0x1c, 0x90, 0x10, 0xe, 0xd0, 0x13, 0x71, 0x2e, 0x12, 0x52, 0x5e, 0xd2, 0x52, 0x1c, 0x88, 0x8, 0x8, 0x1c, 0x1f, 0xe2, 0x42, 0x52, 0x4c, 0x12, 0x54, 0x98, 0x14, 0x92, 0x10, 0x10, 0x10, 0x10, 0x1e, 0x11, 0x3b, 0x75, 0xb1, 0x31, 0x11, 0x39, 0x35, 0xb3, 0x71, 0xc, 0x92, 0x52, 0x52, 0x4c, 0x1c, 0x92, 0x5c, 0x90, 0x10, 0xc, 0x92, 0x52, 0x4c, 0x86, 0x1c, 0x92, 0x5c, 0x92, 0x51, 0xe, 0xd0, 0xc, 0x82, 0x5c, 0x1f, 0xe4, 0x84, 0x84, 0x84, 0x12, 0x52, 0x52, 0x52, 0x4c, 0x11, 0x31, 0x31, 0x2a, 0x44, 0x11, 0x31, 0x35, 0xbb, 0x71, 0x12, 0x52, 0x4c, 0x92, 0x52, 0x11, 0x2a, 0x44, 0x84, 0x84, 0x1e, 0xc4, 0x88, 0x10, 0x1e, 0xe, 0xc8, 0x8, 0x8, 0xe, 0x10, 0x8, 0x4, 0x82, 0x41, 0xe, 0xc2, 0x42, 0x42, 0x4e, 0x4, 0x8a, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8, 0x4, 0x80, 0x0, 0x0, 0x0, 0xe, 0xd2, 0x52, 0x4f, 0x10, 0x10, 0x1c, 0x92, 0x5c, 0x0, 0xe, 0xd0, 0x10, 0xe, 0x2, 0x42, 0x4e, 0xd2, 0x4e, 0xc, 0x92, 0x5c, 0x90, 0xe, 0x6, 0xc8, 0x1c, 0x88, 0x8, 0xe, 0xd2, 0x4e, 0xc2, 0x4c, 0x10, 0x10, 0x1c, 0x92, 0x52, 0x8, 0x0, 0x8, 0x8, 0x8, 0x2, 0x40, 0x2, 0x42, 0x4c, 0x10, 0x14, 0x98, 0x14, 0x92, 0x8, 0x8, 0x8, 0x8, 0x6, 0x0, 0x1b, 0x75, 0xb1, 0x31, 0x0, 0x1c, 0x92, 0x52, 0x52, 0x0, 0xc, 0x92, 0x52, 0x4c, 0x0, 0x1c, 0x92, 0x5c, 0x90, 0x0, 0xe, 0xd2, 0x4e, 0xc2, 0x0, 0xe, 0xd0, 0x10, 0x10, 0x0, 0x6, 0xc8, 0x4, 0x98, 0x8, 0x8, 0xe, 0xc8, 0x7, 0x0, 0x12, 0x52, 0x52, 0x4f, 0x0, 0x11, 0x31, 0x2a, 0x44, 0x0, 0x11, 0x31, 0x35, 0xbb, 0x0, 0x12, 0x4c, 0x8c, 0x92, 0x0, 0x11, 0x2a, 0x44, 0x98, 0x0, 0x1e, 0xc4, 0x88, 0x1e, 0x6, 0xc4, 0x8c, 0x84, 0x86, 0x8, 0x8, 0x8, 0x8, 0x8, 0x18, 0x8, 0xc, 0x88, 0x18, 0x0, 0x0, 0xc, 0x83, 0x60]; + const data = [0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x8, 0x0, 0x8, 0xa, 0x4a, 0x40, 0x0, 0x0, 0xa, 0x5f, 0xea, 0x5f, 0xea, 0xe, 0xd9, 0x2e, 0xd3, 0x6e, 0x19, 0x32, 0x44, 0x89, 0x33, 0xc, 0x92, 0x4c, 0x92, 0x4d, 0x8, 0x8, 0x0, 0x0, 0x0, 0x4, 0x88, 0x8, 0x8, 0x4, 0x8, 0x4, 0x84, 0x84, 0x88, 0x0, 0xa, 0x44, 0x8a, 0x40, 0x0, 0x4, 0x8e, 0xc4, 0x80, 0x0, 0x0, 0x0, 0x4, 0x88, 0x0, 0x0, 0xe, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x1, 0x22, 0x44, 0x88, 0x10, 0xc, 0x92, 0x52, 0x52, 0x4c, 0x4, 0x8c, 0x84, 0x84, 0x8e, 0x1c, 0x82, 0x4c, 0x90, 0x1e, 0x1e, 0xc2, 0x44, 0x92, 0x4c, 0x6, 0xca, 0x52, 0x5f, 0xe2, 0x1f, 0xf0, 0x1e, 0xc1, 0x3e, 0x2, 0x44, 0x8e, 0xd1, 0x2e, 0x1f, 0xe2, 0x44, 0x88, 0x10, 0xe, 0xd1, 0x2e, 0xd1, 0x2e, 0xe, 0xd1, 0x2e, 0xc4, 0x88, 0x0, 0x8, 0x0, 0x8, 0x0, 0x0, 0x4, 0x80, 0x4, 0x88, 0x2, 0x44, 0x88, 0x4, 0x82, 0x0, 0xe, 0xc0, 0xe, 0xc0, 0x8, 0x4, 0x82, 0x44, 0x88, 0xe, 0xd1, 0x26, 0xc0, 0x4, 0xe, 0xd1, 0x35, 0xb3, 0x6c, 0xc, 0x92, 0x5e, 0xd2, 0x52, 0x1c, 0x92, 0x5c, 0x92, 0x5c, 0xe, 0xd0, 0x10, 0x10, 0xe, 0x1c, 0x92, 0x52, 0x52, 0x5c, 0x1e, 0xd0, 0x1c, 0x90, 0x1e, 0x1e, 0xd0, 0x1c, 0x90, 0x10, 0xe, 0xd0, 0x13, 0x71, 0x2e, 0x12, 0x52, 0x5e, 0xd2, 0x52, 0x1c, 0x88, 0x8, 0x8, 0x1c, 0x1f, 0xe2, 0x42, 0x52, 0x4c, 0x12, 0x54, 0x98, 0x14, 0x92, 0x10, 0x10, 0x10, 0x10, 0x1e, 0x11, 0x3b, 0x75, 0xb1, 0x31, 0x11, 0x39, 0x35, 0xb3, 0x71, 0xc, 0x92, 0x52, 0x52, 0x4c, 0x1c, 0x92, 0x5c, 0x90, 0x10, 0xc, 0x92, 0x52, 0x4c, 0x86, 0x1c, 0x92, 0x5c, 0x92, 0x51, 0xe, 0xd0, 0xc, 0x82, 0x5c, 0x1f, 0xe4, 0x84, 0x84, 0x84, 0x12, 0x52, 0x52, 0x52, 0x4c, 0x11, 0x31, 0x31, 0x2a, 0x44, 0x11, 0x31, 0x35, 0xbb, 0x71, 0x12, 0x52, 0x4c, 0x92, 0x52, 0x11, 0x2a, 0x44, 0x84, 0x84, 0x1e, 0xc4, 0x88, 0x10, 0x1e, 0xe, 0xc8, 0x8, 0x8, 0xe, 0x10, 0x8, 0x4, 0x82, 0x41, 0xe, 0xc2, 0x42, 0x42, 0x4e, 0x4, 0x8a, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x8, 0x4, 0x80, 0x0, 0x0, 0x0, 0xe, 0xd2, 0x52, 0x4f, 0x10, 0x10, 0x1c, 0x92, 0x5c, 0x0, 0xe, 0xd0, 0x10, 0xe, 0x2, 0x42, 0x4e, 0xd2, 0x4e, 0xc, 0x92, 0x5c, 0x90, 0xe, 0x6, 0xc8, 0x1c, 0x88, 0x8, 0xe, 0xd2, 0x4e, 0xc2, 0x4c, 0x10, 0x10, 0x1c, 0x92, 0x52, 0x8, 0x0, 0x8, 0x8, 0x8, 0x2, 0x40, 0x2, 0x42, 0x4c, 0x10, 0x14, 0x98, 0x14, 0x92, 0x8, 0x8, 0x8, 0x8, 0x6, 0x0, 0x1b, 0x75, 0xb1, 0x31, 0x0, 0x1c, 0x92, 0x52, 0x52, 0x0, 0xc, 0x92, 0x52, 0x4c, 0x0, 0x1c, 0x92, 0x5c, 0x90, 0x0, 0xe, 0xd2, 0x4e, 0xc2, 0x0, 0xe, 0xd0, 0x10, 0x10, 0x0, 0x6, 0xc8, 0x4, 0x98, 0x8, 0x8, 0xe, 0xc8, 0x7, 0x0, 0x12, 0x52, 0x52, 0x4f, 0x0, 0x11, 0x31, 0x2a, 0x44, 0x0, 0x11, 0x31, 0x35, 0xbb, 0x0, 0x12, 0x4c, 0x8c, 0x92, 0x0, 0x11, 0x2a, 0x44, 0x98, 0x0, 0x1e, 0xc4, 0x88, 0x1e, 0x6, 0xc4, 0x8c, 0x84, 0x86, 0x8, 0x8, 0x8, 0x8, 0x8, 0x18, 0x8, 0xc, 0x88, 0x18, 0x0, 0x0, 0xc, 0x83, 0x60]; let nb = data.length; let n = nb / 5; - var font = createImage(nb); + let font = createImage(nb); for (let c = 0; c < n; c++) { for (let row = 0; row < 5; row++) { let char = data[c * 5 + row]; From 12705eed06fbf5e71d35af327a70de820fdc9cb9 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 10 May 2016 21:40:39 -0700 Subject: [PATCH 02/16] removed some ids --- testconv.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/testconv.json b/testconv.json index 302dd8e9..0ad55bff 100644 --- a/testconv.json +++ b/testconv.json @@ -444,13 +444,11 @@ "pvjilh", "pvqrgm", "pvzmhz", - "pwlxyy", "pxebwk", "pxizap", "pxyovu", "pymfqh", "pzmjbx", - "pzptoo", "pzucty", "rannhh", "rbnvdq", From 99574f1ec88a1708398b0f0ac2ce28d3af75cc78 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 10 May 2016 21:43:12 -0700 Subject: [PATCH 03/16] added link to live editor --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index bba87180..9d9e7136 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ This target allow to program a [BBC micro:bit](https://www.microbit.co.uk/) using [Microsoft Programming Experience Toolkit](https://github.com/Microsoft/pxt). +* [Try it live](https://m.pxt.io) + [![Build Status](https://travis-ci.org/Microsoft/pxt-microbit.svg?branch=master)](https://travis-ci.org/Microsoft/pxt-microbit) # Getting started From 3801e52370e3aea0ec1a2b2a94859b7a17cfbafd Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 10 May 2016 21:43:41 -0700 Subject: [PATCH 04/16] fixed build instructions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d9e7136..6071ca90 100644 --- a/README.md +++ b/README.md @@ -25,4 +25,4 @@ that wraps m.pxt.io and provides additional features. ### Building * Install Visual Studio 2015 Update 2 or higher. Make sure the Windows 10 templates are installed. -* open the ``win10/app.sln`` solution and launch the ``codemicrobit`` project. +* open the ``win10/app.sln`` solution and launch the ``m.pxt.io`` project. From bf384355c46d054ded1f5a6a0afd801c0ec73ce0 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 10 May 2016 21:49:15 -0700 Subject: [PATCH 05/16] Bump pxt-core to 0.2.122 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8e779d4e..7cda62db 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.121" + "pxt-core": "0.2.122" } } From 346d1e77da5d32409cfc01d36d71bdbc2f100152 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 10 May 2016 21:49:16 -0700 Subject: [PATCH 06/16] 0.2.110 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7cda62db..10bb7766 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.109", + "version": "0.2.110", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From eb09530391ce6ac2a6f31dec6d07d9ef66d6235a Mon Sep 17 00:00:00 2001 From: Michal Moskal Date: Wed, 11 May 2016 14:12:09 +0200 Subject: [PATCH 07/16] Fix typo --- docs/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference.md b/docs/reference.md index efaaecb4..669ddf45 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -24,4 +24,4 @@ serial.writeValue(x, 0); control.inBackground(() => { }); - +``` From bfeda371a9a552e43009be2fa821d9e67cc6bff0 Mon Sep 17 00:00:00 2001 From: Michal Moskal Date: Wed, 11 May 2016 15:33:55 +0200 Subject: [PATCH 08/16] Add simplified logo (more suitable for small size) --- docs/static/microbit.simplified.svg | 1 + pxtarget.json | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 docs/static/microbit.simplified.svg diff --git a/docs/static/microbit.simplified.svg b/docs/static/microbit.simplified.svg new file mode 100644 index 00000000..a8025c31 --- /dev/null +++ b/docs/static/microbit.simplified.svg @@ -0,0 +1 @@ +(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P8P13, SPI - SCKP18, +3v3GND+3v3GNDAB(1,0)(1,0)(1,0)(1,0)(1,0)(1,0) \ No newline at end of file diff --git a/pxtarget.json b/pxtarget.json index 58b5d30a..46cb932d 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -73,10 +73,10 @@ }, "appTheme": { "logoUrl": "https://m.pxt.io/about", - "logo": "./static/microbit.red.svg", - "docsLogo": "./static/microbit.docs.svg", - "portraitLogo":"./static/microbit.red.svg", - "footerLogo": "./static/microbit.red.svg", + "logo": "./static/microbit.simplified.svg", + "docsLogo": "./static/microbit.simplified.svg", + "portraitLogo":"./static/microbit.simplified.svg", + "footerLogo": "./static/microbit.simplified.svg", "homeUrl": "https://m.pxt.io/", "embedUrl": "https://m.pxt.io/", "koduUrl": "https://www.kodugamelab.com/bbc-microbit/", From f71925fdd286cf945209eb1a2028c013e2f1c3a9 Mon Sep 17 00:00:00 2001 From: Michal Moskal Date: Wed, 11 May 2016 15:39:20 +0200 Subject: [PATCH 09/16] Simplify logo some more --- docs/static/microbit.simplified.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/static/microbit.simplified.svg b/docs/static/microbit.simplified.svg index a8025c31..d0936987 100644 --- a/docs/static/microbit.simplified.svg +++ b/docs/static/microbit.simplified.svg @@ -1 +1 @@ -(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P8P13, SPI - SCKP18, +3v3GND+3v3GNDAB(1,0)(1,0)(1,0)(1,0)(1,0)(1,0) \ No newline at end of file +(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P8P13, SPI - SCKP18, +3v3GND+3v3GNDAB(1,0)(1,0)(1,0)(1,0)(1,0)(1,0) \ No newline at end of file From f88cda8244f9e6deb5f4cae92b45193d16032ef4 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 11 May 2016 06:45:45 -0700 Subject: [PATCH 10/16] added privacy/tou urls --- pxtarget.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pxtarget.json b/pxtarget.json index 58b5d30a..a00a985b 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -80,6 +80,8 @@ "homeUrl": "https://m.pxt.io/", "embedUrl": "https://m.pxt.io/", "koduUrl": "https://www.kodugamelab.com/bbc-microbit/", + "privacyUrl": "https://go.microsoft.com/fwlink/?LinkId=521839", + "termsOfUseUrl": "https://go.microsoft.com/fwlink/?LinkID=206977", "visualStudioCode": true, "docMenu": [ { From 72226cd4e55c1e4389e47ba56da3a5de83971152 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 11 May 2016 08:49:33 -0700 Subject: [PATCH 11/16] 0.2.111 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 10bb7766..b8b26b8c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.110", + "version": "0.2.111", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 19c689a8c427475541556eeeed22988fbaee4b2d Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 11 May 2016 09:18:29 -0700 Subject: [PATCH 12/16] added microsoft logo --- docs/static/Microsoft-logo_rgb_c-gray.png | Bin 0 -> 20339 bytes pxtarget.json | 1 + 2 files changed, 1 insertion(+) create mode 100644 docs/static/Microsoft-logo_rgb_c-gray.png diff --git a/docs/static/Microsoft-logo_rgb_c-gray.png b/docs/static/Microsoft-logo_rgb_c-gray.png new file mode 100644 index 0000000000000000000000000000000000000000..6b77415ea54ca5734e224edcc035e72def037edf GIT binary patch literal 20339 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 Date: Wed, 11 May 2016 11:39:45 -0700 Subject: [PATCH 13/16] added accent color --- pxtarget.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pxtarget.json b/pxtarget.json index 952a9e46..6020ad55 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -53,10 +53,10 @@ "deployDrives": "^MICROBIT" }, "runtime": { - "mathBlocks": true, - "loopsBlocks": true, - "logicBlocks": true, - "variablesBlocks": true + "mathBlocks": true, + "loopsBlocks": true, + "logicBlocks": true, + "variablesBlocks": true }, "simulator": { "autoRun": true, @@ -72,10 +72,11 @@ "log": true }, "appTheme": { + "accentColor": "#5C2D91", "logoUrl": "https://m.pxt.io/about", "logo": "./static/microbit.simplified.svg", "docsLogo": "./static/microbit.simplified.svg", - "portraitLogo":"./static/microbit.simplified.svg", + "portraitLogo": "./static/microbit.simplified.svg", "footerLogo": "./static/microbit.simplified.svg", "organizationLogo": "./static/Microsoft-logo_rgb_c-gray.png", "homeUrl": "https://m.pxt.io/", @@ -103,4 +104,4 @@ } ] } -} +} \ No newline at end of file From ca8ef260d5daafc3f9c93d4956b3948c0c288b41 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 11 May 2016 11:42:49 -0700 Subject: [PATCH 14/16] Bump pxt-core to 0.2.124 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b8b26b8c..bf772c6f 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.122" + "pxt-core": "0.2.124" } } From e9410d17a69a3451492bc083ea6127e58a6f2fbb Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 11 May 2016 11:42:51 -0700 Subject: [PATCH 15/16] 0.2.112 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf772c6f..1ff420b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.111", + "version": "0.2.112", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 78f9af5bc2120d825ce414b053680244366ecb8c Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 11 May 2016 12:05:13 -0700 Subject: [PATCH 16/16] 0.2.113 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1ff420b7..19255ff5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.112", + "version": "0.2.113", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript",