Skip to content

Commit cc33f44

Browse files
committed
Update
Added back home reset. But added a safety that it will only be sent for 5 packets. So that it will not block actual flight modes.
1 parent b0c0ea1 commit cc33f44

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/main/telemetry/crsf.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,8 @@ static void crsfFrameFlightMode(sbuf_t *dst)
349349
sbufWriteU8(dst, 0);
350350
crsfSerialize8(dst, CRSF_FRAMETYPE_FLIGHT_MODE);
351351

352+
static uint8_t hrstSent = 0;
353+
352354
// use same logic as OSD, so telemetry displays same flight text as OSD when armed
353355
const char *flightMode = "OK";
354356
if (ARMING_FLAG(ARMED)) {
@@ -359,7 +361,10 @@ static void crsfFrameFlightMode(sbuf_t *dst)
359361
} else
360362
#endif
361363
if (FLIGHT_MODE(FAILSAFE_MODE)) {
362-
flightMode = "!FS!";
364+
flightMode = "!FS!";
365+
} else if (IS_RC_MODE_ACTIVE(BOXHOMERESET) && hrstSent < 4 && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE)) {
366+
flightMode = "HRST";
367+
hrstSent++;
363368
} else if (FLIGHT_MODE(MANUAL_MODE)) {
364369
flightMode = "MANU";
365370
#ifdef USE_GEOZONE
@@ -397,6 +402,9 @@ static void crsfFrameFlightMode(sbuf_t *dst)
397402
flightMode = "!ERR";
398403
}
399404

405+
if (!IS_RC_MODE_ACTIVE(BOXHOMERESET) && hrstSent > 0)
406+
hrstSent = 0;
407+
400408
crsfSerializeData(dst, (const uint8_t*)flightMode, strlen(flightMode));
401409
crsfSerialize8(dst, 0); // zero terminator for string
402410
// write in the length

src/main/telemetry/smartport.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,31 +166,31 @@ static uint32_t frskyGetFlightMode(void)
166166
{
167167
uint32_t tmpi = 0;
168168

169-
// ones column
169+
// ones column (G)
170170
if (!isArmingDisabled())
171171
tmpi += 1;
172172
else
173173
tmpi += 2;
174174
if (ARMING_FLAG(ARMED))
175175
tmpi += 4;
176176

177-
// tens column
177+
// tens column (F)
178178
if (FLIGHT_MODE(ANGLE_MODE))
179179
tmpi += 10;
180180
if (FLIGHT_MODE(HORIZON_MODE))
181181
tmpi += 20;
182182
if (FLIGHT_MODE(MANUAL_MODE))
183183
tmpi += 40;
184184

185-
// hundreds column
185+
// hundreds column (E)
186186
if (FLIGHT_MODE(HEADING_MODE))
187187
tmpi += 100;
188188
if (FLIGHT_MODE(NAV_ALTHOLD_MODE))
189189
tmpi += 200;
190190
if (FLIGHT_MODE(NAV_POSHOLD_MODE) && !STATE(AIRPLANE))
191191
tmpi += 400;
192192

193-
// thousands column
193+
// thousands column (D)
194194
if (FLIGHT_MODE(NAV_RTH_MODE) && !isWaypointMissionRTHActive())
195195
tmpi += 1000;
196196
if (FLIGHT_MODE(NAV_COURSE_HOLD_MODE)) // intentionally out of order and 'else-ifs' to prevent column overflow
@@ -200,15 +200,15 @@ static uint32_t frskyGetFlightMode(void)
200200
else if (FLIGHT_MODE(HEADFREE_MODE))
201201
tmpi += 4000;
202202

203-
// ten thousands column
203+
// ten thousands column (C)
204204
if (FLIGHT_MODE(FLAPERON))
205205
tmpi += 10000;
206206
if (FLIGHT_MODE(FAILSAFE_MODE))
207207
tmpi += 40000;
208208
else if (FLIGHT_MODE(AUTO_TUNE)) // intentionally reverse order and 'else-if' to prevent 16-bit overflow
209209
tmpi += 20000;
210210

211-
// hundred thousands column
211+
// hundred thousands column (B)
212212
if (FLIGHT_MODE(NAV_FW_AUTOLAND))
213213
tmpi += 100000;
214214
if (FLIGHT_MODE(TURTLE_MODE))
@@ -218,7 +218,7 @@ static uint32_t frskyGetFlightMode(void)
218218
if (FLIGHT_MODE(NAV_SEND_TO))
219219
tmpi += 400000;
220220

221-
// million column
221+
// million column (A)
222222
if (FLIGHT_MODE(NAV_RTH_MODE) && isWaypointMissionRTHActive())
223223
tmpi += 1000000;
224224
if (FLIGHT_MODE(ANGLEHOLD_MODE))

0 commit comments

Comments
 (0)