mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-21 23:35:22 +03:00
Added firmware data collection.
This commit is contained in:
parent
da2206fb8a
commit
3451316bd2
2 changed files with 58 additions and 10 deletions
|
@ -26,6 +26,7 @@ var Analytics = function (trackingId, userId, appName, appVersion, buildType, op
|
|||
this.EVENT_CATEGORIES = {
|
||||
APPLICATION: 'Application',
|
||||
FLIGHT_CONTROLLER: 'FlightController',
|
||||
FIRMWARE: 'Firmware',
|
||||
};
|
||||
|
||||
this.DATA = {
|
||||
|
@ -34,6 +35,10 @@ var Analytics = function (trackingId, userId, appName, appVersion, buildType, op
|
|||
FIRMWARE_VERSION: 'firmwareVersion',
|
||||
API_VERSION: 'apiVersion',
|
||||
MCU_ID: 'mcuId',
|
||||
FIRMWARE_NAME: 'firmwareName',
|
||||
FIRMWARE_CHECKSUM: 'firmwareChecksum',
|
||||
FIRMWARE_CHANNEL: 'firmwareChannel',
|
||||
FIRMWARE_ERASE_ALL: 'firmwareEraseAll',
|
||||
};
|
||||
|
||||
this.DIMENSIONS = {
|
||||
|
@ -42,11 +47,15 @@ var Analytics = function (trackingId, userId, appName, appVersion, buildType, op
|
|||
FIRMWARE_TYPE: 3,
|
||||
FIRMWARE_VERSION: 4,
|
||||
API_VERSION: 5,
|
||||
FIRMWARE_NAME: 6,
|
||||
FIRMWARE_CHANNEL: 7,
|
||||
FIRMWARE_ERASE_ALL: 8,
|
||||
};
|
||||
|
||||
this.setDimension(this.DIMENSIONS.BUILD_TYPE, buildType);
|
||||
|
||||
this.resetFlightControllerData();
|
||||
this.resetFirmwareData();
|
||||
};
|
||||
|
||||
Analytics.prototype.setDimension = function (dimension, value) {
|
||||
|
@ -55,8 +64,7 @@ Analytics.prototype.setDimension = function (dimension, value) {
|
|||
}
|
||||
|
||||
Analytics.prototype.sendEvent = function (category, action, options) {
|
||||
options = options || {};
|
||||
options.eventLabel = options.eventLabel || this.flightControllerData[this.DATA.MCU_ID];
|
||||
// options.eventLabel = options.eventLabel || this._flightControllerData[this.DATA.MCU_ID];
|
||||
this._analytics.event(category, action, options);
|
||||
}
|
||||
|
||||
|
@ -88,20 +96,40 @@ Analytics.prototype.setOptOut = function (optOut) {
|
|||
}
|
||||
|
||||
Analytics.prototype._rebuildFlightControllerEvent = function () {
|
||||
this.setDimension(this.DIMENSIONS.BOARD_TYPE, this.flightControllerData[this.DATA.BOARD_TYPE]);
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_TYPE, this.flightControllerData[this.DATA.FIRMWARE_TYPE]);
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_VERSION, this.flightControllerData[this.DATA.FIRMWARE_VERSION]);
|
||||
this.setDimension(this.DIMENSIONS.API_VERSION, this.flightControllerData[this.DATA.API_VERSION]);
|
||||
this.setDimension(this.DIMENSIONS.BOARD_TYPE, this._flightControllerData[this.DATA.BOARD_TYPE]);
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_TYPE, this._flightControllerData[this.DATA.FIRMWARE_TYPE]);
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_VERSION, this._flightControllerData[this.DATA.FIRMWARE_VERSION]);
|
||||
this.setDimension(this.DIMENSIONS.API_VERSION, this._flightControllerData[this.DATA.API_VERSION]);
|
||||
this._analytics.set('eventLabel', this._flightControllerData[this.DATA.MCU_ID]);
|
||||
}
|
||||
|
||||
Analytics.prototype.setFlightControllerData = function (property, value) {
|
||||
this.flightControllerData[property] = value;
|
||||
this._flightControllerData[property] = value;
|
||||
|
||||
this._rebuildFlightControllerEvent();
|
||||
}
|
||||
|
||||
Analytics.prototype.resetFlightControllerData = function () {
|
||||
this.flightControllerData = {};
|
||||
this._flightControllerData = {};
|
||||
|
||||
this._rebuildFlightControllerEvent();
|
||||
}
|
||||
|
||||
Analytics.prototype._rebuildFirmwareEvent = function () {
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_NAME, this._firmwareData[this.DATA.FIRMWARE_NAME]);
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_CHANNEL, this._firmwareData[this.DATA.FIRMWARE_CHANNEL]);
|
||||
this.setDimension(this.DIMENSIONS.FIRMWARE_ERASE_ALL, this._firmwareData[this.DATA.FIRMWARE_ERASE_ALL]);
|
||||
this._analytics.set('eventLabel', this._firmwareData[this.DATA.FIRMWARE_CHECKSUM]);
|
||||
}
|
||||
|
||||
Analytics.prototype.setFirmwareData = function (property, value) {
|
||||
this._firmwareData[property] = value;
|
||||
|
||||
this._rebuildFirmwareEvent();
|
||||
}
|
||||
|
||||
Analytics.prototype.resetFirmwareData = function () {
|
||||
this._firmwareData = {};
|
||||
|
||||
this._rebuildFirmwareEvent();
|
||||
}
|
||||
|
|
|
@ -50,6 +50,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
function process_hex(data, summary) {
|
||||
intel_hex = data;
|
||||
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHECKSUM, objectHash.sha1(intel_hex));
|
||||
|
||||
parse_hex(intel_hex, function (data) {
|
||||
parsed_hex = data;
|
||||
|
||||
|
@ -323,6 +325,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
|
||||
// UI Hooks
|
||||
$('a.load_file').click(function () {
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHANNEL, 'file');
|
||||
|
||||
chrome.fileSystem.chooseEntry({type: 'openFile', accepts: [{description: 'HEX files', extensions: ['hex']}]}, function (fileEntry) {
|
||||
if (chrome.runtime.lastError) {
|
||||
console.error(chrome.runtime.lastError.message);
|
||||
|
@ -337,6 +341,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
console.log('Loading file from: ' + path);
|
||||
|
||||
fileEntry.file(function (file) {
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, file.name);
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onprogress = function (e) {
|
||||
|
@ -353,6 +358,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
|
||||
intel_hex = e.target.result;
|
||||
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHECKSUM, objectHash.sha1(intel_hex));
|
||||
|
||||
parse_hex(intel_hex, function (data) {
|
||||
parsed_hex = data;
|
||||
|
||||
|
@ -383,7 +390,10 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
let isCached = FirmwareCache.has(release);
|
||||
if (evt.target.value=="0" || isCached) {
|
||||
if (isCached) {
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHANNEL, 'cache');
|
||||
|
||||
FirmwareCache.get(release, cached => {
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, release.file);
|
||||
console.info("Release found in cache: " + release.file);
|
||||
onLoadSuccess(cached.hexdata, release);
|
||||
});
|
||||
|
@ -396,6 +406,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
});
|
||||
|
||||
$('a.load_remote_file').click(function (evt) {
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHANNEL, 'http');
|
||||
|
||||
if ($('select[name="firmware_version"]').val() == "0") {
|
||||
GUI.log(i18n.getMessage('firmwareFlasherNoFirmwareSelected'));
|
||||
|
@ -411,6 +422,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
|
||||
var summary = $('select[name="firmware_version"] option:selected').data('summary');
|
||||
if (summary) { // undefined while list is loading or while running offline
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, summary.file);
|
||||
$("a.load_remote_file").text(i18n.getMessage('firmwareFlasherButtonDownloading'));
|
||||
$("a.load_remote_file").addClass('disabled');
|
||||
$.get(summary.url, onLoadSuccess).fail(failed_to_load);
|
||||
|
@ -425,14 +437,17 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
if (parsed_hex != false) {
|
||||
var options = {};
|
||||
|
||||
var eraseAll = false;
|
||||
if ($('input.erase_chip').is(':checked')) {
|
||||
options.erase_chip = true;
|
||||
|
||||
eraseAll = true
|
||||
}
|
||||
analytics.setFirmwareData(analytics.DATA.FIRMWARE_ERASE_ALL, eraseAll.toString());
|
||||
|
||||
if (String($('div#port-picker #port').val()) != 'DFU') {
|
||||
if (String($('div#port-picker #port').val()) != '0') {
|
||||
var port = String($('div#port-picker #port').val()),
|
||||
baud;
|
||||
var port = String($('div#port-picker #port').val()), baud;
|
||||
baud = 115200;
|
||||
|
||||
if ($('input.updating').is(':checked')) {
|
||||
|
@ -445,6 +460,7 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
baud = parseInt($('#flash_manual_baud_rate').val());
|
||||
}
|
||||
|
||||
analytics.sendEvent(analytics.EVENT_CATEGORIES.FIRMWARE, 'Flashing');
|
||||
|
||||
STM32.connect(port, baud, parsed_hex, options);
|
||||
} else {
|
||||
|
@ -452,6 +468,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
|||
GUI.log(i18n.getMessage('firmwareFlasherNoValidPort'));
|
||||
}
|
||||
} else {
|
||||
analytics.sendEvent(analytics.EVENT_CATEGORIES.FIRMWARE, 'Flashing');
|
||||
|
||||
STM32DFU.connect(usbDevices.STM32DFU, parsed_hex, options);
|
||||
}
|
||||
} else {
|
||||
|
@ -639,5 +657,7 @@ TABS.firmware_flasher.cleanup = function (callback) {
|
|||
$(document).unbind('keypress');
|
||||
$(document).off('click', 'span.progressLabel a');
|
||||
|
||||
analytics.resetFirmwareData();
|
||||
|
||||
if (callback) callback();
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue