1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-25 17:25:14 +03:00

Merge branch 'master' into dzikuvx-pid-bank-11

This commit is contained in:
Pawel Spychalski (DzikuVx) 2020-03-05 11:45:44 +01:00
commit 6bd0d17022
402 changed files with 46136 additions and 12708 deletions

View file

@ -26,6 +26,14 @@ Depending on target operating system, _INAV Configurator_ is distributed as _sta
1. Run INAV Configurator app from unpacked folder 1. Run INAV Configurator app from unpacked folder
1. Configurator is not signed, so you have to allow Windows to run untrusted application. There might be a monit for it during first run 1. Configurator is not signed, so you have to allow Windows to run untrusted application. There might be a monit for it during first run
### Linux
1. Visit [release page](https://github.com/iNavFlight/inav-configurator/releases)
1. Download Configurator for Linux platform (linux32 and linux64 are present)
1. Extract tar.gz archive
1. Make the inav-configurator file executable (chmod +x inav-configurator)
1. Run INAV Configurator app from unpacked folder
### Mac ### Mac
1. Visit [release page](https://github.com/iNavFlight/inav-configurator/releases) 1. Visit [release page](https://github.com/iNavFlight/inav-configurator/releases)
@ -46,7 +54,7 @@ For local development, **node.js** build system is used.
1. From project folder run `npm install` 1. From project folder run `npm install`
1. To build the JS and CSS files and start the configurator: 1. To build the JS and CSS files and start the configurator:
- With NW.js: Run `npm start`. - With NW.js: Run `npm start`.
- With Chrome: Run `./node_modules/gulp/bin/gulp.js`. Then open `chrome://extensions`, enable - With Chrome: Run `npm run gulp`. Then open `chrome://extensions`, enable
the `Developer mode`, click on the `Load unpacked extension...` button and select the `inav-configurator` directory. the `Developer mode`, click on the `Load unpacked extension...` button and select the `inav-configurator` directory.
Other tasks are also defined in `gulpfile.js`. To run a task, use `./node_modules/gulp/bin/gulp.js task-name`. Available ones are: Other tasks are also defined in `gulpfile.js`. To run a task, use `./node_modules/gulp/bin/gulp.js task-name`. Available ones are:

View file

@ -101,7 +101,7 @@
"tabGPS": { "tabGPS": {
"message": "GPS" "message": "GPS"
}, },
"tabMotorTesting": { "tabOutputs": {
"message": "Outputs" "message": "Outputs"
}, },
"tabLedStrip": { "tabLedStrip": {
@ -505,7 +505,7 @@
"message": "In-flight level calibration" "message": "In-flight level calibration"
}, },
"featureMOTOR_STOP": { "featureMOTOR_STOP": {
"message": "Don't spin the motors when armed" "message": "Stop motors on low throttle"
}, },
"featureSERVO_TILT": { "featureSERVO_TILT": {
"message": "Servo gimbal" "message": "Servo gimbal"
@ -546,8 +546,8 @@
"featureCURRENT_METER": { "featureCURRENT_METER": {
"message": "Battery current monitoring" "message": "Battery current monitoring"
}, },
"feature3D": { "featureREVERSIBLE_MOTORS": {
"message": "3D mode (for use with reversible ESCs)" "message": "Reversible motors mode (for use with reversible ESCs)"
}, },
"featureRSSI_ADC": { "featureRSSI_ADC": {
"message": "Analog RSSI input" "message": "Analog RSSI input"
@ -636,11 +636,17 @@
"configurationEscFeatures": { "configurationEscFeatures": {
"message": "ESC/Motor Features" "message": "ESC/Motor Features"
}, },
"serialrx_inverted": {
"message": "Serial Port Inverted (comparing to protocol default)"
},
"serialrx_halfduplex" : {
"message": "Serial receiver half-duplex"
},
"configurationFeaturesHelp": { "configurationFeaturesHelp": {
"message": "<strong>Note:</strong> Not all combinations of features are valid. When the flight controller firmware detects invalid feature combinations conflicting features will be disabled.<br /><strong>Note:</strong> Configure serial ports <span style=\"color: red\">before</span> enabling the features that will use the ports." "message": "<strong>Note:</strong> Not all combinations of features are valid. When the flight controller firmware detects invalid feature combinations conflicting features will be disabled.<br /><strong>Note:</strong> Configure serial ports <span style=\"color: red\">before</span> enabling the features that will use the ports."
}, },
"configurationSerialRXHelp": { "configurationSerialRXHelp": {
"message": "<strong>Note:</strong> Remember to configure a Serial Port (via Ports tab) and choose a Serial Receiver Provider when using RX_SERIAL feature." "message": "<strong>Note:</strong> Remember to configure a Serial Port (via Ports tab) for the serial receiver"
}, },
"configurationBoardAlignment": { "configurationBoardAlignment": {
"message": "Board and Sensor Alignment" "message": "Board and Sensor Alignment"
@ -654,12 +660,6 @@
"configurationBoardAlignmentYaw": { "configurationBoardAlignmentYaw": {
"message": "Yaw Degrees" "message": "Yaw Degrees"
}, },
"configurationSensorAlignmentGyro": {
"message": "GYRO Alignment"
},
"configurationSensorAlignmentAcc": {
"message": "ACCEL Alignment"
},
"configurationSensorAlignmentMag": { "configurationSensorAlignmentMag": {
"message": "MAG Alignment" "message": "MAG Alignment"
}, },
@ -757,19 +757,19 @@
"message": "Battery Capacity Unit" "message": "Battery Capacity Unit"
}, },
"configuration3d": { "configuration3d": {
"message": "3D" "message": "Reversible motors"
}, },
"configuration3dDeadbandLow": { "configuration3dDeadbandLow": {
"message": "3D Deadband Low" "message": "Reversible Motors Deadband Low"
}, },
"configuration3dDeadbandHigh": { "configuration3dDeadbandHigh": {
"message": "3D Deadband High" "message": "Reversible Motors Deadband High"
}, },
"configuration3dNeutral": { "configuration3dNeutral": {
"message": "3D Neutral" "message": "Reversible Motors Neutral"
}, },
"configuration3dDeadbandThrottle": { "configuration3dDeadbandThrottle": {
"message": "3D Deadband Throttle" "message": "Reversible Motors Deadband Throttle"
}, },
"configurationSystem": { "configurationSystem": {
"message": "System configuration" "message": "System configuration"
@ -795,6 +795,9 @@
"configurationGPSHelp": { "configurationGPSHelp": {
"message": "<strong>Note:</strong> Remember to configure a Serial Port (via Ports tab) when using GPS feature." "message": "<strong>Note:</strong> Remember to configure a Serial Port (via Ports tab) when using GPS feature."
}, },
"receiverType": {
"message": "Receiver type"
},
"configurationSerialRX": { "configurationSerialRX": {
"message": "Serial Receiver Provider" "message": "Serial Receiver Provider"
}, },
@ -927,6 +930,9 @@
"portsFunction_FRSKY_OSD": { "portsFunction_FRSKY_OSD": {
"message": "FrSky OSD" "message": "FrSky OSD"
}, },
"portsFunction_DJI_FPV": {
"message": "DJI FPV VTX"
},
"pidTuningName": { "pidTuningName": {
"message": "Name" "message": "Name"
}, },
@ -1940,9 +1946,6 @@
"warning": { "warning": {
"message": "Warning" "message": "Warning"
}, },
"boardLimitedFunctionality": {
"message": "Due to limited flash size, the board you have selected will have limited functionality, not all functions and features will be available. Hardware support map is available on <a href=\"https://github.com/iNavFlight/inav/wiki/Hardware-support-map\" target=\"_blank\">INAV Wiki pages</a>"
},
"escProtocol": { "escProtocol": {
"message": "ESC protocol" "message": "ESC protocol"
}, },
@ -1962,7 +1965,7 @@
"message" : "Servo has to support refresh rate. Change only if you know that servo supports it. Too high refresh rate might damage servos!" "message" : "Servo has to support refresh rate. Change only if you know that servo supports it. Too high refresh rate might damage servos!"
}, },
"logPwmOutputDisabled": { "logPwmOutputDisabled": {
"message" : "PWM output is disabled. Motors and servos will not work. Use <u>Configuration</u> tab to enable!" "message" : "PWM output is disabled. Motors and servos will not work. Use <u>Outputs</u> tab to enable!"
}, },
"configurationGyroSyncTitle": { "configurationGyroSyncTitle": {
"message" : "Synchronize looptime with gyroscope" "message" : "Synchronize looptime with gyroscope"
@ -2202,7 +2205,7 @@
"message": "Warning" "message": "Warning"
}, },
"presetApplyDescription": { "presetApplyDescription": {
"message": "Preset overwrites selected configuration values including mixer, filtering, PIDs and other. Settings like: flight modes, radio settings, failsafe and OSD are not changed. Applied values should <strong>NOT</strong> treated as final values, but entry points for final tuning. <br> Always check new configuration before flying!" "message": "<p style='color: darkred;'>Make sure that <strong>mixer</strong> was configured before applying any Presets!</p><p>Preset overwrites selected configuration values including mixer, filtering, PIDs and other. Settings like: flight modes, radio settings, failsafe and OSD are not changed. Applied values should <strong>NOT</strong> treated as final values, but entry points for final tuning. <br> Always check new configuration before flying!</p>"
}, },
"OK": { "OK": {
"message": "OK" "message": "OK"
@ -2963,6 +2966,9 @@
"input": { "input": {
"message": "Input" "message": "Input"
}, },
"fixedValue": {
"message": "Fixed Value (µs)"
},
"weight": { "weight": {
"message": "Weight (%)" "message": "Weight (%)"
}, },
@ -3167,11 +3173,47 @@
"gyro_lpf_type_help": { "gyro_lpf_type_help": {
"message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay." "message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay."
}, },
"gyro_stage2_lowpass_type": {
"message": "Gyro Stage 2 LPF type"
},
"gyro_stage2_lowpass_type_help": {
"message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay."
},
"dterm_lpf_type": {
"message": "D-term LPF type"
},
"dterm_lpf_type_help": {
"message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay."
},
"dterm_lpf2_type": {
"message": "D-term Stage 2 LPF type"
},
"dterm_lpf2_type_help": {
"message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay."
},
"dterm_lpf2_hz": {
"message": "D-term Stage 2 LPF cutoff frequency"
},
"dterm_lpf2_hz_help": {
"message": "Lowpass cutoff filter for D-term on ROLL and PITCH axises. 0 mean filter is disabled"
},
"tabFilteringAdvanced": { "tabFilteringAdvanced": {
"message": "Other filters" "message": "Other filters"
}, },
"mainFilters": { "mainFilters": {
"message": "Main filters" "message": "Gyro filters"
},
"rpmFilters": {
"message": "Gyro RPM filters"
},
"dtermFilters": {
"message": "D-term filters"
},
"rpm_gyro_filter_enabled": {
"message": "Gyro RPM filter (requires ESC telemetry)"
},
"rpm_gyro_min_hz": {
"message": "Gyro RPM filter min. frequency"
}, },
"acc_lpf_type": { "acc_lpf_type": {
"message": "Accelerometer LPF type" "message": "Accelerometer LPF type"
@ -3238,5 +3280,23 @@
}, },
"defaultsDialogInfo": { "defaultsDialogInfo": {
"message": "INAV Configurator would like to know which kind of UAV you are configuring. Based on this information it will modify some default values to unlock the best flying performance. " "message": "INAV Configurator would like to know which kind of UAV you are configuring. Based on this information it will modify some default values to unlock the best flying performance. "
},
"throttleIdle": {
"message": "Motors IDLE power [%]"
},
"throttleIdleDigitalInfo": {
"message": "For digital protocols, IDLE can be lowered even down to 5-7% without motors stopping in the air. If a drone wobbles after pulling throttle low, try increasing IDLE to tune this behavior out."
},
"throttleIdleAnalogInfo": {
"message": "For analog protocols, IDLE can be lowered below 10% if motors are working smooth without stuttering. If a drone wobbles after pulling throttle low, try increasing IDLE to tune this behavior out."
},
"motor_poles": {
"message": "Number of motor poles (number of magnets)"
},
"motorStopWarning": {
"message": "Should be enabled on Airplanes, Rovers and Boats. Should not be enabled on Multirotors! On Multirotors, when Airmode is active, motors will not stop."
},
"dynamic_gyro_notch_enabled_help": {
"message": "Matrix Gyro Filter is the new generation of dynamic gyro notches available in INAV. It is recommended to enable it on all Multirotor builds on F4 and F7 flight controllers."
} }
} }

View file

@ -108,6 +108,7 @@ sources.js = [
'./js/vtx.js', './js/vtx.js',
'./main.js', './main.js',
'./js/tabs.js', './js/tabs.js',
'./js/preset_definitions.js',
'./tabs/*.js', './tabs/*.js',
'./js/eventFrequencyAnalyzer.js', './js/eventFrequencyAnalyzer.js',
'./js/periodicStatusUpdater.js', './js/periodicStatusUpdater.js',

View file

@ -2,8 +2,8 @@
var CONFIGURATOR = { var CONFIGURATOR = {
// all versions are specified and compared using semantic versioning http://semver.org/ // all versions are specified and compared using semantic versioning http://semver.org/
'minfirmwareVersionAccepted': '2.2.0', 'minfirmwareVersionAccepted': '2.4.0',
'maxFirmwareVersionAccepted': '2.5.0', // COndition is < (lt) so we accept all in 2.2 branch, not 2.3 actualy 'maxFirmwareVersionAccepted': '2.6.0', // COndition is < (lt) so we accept all in 2.2 branch, not 2.3 actualy
'connectionValid': false, 'connectionValid': false,
'connectionValidCliOnly': false, 'connectionValidCliOnly': false,
'cliActive': false, 'cliActive': false,

View file

@ -43,6 +43,10 @@ helper.defaultsDialog = (function() {
}, },
{ {
key: "mc_iterm_relax_type", key: "mc_iterm_relax_type",
value: "SETPOINT"
},
{
key: "mc_iterm_relax",
value: "RP" value: "RP"
}, },
{ {

125
js/fc.js
View file

@ -30,7 +30,7 @@ var CONFIG,
ARMING_CONFIG, ARMING_CONFIG,
FC_CONFIG, FC_CONFIG,
MISC, MISC,
_3D, REVERSIBLE_MOTORS,
DATAFLASH, DATAFLASH,
SDCARD, SDCARD,
BLACKBOX, BLACKBOX,
@ -415,11 +415,11 @@ var FC = {
emergencyDescentRate: null emergencyDescentRate: null
}; };
_3D = { REVERSIBLE_MOTORS = {
deadband3d_low: 0, deadband_low: 0,
deadband3d_high: 0, deadband_high: 0,
neutral3d: 0, neutral: 0,
deadband3d_throttle: 0 deadband_throttle: 0
}; };
DATAFLASH = { DATAFLASH = {
@ -549,7 +549,7 @@ var FC = {
{bit: 7, group: 'gps', name: 'GPS', haveTip: true}, {bit: 7, group: 'gps', name: 'GPS', haveTip: true},
{bit: 10, group: 'other', name: 'TELEMETRY', showNameInTip: true}, {bit: 10, group: 'other', name: 'TELEMETRY', showNameInTip: true},
{bit: 11, group: 'batteryCurrent', name: 'CURRENT_METER'}, {bit: 11, group: 'batteryCurrent', name: 'CURRENT_METER'},
{bit: 12, group: 'other', name: '3D', showNameInTip: true}, {bit: 12, group: 'other', name: 'REVERSIBLE_MOTORS', showNameInTip: true},
{bit: 15, group: 'other', name: 'RSSI_ADC', haveTip: true, showNameInTip: true}, {bit: 15, group: 'other', name: 'RSSI_ADC', haveTip: true, showNameInTip: true},
{bit: 16, group: 'other', name: 'LED_STRIP', showNameInTip: true}, {bit: 16, group: 'other', name: 'LED_STRIP', showNameInTip: true},
{bit: 17, group: 'other', name: 'DASHBOARD', showNameInTip: true}, {bit: 17, group: 'other', name: 'DASHBOARD', showNameInTip: true},
@ -562,10 +562,13 @@ var FC = {
{bit: 30, group: 'other', name: 'FW_LAUNCH', haveTip: false, showNameInTip: false}, {bit: 30, group: 'other', name: 'FW_LAUNCH', haveTip: false, showNameInTip: false},
{bit: 2, group: 'other', name: 'TX_PROF_SEL', haveTip: false, showNameInTip: false}, {bit: 2, group: 'other', name: 'TX_PROF_SEL', haveTip: false, showNameInTip: false},
{bit: 0, group: 'other', name: 'THR_VBAT_COMP', haveTip: true, showNameInTip: true}, {bit: 0, group: 'other', name: 'THR_VBAT_COMP', haveTip: true, showNameInTip: true},
{bit: 3, group: 'other', name: 'BAT_PROFILE_AUTOSWITCH', haveTip: true, showNameInTip: true}, {bit: 3, group: 'other', name: 'BAT_PROFILE_AUTOSWITCH', haveTip: true, showNameInTip: true}
{bit: 5, group: 'other', name: 'DYNAMIC_FILTERS', haveTip: true, showNameInTip: true}
]; ];
if (semver.gte(CONFIG.flightControllerVersion, "2.4.0") && semver.lt(CONFIG.flightControllerVersion, "2.5.0")) {
features.push({bit: 5, group: 'other', name: 'DYNAMIC_FILTERS', haveTip: true, showNameInTip: true});
}
return features.reverse(); return features.reverse();
}, },
isFeatureEnabled: function (featureName, features) { isFeatureEnabled: function (featureName, features) {
@ -695,94 +698,6 @@ var FC = {
'Disabled' 'Disabled'
]; ];
}, },
getRxTypes: function() {
// Keep value field in sync with rxReceiverType_e in rx.h
var rxTypes = [
{
name: 'RX_SERIAL',
bit: 3,
value: 3,
},
{
name: 'RX_PPM',
bit: 0,
value: 2,
},
{
name: 'RX_PWM',
bit: 13,
value: 1,
},
];
if (semver.gte(CONFIG.apiVersion, "1.21.0")) {
rxTypes.push({
name: 'RX_SPI',
bit: 25,
value: 5,
});
}
rxTypes.push({
name: 'RX_MSP',
bit: 14,
value: 4,
});
// Versions using feature bits don't allow not having an
// RX and fallback to RX_PPM.
rxTypes.push({
name: 'RX_NONE',
value: 0,
});
return rxTypes;
},
isRxTypeEnabled: function(rxType) {
if (typeof rxType === 'string') {
var types = this.getRxTypes();
for (var ii = 0; ii < types.length; ii++) {
if (types[ii].name == rxType) {
rxType = types[ii];
break;
}
}
}
return RX_CONFIG.receiver_type == rxType.value;
},
setRxTypeEnabled: function(rxType) {
RX_CONFIG.receiver_type = rxType.value;
},
getSerialRxTypes: function () {
var data = [
'SPEKTRUM1024',
'SPEKTRUM2048',
'SBUS',
'SUMD',
'SUMH',
'XBUS_MODE_B',
'XBUS_MODE_B_RJ01',
'IBUS',
'JETI EXBUS',
'TBS Crossfire',
'FPort'
];
return data;
},
getSPIProtocolTypes: function () {
return [
'V202 250Kbps',
'V202 1Mbps',
'Syma X',
'Syma X5C',
'Cheerson CX10',
'Cheerson CX10A',
'JJRC H8_3D',
'iNav Reference protocol',
'eLeReS'
];
},
getSensorAlignments: function () { getSensorAlignments: function () {
return [ return [
'CW 0°', 'CW 0°',
@ -1077,7 +992,7 @@ var FC = {
]; ];
}, },
getServoMixInputName: function (input) { getServoMixInputName: function (input) {
return getServoMixInputNames()[input]; return this.getServoMixInputNames()[input];
}, },
getModeId: function (name) { getModeId: function (name) {
for (var i = 0; i < AUX_CONFIG.length; i++) { for (var i = 0; i < AUX_CONFIG.length; i++) {
@ -1090,7 +1005,7 @@ var FC = {
return bit_check(CONFIG.mode[Math.trunc(i / 32)], i % 32); return bit_check(CONFIG.mode[Math.trunc(i / 32)], i % 32);
}, },
isModeEnabled: function (name) { isModeEnabled: function (name) {
return FC.isModeBitSet(FC.getModeId(name)); return this.isModeBitSet(this.getModeId(name));
}, },
getLogicOperators: function () { getLogicOperators: function () {
return { return {
@ -1176,7 +1091,7 @@ var FC = {
0: "ARM timer [s]", 0: "ARM timer [s]",
1: "Home distance [m]", 1: "Home distance [m]",
2: "Trip distance [m]", 2: "Trip distance [m]",
3: "RSSI", 3: "RSSI",
4: "Vbat [deci-Volt] [1V = 10]", 4: "Vbat [deci-Volt] [1V = 10]",
5: "Cell voltage [deci-Volt] [1V = 10]", 5: "Cell voltage [deci-Volt] [1V = 10]",
6: "Current [centi-Amp] [1A = 100]", 6: "Current [centi-Amp] [1A = 100]",
@ -1190,7 +1105,15 @@ var FC = {
14: "Throttle position [%]", 14: "Throttle position [%]",
15: "Roll [deg]", 15: "Roll [deg]",
16: "Pitch [deg]", 16: "Pitch [deg]",
17: "Flight mode" 17: "Is Armed",
18: "Is Autolaunch",
19: "Is Controlling Altitude",
20: "Is Controlling Position",
21: "Is Emergency Landing",
22: "Is RTH",
23: "Is WP",
24: "Is Landing",
25: "Is Failsafe"
} }
}, },
3: { 3: {

View file

@ -28,7 +28,7 @@ var GUI_control = function () {
'logging', 'logging',
'onboard_logging', 'onboard_logging',
'modes', 'modes',
'motors', 'outputs',
'pid_tuning', 'pid_tuning',
'ports', 'ports',
'receiver', 'receiver',
@ -128,7 +128,7 @@ GUI_control.prototype.switchery = function() {
GUI_control.prototype.content_ready = function (callback) { GUI_control.prototype.content_ready = function (callback) {
const content = $('#content').removeClass('loading');
$('.togglesmall').each(function(index, elem) { $('.togglesmall').each(function(index, elem) {
var switchery = new Switchery(elem, { var switchery = new Switchery(elem, {
size: 'small', size: 'small',
@ -190,7 +190,13 @@ GUI_control.prototype.content_ready = function (callback) {
}); });
}); });
if (callback) callback(); const duration = content.data('empty') ? 0 : 400;
$('#content .data-loading').fadeOut(duration, function() {
$(this).remove();
});
if (callback) {
callback();
}
}; };
GUI_control.prototype.updateStatusBar = function() { GUI_control.prototype.updateStatusBar = function() {
@ -243,5 +249,15 @@ GUI_control.prototype.simpleBind = function () {
}); });
}; };
GUI_control.prototype.load = function(rel, callback) {
const content = $('#content').addClass('loading');
$.get(rel, function(data) {
$(data).appendTo(content);
if (callback) {
callback();
}
});
}
// initialize object into GUI variable // initialize object into GUI variable
var GUI = new GUI_control(); var GUI = new GUI_control();

View file

@ -101,4 +101,15 @@ DataView.prototype.readString = function() {
s += String.fromCharCode(c); s += String.fromCharCode(c);
} }
return s; return s;
}; };
DataView.prototype.asHex = function() {
let s = "";
for (let ii = 0; ii < this.byteLength; ii++) {
if (ii == this.offset) {
s += "/"
}
s += this.getUint8(ii).toString(16);
}
return s;
};

View file

@ -19,8 +19,12 @@ function localize() {
$('[data-i18n]:not(.i18n-replaced)').each(function() { $('[data-i18n]:not(.i18n-replaced)').each(function() {
var element = $(this); var element = $(this);
element.html(translate(element.data('i18n'))); const translated = translate(element.data('i18n'));
element.html(translated);
element.addClass('i18n-replaced'); element.addClass('i18n-replaced');
if (element.attr("title") !== "") {
element.attr("title", translated);
}
}); });
$('[i18n_title]:not(.i18n_title-replaced)').each(function() { $('[i18n_title]:not(.i18n_title-replaced)').each(function() {
@ -52,4 +56,4 @@ function localize() {
}); });
return localized; return localized;
} }

View file

@ -517,7 +517,53 @@ const mixerList = [
new ServoMixRule(3, INPUT_STABILIZED_YAW, 50, 0), new ServoMixRule(3, INPUT_STABILIZED_YAW, 50, 0),
new ServoMixRule(4, INPUT_STABILIZED_YAW, 50, 0), new ServoMixRule(4, INPUT_STABILIZED_YAW, 50, 0),
] ]
} },
{
id: 31,
name: 'Rover',
model: 'custom',
image: 'custom',
enabled: true,
legacy: false,
platform: PLATFORM_ROVER,
motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
],
servoMixer: [
new ServoMixRule(3, INPUT_STABILIZED_YAW, 100, 0),
]
},
{
id: 32,
name: 'Boat',
model: 'custom',
image: 'custom',
enabled: true,
legacy: false,
platform: PLATFORM_BOAT,
motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
],
servoMixer: [
new ServoMixRule(3, INPUT_STABILIZED_YAW, 100, 0),
]
}
,
{
id: 33,
name: 'Other',
model: 'custom',
image: 'custom',
enabled: true,
legacy: false,
platform: PLATFORM_OTHER,
motorMixer: [
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
],
servoMixer: [
new ServoMixRule(3, INPUT_STABILIZED_YAW, 100, 0),
]
}
]; ];
const platformList = [ const platformList = [
@ -548,19 +594,19 @@ const platformList = [
{ {
id: 4, id: 4,
name: "Rover", name: "Rover",
enabled: false, enabled: true,
flapsPossible: false flapsPossible: false
}, },
{ {
id: 5, id: 5,
name: "Boat", name: "Boat",
enabled: false, enabled: true,
flapsPossible: false flapsPossible: false
}, },
{ {
id: 6, id: 6,
name: "Other", name: "Other",
enabled: false, enabled: true,
flapsPossible: false flapsPossible: false
} }
]; ];

View file

@ -52,6 +52,7 @@ var mspHelper = (function (gui) {
'ESC': 18, 'ESC': 18,
'GSM_SMS': 19, 'GSM_SMS': 19,
'FRSKY_OSD': 20, 'FRSKY_OSD': 20,
'DJI_FPV': 21,
}; };
// Required for MSP_DEBUGMSG because console.log() doesn't allow omitting // Required for MSP_DEBUGMSG because console.log() doesn't allow omitting
@ -409,14 +410,14 @@ var mspHelper = (function (gui) {
BATTERY_CONFIG.battery_capacity_unit = (data.getUint8(offset++) ? 'mWh' : 'mAh'); BATTERY_CONFIG.battery_capacity_unit = (data.getUint8(offset++) ? 'mWh' : 'mAh');
break; break;
case MSPCodes.MSP_3D: case MSPCodes.MSP_3D:
_3D.deadband3d_low = data.getUint16(offset, true); REVERSIBLE_MOTORS.deadband_low = data.getUint16(offset, true);
offset += 2; offset += 2;
_3D.deadband3d_high = data.getUint16(offset, true); REVERSIBLE_MOTORS.deadband_high = data.getUint16(offset, true);
offset += 2; offset += 2;
_3D.neutral3d = data.getUint16(offset, true); REVERSIBLE_MOTORS.neutral = data.getUint16(offset, true);
if (semver.lt(CONFIG.apiVersion, "1.17.0")) { if (semver.lt(CONFIG.apiVersion, "1.17.0")) {
offset += 2; offset += 2;
_3D.deadband3d_throttle = data.getUint16(offset, true); REVERSIBLE_MOTORS.deadband_throttle = data.getUint16(offset, true);
} }
break; break;
case MSPCodes.MSP_MOTOR_PINS: case MSPCodes.MSP_MOTOR_PINS:
@ -586,7 +587,7 @@ var mspHelper = (function (gui) {
RC_deadband.yaw_deadband = data.getUint8(offset++); RC_deadband.yaw_deadband = data.getUint8(offset++);
RC_deadband.alt_hold_deadband = data.getUint8(offset++); RC_deadband.alt_hold_deadband = data.getUint8(offset++);
if (semver.gte(CONFIG.apiVersion, "1.24.0")) { if (semver.gte(CONFIG.apiVersion, "1.24.0")) {
_3D.deadband3d_throttle = data.getUint16(offset, true); REVERSIBLE_MOTORS.deadband_throttle = data.getUint16(offset, true);
} }
break; break;
case MSPCodes.MSP_SENSOR_ALIGNMENT: case MSPCodes.MSP_SENSOR_ALIGNMENT:
@ -1494,7 +1495,10 @@ var mspHelper = (function (gui) {
dataHandler.callbacks.splice(i, 1); dataHandler.callbacks.splice(i, 1);
// fire callback // fire callback
if (callback) callback({'command': dataHandler.code, 'data': data, 'length': dataHandler.message_length_expected}); if (callback) {
callback({'command': dataHandler.code, 'data': data, 'length': dataHandler.message_length_expected});
}
break;
} }
} }
} }
@ -1799,15 +1803,15 @@ var mspHelper = (function (gui) {
break; break;
case MSPCodes.MSP_SET_3D: case MSPCodes.MSP_SET_3D:
buffer.push(lowByte(_3D.deadband3d_low)); buffer.push(lowByte(REVERSIBLE_MOTORS.deadband_low));
buffer.push(highByte(_3D.deadband3d_low)); buffer.push(highByte(REVERSIBLE_MOTORS.deadband_low));
buffer.push(lowByte(_3D.deadband3d_high)); buffer.push(lowByte(REVERSIBLE_MOTORS.deadband_high));
buffer.push(highByte(_3D.deadband3d_high)); buffer.push(highByte(REVERSIBLE_MOTORS.deadband_high));
buffer.push(lowByte(_3D.neutral3d)); buffer.push(lowByte(REVERSIBLE_MOTORS.neutral));
buffer.push(highByte(_3D.neutral3d)); buffer.push(highByte(REVERSIBLE_MOTORS.neutral));
if (semver.lt(CONFIG.apiVersion, "1.17.0")) { if (semver.lt(CONFIG.apiVersion, "1.17.0")) {
buffer.push(lowByte(_3D.deadband3d_throttle)); buffer.push(lowByte(REVERSIBLE_MOTORS.deadband_throttle));
buffer.push(highByte(_3D.deadband3d_throttle)); buffer.push(highByte(REVERSIBLE_MOTORS.deadband_throttle));
} }
break; break;
@ -1816,8 +1820,8 @@ var mspHelper = (function (gui) {
buffer.push(RC_deadband.yaw_deadband); buffer.push(RC_deadband.yaw_deadband);
buffer.push(RC_deadband.alt_hold_deadband); buffer.push(RC_deadband.alt_hold_deadband);
if (semver.gte(CONFIG.apiVersion, "1.24.0")) { if (semver.gte(CONFIG.apiVersion, "1.24.0")) {
buffer.push(lowByte(_3D.deadband3d_throttle)); buffer.push(lowByte(REVERSIBLE_MOTORS.deadband_throttle));
buffer.push(highByte(_3D.deadband3d_throttle)); buffer.push(highByte(REVERSIBLE_MOTORS.deadband_throttle));
} }
break; break;

1408
js/preset_definitions.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -353,7 +353,6 @@ function onConnect() {
}, 100); }, 100);
helper.interval.add('global_data_refresh', helper.periodicStatusUpdater.run, helper.periodicStatusUpdater.getUpdateInterval(serial.bitrate), false); helper.interval.add('global_data_refresh', helper.periodicStatusUpdater.run, helper.periodicStatusUpdater.getUpdateInterval(serial.bitrate), false);
helper.defaultsDialog.init();
} }
function onClosed(result) { function onClosed(result) {

View file

@ -52,7 +52,15 @@ var Settings = (function () {
input.val(s.value); input.val(s.value);
} else if (s.setting.type == 'float') { } else if (s.setting.type == 'float') {
input.attr('type', 'number'); input.attr('type', 'number');
input.attr('step', "0.01");
let dataStep = input.data("step");
if (dataStep !== undefined) {
input.attr('step', dataStep);
} else {
input.attr('step', "0.01");
}
input.attr('min', s.setting.min); input.attr('min', s.setting.min);
input.attr('max', s.setting.max); input.attr('max', s.setting.max);
input.val(s.value.toFixed(2)); input.val(s.value.toFixed(2));

View file

@ -985,6 +985,14 @@ li.active .ic_mixer {
/* Cause the height to shrink to contain its floated contents while log is open */ /* Cause the height to shrink to contain its floated contents while log is open */
} }
#content.loading {
overflow-y: hidden;
}
#content.loading > * {
opacity: 0;
}
#status-bar { #status-bar {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
@ -1015,9 +1023,17 @@ li.active .ic_mixer {
} }
.data-loading { .data-loading {
z-index: 10000;
position: absolute;
top: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
background: url('../images/loading-bars.svg') no-repeat center 45%; background: url('../images/loading-bars.svg') no-repeat center 45%;
background-color: #FFF;
}
#content.loading .data-loading {
opacity: 1;
} }
.data-loading p { .data-loading p {
@ -2131,4 +2147,4 @@ select {
.subtab__content--current { .subtab__content--current {
display: block; display: block;
} }

View file

@ -185,8 +185,8 @@
<li class="tab_mixer"> <li class="tab_mixer">
<a href="#" data-i18n="tabMixer" class="tabicon ic_mixer" title="Mixer"></a> <a href="#" data-i18n="tabMixer" class="tabicon ic_mixer" title="Mixer"></a>
</li> </li>
<li class="tab_motors"> <li class="tab_outputs">
<a href="#" data-i18n="tabMotorTesting" class="tabicon ic_motor" title="Motors"></a> <a href="#" data-i18n="tabOutputs" class="tabicon ic_motor" title="Outputs"></a>
</li> </li>
<li class="tab_profiles"> <li class="tab_profiles">
<a href="#" data-i18n="tabPresets" class="tabicon ic_wizzard" title="Presets"></a> <a href="#" data-i18n="tabPresets" class="tabicon ic_wizzard" title="Presets"></a>
@ -302,4 +302,4 @@
</div> </div>
</body> </body>
</html> </html>

17
main.js
View file

@ -91,20 +91,10 @@ $(document).ready(function () {
} }
}); });
win.setMinimumSize(1024, 800); win.setMinimumSize(800, 600);
win.on('close', function () { win.on('close', function () {
//Save window size and position //Save window size and position
// var height = win.height;
// var width = win.width;
//
// if (height < 400) {
// height = 400
// }
// if (width < 512) {
// width = 512
// }
chrome.storage.local.set({'windowSize': {height: win.height, width: win.width, x: win.x, y: win.y}}, function () { chrome.storage.local.set({'windowSize': {height: win.height, width: win.width, x: win.x, y: win.y}}, function () {
// Notify that we saved. // Notify that we saved.
console.log('Settings saved'); console.log('Settings saved');
@ -171,6 +161,7 @@ $(document).ready(function () {
// detach listeners and remove element data // detach listeners and remove element data
var content = $('#content'); var content = $('#content');
content.data('empty', !!content.is(':empty'));
content.empty(); content.empty();
// display loading screen // display loading screen
@ -238,8 +229,8 @@ $(document).ready(function () {
case 'mixer': case 'mixer':
TABS.mixer.initialize(content_ready); TABS.mixer.initialize(content_ready);
break; break;
case 'motors': case 'outputs':
TABS.motors.initialize(content_ready); TABS.outputs.initialize(content_ready);
break; break;
case 'osd': case 'osd':
TABS.osd.initialize(content_ready); TABS.osd.initialize(content_ready);

View file

@ -1,7 +1,7 @@
{ {
"manifest_version": 2, "manifest_version": 2,
"minimum_chrome_version": "38", "minimum_chrome_version": "38",
"version": "2.3.2", "version": "2.5.0",
"author": "Several", "author": "Several",
"name": "INAV - Configurator", "name": "INAV - Configurator",
"short_name": "INAV", "short_name": "INAV",

2485
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,13 @@
{ {
"name": "inav-configurator", "name": "inav-configurator",
"description": "INAV Configurator", "description": "INAV Configurator",
"version": "2.3.2", "version": "2.5.0",
"main": "main.html", "main": "main.html",
"default_locale": "en", "default_locale": "en",
"scripts": { "scripts": {
"start": "node node_modules/gulp/bin/gulp.js build && node node_modules/nw/bin/nw ." "start": "node node_modules/gulp/bin/gulp.js build && node node_modules/nw/bin/nw .",
"gulp": "gulp",
"nw": "nw"
}, },
"window": { "window": {
"title": "INAV Configurator", "title": "INAV Configurator",
@ -33,7 +35,7 @@
"jquery-ui-npm": "1.12.0", "jquery-ui-npm": "1.12.0",
"marked": "^0.3.17", "marked": "^0.3.17",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"nw": "^0.39.3-sdk", "nw": "^0.42.2-sdk",
"nw-dialog": "^1.0.7", "nw-dialog": "^1.0.7",
"openlayers": "^4.6.5", "openlayers": "^4.6.5",
"temp": "^0.8.3", "temp": "^0.8.3",

View file

@ -4,7 +4,7 @@
FONT_VERSION = 1 FONT_VERSION = 1
FONTS = default vision impact clarity clarity_medium bold large FONTS = default vision impact impact_mini clarity clarity_medium bold large
CHARMAPS = $(addsuffix .mcm, $(FONTS)) CHARMAPS = $(addsuffix .mcm, $(FONTS))
PREVIEWS = $(addsuffix .png, $(FONTS)) PREVIEWS = $(addsuffix .png, $(FONTS))

BIN
resources/osd/bold/140.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 274 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 255 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

After

Width:  |  Height:  |  Size: 265 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 267 B

Before After
Before After

BIN
resources/osd/impact/024.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

After

Width:  |  Height:  |  Size: 265 B

Before After
Before After

BIN
resources/osd/impact/025.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 292 B

Before After
Before After

BIN
resources/osd/impact/026.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

After

Width:  |  Height:  |  Size: 290 B

Before After
Before After

BIN
resources/osd/impact/027.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 276 B

Before After
Before After

BIN
resources/osd/impact/028.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

After

Width:  |  Height:  |  Size: 242 B

Before After
Before After

BIN
resources/osd/impact/029.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

After

Width:  |  Height:  |  Size: 245 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 B

After

Width:  |  Height:  |  Size: 322 B

Before After
Before After

BIN
resources/osd/impact/034.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 264 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

After

Width:  |  Height:  |  Size: 254 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 250 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 219 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 217 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 210 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 264 B

Before After
Before After

BIN
resources/osd/impact/097.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 268 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 270 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 B

After

Width:  |  Height:  |  Size: 256 B

Before After
Before After

BIN
resources/osd/impact/100.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 259 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 247 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 268 B

Before After
Before After

BIN
resources/osd/impact/103.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

After

Width:  |  Height:  |  Size: 266 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

After

Width:  |  Height:  |  Size: 268 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 256 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 262 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

After

Width:  |  Height:  |  Size: 248 B

Before After
Before After

BIN
resources/osd/impact/108.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 267 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 240 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 272 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 260 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 244 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

After

Width:  |  Height:  |  Size: 262 B

Before After
Before After

BIN
resources/osd/impact/122.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 281 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 314 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 273 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 238 B

Before After
Before After

BIN
resources/osd/impact/154.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 B

After

Width:  |  Height:  |  Size: 236 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 275 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 273 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 327 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

After

Width:  |  Height:  |  Size: 279 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 265 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 235 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 243 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 B

After

Width:  |  Height:  |  Size: 294 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

After

Width:  |  Height:  |  Size: 261 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

After

Width:  |  Height:  |  Size: 280 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 257 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 268 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 270 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

After

Width:  |  Height:  |  Size: 225 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 244 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 243 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

After

Width:  |  Height:  |  Size: 252 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 314 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

After

Width:  |  Height:  |  Size: 281 B

Before After
Before After

BIN
resources/osd/impact/202-203.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 320 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

After

Width:  |  Height:  |  Size: 214 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 B

After

Width:  |  Height:  |  Size: 262 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 258 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 271 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 375 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

After

Width:  |  Height:  |  Size: 398 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 332 B

Before After
Before After

32769
resources/osd/impact_mini.mcm Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Some files were not shown because too many files have changed in this diff Show more