Merge remote-tracking branch 'origin/master'
This commit is contained in:
		@@ -5,7 +5,8 @@
 | 
				
			|||||||
### Things to do
 | 
					### Things to do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **[Getting Started](/getting-started)**
 | 
					* **[Getting Started](/getting-started)**
 | 
				
			||||||
* [Ten projects](/projects)
 | 
					* [Projects](/projects)
 | 
				
			||||||
 | 
					* [Lessons](/lessons)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Micro:bit reference
 | 
					### Micro:bit reference
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,16 +17,15 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
* [Blocks language](/blocks)
 | 
					* [Blocks language](/blocks)
 | 
				
			||||||
* [JavaScript language](/javascript)
 | 
					* [JavaScript language](/javascript)
 | 
				
			||||||
* [Streaming data](/streaming)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### More questions?
 | 
					### More questions?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* [Frequently Asked Question](/faq)
 | 
					* [Frequently Asked Question](/faq)
 | 
				
			||||||
* [Embedding project](/share)
 | 
					 | 
				
			||||||
* [Help Translate](/translate)
 | 
					* [Help Translate](/translate)
 | 
				
			||||||
* [Release notes](/release-notes)
 | 
					* [Embedding project](/share)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Developers
 | 
					### Developers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* [Command Line Interface](/cli)
 | 
					* [Command Line Interface](/cli)
 | 
				
			||||||
* Learn about [packages](/packages)
 | 
					* Learn about [packages](/packages)
 | 
				
			||||||
 | 
					* [Release notes](/release-notes)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Support for additional Bluetooth services.
 | 
					Support for additional Bluetooth services.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### ~hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### ~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```cards
 | 
					```cards
 | 
				
			||||||
bluetooth.startAccelerometerService();
 | 
					bluetooth.startAccelerometerService();
 | 
				
			||||||
bluetooth.startButtonService();
 | 
					bluetooth.startButtonService();
 | 
				
			||||||
@@ -9,20 +17,34 @@ bluetooth.startIOPinService();
 | 
				
			|||||||
bluetooth.startLEDService();
 | 
					bluetooth.startLEDService();
 | 
				
			||||||
bluetooth.startMagnetometerService();
 | 
					bluetooth.startMagnetometerService();
 | 
				
			||||||
bluetooth.startTemperatureService();
 | 
					bluetooth.startTemperatureService();
 | 
				
			||||||
bluetooth.uartRead("");
 | 
					bluetooth.onBluetoothConnected(() => {});
 | 
				
			||||||
bluetooth.uartWrite("");
 | 
					bluetooth.onBluetoothDisconnected(() => {});
 | 
				
			||||||
bluetooth.onBluetoothConnected(() => {
 | 
					```
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
});
 | 
					## UART 
 | 
				
			||||||
