Use definitions for op codes to make message sequence state easy to follow.

This commit is contained in:
Michael Dietz
2016-02-18 13:45:54 +01:00
parent b871bbae08
commit b5e1dbe7c7

27
dist/dfu.js vendored
View File

@@ -280,7 +280,7 @@
.then(() => { .then(() => {
controlChar.addEventListener('characteristicvaluechanged', handleControl); controlChar.addEventListener('characteristicvaluechanged', handleControl);
log("sending imagetype: " + imageType); log("sending imagetype: " + imageType);
return controlChar.writeValue(new Uint8Array([1, imageType])); return controlChar.writeValue(new Uint8Array([OPCODE.START_DFU, imageType]));
}) })
.then(() => { .then(() => {
log("sent start"); log("sent start");
@@ -295,11 +295,10 @@
view.setUint32(4, bootLength, LITTLE_ENDIAN); view.setUint32(4, bootLength, LITTLE_ENDIAN);
view.setUint32(8, appLength, LITTLE_ENDIAN); view.setUint32(8, appLength, LITTLE_ENDIAN);
// Set firmware length
return packetChar.writeValue(view); return packetChar.writeValue(view);
}) })
.then(() => { .then(() => {
log("sent buffer size: " + arrayBuffer.byteLength); log("sent image size: " + arrayBuffer.byteLength);
}) })
.catch(error => { .catch(error => {
error = "start error: " + error; error = "start error: " + error;
@@ -317,7 +316,7 @@
if (opCode === OPCODE.RESPONSE_CODE) { if (opCode === OPCODE.RESPONSE_CODE) {
if (resp_code !== 1) { if (resp_code !== 1) {
var err = "error from control: " + resp_code; var err = "error from control point notification, resp_code: " + resp_code;
log(err); log(err);
return reject(err); return reject(err);
} }
@@ -330,15 +329,15 @@
break; break;
} }
controlChar.writeValue(new Uint8Array([2,0])) controlChar.writeValue(new Uint8Array([OPCODE.INITIALIZE_DFU_PARAMETERS, 0]))
.then(() => { .then(() => {
return packetChar.writeValue(generateInitPacket()); return packetChar.writeValue(generateInitPacket());
}) })
.then(() => { .then(() => {
return controlChar.writeValue(new Uint8Array([2,1])); return controlChar.writeValue(new Uint8Array([OPCODE.INITIALIZE_DFU_PARAMETERS, 1]));
}) })
.catch(error => { .catch(error => {
error = "error writing init: " + error; error = "error writing dfu init parameters: " + error;
log(error); log(error);
reject(error); reject(error);
}); });
@@ -348,13 +347,13 @@
var buffer = new ArrayBuffer(3); var buffer = new ArrayBuffer(3);
view = new DataView(buffer); view = new DataView(buffer);
view.setUint8(0, 8); view.setUint8(0, OPCODE.PACKET_RECEIPT_NOTIFICATION_REQUEST);
view.setUint16(1, interval, LITTLE_ENDIAN); view.setUint16(1, interval, LITTLE_ENDIAN);
controlChar.writeValue(view) controlChar.writeValue(view)
.then(() => { .then(() => {
log("sent packet count: " + interval); log("sent packet count: " + interval);
return controlChar.writeValue(new Uint8Array([3])); return controlChar.writeValue(new Uint8Array([OPCODE.RECEIVE_FIRMWARE_IMAGE]));
}) })
.then(() => { .then(() => {
log("sent receive"); log("sent receive");
@@ -369,7 +368,7 @@
case OPCODE.RECEIVE_FIRMWARE_IMAGE: case OPCODE.RECEIVE_FIRMWARE_IMAGE:
log('check length'); log('check length');
controlChar.writeValue(new Uint8Array([7])) controlChar.writeValue(new Uint8Array([OPCODE.REPORT_RECEIVED_IMAGE_SIZE]))
.catch(error => { .catch(error => {
error = "error checking length: " + error; error = "error checking length: " + error;
log(error); log(error);
@@ -377,11 +376,11 @@
}); });
break; break;
case OPCODE.REPORT_RECEIVED_IMAGE_SIZE: case OPCODE.REPORT_RECEIVED_IMAGE_SIZE:
var byteCount = view.getUint32(3, LITTLE_ENDIAN); var bytesReceived = view.getUint32(3, LITTLE_ENDIAN);
log('length: ' + byteCount); log('length: ' + bytesReceived);
log('validate...'); log('validate...');
controlChar.writeValue(new Uint8Array([4])) controlChar.writeValue(new Uint8Array([OPCODE.VALIDATE_FIRMWARE]))
.catch(error => { .catch(error => {
error = "error validating: " + error; error = "error validating: " + error;
log(error); log(error);
@@ -396,7 +395,7 @@
resolve(); resolve();
}); });
*/ */
controlChar.writeValue(new Uint8Array([5])) controlChar.writeValue(new Uint8Array([OPCODE.ACTIVATE_IMAGE_AND_RESET]))
.then(() => { .then(() => {
log('image activated and dfu target reset'); log('image activated and dfu target reset');
resolve(); // TODO: Resolve in disconnect event handler when implemented in Web Bluetooth API. resolve(); // TODO: Resolve in disconnect event handler when implemented in Web Bluetooth API.