Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions js/flightlog_fielddefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -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([
Expand Down
116 changes: 116 additions & 0 deletions js/flightlog_fields_presenter.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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;
Expand All @@ -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',
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
Copy link
Member

@ctzsnooze ctzsnooze Dec 2, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Later, perhaps in a different PR, we can set the display value and units for values in these debugs.

}
return value.toFixed(0);
}
Expand Down
185 changes: 176 additions & 9 deletions js/graph_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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?)
Expand All @@ -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
Expand Down