1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-26 01:35:41 +03:00

4.4 work and minor bug fixes for afterburner

This commit is contained in:
skyfpv 2023-05-29 14:45:47 -06:00
parent 5b42e11157
commit 1ed1db4acc
9 changed files with 439 additions and 22 deletions

26
build.sh Normal file
View file

@ -0,0 +1,26 @@
#!/bin/bash
# Check if the input file was provided
if [ -z dos2unix "$1" ]; then
echo "Usage: $0 <input-file>"
exit 1
fi
# Convert line endings of the script file to LF
dos2unix "$0" >/dev/null 2>&1
# Loop through each line in the input file
while read -r line; do
# Extract the device name from the current line
device=$(echo "$line" | cut -d',' -f1)
# Skip the header row
if [ "$device" == "DEVICE_NAME" ]; then
continue
fi
# Run the make command for the current device
echo "Building firmware for $device"
make "$device" EXTRA_FLAGS="-D'RELEASE_NAME=4.4.1' -DCLOUD_BUILD -DUSE_DSHOT -DUSE_GPS -DUSE_GPS_PLUS_CODES -DUSE_LED_STRIP -DUSE_OSD -DUSE_OSD_HD -DUSE_OSD_SD -DUSE_PINIO -DUSE_SERIALRX -DUSE_SERIALRX_CRSF -DUSE_SERIALRX_DEFAULT -DUSE_SERIALRX_GHST -DUSE_SERIALRX_SBUS -DUSE_SERIALRX_SRXL2 -DUSE_SERIALRX_SPEKTRUM -DUSE_TELEMETRY -DUSE_TELEMETRY_CRSF -DUSE_TELEMETRY_GHST -DUSE_VTX"
done < "$1"

6
common-devices.csv Normal file
View file

@ -0,0 +1,6 @@
OMNIBUSF4SD
AIKONF4
AIKONF7
HOBBYWING_XROTORF4G3
HOBBYWING_XROTORF7CONV
CRAZYBEEF4SX1280
1 OMNIBUSF4SD
2 AIKONF4
3 AIKONF7
4 HOBBYWING_XROTORF4G3
5 HOBBYWING_XROTORF7CONV
6 CRAZYBEEF4SX1280

365
devices.csv Normal file
View file

