Skip to content
Closed
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
18 changes: 18 additions & 0 deletions locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -3130,6 +3130,12 @@
"motorsmAhDrawn": {
"message": "Amp. drawn:"
},
"motorsAmperageAverage5s": {
"message": "Amperage (5s avg):"
},
"motorsAmperageAverage10s": {
"message": "Amperage (10s avg):"
},
"motorsVoltageValue": {
"message": "$1 V"
},
Expand All @@ -3139,6 +3145,12 @@
"motorsmAhDrawnValue": {
"message": "$1 mAh"
},
"motorsAmperageAverage5sValue": {
"message": "$1 A"
},
"motorsAmperageAverage10sValue": {
"message": "$1 A"
},
"motorsText":{
"message": "Motors"
},
Expand Down Expand Up @@ -5333,6 +5345,12 @@
"powerBatteryAmperage": {
"message": "Amperage"
},
"powerBatteryAmperageAverage5s": {
"message": "Amperage (5s average)"
},
"powerBatteryAmperageAverage10s": {
"message": "Amperage (10s average)"
},
"powerBatteryCapacity": {
"message": "Capacity (mAh)"
},
Expand Down
18 changes: 18 additions & 0 deletions locales/zh_CN/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -2239,6 +2239,12 @@
"motorsmAhDrawn": {
"message": "已消耗电流:"
},
"motorsAmperageAverage5s": {
"message": "电流 (5秒平均):"
},
"motorsAmperageAverage10s": {
"message": "电流 (10秒平均):"
},
"motorsVoltageValue": {
"message": "$1 V"
},
Expand All @@ -2248,6 +2254,12 @@
"motorsmAhDrawnValue": {
"message": "$1 mAh"
},
"motorsAmperageAverage5sValue": {
"message": "$1 A"
},
"motorsAmperageAverage10sValue": {
"message": "$1 A"
},
"motorsText": {
"message": "电机"
},
Expand Down Expand Up @@ -4000,6 +4012,12 @@
"powerBatteryAmperage": {
"message": "电流"
},
"powerBatteryAmperageAverage5s": {
"message": "电流 (5秒平均)"
},
"powerBatteryAmperageAverage10s": {
"message": "电流 (10秒平均)"
},
"powerBatteryCapacity": {
"message": "容量 (mAh)"
},
Expand Down
37 changes: 37 additions & 0 deletions src/js/tabs/motors.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ const motors = {
sensorGyroScale: 2000,
sensorAccelRate: 20,
sensorAccelScale: 2,
amperageHistory5s: [], // Store last 5 seconds of amperage readings for average calculation
amperageHistorySize5s: 20, // Number of readings to keep for 5 seconds average (4Hz * 5s = 20)
Copy link

Copilot AI Oct 5, 2025

Choose a reason for hiding this comment

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

The motors tab uses a different update rate assumption (4Hz) than the power tab (5Hz). This inconsistency could lead to different averaging behavior between tabs. The update rates should be standardized or made configurable.

Copilot uses AI. Check for mistakes.
amperageHistory10s: [], // Store last 10 seconds of amperage readings for average calculation
amperageHistorySize10s: 40, // Number of readings to keep for 10 seconds average (4Hz * 10s = 40)
sensorSelectValues: {
gyroScale: {
1: 1,
Expand Down Expand Up @@ -77,6 +81,10 @@ motors.initialize = async function (callback) {
self.configHasChanged = false;
self.configChanges = {};

// Reset amperage history when initializing
self.amperageHistory5s = [];
self.amperageHistory10s = [];

// Update filtering defaults based on API version
const FILTER_DEFAULT = FC.getFilterDefaults();

Expand Down Expand Up @@ -463,6 +471,8 @@ motors.initialize = async function (callback) {
const motorVoltage = $(".motors-bat-voltage");
const motorMahDrawingElement = $(".motors-bat-mah-drawing");
const motorMahDrawnElement = $(".motors-bat-mah-drawn");
const motorAmperageAverage5sElement = $(".motors-bat-amperage-average-5s");
const motorAmperageAverage10sElement = $(".motors-bat-amperage-average-10s");

const rawDataTextElements = {
x: [],
Expand Down Expand Up @@ -639,6 +649,33 @@ motors.initialize = async function (callback) {
motorVoltage.text(i18n.getMessage("motorsVoltageValue", [FC.ANALOG.voltage]));
motorMahDrawingElement.text(i18n.getMessage("motorsADrawingValue", [FC.ANALOG.amperage.toFixed(2)]));
motorMahDrawnElement.text(i18n.getMessage("motorsmAhDrawnValue", [FC.ANALOG.mAhdrawn]));

// Calculate amperage averages
const currentAmperage = FC.ANALOG.amperage;

// 5 seconds average
TABS.motors.amperageHistory5s.push(currentAmperage);
if (TABS.motors.amperageHistory5s.length > TABS.motors.amperageHistorySize5s) {
TABS.motors.amperageHistory5s.shift();
}
const amperageSum5s = TABS.motors.amperageHistory5s.reduce((sum, value) => sum + value, 0);
const amperageAverage5s = amperageSum5s / TABS.motors.amperageHistory5s.length;

// 10 seconds average
TABS.motors.amperageHistory10s.push(currentAmperage);
if (TABS.motors.amperageHistory10s.length > TABS.motors.amperageHistorySize10s) {
TABS.motors.amperageHistory10s.shift();
}
const amperageSum10s = TABS.motors.amperageHistory10s.reduce((sum, value) => sum + value, 0);
const amperageAverage10s = amperageSum10s / TABS.motors.amperageHistory10s.length;

// Display average amperages
motorAmperageAverage5sElement.text(
i18n.getMessage("motorsAmperageAverage5sValue", [amperageAverage5s.toFixed(2)]),
);
motorAmperageAverage10sElement.text(
i18n.getMessage("motorsAmperageAverage10sValue", [amperageAverage10s.toFixed(2)]),
);
}
}

Expand Down
35 changes: 35 additions & 0 deletions src/js/tabs/power.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,19 @@ import { initializeModalDialog } from "../utils/initializeModalDialog";
const power = {
supported: false,
analyticsChanges: {},
amperageHistory5s: [], // Store last 5 seconds of amperage readings for average calculation
amperageHistorySize5s: 25, // Number of readings to keep for 5 seconds average (5Hz * 5s = 25)
amperageHistory10s: [], // Store last 10 seconds of amperage readings for average calculation
amperageHistorySize10s: 50, // Number of readings to keep for 10 seconds average (5Hz * 10s = 50)
Comment on lines +14 to +17
Copy link

Copilot AI Oct 5, 2025

Choose a reason for hiding this comment

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

The comment indicates 5Hz update rate but this assumption should be verified. If the actual update rate differs from 5Hz, the averaging windows will be incorrect. Consider making the update rate configurable or detecting it dynamically.

Suggested change
amperageHistory5s: [], // Store last 5 seconds of amperage readings for average calculation
amperageHistorySize5s: 25, // Number of readings to keep for 5 seconds average (5Hz * 5s = 25)
amperageHistory10s: [], // Store last 10 seconds of amperage readings for average calculation
amperageHistorySize10s: 50, // Number of readings to keep for 10 seconds average (5Hz * 10s = 50)
amperageUpdateRateHz: 5, // Default update rate in Hz; change if actual rate differs
amperageHistory5s: [], // Store last 5 seconds of amperage readings for average calculation
get amperageHistorySize5s() { return this.amperageUpdateRateHz * 5; }, // Number of readings for 5s average
amperageHistory10s: [], // Store last 10 seconds of amperage readings for average calculation
get amperageHistorySize10s() { return this.amperageUpdateRateHz * 10; }, // Number of readings for 10s average

Copilot uses AI. Check for mistakes.
};

power.initialize = function (callback) {
const self = this;

// Reset amperage history when initializing
self.amperageHistory5s = [];
self.amperageHistory10s = [];

if (GUI.active_tab != "power") {
GUI.active_tab = "power";
}
Expand Down Expand Up @@ -224,6 +232,8 @@ power.initialize = function (callback) {
$(elementBatteryState).find(".voltage").attr("id", "battery-voltage");
$(elementBatteryState).find(".mah-drawn").attr("id", "battery-mah-drawn");
$(elementBatteryState).find(".amperage").attr("id", "battery-amperage");
$(elementBatteryState).find(".amperage-average-5s").attr("id", "battery-amperage-average-5s");
$(elementBatteryState).find(".amperage-average-10s").attr("id", "battery-amperage-average-10s");

destinationBatteryState.append(elementBatteryState.children());

Expand Down Expand Up @@ -332,6 +342,31 @@ power.initialize = function (callback) {
elementMspBatteryState.text(i18n.getMessage("powerMahValue", [FC.BATTERY_STATE.mAhDrawn]));
elementMspBatteryState = $(`${elementPrefix}-amperage .value`);
elementMspBatteryState.text(i18n.getMessage("powerAmperageValue", [FC.BATTERY_STATE.amperage]));

// Calculate amperage averages
const currentAmperage = FC.BATTERY_STATE.amperage;

// 5 seconds average
self.amperageHistory5s.push(currentAmperage);
if (self.amperageHistory5s.length > self.amperageHistorySize5s) {
self.amperageHistory5s.shift();
}
const amperageSum5s = self.amperageHistory5s.reduce((sum, value) => sum + value, 0);
const amperageAverage5s = amperageSum5s / self.amperageHistory5s.length;

// 10 seconds average
self.amperageHistory10s.push(currentAmperage);
if (self.amperageHistory10s.length > self.amperageHistorySize10s) {
self.amperageHistory10s.shift();
}
const amperageSum10s = self.amperageHistory10s.reduce((sum, value) => sum + value, 0);
const amperageAverage10s = amperageSum10s / self.amperageHistory10s.length;

// Display average amperages
elementMspBatteryState = $(`${elementPrefix}-amperage-average-5s .value`);
elementMspBatteryState.text(i18n.getMessage("powerAmperageValue", [amperageAverage5s.toFixed(2)]));
elementMspBatteryState = $(`${elementPrefix}-amperage-average-10s .value`);
elementMspBatteryState.text(i18n.getMessage("powerAmperageValue", [amperageAverage10s.toFixed(2)]));
});
}

Expand Down
2 changes: 2 additions & 0 deletions src/tabs/motors.html
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,8 @@
<span i18n="motorsVoltage" class="power_text"></span><span class="motors-bat-voltage power_value"></span>
<span i18n="motorsADrawing" class="power_text"></span><span class="motors-bat-mah-drawing power_value"></span>
<span i18n="motorsmAhDrawn" class="power_text"></span><span class="motors-bat-mah-drawn power_value"></span>
<span i18n="motorsAmperageAverage5s" class="power_text"></span><span class="motors-bat-amperage-average-5s power_value"></span>
<span i18n="motorsAmperageAverage10s" class="power_text"></span><span class="motors-bat-amperage-average-10s power_value"></span>
</div>
</div>
<div class="motors">
Expand Down
8 changes: 8 additions & 0 deletions src/tabs/power.html
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,14 @@
<td i18n="powerBatteryAmperage"></td>
<td class="value"></td>
</tr>
<tr class="amperage-average-5s">
<td i18n="powerBatteryAmperageAverage5s"></td>
<td class="value"></td>
</tr>
<tr class="amperage-average-10s">
<td i18n="powerBatteryAmperageAverage10s"></td>
<td class="value"></td>
</tr>
</tbody>
</table>

Expand Down