mirror of
https://github.com/thegecko/web-bluetooth-dfu.git
synced 2025-12-15 21:48:12 +08:00
Added an init packet which (for recent DFU OTA protocols) must transferred before the firmware image.
This commit is contained in:
15
dist/dfu.js
vendored
15
dist/dfu.js
vendored
@@ -132,6 +132,17 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains basic functionality for performing safety checks on software updates for nRF5 based devices.
|
||||||
|
* Init packet used for pre-checking to ensure the following image is compatible with the device.
|
||||||
|
* Contains information on device type, revision, and supported SoftDevices along with a CRC or hash of firmware image.
|
||||||
|
*
|
||||||
|
* Not used in mbed bootloader.
|
||||||
|
*/
|
||||||
|
function generateInitPacket() {
|
||||||
|
return new Uint8Array([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00]); // Temporary init packet.
|
||||||
|
}
|
||||||
|
|
||||||
function provision(device, arrayBuffer, imageType) {
|
function provision(device, arrayBuffer, imageType) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
log('function provision(device, arrayBuffer, imageType)');
|
log('function provision(device, arrayBuffer, imageType)');
|
||||||
@@ -289,11 +300,11 @@
|
|||||||
|
|
||||||
var req_opcode = view.getUint8(1);
|
var req_opcode = view.getUint8(1);
|
||||||
if (req_opcode === 1 && majorVersion > 6) {
|
if (req_opcode === 1 && majorVersion > 6) {
|
||||||
log('write null init packet');
|
log('write init packet');
|
||||||
|
|
||||||
controlChar.writeValue(new Uint8Array([2,0]))
|
controlChar.writeValue(new Uint8Array([2,0]))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return packetChar.writeValue(new Uint8Array([0]));
|
return packetChar.writeValue(generateInitPacket());
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return controlChar.writeValue(new Uint8Array([2,1]));
|
return controlChar.writeValue(new Uint8Array([2,1]));
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var urlMask = "//thegecko.github.io/web-bluetooth-dfu/firmware/NRF51822_{0}_Rob_OTA.hex";
|
var urlMask = "//thegecko.github.io/web-bluetooth-dfu/firmware/NRF51822_{0}_Rob_OTA.hex";
|
||||||
|
var urlMask52 = "https://raw.githubusercontent.com/mjdietzx/web-bluetooth-dfu/develop/firmware/ble_app_hrs_with_dfu_nrf52.hex";
|
||||||
var resultsEl = document.getElementById("results");
|
var resultsEl = document.getElementById("results");
|
||||||
|
|
||||||
function log(message) {
|
function log(message) {
|
||||||
@@ -35,7 +36,8 @@
|
|||||||
|
|
||||||
function transfer(device) {
|
function transfer(device) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
var url = urlMask.replace("{0}", device.name === "Hi_Rob" ? "Bye" : "Hi");
|
//var url = urlMask.replace("{0}", device.name === "Hi_Rob" ? "Bye" : "Hi");
|
||||||
|
var url = urlMask52; // nRF52832 application (example BLE heart rate from Nordic SDK) for DFU OTA update.
|
||||||
|
|
||||||
download(url)
|
download(url)
|
||||||
.then(hex => {
|
.then(hex => {
|
||||||
|
|||||||
Reference in New Issue
Block a user