Documentation for Bluetooth IO Pin service block.

Addition of event handler blocks for Bluetooth connection state changes.
This commit is contained in:
Martin Woolley 2016-06-20 08:39:51 +01:00
parent 1df118fa19
commit 22c03dfd7a
6 changed files with 93 additions and 13 deletions

View File

@ -0,0 +1,32 @@
# Bluetooth IO Pin Service
![](/static/bluetooth/Bluetooth_SIG.png)
The Bluetooth IO pin service makes it possible for another device such as a smartphone to communicate with other electronic 'things' connected to a micro:bit's edge connector. You could for example, use your smartphone to switch on or off a light which is connected to the micro:bit or your smartphone could receive data collected from a sensor connected to the micro:bit. In fact you could do both of these things at the same time since the Bluetooth IO pin service lets you interact with multiple 'pins' on the edge conector in different ways all at the same time.
No additional code is needed on the micro:bit to use the Bluetooth IO pin service from another device.
### Example: Starting the Bluetooth IO pin service
The following code shows the Bluetooth IO pin service being started:
~~~~blocks
bluetooth.startIOPinService();
~~~~
### Video - IO pin service demo starts at 3:49
[![micro:bit Bluetooth demo video](/static/bluetooth/microbit_pin_io.png)](
http://www.youtube.com/watch?v=aep_GVowKfs "Click to launch YouTube video"
)
### Advanced
For more advanced information on the micro:bit Bluetooth IO pin service including information on using a smartphone, see the [Lancaster University micro:bit runtime technical documentation](http://lancaster-university.github.io/microbit-docs/ble/iopin-service/)
### See also
[Bluetooth SIG](https://www.bluetooth.com)
[Bluetooth on micro:bit resources](http://bluetooth-mdw.blogspot.co.uk/p/bbc-microbit.html)

BIN
docs/static/bluetooth/Bluetooth_SIG.png vendored Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
docs/static/bluetooth/microbit_pin_io.png vendored Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

View File

@ -5,7 +5,7 @@ using namespace pxt;
//% color=#0082FB weight=20 //% color=#0082FB weight=20
namespace bluetooth { namespace bluetooth {
/** /**
* 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
@ -23,7 +23,7 @@ namespace bluetooth {
} }
/** /**
* Starts the temperature service * Starts the Bluetooth temperature service
*/ */
//% 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
@ -32,7 +32,7 @@ namespace bluetooth {
} }
/** /**
* Starts the 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" blockGap=8
@ -41,7 +41,7 @@ namespace bluetooth {
} }
/** /**
* Starts the 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" blockGap=8
@ -50,11 +50,33 @@ namespace bluetooth {
} }
/** /**
* Starts the button service * Starts the Bluetooth button service
*/ */
//% 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
void startButtonService() { void startButtonService() {
new MicroBitButtonService(*uBit.ble); new MicroBitButtonService(*uBit.ble);
} }
/**
* Register code to run when the micro:bit is connected to over Bluetooth
* @param body Code to run when a Bluetooth connection is established
*/
//% help=bluetooth/on-bluetooth-connected
//% blockId=bluetooth_on_connected block="on bluetooth connected"
void onBluetoothConnected(Action body) {
registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, body);
}
/**
* Register code to run when a bluetooth connection to the micro:bit is lost
* @param body Code to run when a Bluetooth connection is lost
*/
//% help=bluetooth/on-bluetooth-disconnected
//% blockId=bluetooth_on_disconnected block="on bluetooth disconnected"
void onBluetoothDisconnected(Action body) {
registerWithDal(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, body);
}
} }

View File

@ -15,8 +15,18 @@
"config": { "config": {
"microbit-dal": { "microbit-dal": {
"bluetooth": { "bluetooth": {
"enabled": 1 "enabled": 1,
} "pairing_mode": 1,
"private_addressing": 0,
"open": 0,
"whitelist": 1,
"advertising_timeout": 0,
"tx_power": 0,
"dfu_service": 1,
"event_service": 1,
"device_info_service": 1
},
"gatt_table_size": "0x700"
} }
} }
}, },

View File

@ -6,7 +6,7 @@
declare namespace bluetooth { declare namespace bluetooth {
/** /**
* 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 shim=bluetooth::startIOPinService //% blockId=bluetooth_start_io_pin_service block="bluetooth io pin service" blockGap=8 shim=bluetooth::startIOPinService
@ -20,32 +20,48 @@ declare namespace bluetooth {
function startLEDService(): void; function startLEDService(): void;
/** /**
* Starts the temperature service * Starts the Bluetooth temperature service
*/ */
//% help=bluetooth/start-temperature-service //% help=bluetooth/start-temperature-service
//% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8 shim=bluetooth::startTemperatureService //% blockId=bluetooth_start_temperature_service block="bluetooth temperature service" blockGap=8 shim=bluetooth::startTemperatureService
function startTemperatureService(): void; function startTemperatureService(): void;
/** /**
* Starts the 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 shim=bluetooth::startMagnetometerService //% blockId=bluetooth_start_magnetometer_service block="bluetooth magnetometer service" blockGap=8 shim=bluetooth::startMagnetometerService
function startMagnetometerService(): void; function startMagnetometerService(): void;
/** /**
* Starts the 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 shim=bluetooth::startAccelerometerService //% blockId=bluetooth_start_accelerometer_service block="bluetooth accelerometer service" blockGap=8 shim=bluetooth::startAccelerometerService
function startAccelerometerService(): void; function startAccelerometerService(): void;
/** /**
* Starts the button service * Starts the Bluetooth button service
*/ */
//% help=bluetooth/start-button-service //% help=bluetooth/start-button-service
//% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8 shim=bluetooth::startButtonService //% blockId=bluetooth_start_button_service block="bluetooth button service" blockGap=8 shim=bluetooth::startButtonService
function startButtonService(): void; function startButtonService(): void;
/**
* Register code to run when the micro:bit is connected to over Bluetooth
* @param body Code to run when a Bluetooth connection is established
*/
//% help=bluetooth/on-bluetooth-connected
//% blockId=bluetooth_on_connected block="on bluetooth connected" shim=bluetooth::onBluetoothConnected
function onBluetoothConnected(body: () => void): void;
/**
* Register code to run when a bluetooth connection to the micro:bit is lost
* @param body Code to run when a Bluetooth connection is lost
*/
//% help=bluetooth/on-bluetooth-disconnected
//% blockId=bluetooth_on_disconnected block="on bluetooth disconnected" shim=bluetooth::onBluetoothDisconnected
function onBluetoothDisconnected(body: () => void): void;
} }
// Auto-generated. Do not edit. Really. // Auto-generated. Do not edit. Really.