bluetooth.onBluetoothDisconnected(() => {
 | 
					
 | 
				
			||||||
    
 | 
					```cards
 | 
				
			||||||
});
 | 
					bluetooth.startUartService();
 | 
				
			||||||
 | 
					bluetooth.uartReadUntil("");
 | 
				
			||||||
 | 
					bluetooth.uartWriteString("");
 | 
				
			||||||
 | 
					bluetooth.uartWriteNumber(0);
 | 
				
			||||||
 | 
					bluetooth.uartWriteValue("", 0);
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```package
 | 
					```package
 | 
				
			||||||
microbit-bluetooth
 | 
					microbit-bluetooth
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Advanced
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### See Also
 | 
					### See Also
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[startAccelerometerService](/reference/bluetooth/start-accelerometer-service), [startButtonService](/reference/bluetooth/start-button-service), [startIOPinService](/reference/bluetooth/start-io-pin-service), [startLEDService](/reference/bluetooth/start-led-service), [startMagnetometerService](/reference/bluetooth/start-magnetometer-service), [startTemperatureService](/reference/bluetooth/start-temperature-service), [uartRead](/reference/bluetooth/uart-read), [uartWrite](/reference/bluetooth/uart-write), [onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)
 | 
					[startAccelerometerService](/reference/bluetooth/start-accelerometer-service), [startButtonService](/reference/bluetooth/start-button-service), [startIOPinService](/reference/bluetooth/start-io-pin-service), [startLEDService](/reference/bluetooth/start-led-service), [startMagnetometerService](/reference/bluetooth/start-magnetometer-service), [startTemperatureService](/reference/bluetooth/start-temperature-service), 
 | 
				
			||||||
 | 
					[startUartService](/reference/bluetooth/start-uart-service),
 | 
				
			||||||
 | 
					[uartReadUntil](/reference/bluetooth/uart-read-until), 
 | 
				
			||||||
 | 
					[uartWriteString](/reference/bluetooth/uart-write-string), 
 | 
				
			||||||
 | 
					[uartWriteNumber](/reference/bluetooth/uart-write-number), 
 | 
				
			||||||
 | 
					[uartWriteValue](/reference/bluetooth/uart-write-value), 
 | 
				
			||||||
 | 
					[onBluetoothConnected](/reference/bluetooth/on-bluetooth-connected), [onBluetoothDisconnected](/reference/bluetooth/on-bluetooth-disconnected)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								docs/reference/bluetooth/uart-read.md → docs/reference/bluetooth/uart-read-until.md
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										4
									
								
								docs/reference/bluetooth/uart-read.md → docs/reference/bluetooth/uart-read-until.md
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -12,7 +12,7 @@ The [Bluetooth UART service](start-uart-service.md) allows another device such a
 | 
				
			|||||||
With the Bluetooth UART service running, this block allows a micro:bit to read data which has been received from a Bluetooth connected device, terminating reading and returning the value obtained as soon as a specified delimiter character is encountered. This means that connected devices can send data to the micro:bit and indicate that the complete message has been sent by appending the message with the delimiter character.
 | 
					With the Bluetooth UART service running, this block allows a micro:bit to read data which has been received from a Bluetooth connected device, terminating reading and returning the value obtained as soon as a specified delimiter character is encountered. This means that connected devices can send data to the micro:bit and indicate that the complete message has been sent by appending the message with the delimiter character.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sig
 | 
					```sig
 | 
				
			||||||
bluetooth.uartRead("");
 | 
					bluetooth.uartReadUntil("");
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Example: Starting the Bluetooth UART service and then reading data received from another device which is terminated by ":" character and then displaying it
 | 
					### Example: Starting the Bluetooth UART service and then reading data received from another device which is terminated by ":" character and then displaying it
 | 
				
			||||||
@@ -25,7 +25,7 @@ bluetooth.onBluetoothConnected(() => {
 | 
				
			|||||||
    basic.showString("C");
 | 
					    basic.showString("C");
 | 
				
			||||||
    connected = 1;
 | 
					    connected = 1;
 | 
				
			||||||
    while (connected == 1) {
 | 
					    while (connected == 1) {
 | 
				
			||||||
        uartData = bluetooth.uartRead(":");
 | 
					        uartData = bluetooth.uartReadUntil(":");
 | 
				
			||||||
        basic.showString(uartData);
 | 
					        basic.showString(uartData);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
							
								
								
									
										28
									
								
								docs/reference/bluetooth/uart-write-number.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/reference/bluetooth/uart-write-number.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					# UART Write Number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### ~hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### ~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sig
 | 
				
			||||||
 | 
					bluetooth.uartWriteNumber(42);
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Advanced
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### See also
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[About Bluetooth](/reference/bluetooth/about-bluetooth), [micro:bit Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf),  [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```package
 | 
				
			||||||
 | 
					microbit-bluetooth
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										8
									
								
								docs/reference/bluetooth/uart-write.md → docs/reference/bluetooth/uart-write-string.md
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										8
									
								
								docs/reference/bluetooth/uart-write.md → docs/reference/bluetooth/uart-write-string.md
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
# UART Write 
 | 
					# UART Write String
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### ~hint
 | 
					### ~hint
 | 
				
			||||||

 | 
					
 | 
				
			||||||
@@ -7,12 +7,12 @@ For another device like a smartphone to use any of the Bluetooth "services" whic
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### ~
 | 
					### ~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The [Bluetooth UART service](start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks. 
 | 
					The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
 | 
					With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```sig
 | 
					```sig
 | 
				
			||||||
bluetooth.uartWrite("");
 | 
					bluetooth.uartWriteString("");
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Example: Starting the Bluetooth UART service and then sending "HELLO" whenever button A is pressed and another device has connected over Bluetooth
 | 
					### Example: Starting the Bluetooth UART service and then sending "HELLO" whenever button A is pressed and another device has connected over Bluetooth
 | 
				
			||||||
@@ -29,7 +29,7 @@ bluetooth.onBluetoothDisconnected(() => {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
input.onButtonPressed(Button.A, () => {
 | 
					input.onButtonPressed(Button.A, () => {
 | 
				
			||||||
    if (connected == 1) {
 | 
					    if (connected == 1) {
 | 
				
			||||||
        bluetooth.uartWrite("HELLO");
 | 
					        bluetooth.uartWriteString("HELLO");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
							
								
								
									
										28
									
								
								docs/reference/bluetooth/uart-write-value.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/reference/bluetooth/uart-write-value.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					# UART Write Value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### ~hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For another device like a smartphone to use any of the Bluetooth "services" which the micro:bit has, it must first be [paired with the micro:bit](/reference/bluetooth/bluetooth-pairing). Once paired, the other device may connect to the micro:bit and exchange data relating to many of the micro:bit's features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### ~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The [Bluetooth UART service](/reference/bluetooth/start-uart-service.md) allows another device such as a smartphone to exchange any data it wants to with the micro:bit, in small chunks. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					With the Bluetooth UART service running, this block allows a micro:bit to send data to a Bluetooth connected device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sig
 | 
				
			||||||
 | 
					bluetooth.uartWriteValue("x", 42);
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Advanced
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					For more advanced information on the micro:bit Bluetooth UART service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/uart-service/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### See also
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[About Bluetooth](/reference/bluetooth/about-bluetooth), [micro:bit Bluetooth profile overview ](http://lancaster-university.github.io/microbit-docs/ble/profile/), [micro:bit Bluetooth profile reference](http://lancaster-university.github.io/microbit-docs/resources/bluetooth/microbit-profile-V1.9-Level-2.pdf),  [Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html), [Bluetooth SIG](https://www.bluetooth.com)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```package
 | 
				
			||||||
 | 
					microbit-bluetooth
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
@@ -16,13 +16,9 @@ You will find two files in that project:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Translating the blocks and reference documentation
 | 
					## Translating the blocks and reference documentation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The project below contains the resources from the blocks and functions using in the https://codethemicrobit.com.
 | 
					You will find package files under ``/microbit`` , one for the block definition and one for the descriptions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* [https://crowdin.com/project/pxt-microbit](https://crowdin.com/project/pxt-microbit)
 | 
					* ``core-strings.json``: contains the block definitions
 | 
				
			||||||
 | 
					* ``core-jsdoc-strings.json``: contains the descriptions
 | 
				
			||||||
You will find two files for each package available in the micro:bit, one for the block definition and one for the descriptions:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* ``microbit-strings.json``: contains the block definitions
 | 
					 | 
				
			||||||
* ``microbit-jsdoc-strings.json``: contains the descriptions
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
The block definition should be carefully translated using the [block definition syntax](https://www.pxt.io/defining-blocks).
 | 
					The block definition should be carefully translated using the [block definition syntax](https://www.pxt.io/defining-blocks).
 | 
				
			||||||
@@ -4,22 +4,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
using namespace pxt;
 | 
					using namespace pxt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum Delimiters {
 | 
					 | 
				
			||||||
    //% block="new line"
 | 
					 | 
				
			||||||
    NewLine = 1,
 | 
					 | 
				
			||||||
    //% block=","
 | 
					 | 
				
			||||||
    Comma = 2,
 | 
					 | 
				
			||||||
    //% block="$"
 | 
					 | 
				
			||||||
    Dollar = 3,
 | 
					 | 
				
			||||||
    //% block=":"
 | 
					 | 
				
			||||||
    Colon = 4,
 | 
					 | 
				
			||||||
    //% block="."
 | 
					 | 
				
			||||||
    Fullstop = 5,
 | 
					 | 
				
			||||||
    //% block="#"
 | 
					 | 
				
			||||||
    Hash = 6,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Support for additional Bluetooth services.
 | 
					 * Support for additional Bluetooth services.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -27,12 +11,33 @@ enum Delimiters {
 | 
				
			|||||||
namespace bluetooth {
 | 
					namespace bluetooth {
 | 
				
			||||||
    MicroBitUARTService *uart = NULL;
 | 
					    MicroBitUARTService *uart = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					    *  Starts the Bluetooth accelerometer service
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					    //% help=bluetooth/start-accelerometer-service
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service"
 | 
				
			||||||
 | 
					    //% parts="bluetooth" weight=90 blockGap=8
 | 
				
			||||||
 | 
					    void startAccelerometerService() {
 | 
				
			||||||
 | 
					        new MicroBitAccelerometerService(*uBit.ble, uBit.accelerometer);        
 | 
				
			||||||
 | 
					    }   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					    *  Starts the Bluetooth button service
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					    //% help=bluetooth/start-button-service
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="bluetooth" weight=89
 | 
				
			||||||
 | 
					    void startButtonService() {
 | 
				
			||||||
 | 
					        new MicroBitButtonService(*uBit.ble);      
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
    *  Starts the Bluetooth IO pin service.
 | 
					    *  Starts the Bluetooth IO pin service.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    //% help=bluetooth/start-io-pin-service
 | 
					    //% help=bluetooth/start-io-pin-service
 | 
				
			||||||
    //% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
 | 
					    //% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
 | 
				
			||||||
    //% parts="bluetooth"
 | 
					    //% parts="bluetooth" weight=88
 | 
				
			||||||
    void startIOPinService() {
 | 
					    void startIOPinService() {
 | 
				
			||||||
        new MicroBitIOPinService(*uBit.ble, uBit.io);
 | 
					        new MicroBitIOPinService(*uBit.ble, uBit.io);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -42,7 +47,7 @@ namespace bluetooth {
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
    //% help=bluetooth/start-led-service
 | 
					    //% help=bluetooth/start-led-service
 | 
				
			||||||
    //% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
 | 
					    //% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
 | 
				
			||||||
    //% parts="bluetooth"
 | 
					    //% parts="bluetooth" weight=87
 | 
				
			||||||
    void startLEDService() {
 | 
					    void startLEDService() {
 | 
				
			||||||
        new MicroBitLEDService(*uBit.ble, uBit.display);
 | 
					        new MicroBitLEDService(*uBit.ble, uBit.display);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -52,7 +57,7 @@ namespace bluetooth {
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
    //% help=bluetooth/start-temperature-service
 | 
					    //% help=bluetooth/start-temperature-service
 | 
				
			||||||
    //% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
 | 
					    //% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
 | 
				
			||||||
    //% parts="bluetooth"
 | 
					    //% parts="bluetooth" weight=86
 | 
				
			||||||
    void startTemperatureService() {    
 | 
					    void startTemperatureService() {    
 | 
				
			||||||
        new MicroBitTemperatureService(*uBit.ble, uBit.thermometer);        
 | 
					        new MicroBitTemperatureService(*uBit.ble, uBit.thermometer);        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -61,38 +66,19 @@ namespace bluetooth {
 | 
				
			|||||||
    *  Starts the Bluetooth magnetometer service
 | 
					    *  Starts the Bluetooth magnetometer service
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    //% help=bluetooth/start-magnetometer-service
 | 
					    //% help=bluetooth/start-magnetometer-service
 | 
				
			||||||
    //% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8
 | 
					    //% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service"
 | 
				
			||||||
    //% parts="bluetooth"
 | 
					    //% parts="bluetooth" weight=85
 | 
				
			||||||
    void startMagnetometerService() {    
 | 
					    void startMagnetometerService() {    
 | 
				
			||||||
        new MicroBitMagnetometerService(*uBit.ble, uBit.compass); 
 | 
					        new MicroBitMagnetometerService(*uBit.ble, uBit.compass); 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
    *  Starts the Bluetooth accelerometer service
 | 
					 | 
				
			||||||
    */
 | 
					 | 
				
			||||||
    //% help=bluetooth/start-accelerometer-service
 | 
					 | 
				
			||||||
    //% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8
 | 
					 | 
				
			||||||
    //% parts="bluetooth"
 | 
					 | 
				
			||||||
    void startAccelerometerService() {
 | 
					 | 
				
			||||||
        new MicroBitAccelerometerService(*uBit.ble, uBit.accelerometer);        
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
    *  Starts the Bluetooth button service
 | 
					 | 
				
			||||||
    */
 | 
					 | 
				
			||||||
    //% help=bluetooth/start-button-service
 | 
					 | 
				
			||||||
    //% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
 | 
					 | 
				
			||||||
    //% parts="bluetooth"
 | 
					 | 
				
			||||||
    void startButtonService() {
 | 
					 | 
				
			||||||
        new MicroBitButtonService(*uBit.ble);      
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
    *  Starts the Bluetooth UART service
 | 
					    *  Starts the Bluetooth UART service
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    //% help=bluetooth/start-uart-service
 | 
					    //% help=bluetooth/start-uart-service
 | 
				
			||||||
    //% blockId=bluetooth_start_uart_service block="bluetooth uart service" blockGap=8
 | 
					    //% blockId=bluetooth_start_uart_service block="bluetooth uart service"
 | 
				
			||||||
    //% parts="bluetooth"
 | 
					    //% parts="bluetooth" advanced=true
 | 
				
			||||||
    void startUartService() {
 | 
					    void startUartService() {
 | 
				
			||||||
        if (uart) return;
 | 
					        if (uart) return;
 | 
				
			||||||
        // 61 octet buffer size is 3 x (MTU - 3) + 1
 | 
					        // 61 octet buffer size is 3 x (MTU - 3) + 1
 | 
				
			||||||
@@ -102,13 +88,13 @@ namespace bluetooth {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    //%
 | 
					    //%
 | 
				
			||||||
    void uartWrite(StringData *data) {
 | 
					    void uartWriteString(StringData *data) {
 | 
				
			||||||
        startUartService();
 | 
					        startUartService();
 | 
				
			||||||
    	uart->send(ManagedString(data));
 | 
					    	uart->send(ManagedString(data));
 | 
				
			||||||
    }    
 | 
					    }    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //%
 | 
					    //%
 | 
				
			||||||
    StringData* uartRead(StringData *del) {
 | 
					    StringData* uartReadUntil(StringData *del) {
 | 
				
			||||||
        startUartService();
 | 
					        startUartService();
 | 
				
			||||||
        return uart->readUntil(ManagedString(del)).leakData();
 | 
					        return uart->readUntil(ManagedString(del)).leakData();
 | 
				
			||||||
    }    
 | 
					    }    
 | 
				
			||||||
@@ -133,7 +119,5 @@ namespace bluetooth {
 | 
				
			|||||||
    //% parts="bluetooth"
 | 
					    //% parts="bluetooth"
 | 
				
			||||||
    void onBluetoothDisconnected(Action body) {
 | 
					    void onBluetoothDisconnected(Action body) {
 | 
				
			||||||
        registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, body);
 | 
					        registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, body);
 | 
				
			||||||
    }    
 | 
					    }  
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,42 +1,48 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Support for additional Bluetooth services.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					//% color=#0082FB weight=20
 | 
				
			||||||
namespace bluetooth {
 | 
					namespace bluetooth {
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Returns the delimiter corresponding string
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    //% blockId="bluetooth_uart_delimiter_conv" block="%del"
 | 
					 | 
				
			||||||
    //% weight=1 parts="bluetooth"
 | 
					 | 
				
			||||||
    export function delimiters(del: Delimiters): string {
 | 
					 | 
				
			||||||
        // even though it might not look like, this is more
 | 
					 | 
				
			||||||
        // (memory) efficient than the C++ implementation, because the
 | 
					 | 
				
			||||||
        // strings are statically allocated and take no RAM 
 | 
					 | 
				
			||||||
        switch (del) {
 | 
					 | 
				
			||||||
            case Delimiters.NewLine: return "\n"
 | 
					 | 
				
			||||||
            case Delimiters.Comma: return ","
 | 
					 | 
				
			||||||
            case Delimiters.Dollar: return "$"
 | 
					 | 
				
			||||||
            case Delimiters.Colon: return ":"
 | 
					 | 
				
			||||||
            case Delimiters.Fullstop: return "."
 | 
					 | 
				
			||||||
            case Delimiters.Hash: return "#"
 | 
					 | 
				
			||||||
            default: return "\n"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
    *  Writes to the Bluetooth UART service buffer. From there the data is transmitted over Bluetooth to a connected device.
 | 
					    *  Writes to the Bluetooth UART service buffer. From there the data is transmitted over Bluetooth to a connected device.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    //% help=bluetooth/uart-write
 | 
					    //% help=bluetooth/uart-write-string weight=80
 | 
				
			||||||
    //% blockId=bluetooth_uart_write block="bluetooth uart write %data" blockGap=8
 | 
					    //% blockId=bluetooth_uart_write block="bluetooth uart|write string %data" blockGap=8
 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::uartWrite
 | 
					    //% parts="bluetooth" shim=bluetooth::uartWriteString advanced=true
 | 
				
			||||||
    export function uartWrite(data: string): void {
 | 
					    export function uartWriteString(data: string): void {
 | 
				
			||||||
        // dummy implementation for simulator
 | 
					        // dummy implementation for simulator
 | 
				
			||||||
        console.log("UART Write: " + data)
 | 
					        console.log("UART Write: " + data)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Prints a numeric value to the serial
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=bluetooth/uart-write-number weight=79
 | 
				
			||||||
 | 
					    //% weight=89 blockGap=8 advanced=true
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_uart_writenumber block="bluetooth uart|write number %value"
 | 
				
			||||||
 | 
					    export function uartWriteNumber(value: number): void {
 | 
				
			||||||
 | 
					        uartWriteString(value.toString());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Writes a ``name: value`` pair line to the serial.
 | 
				
			||||||
 | 
					     * @param name name of the value stream, eg: x
 | 
				
			||||||
 | 
					     * @param value to write
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% weight=88 weight=78
 | 
				
			||||||
 | 
					    //% help=bluetooth/uart-write-value advanced=true
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_uart_writevalue block="bluetooth uart|write value %name|= %value"
 | 
				
			||||||
 | 
					    export function uartWriteValue(name: string, value: number): void {
 | 
				
			||||||
 | 
					        uartWriteString(name + ":" + value + "\r\n");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     *  Reads from the Bluetooth UART service buffer, returning its contents when the specified delimiter character is encountered.
 | 
					     *  Reads from the Bluetooth UART service buffer, returning its contents when the specified delimiter character is encountered.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=bluetooth/uart-read
 | 
					    //% help=bluetooth/uart-read-until weight=75
 | 
				
			||||||
    //% blockId=bluetooth_uart_read block="bluetooth uart read %del=bluetooth_uart_delimiter_conv" blockGap=8
 | 
					    //% blockId=bluetooth_uart_read block="bluetooth uart|read until %del=serial_delimiter_conv"
 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::uartRead
 | 
					    //% parts="bluetooth" shim=bluetooth::uartReadUntil advanced=true
 | 
				
			||||||
    export function uartRead(del: string): string {
 | 
					    export function uartReadUntil(del: string): string {
 | 
				
			||||||
        // dummy implementation for simulator
 | 
					        // dummy implementation for simulator
 | 
				
			||||||
        return "???"
 | 
					        return "???"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								libs/bluetooth/enums.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								libs/bluetooth/enums.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,20 +1,4 @@
 | 
				
			|||||||
// Auto-generated. Do not edit.
 | 
					// Auto-generated. Do not edit.
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    declare enum Delimiters {
 | 
					 | 
				
			||||||
    //% block="new line"
 | 
					 | 
				
			||||||
    NewLine = 1,
 | 
					 | 
				
			||||||
    //% block=","
 | 
					 | 
				
			||||||
    Comma = 2,
 | 
					 | 
				
			||||||
    //% block="$"
 | 
					 | 
				
			||||||
    Dollar = 3,
 | 
					 | 
				
			||||||
    //% block=":"
 | 
					 | 
				
			||||||
    Colon = 4,
 | 
					 | 
				
			||||||
    //% block="."
 | 
					 | 
				
			||||||
    Fullstop = 5,
 | 
					 | 
				
			||||||
    //% block="#"
 | 
					 | 
				
			||||||
    Hash = 6,
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
declare namespace bluetooth {
 | 
					declare namespace bluetooth {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										74
									
								
								libs/bluetooth/shims.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								libs/bluetooth/shims.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -7,44 +7,12 @@
 | 
				
			|||||||
    //% color=#0082FB weight=20
 | 
					    //% color=#0082FB weight=20
 | 
				
			||||||
declare namespace bluetooth {
 | 
					declare namespace bluetooth {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     *  Starts the Bluetooth IO pin service.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    //% help=bluetooth/start-io-pin-service
 | 
					 | 
				
			||||||
    //% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
 | 
					 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startIOPinService
 | 
					 | 
				
			||||||
    function startIOPinService(): void;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     *  Starts the Bluetooth LED service
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    //% help=bluetooth/start-led-service
 | 
					 | 
				
			||||||
    //% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
 | 
					 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startLEDService
 | 
					 | 
				
			||||||
    function startLEDService(): void;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     *  Starts the Bluetooth temperature service
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    //% help=bluetooth/start-temperature-service
 | 
					 | 
				
			||||||
    //% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
 | 
					 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startTemperatureService
 | 
					 | 
				
			||||||
    function startTemperatureService(): void;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     *  Starts the Bluetooth magnetometer service
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    //% help=bluetooth/start-magnetometer-service
 | 
					 | 
				
			||||||
    //% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8
 | 
					 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startMagnetometerService
 | 
					 | 
				
			||||||
    function startMagnetometerService(): void;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     *  Starts the Bluetooth accelerometer service
 | 
					     *  Starts the Bluetooth accelerometer service
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=bluetooth/start-accelerometer-service
 | 
					    //% help=bluetooth/start-accelerometer-service
 | 
				
			||||||
    //% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8
 | 
					    //% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service"
 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startAccelerometerService
 | 
					    //% parts="bluetooth" weight=90 blockGap=8 shim=bluetooth::startAccelerometerService
 | 
				
			||||||
    function startAccelerometerService(): void;
 | 
					    function startAccelerometerService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -52,15 +20,47 @@ declare namespace bluetooth {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=bluetooth/start-button-service
 | 
					    //% help=bluetooth/start-button-service
 | 
				
			||||||
    //% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
 | 
					    //% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8
 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startButtonService
 | 
					    //% parts="bluetooth" weight=89 shim=bluetooth::startButtonService
 | 
				
			||||||
    function startButtonService(): void;
 | 
					    function startButtonService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *  Starts the Bluetooth IO pin service.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=bluetooth/start-io-pin-service
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="bluetooth" weight=88 shim=bluetooth::startIOPinService
 | 
				
			||||||
 | 
					    function startIOPinService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *  Starts the Bluetooth LED service
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=bluetooth/start-led-service
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_start_led_service block="bluetooth led service" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="bluetooth" weight=87 shim=bluetooth::startLEDService
 | 
				
			||||||
 | 
					    function startLEDService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *  Starts the Bluetooth temperature service
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=bluetooth/start-temperature-service
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8
 | 
				
			||||||
 | 
					    //% parts="bluetooth" weight=86 shim=bluetooth::startTemperatureService
 | 
				
			||||||
 | 
					    function startTemperatureService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *  Starts the Bluetooth magnetometer service
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=bluetooth/start-magnetometer-service
 | 
				
			||||||
 | 
					    //% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service"
 | 
				
			||||||
 | 
					    //% parts="bluetooth" weight=85 shim=bluetooth::startMagnetometerService
 | 
				
			||||||
 | 
					    function startMagnetometerService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     *  Starts the Bluetooth UART service
 | 
					     *  Starts the Bluetooth UART service
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=bluetooth/start-uart-service
 | 
					    //% help=bluetooth/start-uart-service
 | 
				
			||||||
    //% blockId=bluetooth_start_uart_service block="bluetooth uart service" blockGap=8
 | 
					    //% blockId=bluetooth_start_uart_service block="bluetooth uart service"
 | 
				
			||||||
    //% parts="bluetooth" shim=bluetooth::startUartService
 | 
					    //% parts="bluetooth" advanced=true shim=bluetooth::startUartService
 | 
				
			||||||
    function startUartService(): void;
 | 
					    function startUartService(): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								libs/core/enums.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								libs/core/enums.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -312,6 +312,22 @@ declare namespace motors {
 | 
				
			|||||||
    //% block=9600
 | 
					    //% block=9600
 | 
				
			||||||
    BaudRate9600 = 9600,
 | 
					    BaudRate9600 = 9600,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    declare enum Delimiters {
 | 
				
			||||||
 | 
					    //% block="new line"
 | 
				
			||||||
 | 
					    NewLine = 1,
 | 
				
			||||||
 | 
					    //% block=","
 | 
				
			||||||
 | 
					    Comma = 2,
 | 
				
			||||||
 | 
					    //% block="$"
 | 
				
			||||||
 | 
					    Dollar = 3,
 | 
				
			||||||
 | 
					    //% block=":"
 | 
				
			||||||
 | 
					    Colon = 4,
 | 
				
			||||||
 | 
					    //% block="."
 | 
				
			||||||
 | 
					    Fullstop = 5,
 | 
				
			||||||
 | 
					    //% block="#"
 | 
				
			||||||
 | 
					    Hash = 6,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
declare namespace serial {
 | 
					declare namespace serial {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
#include "ksbit.h"
 | 
					#include "ksbit.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum class SerialPin {
 | 
					enum SerialPin {
 | 
				
			||||||
    P0 = MICROBIT_ID_IO_P0,
 | 
					    P0 = MICROBIT_ID_IO_P0,
 | 
				
			||||||
    P1 = MICROBIT_ID_IO_P1,
 | 
					    P1 = MICROBIT_ID_IO_P1,
 | 
				
			||||||
    P2 = MICROBIT_ID_IO_P2,
 | 
					    P2 = MICROBIT_ID_IO_P2,
 | 
				
			||||||
@@ -12,36 +12,52 @@ enum class SerialPin {
 | 
				
			|||||||
    //P16 = MICROBIT_ID_IO_P16
 | 
					    //P16 = MICROBIT_ID_IO_P16
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum class BaudRate {
 | 
					enum BaudRate {
 | 
				
			||||||
  //% block=115200
 | 
					  //% block=115200
 | 
				
			||||||
  BaudRate115200 = 115200,
 | 
					  BaudRate115200 = 115200,
 | 
				
			||||||
  //% block=9600
 | 
					  //% block=9600
 | 
				
			||||||
  BaudRate9600 = 9600
 | 
					  BaudRate9600 = 9600
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum Delimiters {
 | 
				
			||||||
 | 
					    //% block="new line"
 | 
				
			||||||
 | 
					    NewLine = 1,
 | 
				
			||||||
 | 
					    //% block=","
 | 
				
			||||||
 | 
					    Comma = 2,
 | 
				
			||||||
 | 
					    //% block="$"
 | 
				
			||||||
 | 
					    Dollar = 3,
 | 
				
			||||||
 | 
					    //% block=":"
 | 
				
			||||||
 | 
					    Colon = 4,
 | 
				
			||||||
 | 
					    //% block="."
 | 
				
			||||||
 | 
					    Fullstop = 5,
 | 
				
			||||||
 | 
					    //% block="#"
 | 
				
			||||||
 | 
					    Hash = 6,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//% weight=2 color=30
 | 
					//% weight=2 color=30
 | 
				
			||||||
//% advanced=true
 | 
					//% advanced=true
 | 
				
			||||||
namespace serial {
 | 
					namespace serial {
 | 
				
			||||||
    // note that at least one // followed by % is needed per declaration!
 | 
					    // note that at least one // followed by % is needed per declaration!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Reads a line of text from the serial port.
 | 
					     * Reads a line of text from the serial port and returns the buffer when the delimiter is met.
 | 
				
			||||||
 | 
					     * @param delimiter text delimiter that separates each text chunk
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=serial/read-line
 | 
					    //% help=serial/read-until
 | 
				
			||||||
    //% blockId=serial_read_line block="serial read line"
 | 
					    //% blockId=serial_read_until block="serial|read until %delimiter=serial_delimiter_conv"
 | 
				
			||||||
    //% weight=20
 | 
					    //% weight=19
 | 
				
			||||||
    StringData* readLine() {
 | 
					    StringData* readUntil(StringData* delimiter) {
 | 
				
			||||||
      return uBit.serial.readUntil(ManagedString("\n")).leakData();
 | 
					      return uBit.serial.readUntil(ManagedString(delimiter)).leakData();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Sends a piece of text through Serial connection.
 | 
					     * Reads a line of text from the serial port.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=serial/write-string
 | 
					    //% help=serial/read-line
 | 
				
			||||||
    //% weight=87
 | 
					    //% blockId=serial_read_line block="serial|read line"
 | 
				
			||||||
    //% blockId=serial_writestring block="serial write string %text"
 | 
					    //% weight=20 blockGap=8
 | 
				
			||||||
    void writeString(StringData *text) {
 | 
					    StringData* readLine() {
 | 
				
			||||||
      uBit.serial.send(ManagedString(text));
 | 
					      return readUntil(ManagedString("\n").leakData());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -49,12 +65,22 @@ namespace serial {
 | 
				
			|||||||
    * @param delimiters the characters to match received characters against. eg:"\n"
 | 
					    * @param delimiters the characters to match received characters against. eg:"\n"
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    // help=serial/on-data-received
 | 
					    // help=serial/on-data-received
 | 
				
			||||||
    // weight=19
 | 
					    // weight=18
 | 
				
			||||||
    void onDataReceived(StringData* delimiters, Action body) {
 | 
					    void onDataReceived(StringData* delimiters, Action body) {
 | 
				
			||||||
      uBit.serial.eventOn(ManagedString(delimiters));
 | 
					      uBit.serial.eventOn(ManagedString(delimiters));
 | 
				
			||||||
      registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
 | 
					      registerWithDal(MICROBIT_ID_SERIAL, MICROBIT_SERIAL_EVT_DELIM_MATCH, body);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sends a piece of text through Serial connection.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=serial/write-string
 | 
				
			||||||
 | 
					    //% weight=87
 | 
				
			||||||
 | 
					    //% blockId=serial_writestring block="serial|write string %text"
 | 
				
			||||||
 | 
					    void writeString(StringData *text) {
 | 
				
			||||||
 | 
					      uBit.serial.send(ManagedString(text));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
    * Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
 | 
					    * Dynamically configuring the serial instance to use pins other than USBTX and USBRX.
 | 
				
			||||||
    * @param tx the new transmission pins
 | 
					    * @param tx the new transmission pins
 | 
				
			||||||
@@ -63,7 +89,7 @@ namespace serial {
 | 
				
			|||||||
    */
 | 
					    */
 | 
				
			||||||
    //% weight=10
 | 
					    //% weight=10
 | 
				
			||||||
    //% help=serial/redirect-to
 | 
					    //% help=serial/redirect-to
 | 
				
			||||||
    //% blockId=serial_redirect block="serial redirect to|TX %tx|RX %rx|at baud rate %rate"
 | 
					    //% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
 | 
				
			||||||
    //% blockExternalInputs=1
 | 
					    //% blockExternalInputs=1
 | 
				
			||||||
    void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
 | 
					    void redirect(SerialPin tx, SerialPin rx, BaudRate rate) {
 | 
				
			||||||
      uBit.serial.redirect((PinName)tx, (PinName)rx);
 | 
					      uBit.serial.redirect((PinName)tx, (PinName)rx);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,4 +46,24 @@ namespace serial {
 | 
				
			|||||||
    export function onLineReceived(body: Action): void {
 | 
					    export function onLineReceived(body: Action): void {
 | 
				
			||||||
       // serial.onDataReceived("\n", body);
 | 
					       // serial.onDataReceived("\n", body);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns the delimiter corresponding string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% blockId="serial_delimiter_conv" block="%del"
 | 
				
			||||||
 | 
					    //% weight=1
 | 
				
			||||||
 | 
					    export function delimiters(del: Delimiters): string {
 | 
				
			||||||
 | 
					        // even though it might not look like, this is more
 | 
				
			||||||
 | 
					        // (memory) efficient than the C++ implementation, because the
 | 
				
			||||||
 | 
					        // strings are statically allocated and take no RAM 
 | 
				
			||||||
 | 
					        switch (del) {
 | 
				
			||||||
 | 
					            case Delimiters.NewLine: return "\n"
 | 
				
			||||||
 | 
					            case Delimiters.Comma: return ","
 | 
				
			||||||
 | 
					            case Delimiters.Dollar: return "$"
 | 
				
			||||||
 | 
					            case Delimiters.Colon: return ":"
 | 
				
			||||||
 | 
					            case Delimiters.Fullstop: return "."
 | 
				
			||||||
 | 
					            case Delimiters.Hash: return "#"
 | 
				
			||||||
 | 
					            default: return "\n"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								libs/core/shims.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -671,12 +671,21 @@ declare namespace pins {
 | 
				
			|||||||
    //% advanced=true
 | 
					    //% advanced=true
 | 
				
			||||||
declare namespace serial {
 | 
					declare namespace serial {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Reads a line of text from the serial port and returns the buffer when the delimiter is met.
 | 
				
			||||||
 | 
					     * @param delimiter text delimiter that separates each text chunk
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    //% help=serial/read-until
 | 
				
			||||||
 | 
					    //% blockId=serial_read_until block="serial|read until %delimiter=serial_delimiter_conv"
 | 
				
			||||||
 | 
					    //% weight=19 shim=serial::readUntil
 | 
				
			||||||
 | 
					    function readUntil(delimiter: string): string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Reads a line of text from the serial port.
 | 
					     * Reads a line of text from the serial port.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=serial/read-line
 | 
					    //% help=serial/read-line
 | 
				
			||||||
    //% blockId=serial_read_line block="serial read line"
 | 
					    //% blockId=serial_read_line block="serial|read line"
 | 
				
			||||||
    //% weight=20 shim=serial::readLine
 | 
					    //% weight=20 blockGap=8 shim=serial::readLine
 | 
				
			||||||
    function readLine(): string;
 | 
					    function readLine(): string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -684,7 +693,7 @@ declare namespace serial {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    //% help=serial/write-string
 | 
					    //% help=serial/write-string
 | 
				
			||||||
    //% weight=87
 | 
					    //% weight=87
 | 
				
			||||||
    //% blockId=serial_writestring block="serial write string %text" shim=serial::writeString
 | 
					    //% blockId=serial_writestring block="serial|write string %text" shim=serial::writeString
 | 
				
			||||||
    function writeString(text: string): void;
 | 
					    function writeString(text: string): void;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -695,7 +704,7 @@ declare namespace serial {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    //% weight=10
 | 
					    //% weight=10
 | 
				
			||||||
    //% help=serial/redirect-to
 | 
					    //% help=serial/redirect-to
 | 
				
			||||||
    //% blockId=serial_redirect block="serial redirect to|TX %tx|RX %rx|at baud rate %rate"
 | 
					    //% blockId=serial_redirect block="serial|redirect to|TX %tx|RX %rx|at baud rate %rate"
 | 
				
			||||||
    //% blockExternalInputs=1 shim=serial::redirect
 | 
					    //% blockExternalInputs=1 shim=serial::redirect
 | 
				
			||||||
    function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
 | 
					    function redirect(tx: SerialPin, rx: SerialPin, rate: BaudRate): void;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "pxt-calliope",
 | 
					  "name": "pxt-calliope",
 | 
				
			||||||
  "version": "0.5.22",
 | 
					  "version": "0.5.24",
 | 
				
			||||||
  "description": "calliope target for PXT",
 | 
					  "description": "calliope target for PXT",
 | 
				
			||||||
  "keywords": [
 | 
					  "keywords": [
 | 
				
			||||||
    "JavaScript",
 | 
					    "JavaScript",
 | 
				
			||||||
@@ -29,6 +29,6 @@
 | 
				
			|||||||
    "typescript": "^1.8.7"
 | 
					    "typescript": "^1.8.7"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "pxt-core": "0.4.62"
 | 
					    "pxt-core": "0.4.65"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,6 +80,13 @@
 | 
				
			|||||||
                    "microbit-pins": "",
 | 
					                    "microbit-pins": "",
 | 
				
			||||||
                    "microbit-serial": ""
 | 
					                    "microbit-serial": ""
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            }, 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "type": "api",
 | 
				
			||||||
 | 
					                "map": {
 | 
				
			||||||
 | 
					                    "bluetooth\\.uartRead\\((.*?)\\)" : "bluetooth.uartReadUntil($1)",
 | 
				
			||||||
 | 
					                    "bluetooth\\.uartWrite\\((.*?)\\)" : "bluetooth.uartWriteUntil($1)"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -168,7 +168,7 @@ namespace pxsim.bluetooth {
 | 
				
			|||||||
    export function uartWrite(s : string): void {
 | 
					    export function uartWrite(s : string): void {
 | 
				
			||||||
        // TODO
 | 
					        // TODO
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    export function uartRead(): string {
 | 
					    export function uartReadUntil(del: string): string {
 | 
				
			||||||
        // TODO
 | 
					        // TODO
 | 
				
			||||||
        return ""
 | 
					        return ""
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,6 +43,10 @@ namespace pxsim.serial {
 | 
				
			|||||||
        return board().serialState.readSerial();
 | 
					        return board().serialState.readSerial();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    export function readUntil(del: string): string {
 | 
				
			||||||
 | 
					        return readLine();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    export function onDataReceived(delimiters: string, handler: RefAction) {
 | 
					    export function onDataReceived(delimiters: string, handler: RefAction) {
 | 
				
			||||||
        let b = board();
 | 
					        let b = board();
 | 
				
			||||||
        b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);
 | 
					        b.bus.listen(DAL.MICROBIT_ID_SERIAL, DAL.MICROBIT_SERIAL_EVT_DELIM_MATCH, handler);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user