From 31e6234f64c78120a70c244467ab444373b67068 Mon Sep 17 00:00:00 2001 From: Mark Haslinghuis Date: Sun, 3 Dec 2023 13:10:48 +0100 Subject: [PATCH] Add missing debugs (#671) * Add missing debugs * Add more debug --- js/flightlog_fielddefs.js | 11 ++ js/flightlog_fields_presenter.js | 116 +++++++++++++++++++ js/graph_config.js | 185 +++++++++++++++++++++++++++++-- 3 files changed, 303 insertions(+), 9 deletions(-) diff --git a/js/flightlog_fielddefs.js b/js/flightlog_fielddefs.js index 57b0b998..4328affd 100644 --- a/js/flightlog_fielddefs.js +++ b/js/flightlog_fielddefs.js @@ -346,9 +346,20 @@ let "GPS_RESCUE_VELOCITY", "GPS_RESCUE_HEADING", "GPS_RESCUE_TRACKING", + "GPS_CONNECTION", "ATTITUDE", "VTX_MSP", "GPS_DOP", + "FAILSAFE", + "GYRO_CALIBRATION", + "ANGLE_MODE", + "ANGLE_TARGET", + "CURRENT_ANGLE", + "DSHOT_TELEMETRY_COUNTS", + "RPM_LIMIT", + "RC_STATS", + "MAG_CALIB", + "MAG_TASK_RATE", ]), SUPER_EXPO_YAW = makeReadOnly([ diff --git a/js/flightlog_fields_presenter.js b/js/flightlog_fields_presenter.js index 57ab645e..bbc755c0 100644 --- a/js/flightlog_fields_presenter.js +++ b/js/flightlog_fields_presenter.js @@ -990,6 +990,17 @@ function FlightLogFieldPresenter() { 'debug[6]':'Not Used', 'debug[7]':'Not Used', }, + 'GPS_CONNECTION' : { + 'debug[all]':'GPS Connection', + 'debug[0]':'Nav Model', + 'debug[1]':'GPS Nav interval', + 'debug[2]':'Task timer', + 'debug[3]':'Baud Rate / FC interval', + 'debug[4]':'State*100 +SubState', + 'debug[5]':'ExecuteTime', + 'debug[6]':'Ack State', + 'debug[7]':'Rx buffer size', + }, 'ATTITUDE' : { 'debug[all]':'Attitude', 'debug[0]':'accADC X', @@ -1023,6 +1034,83 @@ function FlightLogFieldPresenter() { 'debug[6]':'Not Used', 'debug[7]':'Not Used', }, + 'FAILSAFE' : { + 'debug[all]': 'Failsafe', + 'debug[0]': 'Failsafe Phase switch', + 'debug[1]': 'Failsafe State', + 'debug[2]': 'Receiving data from Rx', + 'debug[3]': 'Failsafe Phase', + }, + 'GYRO_CALIBRATION' : { + 'debug[all]': 'Gyro Calibration', + 'debug[0]': 'Gyro Calibration X', + 'debug[1]': 'Gyro Calibration Y', + 'debug[2]': 'Gyro Calibration Z', + 'debug[3]': 'Calibration Cycles remaining', + }, + 'ANGLE_MODE' : { + 'debug[all]': 'Angle Mode', + 'debug[0]': 'Angle Target', + 'debug[1]': 'Angle Error', + 'debug[2]': 'Angle Feedforward', + 'debug[3]': 'Angle Current', + }, + 'ANGLE_TARGET' : { + 'debug[all]': 'Angle Target', + 'debug[0]': 'Angle Target', + 'debug[1]': 'Sin Angle', + 'debug[2]': 'Current PID Setpoint', + 'debug[3]': 'Angle Current', + }, + 'CURRENT_ANGLE' : { + 'debug[all]': 'Current Angle', + 'debug[0]': 'Current Angle X', + 'debug[1]': 'Current Angle Y', + 'debug[2]': 'Current Angle Z', + }, + 'DSHOT_TELEMETRY_COUNTS' : { + 'debug[all]': 'DShot Telemetry Counts', + 'debug[0]': 'DShot Telemetry Debug[0] + 1', + 'debug[1]': 'DShot Telemetry Debug[1] + 1', + 'debug[2]': 'DShot Telemetry Debug[2] + 1', + 'debug[3]': 'Preamble Skip', + }, + 'RPM_LIMIT' : { + 'debug[all]': 'RPM Limit', + 'debug[0]': 'Average RPM', + 'debug[1]': 'Average RPM (unsmoothed)', + 'debug[2]': 'RPM Limit throttle scale', + 'debug[3]': 'Throttle', + 'debug[4]': 'Error', + 'debug[5]': 'Proportional', + 'debug[6]': 'Integral', + 'debug[7]': 'Derivative', + }, + 'RC_STATS' : { + 'debug[all]': 'RC Stats', + 'debug[0]': 'Average Throttle', + }, + 'MAG_CALIB' : { + 'debug[all]': 'Mag Calibration', + 'debug[0]': 'Mag X', + 'debug[1]': 'Mag Y', + 'debug[2]': 'Mag Z', + 'debug[3]': 'Field Strength', + 'debug[4]': 'Estimated Mag Bias X', + 'debug[5]': 'Estimated Mag Bias Y', + 'debug[6]': 'Estimated Mag Bias Z', + 'debug[7]': 'Lambda', + }, + 'MAG_TASK_RATE' : { + 'debug[all]': 'Mag Task Rate', + 'debug[0]': 'Task Rate (Hz)', + 'debug[1]': 'Actual Data Rate (Hz)', + 'debug[2]': 'Data Interval (Us)', + 'debug[3]': 'Execute Time (Us)', + 'debug[4]': 'Bus Busy', + 'debug[5]': 'Read State', + 'debug[6]': 'Task Time (Us)', + }, }; let DEBUG_FRIENDLY_FIELD_NAMES = null; @@ -1032,6 +1120,7 @@ function FlightLogFieldPresenter() { DEBUG_FRIENDLY_FIELD_NAMES = {...DEBUG_FRIENDLY_FIELD_NAMES_INITIAL}; if (firmwareType === FIRMWARE_TYPE_BETAFLIGHT) { + if (semver.gte(firmwareVersion, '4.4.0')) { DEBUG_FRIENDLY_FIELD_NAMES.BARO = { 'debug[all]':'Debug Barometer', @@ -1724,6 +1813,21 @@ function FlightLogFieldPresenter() { default: return value.toFixed(0); } + case 'GPS__CONNECTION': + switch (fieldName) { + case 'debug[0]': // Flight model + case 'debug[1]': // GPS Nav packet interval + case 'debug[2]': // FC Nav data time + return value.toFixed(0); + case 'debug[3]': // Baud Rate / Nav interval + return (value * 100).toFixed(0); + case 'debug[4]': // main state * 100 + subState + case 'debug[5]': // executeTimeUs + case 'debug[6]': // ack state + case 'debug[7]': // serial Rx buffer + default: + return value.toFixed(0); + } case 'ATTITUDE': switch (fieldName) { case 'debug[0]': // accADC X @@ -1752,6 +1856,18 @@ function FlightLogFieldPresenter() { default: return (value / 100).toFixed(2); } + case 'FAILSAFE': + return value.toFixed(0); + case 'GYRO_CALIBRATION': + return value.toFixed(0); + case 'ANGLE_MODE': + return value.toFixed(0); + case 'ANGLE_TARGET': + return value.toFixed(0); + case 'CURRENT_ANGLE': + return value.toFixed(0); + case 'DSHOT_TELEMETRY_COUNTS': + return value.toFixed(0); } return value.toFixed(0); } diff --git a/js/graph_config.js b/js/graph_config.js index bbf10042..40460a5f 100644 --- a/js/graph_config.js +++ b/js/graph_config.js @@ -904,6 +904,50 @@ GraphConfig.load = function(config) { default: return getCurveForMinMaxFields(fieldName); } + case 'GPS_CONNECTION': + switch (fieldName) { + case 'debug[0]': // GPS flight model + case 'debug[1]': // Nav Data interval + return { + offset: 0, + power: 1.0, + inputRange: 200, + outputRange: 1.0, + }; + case 'debug[2]': // task interval + return { + offset: 0, + power: 1.0, + inputRange: 200, + outputRange: 1.0, + }; + case 'debug[3]': // Baud rate / resolved packet interval + case 'debug[4]': // State*100 + SubState + return getCurveForMinMaxFields(fieldName); + case 'debug[5]': // ExecuteTimeUs + return { + offset: 0, + power: 1.0, + inputRange: 100, + outputRange: 1.0, + }; + case 'debug[6]': // ackState + return { + offset: 0, + power: 1.0, + inputRange: 10, + outputRange: 1.0, + }; + case 'debug[7]': // Incoming buffer + return { + offset: 0, + power: 1.0, + inputRange: 100, + outputRange: 1.0, + }; + default: + return getCurveForMinMaxFields(fieldName); + } case 'ALTITUDE': switch (fieldName) { case 'debug[0]': // GPS Trust @@ -931,6 +975,27 @@ GraphConfig.load = function(config) { default: return getCurveForMinMaxFields(fieldName); } + case 'BARO': + switch (fieldName) { + case 'debug[0]': // Baro state 0-10 + return { + offset: 0, + power: 1.0, + inputRange: 20, + outputRange: 1.0, + }; + case 'debug[1]': // Baro Temp + case 'debug[2]': // Baro Raw + case 'debug[3]': // Baro smoothed + return { + offset: 0, + power: 1.0, + inputRange: 2000, + outputRange: 1.0, + }; + default: + return getCurveForMinMaxFields(fieldName); + } case 'GPS_DOP': switch (fieldName) { case 'debug[0]': // Number of Satellites (now this is in normal GPS data, maybe gpsTrust?) @@ -946,29 +1011,131 @@ GraphConfig.load = function(config) { default: return getCurveForMinMaxFields(fieldName); } - - case 'BARO': + case 'FAILSAFE': switch (fieldName) { - case 'debug[0]': // Baro state 0-10 + case 'debug[0]': + case 'debug[1]': + case 'debug[2]': + case 'debug[3]': return { offset: 0, power: 1.0, - inputRange: 20, + inputRange: 200, outputRange: 1.0, }; - case 'debug[1]': // Baro Temp - case 'debug[2]': // Baro Raw - case 'debug[3]': // Baro smoothed + default: + return getCurveForMinMaxFields(fieldName); + } + case 'ANGLE_MODE': + switch (fieldName) { + case 'debug[0]': // angle target + case 'debug[3]': // angle achieved + return { + offset: 0, + power: 1.0, + inputRange: 1000, + outputRange: 1.0, + }; + case 'debug[1]': // angle error correction + case 'debug[2]': // angle feedforward + return { + offset: 0, + power: 1.0, + inputRange: 5000, + outputRange: 1.0, + }; + default: + return getCurveForMinMaxFields(fieldName); + } + case 'DSHOT_TELEMETRY_COUNTS': + switch (fieldName) { + case 'debug[0]': + case 'debug[1]': + case 'debug[2]': + case 'debug[3]': + return { + offset: 0, + power: 1.0, + inputRange: 200, + outputRange: 1.0, + }; + default: + return getCurveForMinMaxFields(fieldName); + } + case 'MAG_CALIB': + switch (fieldName) { + case 'debug[0]': // X + case 'debug[1]': // Y + case 'debug[2]': // Z + case 'debug[3]': // Field + return { + offset: 0, + power: 1.0, + inputRange: 2000, + outputRange: 1.0, + }; + case 'debug[4]': // X Cal + case 'debug[5]': // Y Cal + case 'debug[6]': // Z Cal return { offset: 0, power: 1.0, + inputRange: 500, + outputRange: 1.0, + }; + case 'debug[7]': // Lambda + return { + offset: -2000, + power: 1.0, inputRange: 2000, outputRange: 1.0, }; default: return getCurveForMinMaxFields(fieldName); - } - } + } + case 'MAG_TASK_RATE': + switch (fieldName) { + case 'debug[0]': // Task Rate + case 'debug[1]': // Data Rate + return { + offset: 0, + power: 1.0, + inputRange: 1000, + outputRange: 1.0, + }; + case 'debug[2]': // Data Interval + return { + offset: 0, + power: 1.0, + inputRange: 10000, + outputRange: 1.0, + }; + case 'debug[3]': // Execute Time + return { + offset: 0, + power: 1.0, + inputRange: 20, + outputRange: 1.0, + }; + case 'debug[4]': // Bus Busy Check + case 'debug[5]': // Read State Check + return { + offset: 0, + power: 1.0, + inputRange: 2, + outputRange: 1.0, + }; + case 'debug[6]': // Time since previous task uS + return { + offset: 0, + power: 1.0, + inputRange: 10000, + outputRange: 1.0, + }; + default: + return getCurveForMinMaxFields(fieldName); + } + } } // if not found above then // Scale and center the field based on the whole-log observed ranges for that field