@ -0,0 +1,365 @@
ALIENFLIGHTF4
ALIENFLIGHTNGF7
ALIENFLIGHTNGF7_DUAL
ALIENFLIGHTNGF7_ELRS
ALIENFLIGHTNGF7_RX
AIKONF4
AIKONF7
AG3XF4
AG3XF7
AIRBOTF4
AIRBOTF4SD
AIRBOTF4V2
AIRBOTF7
AIRBOTF7HDV
HELSEL_STRIKERF7
NOX
OMNIBUSF4
OMNIBUSF4FW
OMNIBUSF4NANOV7
OMNIBUSF4SD
OMNIBUSF4V6
OMNIBUSF7
OMNIBUSF7NANOV7
OMNIBUSF7V2
AIRB-OMNINXT4
AIRB-OMNINXT7
ALIENWHOOPF4
MERCURYG4
APEXF7
AXISFLYINGF7
AXISFLYINGF7PRO
BETAFPVF405
BETAFPVF411
BETAFPVF411RX
BETAFPVF4SX1280
BETAFPVF722
BETAFPVH743
BLUEJAYF4
NERO
MATEKF405STD_CLONE
CLRACINGF4
CLRACINGF7
RUSRACE_F4
RUSRACE_F7
SIRMIXALOT
CYCLONEF405_PRO
CYCLONEF722_PRO
DARWINF411
DARWINF4SX1280HD
DARWINF722HD
DAKEFPVF405
DAKEFPVF411
DAKEFPVF722
DALRCF405
DALRCF722DUAL
SOULF4
DFR_F722_DUAL_HD
FURYF4
FURYF4OSD
MAMBAF405US
MAMBAF405US_I2C
MAMBAF405_2022A
MAMBAF405_2022B
MAMBAF411
MAMBAF722
MAMBAF722_2022A
MAMBAF722_2022B
MAMBAF722_I2C
MAMBAF722_X8
MAMBAG4
MAMBAH743
MAMBAH743_2022B
ELINF405
ELINF722
DYSF44530D
DYSF4PRO
EACHINEF411_AIO
EACHINEF722
EACHINEF722_AIO
EMAX_BABYHAWK_II_HD
EMAX_TINYHAWKF4SX1280
EMAX_TINYHAWK_F411RX
EXF722DUAL
EXUAVF4PRO
FF_FORTINIF4
FF_FORTINIF4_REV03
FF_PIKOF4
FF_PIKOF4OSD
FF_RACEPIT
FF_RACEPITF7
FF_RACEPITF7_MINI
FF_RACEPIT_MINI
FLYCOLORF7
FLYCOLORF7_AIO
KIWIF4
KIWIF4V2
PLUMF4
GRAVITYF7
REVOLT
REVOLTOSD
FLYWOOF405
FLYWOOF405NANO
FLYWOOF405PRO
FLYWOOF405S_AIO
FLYWOOF411
FLYWOOF411EVO_HD
FLYWOOF411HEX
FLYWOOF411V2
FLYWOOF411_5IN1_AIO
FLYWOOF745
FLYWOOF745NANO
FLYWOOF7DUAL
ANYFCF7
ANYFCM7
DRONIUSF7
F4BY
FENIX_F405
SPARKY2
WORMFC
FOXEERF405
FOXEERF722DUAL
FOXEERF722V2
FOXEERF722V3
FOXEERF722V4
FOXEERF745V2_AIO
FOXEERF745V3_AIO
FOXEERF745V4_AIO
FOXEERF745_AIO
FOXEERH743
BETAFLIGHTF4
FPVM_BETAFLIGHTF7
XRACERF4
FRSKYF4
GEELANGF411
XILOF4
GEPRCF405
GEPRCF411
GEPRCF411SX1280
GEPRCF411_AIO
GEPRCF411_PRO
GEPRCF722
GEPRCF722BT
GEPRCF722_BT_HD
GEPRCF745_BT_HD
GEPRCG4AIO
GEPRC_F722_AIO
GEP_F405_VTX_V3
GEMEF411
GEMEF722
CRAZYBEEF4DX
CRAZYBEEF4DXS
CRAZYBEEF4FR
CRAZYBEEF4FS
CRAZYBEEF4SX1280
HAKRCF405
HAKRCF405D
HAKRCF405V2
HAKRCF411
HAKRCF411D
HAKRCF722
HAKRCF722D
HAKRCF722MINI
HAKRCF722V2
HAKRCF7230D
KD722
KAKUTEF4
KAKUTEF4V2
KAKUTEF7
KAKUTEF7HDV
KAKUTEF7MINI
KAKUTEF7MINIV3
KAKUTEF7V2
KAKUTEH7
KAKUTEH7MINI
KAKUTEH7V2
TALONF4V2
TALONF7DJIHD
TALONF7FUSION
TALONF7V2
HIFIONRCF7
HGLRCF405
HGLRCF405AS
HGLRCF411
HGLRCF411SX1280
HGLRCF411SX1280_15A
HGLRCF722
HGLRCF722E
HGLRCF745
ZEUSF4EVO
ZEUSF4FR
ZEUSF722_AIO
NIDICI_F4
HOBBYWING_XROTORF4G3
HOBBYWING_XROTORF7CONV
IFLIGHT_BLITZ_F405
IFLIGHT_BLITZ_F411RX
IFLIGHT_BLITZ_F722
IFLIGHT_BLITZ_F722_X1
IFLIGHT_BLITZ_F7_AIO
IFLIGHT_BLITZ_F7_PRO
IFLIGHT_F405_AIO
IFLIGHT_F405_TWING
IFLIGHT_F411_AIO32
IFLIGHT_F411_PRO
IFLIGHT_F4SX1280
IFLIGHT_F722_TWING
IFLIGHT_F745_AIO
IFLIGHT_F745_AIO_V2
IFLIGHT_H743_AIO_V2
IFLIGHT_H7_TWING
IFLIGHT_SUCCEX_E_F4
IFLIGHT_SUCCEX_E_F7
JBF7
JBF7_DJI
JBF7_V2
JHEF405
JHEF405PRO
JHEF411
JHEF745
JHEF7DUAL
JHEH743_AIO
SYNERGYF4
LDARC_F411
ELLE0
FISHDRONEF4
KROOZX
PIRXF4
PODIUMF4
STACKX
VRRACE
LUXAIO
LUXF4OSD
LUXF7HDV
LUXMINIF7
MERAKRCF405
MERAKRCF722
MLTEMPF4
MLTYPHF4
MATEKF405AIO
MATEKF405CTR
MATEKF405MINI
MATEKF405SE
MATEKF405STD
MATEKF405TE
MATEKF405TE_SD
MATEKF411
MATEKF411RX
MATEKF411SE
MATEKF722
MATEKF722HD
MATEKF722MINI
MATEKF722SE
MATEKH743
NBD_CRICKETF7
NBD_CRICKETF7V2
NBD_GALAXYAIO255
NBD_INFINITY200RS
NBD_INFINITYAIO
NBD_INFINITYAIOV2
NBD_INFINITYAIOV2PRO
NBD_INFINITYF4
FLOWBOX
FLOWBOXV2
HYBRIDG4
NEUTRONRCF407
NEUTRONRCF411AIO
NEUTRONRCF411SX1280
NEUTRONRCF722AIO
NEUTRONRCF7AIO
NEUTRONRCG4AIO
NEUTRONRCH743AIO
NEUTRONRCH7BT
UAVPNG030MINI
REVO
REVONANO
PYRODRONEF4
PYRODRONEF4PDB
PYRODRONEF7
AIRF7
MINI_H743_HD
ARESF7
BEEROTORF4
BLADE_F7
BLADE_F7_HD
RUSHCORE7
RUSHF7AIO
AOCODAF405
AOCODAF405V2MPU6000
AOCODAF405V2MPU6500
AOCODAF722BLE
AOCODAF722MINI
AOCODARCF411_AIO
AOCODARCF722_AIO
AOCODARCF7DUAL
AOCODARCH7DUAL
SKYSTARSF405
SKYSTARSF405AIO
SKYSTARSF411
SKYSTARSF7HD
SKYSTARSF7HDPRO
SKYSTARSH7HD
ATOMRCF405
ATOMRCF411
ATOMRCF722
SKYZONEF405
SPEEDYBEEF4
SPEEDYBEEF405V3
SPEEDYBEEF7
SPEEDYBEEF7MINI
SPEEDYBEEF7MINIV2
SPEEDYBEEF7V2
SPEEDYBEEF7V3
SPEEDYBEE_F745_AIO
SPCMAKERF411
SPEDIXF4
SPRACINGF4EVO
SPRACINGF4NEO
SPRACINGF7DUAL
SPRACINGH7EXTREME
SPRACINGH7NANO
SPRACINGH7RF
NUCLEOF722
STM32F411DISCOVERY
STM32F4DISCOVERY
SUB250F411
MODULARF4
TCMMF411
TCMMF7
COLIBRI
PODRACERAIO
TMH7
TMOTORF4
TMOTORF411
TMOTORF4SX1280
TMOTORF7
TMOTORF722SE
TMOTORF7V2
TMOTORF7_AIO
TMOTORH743
TMOTORVELOXF7V2
TMPACERF7
TMPACERF7MINI
TMVELOXF411
TMVELOXF7
TRANSTECF405HD
TRANSTECF411
TRANSTECF411AIO
TRANSTECF411HD
TRANSTECF7
TRANSTECF7HD
FPVCYCLEF401
TUNERCF405
VGOODF722DUAL
VGOODRCF4
VGOODRCF405_DJI
VGOODRCF411_DJI
VGOODRCF722_DJI
VIVAF4AIO
WIZZF7HD
YUPIF4
YUPIF7
ZEEZF7
ZEEZF7V2
ZEEZF7V3
ZEEZWHOOP
1 ALIENFLIGHTF4
2 ALIENFLIGHTNGF7
3 ALIENFLIGHTNGF7_DUAL
4 ALIENFLIGHTNGF7_ELRS
5 ALIENFLIGHTNGF7_RX
6 AIKONF4
7 AIKONF7
8 AG3XF4
9 AG3XF7
10 AIRBOTF4
11 AIRBOTF4SD
12 AIRBOTF4V2
13 AIRBOTF7
14 AIRBOTF7HDV
15 HELSEL_STRIKERF7
16 NOX
17 OMNIBUSF4
18 OMNIBUSF4FW
19 OMNIBUSF4NANOV7
20 OMNIBUSF4SD
21 OMNIBUSF4V6
22 OMNIBUSF7
23 OMNIBUSF7NANOV7
24 OMNIBUSF7V2
25 AIRB-OMNINXT4
26 AIRB-OMNINXT7
27 ALIENWHOOPF4
28 MERCURYG4
29 APEXF7
30 AXISFLYINGF7
31 AXISFLYINGF7PRO
32 BETAFPVF405
33 BETAFPVF411
34 BETAFPVF411RX
35 BETAFPVF4SX1280
36 BETAFPVF722
37 BETAFPVH743
38 BLUEJAYF4
39 NERO
40 MATEKF405STD_CLONE
41 CLRACINGF4
42 CLRACINGF7
43 RUSRACE_F4
44 RUSRACE_F7
45 SIRMIXALOT
46 CYCLONEF405_PRO
47 CYCLONEF722_PRO
48 DARWINF411
49 DARWINF4SX1280HD
50 DARWINF722HD
51 DAKEFPVF405
52 DAKEFPVF411
53 DAKEFPVF722
54 DALRCF405
55 DALRCF722DUAL
56 SOULF4
57 DFR_F722_DUAL_HD
58 FURYF4
59 FURYF4OSD
60 MAMBAF405US
61 MAMBAF405US_I2C
62 MAMBAF405_2022A
63 MAMBAF405_2022B
64 MAMBAF411
65 MAMBAF722
66 MAMBAF722_2022A
67 MAMBAF722_2022B
68 MAMBAF722_I2C
69 MAMBAF722_X8
70 MAMBAG4
71 MAMBAH743
72 MAMBAH743_2022B
73 ELINF405
74 ELINF722
75 DYSF44530D
76 DYSF4PRO
77 EACHINEF411_AIO
78 EACHINEF722
79 EACHINEF722_AIO
80 EMAX_BABYHAWK_II_HD
81 EMAX_TINYHAWKF4SX1280
82 EMAX_TINYHAWK_F411RX
83 EXF722DUAL
84 EXUAVF4PRO
85 FF_FORTINIF4
86 FF_FORTINIF4_REV03
87 FF_PIKOF4
88 FF_PIKOF4OSD
89 FF_RACEPIT
90 FF_RACEPITF7
91 FF_RACEPITF7_MINI
92 FF_RACEPIT_MINI
93 FLYCOLORF7
94 FLYCOLORF7_AIO
95 KIWIF4
96 KIWIF4V2
97 PLUMF4
98 GRAVITYF7
99 REVOLT
100 REVOLTOSD
101 FLYWOOF405
102 FLYWOOF405NANO
103 FLYWOOF405PRO
104 FLYWOOF405S_AIO
105 FLYWOOF411
106 FLYWOOF411EVO_HD
107 FLYWOOF411HEX
108 FLYWOOF411V2
109 FLYWOOF411_5IN1_AIO
110 FLYWOOF745
111 FLYWOOF745NANO
112 FLYWOOF7DUAL
113 ANYFCF7
114 ANYFCM7
115 DRONIUSF7
116 F4BY
117 FENIX_F405
118 SPARKY2
119 WORMFC
120 FOXEERF405
121 FOXEERF722DUAL
122 FOXEERF722V2
123 FOXEERF722V3
124 FOXEERF722V4
125 FOXEERF745V2_AIO
126 FOXEERF745V3_AIO
127 FOXEERF745V4_AIO
128 FOXEERF745_AIO
129 FOXEERH743
130 BETAFLIGHTF4
131 FPVM_BETAFLIGHTF7
132 XRACERF4
133 FRSKYF4
134 GEELANGF411
135 XILOF4
136 GEPRCF405
137 GEPRCF411
138 GEPRCF411SX1280
139 GEPRCF411_AIO
140 GEPRCF411_PRO
141 GEPRCF722
142 GEPRCF722BT
143 GEPRCF722_BT_HD
144 GEPRCF745_BT_HD
145 GEPRCG4AIO
146 GEPRC_F722_AIO
147 GEP_F405_VTX_V3
148 GEMEF411
149 GEMEF722
150 CRAZYBEEF4DX
151 CRAZYBEEF4DXS
152 CRAZYBEEF4FR
153 CRAZYBEEF4FS
154 CRAZYBEEF4SX1280
155 HAKRCF405
156 HAKRCF405D
157 HAKRCF405V2
158 HAKRCF411
159 HAKRCF411D
160 HAKRCF722
161 HAKRCF722D
162 HAKRCF722MINI
163 HAKRCF722V2
164 HAKRCF7230D
165 KD722
166 KAKUTEF4
167 KAKUTEF4V2
168 KAKUTEF7
169 KAKUTEF7HDV
170 KAKUTEF7MINI
171 KAKUTEF7MINIV3
172 KAKUTEF7V2
173 KAKUTEH7
174 KAKUTEH7MINI
175 KAKUTEH7V2
176 TALONF4V2
177 TALONF7DJIHD
178 TALONF7FUSION
179 TALONF7V2
180 HIFIONRCF7
181 HGLRCF405
182 HGLRCF405AS
183 HGLRCF411
184 HGLRCF411SX1280
185 HGLRCF411SX1280_15A
186 HGLRCF722
187 HGLRCF722E
188 HGLRCF745
189 ZEUSF4EVO
190 ZEUSF4FR
191 ZEUSF722_AIO
192 NIDICI_F4
193 HOBBYWING_XROTORF4G3
194 HOBBYWING_XROTORF7CONV
195 IFLIGHT_BLITZ_F405
196 IFLIGHT_BLITZ_F411RX
197 IFLIGHT_BLITZ_F722
198 IFLIGHT_BLITZ_F722_X1
199 IFLIGHT_BLITZ_F7_AIO
200 IFLIGHT_BLITZ_F7_PRO
201 IFLIGHT_F405_AIO
202 IFLIGHT_F405_TWING
203 IFLIGHT_F411_AIO32
204 IFLIGHT_F411_PRO
205 IFLIGHT_F4SX1280
206 IFLIGHT_F722_TWING
207 IFLIGHT_F745_AIO
208 IFLIGHT_F745_AIO_V2
209 IFLIGHT_H743_AIO_V2
210 IFLIGHT_H7_TWING
211 IFLIGHT_SUCCEX_E_F4
212 IFLIGHT_SUCCEX_E_F7
213 JBF7
214 JBF7_DJI
215 JBF7_V2
216 JHEF405
217 JHEF405PRO
218 JHEF411
219 JHEF745
220 JHEF7DUAL
221 JHEH743_AIO
222 SYNERGYF4
223 LDARC_F411
224 ELLE0
225 FISHDRONEF4
226 KROOZX
227 PIRXF4
228 PODIUMF4
229 STACKX
230 VRRACE
231 LUXAIO
232 LUXF4OSD
233 LUXF7HDV
234 LUXMINIF7
235 MERAKRCF405
236 MERAKRCF722
237 MLTEMPF4
238 MLTYPHF4
239 MATEKF405AIO
240 MATEKF405CTR
241 MATEKF405MINI
242 MATEKF405SE
243 MATEKF405STD
244 MATEKF405TE
245 MATEKF405TE_SD
246 MATEKF411
247 MATEKF411RX
248 MATEKF411SE
249 MATEKF722
250 MATEKF722HD
251 MATEKF722MINI
252 MATEKF722SE
253 MATEKH743
254 NBD_CRICKETF7
255 NBD_CRICKETF7V2
256 NBD_GALAXYAIO255
257 NBD_INFINITY200RS
258 NBD_INFINITYAIO
259 NBD_INFINITYAIOV2
260 NBD_INFINITYAIOV2PRO
261 NBD_INFINITYF4
262 FLOWBOX
263 FLOWBOXV2
264 HYBRIDG4
265 NEUTRONRCF407
266 NEUTRONRCF411AIO
267 NEUTRONRCF411SX1280
268 NEUTRONRCF722AIO
269 NEUTRONRCF7AIO
270 NEUTRONRCG4AIO
271 NEUTRONRCH743AIO
272 NEUTRONRCH7BT
273 UAVPNG030MINI
274 REVO
275 REVONANO
276 PYRODRONEF4
277 PYRODRONEF4PDB
278 PYRODRONEF7
279 AIRF7
280 MINI_H743_HD
281 ARESF7
282 BEEROTORF4
283 BLADE_F7
284 BLADE_F7_HD
285 RUSHCORE7
286 RUSHF7AIO
287 AOCODAF405
288 AOCODAF405V2MPU6000
289 AOCODAF405V2MPU6500
290 AOCODAF722BLE
291 AOCODAF722MINI
292 AOCODARCF411_AIO
293 AOCODARCF722_AIO
294 AOCODARCF7DUAL
295 AOCODARCH7DUAL
296 SKYSTARSF405
297 SKYSTARSF405AIO
298 SKYSTARSF411
299 SKYSTARSF7HD
300 SKYSTARSF7HDPRO
301 SKYSTARSH7HD
302 ATOMRCF405
303 ATOMRCF411
304 ATOMRCF722
305 SKYZONEF405
306 SPEEDYBEEF4
307 SPEEDYBEEF405V3
308 SPEEDYBEEF7
309 SPEEDYBEEF7MINI
310 SPEEDYBEEF7MINIV2
311 SPEEDYBEEF7V2
312 SPEEDYBEEF7V3
313 SPEEDYBEE_F745_AIO
314 SPCMAKERF411
315 SPEDIXF4
316 SPRACINGF4EVO
317 SPRACINGF4NEO
318 SPRACINGF7DUAL
319 SPRACINGH7EXTREME
320 SPRACINGH7NANO
321 SPRACINGH7RF
322 NUCLEOF722
323 STM32F411DISCOVERY
324 STM32F4DISCOVERY
325 SUB250F411
326 MODULARF4
327 TCMMF411
328 TCMMF7
329 COLIBRI
330 PODRACERAIO
331 TMH7
332 TMOTORF4
333 TMOTORF411
334 TMOTORF4SX1280
335 TMOTORF7
336 TMOTORF722SE
337 TMOTORF7V2
338 TMOTORF7_AIO
339 TMOTORH743
340 TMOTORVELOXF7V2
341 TMPACERF7
342 TMPACERF7MINI
343 TMVELOXF411
344 TMVELOXF7
345 TRANSTECF405HD
346 TRANSTECF411
347 TRANSTECF411AIO
348 TRANSTECF411HD
349 TRANSTECF7
350 TRANSTECF7HD
351 FPVCYCLEF401
352 TUNERCF405
353 VGOODF722DUAL
354 VGOODRCF4
355 VGOODRCF405_DJI
356 VGOODRCF411_DJI
357 VGOODRCF722_DJI
358 VIVAF4AIO
359 WIZZF7HD
360 YUPIF4
361 YUPIF7
362 ZEEZF7
363 ZEEZF7V2
364 ZEEZF7V3
365 ZEEZWHOOP

