mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2024-12-25 07:22:33 -05:00
Adding reset and resetCallback to BLE and Boost extension only for now.
This commit is contained in:
parent
b88d5d05b0
commit
56fdd45242
2 changed files with 19 additions and 15 deletions
|
@ -678,7 +678,7 @@ class Boost {
|
||||||
*/
|
*/
|
||||||
this._pingDeviceId = null;
|
this._pingDeviceId = null;
|
||||||
|
|
||||||
this.disconnect = this.disconnect.bind(this);
|
this.reset = this.reset.bind(this);
|
||||||
this._onConnect = this._onConnect.bind(this);
|
this._onConnect = this._onConnect.bind(this);
|
||||||
this._onMessage = this._onMessage.bind(this);
|
this._onMessage = this._onMessage.bind(this);
|
||||||
this._pingDevice = this._pingDevice.bind(this);
|
this._pingDevice = this._pingDevice.bind(this);
|
||||||
|
@ -809,7 +809,7 @@ class Boost {
|
||||||
} commented out until feature is enabled in scratch-link */
|
} commented out until feature is enabled in scratch-link */
|
||||||
}],
|
}],
|
||||||
optionalServices: []
|
optionalServices: []
|
||||||
}, this._onConnect, this.disconnect);
|
}, this._onConnect, this.reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -826,6 +826,15 @@ class Boost {
|
||||||
* Disconnects from the current BLE socket.
|
* Disconnects from the current BLE socket.
|
||||||
*/
|
*/
|
||||||
disconnect () {
|
disconnect () {
|
||||||
|
if (this._ble) {
|
||||||
|
this._ble.disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset all the state and timeout/interval ids.
|
||||||
|
*/
|
||||||
|
reset () {
|
||||||
this._ports = [];
|
this._ports = [];
|
||||||
this._motors = [];
|
this._motors = [];
|
||||||
this._sensors = {
|
this._sensors = {
|
||||||
|
@ -835,10 +844,6 @@ class Boost {
|
||||||
previousColor: BoostColor.NONE
|
previousColor: BoostColor.NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this._ble) {
|
|
||||||
this._ble.disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._pingDeviceId) {
|
if (this._pingDeviceId) {
|
||||||
window.clearInterval(this._pingDeviceId);
|
window.clearInterval(this._pingDeviceId);
|
||||||
this._pingDeviceId = null;
|
this._pingDeviceId = null;
|
||||||
|
|
|
@ -9,9 +9,9 @@ class BLE extends JSONRPC {
|
||||||
* @param {string} extensionId - the id of the extension using this socket.
|
* @param {string} extensionId - the id of the extension using this socket.
|
||||||
* @param {object} peripheralOptions - the list of options for peripheral discovery.
|
* @param {object} peripheralOptions - the list of options for peripheral discovery.
|
||||||
* @param {object} connectCallback - a callback for connection.
|
* @param {object} connectCallback - a callback for connection.
|
||||||
* @param {object} disconnectCallback - a callback for disconnection.
|
* @param {object} resetCallback - a callback for resetting extension state.
|
||||||
*/
|
*/
|
||||||
constructor (runtime, extensionId, peripheralOptions, connectCallback, disconnectCallback = null) {
|
constructor (runtime, extensionId, peripheralOptions, connectCallback, resetCallback = null) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this._socket = runtime.getScratchLinkSocket('BLE');
|
this._socket = runtime.getScratchLinkSocket('BLE');
|
||||||
|
@ -26,7 +26,7 @@ class BLE extends JSONRPC {
|
||||||
this._connectCallback = connectCallback;
|
this._connectCallback = connectCallback;
|
||||||
this._connected = false;
|
this._connected = false;
|
||||||
this._characteristicDidChangeCallback = null;
|
this._characteristicDidChangeCallback = null;
|
||||||
this._disconnectCallback = disconnectCallback;
|
this._resetCallback = resetCallback;
|
||||||
this._discoverTimeoutID = null;
|
this._discoverTimeoutID = null;
|
||||||
this._extensionId = extensionId;
|
this._extensionId = extensionId;
|
||||||
this._peripheralOptions = peripheralOptions;
|
this._peripheralOptions = peripheralOptions;
|
||||||
|
@ -199,18 +199,17 @@ class BLE extends JSONRPC {
|
||||||
* - being powered down
|
* - being powered down
|
||||||
*
|
*
|
||||||
* Disconnect the socket, and if the extension using this socket has a
|
* Disconnect the socket, and if the extension using this socket has a
|
||||||
* disconnect callback, call it. Finally, emit an error to the runtime.
|
* reset callback, call it. Finally, emit an error to the runtime.
|
||||||
*/
|
*/
|
||||||
handleDisconnectError (/* e */) {
|
handleDisconnectError (/* e */) {
|
||||||
// log.error(`BLE error: ${JSON.stringify(e)}`);
|
// log.error(`BLE error: ${JSON.stringify(e)}`);
|
||||||
|
|
||||||
if (!this._connected) return;
|
if (!this._connected) return;
|
||||||
|
|
||||||
// TODO: Fix branching by splitting up cleanup/disconnect in extension
|
this.disconnect();
|
||||||
if (this._disconnectCallback) {
|
|
||||||
this._disconnectCallback(); // must call disconnect()
|
if (this._resetCallback) {
|
||||||
} else {
|
this._resetCallback();
|
||||||
this.disconnect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._runtime.emit(this._runtime.constructor.PERIPHERAL_CONNECTION_LOST_ERROR, {
|
this._runtime.emit(this._runtime.constructor.PERIPHERAL_CONNECTION_LOST_ERROR, {
|
||||||
|
|
Loading…
Reference in a new issue