Skip to content

Commit 467b6cc

Browse files
authored
Fix sensors and battery cellcount (#4221)
1 parent 8826812 commit 467b6cc

File tree

5 files changed

+51
-36
lines changed

5 files changed

+51
-36
lines changed

src/components/quad-status/BatteryIcon.vue

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
</div>
1111
</template>
1212
<script>
13+
const NO_BATTERY_VOLTAGE_MAXIMUM = 1.8;
1314
export default {
1415
props: {
1516
voltage: {
@@ -28,14 +29,14 @@ export default {
2829
type: Number,
2930
default: 1,
3031
},
31-
vbatcellcount: {
32-
type: Number,
33-
default: 1,
34-
},
3532
},
3633
computed: {
3734
nbCells() {
38-
return this.voltage === 0 || this.vbatcellcount === 0 ? 1 : this.vbatcellcount;
35+
let nbCells = Math.floor(this.voltage / this.vbatmaxcellvoltage) + 1;
36+
if (this.voltage === 0) {
37+
nbCells = 1;
38+
}
39+
return nbCells;
3940
},
4041
min() {
4142
return this.vbatmincellvoltage * this.nbCells;
@@ -47,7 +48,7 @@ export default {
4748
return this.vbatwarningcellvoltage * this.nbCells;
4849
},
4950
isEmpty() {
50-
return this.voltage < this.min && !this.voltage.vbatcellcount;
51+
return this.voltage < this.min && this.voltage > NO_BATTERY_VOLTAGE_MAXIMUM;
5152
},
5253
classes() {
5354
if (this.batteryState) {

src/components/quad-status/BatteryLegend.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
</div>
55
</template>
66
<script>
7+
const NO_BATTERY_VOLTAGE_MAXIMUM = 1.8;
78
export default {
89
props: {
910
voltage: {
@@ -14,15 +15,14 @@ export default {
1415
type: Number,
1516
default: 1,
1617
},
17-
vbatcellcount: {
18-
type: Number,
19-
default: 1,
20-
},
2118
},
2219
computed: {
2320
reading() {
24-
const nbCells = this.voltage === 0 || this.vbatcellcount === 0 ? 1 : this.vbatcellcount;
25-
const cellsText = this.voltage && this.vbatcellcount ? `${nbCells}S` : "USB";
21+
let nbCells = Math.floor(this.voltage / this.vbatmaxcellvoltage) + 1;
22+
if (this.voltage === 0) {
23+
nbCells = 1;
24+
}
25+
const cellsText = this.voltage > NO_BATTERY_VOLTAGE_MAXIMUM ? `${nbCells}S` : "USB";
2626
return `${this.voltage.toFixed(2)}V (${cellsText})`;
2727
},
2828
},

src/index.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,11 @@
4242
:vbatmaxcellvoltage="FC.BATTERY_CONFIG.vbatmaxcellvoltage"
4343
:vbatwarningcellvoltage="FC.BATTERY_CONFIG.vbatwarningcellvoltage"
4444
:batteryState="FC.BATTERY_STATE?.batteryState"
45-
:vbatcellcount="FC.BATTERY_STATE?.cellCount"
4645
>
4746
</battery-icon>
4847
<battery-legend
4948
:voltage="FC.ANALOG.voltage"
5049
:vbatmaxcellvoltage="FC.BATTERY_CONFIG.vbatmaxcellvoltage"
51-
:vbatcellcount="FC.BATTERY_STATE?.cellCount"
5250
></battery-legend>
5351
<div class="bottomStatusIcons">
5452
<div class="armedicon cf_tip" i18n_title="mainHelpArmed"></div>

src/js/serial_backend.js

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -704,14 +704,19 @@ export function read_serial(info) {
704704
}
705705
}
706706

707-
async function update_live_status() {
707+
export async function update_sensor_status() {
708708
const statuswrapper = $('#quad-status_wrapper');
709709

710-
if (GUI.active_tab !== 'cli' && GUI.active_tab !== 'presets') {
711-
await MSP.promise(MSPCodes.MSP_ANALOG);
712-
await MSP.promise(MSPCodes.MSP_BATTERY_STATE);
710+
await MSP.promise(MSPCodes.MSP_ANALOG);
711+
await MSP.promise(MSPCodes.MSP_BATTERY_STATE);
712+
713+
if (FC.ANALOG !== undefined) {
714+
let nbCells = Math.floor(FC.ANALOG.voltage / FC.BATTERY_CONFIG.vbatmaxcellvoltage) + 1;
715+
716+
if (FC.ANALOG.voltage == 0) {
717+
nbCells = 1;
718+
}
713719

714-
const nbCells = FC.ANALOG.voltage === 0 || FC.BATTERY_STATE.cellCount === 0 ? 1 : FC.BATTERY_STATE.cellCount;
715720
const min = FC.BATTERY_CONFIG.vbatmincellvoltage * nbCells;
716721
const max = FC.BATTERY_CONFIG.vbatmaxcellvoltage * nbCells;
717722
const warn = FC.BATTERY_CONFIG.vbatwarningcellvoltage * nbCells;
@@ -729,29 +734,36 @@ async function update_live_status() {
729734
$(".battery-status").addClass('state-ok').removeClass('state-warning').removeClass('state-empty');
730735
}
731736
}
737+
}
732738

733-
await MSP.promise(MSPCodes.MSP_BOXNAMES);
734-
await MSP.promise(MSPCodes.MSP_STATUS_EX);
739+
await MSP.promise(MSPCodes.MSP_BOXNAMES);
740+
await MSP.promise(MSPCodes.MSP_STATUS_EX);
735741

736-
const active = (performance.now() - FC.ANALOG.last_received_timestamp) < 300;
737-
$(".linkicon").toggleClass('active', active);
742+
const active = (performance.now() - FC.ANALOG.last_received_timestamp) < 300;
743+
$(".linkicon").toggleClass('active', active);
738744

739-
for (let i = 0; i < FC.AUX_CONFIG.length; i++) {
740-
if (FC.AUX_CONFIG[i] === 'ARM') {
741-
$(".armedicon").toggleClass('active', bit_check(FC.CONFIG.mode, i));
742-
}
743-
if (FC.AUX_CONFIG[i] === 'FAILSAFE') {
744-
$(".failsafeicon").toggleClass('active', bit_check(FC.CONFIG.mode, i));
745-
}
745+
for (let i = 0; i < FC.AUX_CONFIG.length; i++) {
746+
if (FC.AUX_CONFIG[i] === 'ARM') {
747+
$(".armedicon").toggleClass('active', bit_check(FC.CONFIG.mode, i));
746748
}
747-
748-
if (have_sensor(FC.CONFIG.activeSensors, 'gps')) {
749-
await MSP.promise(MSPCodes.MSP_RAW_GPS);
749+
if (FC.AUX_CONFIG[i] === 'FAILSAFE') {
750+
$(".failsafeicon").toggleClass('active', bit_check(FC.CONFIG.mode, i));
750751
}
752+
}
753+
754+
if (have_sensor(FC.CONFIG.activeSensors, 'gps')) {
755+
await MSP.promise(MSPCodes.MSP_RAW_GPS);
756+
}
751757

752-
sensor_status(FC.CONFIG.activeSensors, FC.GPS_DATA.fix);
758+
sensor_status(FC.CONFIG.activeSensors, FC.GPS_DATA.fix);
753759

754-
statuswrapper.show();
760+
statuswrapper.show();
761+
}
762+
763+
async function update_live_status() {
764+
// cli or presets tab do not use MSP connection
765+
if (GUI.active_tab !== 'cli' && GUI.active_tab !== 'presets') {
766+
await update_sensor_status();
755767
}
756768
}
757769

@@ -792,7 +804,7 @@ export function reinitializeConnection(callback) {
792804
gui_log(i18n.getMessage('deviceReady'));
793805
}, 2000);
794806

795-
if (callback) {
807+
if (callback && typeof callback === 'function') {
796808
callback();
797809
}
798810
}

src/tabs/presets/presets.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import FC from '../../js/fc';
77
import CONFIGURATOR from '../../js/data_storage';
88
import $ from 'jquery';
99
import FileSystem from '../../js/FileSystem';
10+
import { update_sensor_status } from '../../js/serial_backend';
1011

1112
import { favoritePresets } from './FavoritePresets';
1213
import CliEngine from './CliEngine';
@@ -37,6 +38,9 @@ presets.initialize = function (callback) {
3738
if (GUI.active_tab !== 'presets') {
3839
GUI.active_tab = 'presets';
3940
}
41+
42+
// after applying presets, update sensor status
43+
update_sensor_status();
4044
};
4145

4246
presets.readDom = function() {

0 commit comments

Comments
 (0)