View file

@ -108,5 +108,6 @@ const char * const debugModeNames[DEBUG_COUNT] = {
"VTX_MSP",
"GPS_DOP",
"FAILSAFE",
"DSHOT_TELEMETRY_COUNTS"
"DSHOT_TELEMETRY_COUNTS",
"RPM_LIMITER"
};

View file

@ -107,6 +107,7 @@ typedef enum {
DEBUG_GPS_DOP,
DEBUG_FAILSAFE,
DEBUG_DSHOT_TELEMETRY_COUNTS,
DEBUG_RPM_LIMITER,
DEBUG_COUNT
} debugType_e;

View file

@ -361,7 +361,7 @@ static void applyRPMLimiter(void)
//if drone is armed
if (ARMING_FLAG(ARMED)) {
//if the afterburner switch is enguaged
if(IS_RC_MODE_ACTIVE(BOXUSER4)) {
if(IS_RC_MODE_ACTIVE(BOXBEEPERON)) {
//if the afterburner isn't initiated
if(mixerRuntime.afterburnerInitiated == false) {
//if there's charge in the tank
@ -382,8 +382,10 @@ static void applyRPMLimiter(void)
//if the tank is empty, reset
if(mixerRuntime.afterburnerTankPercent<=0.0f) {
mixerRuntime.afterburnerInitiated = false;
mixerRuntime.afterburnerTankPercent = 100.0f;
mixerRuntime.afterburnerTanksRemaining -= 1;
if(mixerRuntime.afterburnerTanksRemaining>0) {
mixerRuntime.afterburnerTankPercent = 100.0f;
}
}
}
@ -425,15 +427,15 @@ static void applyRPMLimiter(void)
//get the rpm averaged across the motors
bool motorsSaturated = false;
//bool motorsDesaturated = false;
bool motorsDesaturated = false;
for (int i = 0; i < getMotorCount(); i++) {
averageRPM += getDshotTelemetry(i);
if (motor[i] >= motorConfig()->maxthrottle) {
motorsSaturated = true;
}
/*if (motor[i] <= motorConfig()->minthrottle) {
motorsDesaturated = true;
}*/
if (motor[i] <= motorConfig()->minthrottle) {
motorsDesaturated = false;
}
}
averageRPM = 100 * averageRPM / (getMotorCount()*mixerRuntime.motorPoleCount/2.0f);
@ -459,13 +461,15 @@ static void applyRPMLimiter(void)
//don't let I term wind up if throttle is below the motor idle
if (rcCommandThrottle < motorConfig()->digitalIdleOffsetValue / 10000.0f) {
//mixerRuntime.govenorI *= 1.0f/(1.0f+(pidGetDT()*10.0f)); //slowly ramp down i term instead of resetting to avoid throttle pulsing cheats
mixerRuntime.govenorI = 0.0f;
mixerRuntime.govenorI *= 1.0f/(1.0f+(pidGetDT()*10.0f)); //slowly ramp down i term
//mixerRuntime.govenorI = 0.0f;
} else {
//don't let I term wind up if motors are saturated. Otherwise, motors may stay at high throttle even after low throttle is commanded
if(!motorsSaturated)
if(!motorsSaturated && !motorsDesaturated)
{
mixerRuntime.govenorI += smoothedRPMError * mixerRuntime.govenorIGain; // + when overspeed
}else{
mixerRuntime.govenorI *= 1.0f/(1.0f+(pidGetDT()*10.0f)); //slowly ramp down i term
}
}
@ -488,6 +492,7 @@ static void applyRPMLimiter(void)
PIDOutput = MAX(PIDOutput,0.0f);
}
if (motorConfig()->dev.useDshotTelemetry) {
if (mixerRuntime.govenor_init) {
if (mixerRuntime.rpmLinearization) {
throttle = constrainf(-PIDOutput, 0.0f, 1.0f);
@ -495,6 +500,10 @@ static void applyRPMLimiter(void)
throttle = constrainf(throttle-PIDOutput, 0.0f, 1.0f);
}
}
} else { //if dshot telemetry isn't enabled. Keep the throttle at zero
throttle = 0.0f;
}
mixerRuntime.govenor_init = true;
//update previous values for next loop

View file

@ -60,7 +60,7 @@ PG_RESET_TEMPLATE(mixerConfig_t, mixerConfig,
.govenor_acceleration_limit = 60,
.govenor_deceleration_limit = 60,
.govenor_rpm_limit = 130,
.govenor_rpm_afterburner = 20,
.govenor_rpm_afterburner = 15,
.govenor_rpm_afterburner_duration = 5,
.govenor_rpm_afterburner_reset = true,
.govenor_rpm_afterburner_hold_to_use = false,

View file

@ -100,7 +100,7 @@ static const box_t boxes[CHECKBOX_ITEM_COUNT] = {
{ .boxId = BOXMSPOVERRIDE, .boxName = "MSP OVERRIDE", .permanentId = 50},
{ .boxId = BOXSTICKCOMMANDDISABLE, .boxName = "STICK COMMANDS DISABLE", .permanentId = 51},
{ .boxId = BOXBEEPERMUTE, .boxName = "BEEPER MUTE", .permanentId = 52},
{ .boxId = BOXREADY, .boxName = "READY", .permanentId = 53}
{ .boxId = BOXREADY, .boxName = "READY", .permanentId = 53},
};
// mask of enabled IDs, calculated on startup based on enabled features. boxId_e is used as bit index

View file

@ -146,6 +146,7 @@
#include "flight/position.h"
#include "flight/imu.h"
#include "flight/mixer.h"
#include "flight/mixer_init.h"
#include "flight/pid.h"
#include "io/gps.h"
@ -1270,10 +1271,13 @@ static void osdElementMainBatteryUsage(osdElementParms_t *element)
{
uint8_t remainingCapacityBars = 0;
if (batteryConfig()->batteryCapacity) {
const float batteryRemaining = constrain(batteryConfig()->batteryCapacity - displayBasis, 0, batteryConfig()->batteryCapacity);
remainingCapacityBars = ceilf((batteryRemaining / (batteryConfig()->batteryCapacity / MAIN_BATT_USAGE_STEPS)));
}
//if (batteryConfig()->batteryCapacity) {
//const float batteryRemaining = constrain(batteryConfig()->batteryCapacity - displayBasis, 0, batteryConfig()->batteryCapacity);
//remainingCapacityBars = ceilf((batteryRemaining / (batteryConfig()->batteryCapacity / MAIN_BATT_USAGE_STEPS)));
const float maxBoost = 100.0f;
const float batteryRemaining = constrain(mixerRuntime.afterburnerTankPercent, 0, maxBoost);
remainingCapacityBars = ceilf((batteryRemaining / (maxBoost / MAIN_BATT_USAGE_STEPS)));
//}
// Create empty battery indicator bar
element->buff[0] = SYM_PB_START;
@ -1284,7 +1288,12 @@ static void osdElementMainBatteryUsage(osdElementParms_t *element)
if (remainingCapacityBars > 0 && remainingCapacityBars < MAIN_BATT_USAGE_STEPS) {
element->buff[1 + remainingCapacityBars] = SYM_PB_END;
}
element->buff[MAIN_BATT_USAGE_STEPS+2] = '\0';
//tfp_sprintf(element->buff, element->buff+"%d", mixerRuntime.afterburnerTanksRemaining);
char tanksRemainingStr[1];
tfp_sprintf(tanksRemainingStr, "%d", mixerRuntime.afterburnerTanksRemaining);
element->buff[MAIN_BATT_USAGE_STEPS+2] = tanksRemainingStr[0];
element->buff[MAIN_BATT_USAGE_STEPS+3] = '\0';
break;
}
}