WebBLE partial flashing experiment. (#1388)

* support for webble

* more refactoring

* updated check

* flags

* moving flashing to experiments

* always have pairing mode

* fix settings

* added experiment image

* bump pxt

* add missing types

* bump pxt
This commit is contained in:
Peli de Halleux
2018-10-12 16:12:27 -07:00
committed by GitHub
parent 57c89eb49b
commit 82bf0e7107
5 changed files with 29 additions and 28 deletions

View File

@ -531,31 +531,27 @@ namespace pxt.editor {
})
}
export function deployCoreAsync(resp: pxtc.CompileResult, d: pxt.commands.DeployOptions = {}): Promise<void> {
const saveHexAsync = () => {
return pxt.commands.saveOnlyAsync(resp);
};
return Promise.resolve()
.then(() => {
const isUwp = !!(window as any).Windows;
if (isUwp) {
// Go straight to flashing
function uwpDeployCoreAsync(resp: pxtc.CompileResult, d: pxt.commands.DeployOptions = {}): Promise<void> {
// Go straight to flashing
return flashAsync(resp, d);
}
function deployCoreAsync(resp: pxtc.CompileResult, d: pxt.commands.DeployOptions = {}): Promise<void> {
return pxt.usb.isPairedAsync()
.then(isPaired => {
if (isPaired) {
// Already paired from earlier in the session or from previous session
return flashAsync(resp, d);
}
if (!pxt.usb.isEnabled) {
return saveHexAsync();
}
return pxt.usb.isPairedAsync()
.then((isPaired) => {
if (isPaired) {
// Already paired from earlier in the session or from previous session
return flashAsync(resp, d);
}
// No device paired, prompt user
return saveHexAsync();
});
})
// try bluetooth if device is paired
if (pxt.webBluetooth.isPaired())
return pxt.webBluetooth.flashAsync(resp, d)
.catch(e => pxt.commands.saveOnlyAsync(resp));
// No device paired, prompt user
return pxt.commands.saveOnlyAsync(resp);
});
}
/**
@ -820,7 +816,10 @@ namespace pxt.editor {
subclassCode: 0x03
}])
if (canHID())
const isUwp = !!(window as any).Windows;
if (isUwp)
pxt.commands.deployCoreAsync = uwpDeployCoreAsync;
else if (canHID() || pxt.webBluetooth.hasPartialFlash())
pxt.commands.deployCoreAsync = deployCoreAsync;
res.blocklyPatch = patchBlocks;