Skip to content

Commit 62166c9

Browse files
committed
Allow to suppress haptic and tiltback via app command
cmd_runtime_tune_tilt now includes flags for those Signed-off-by: Dado Mista <dadomista@gmail.com>
1 parent 79e640a commit 62166c9

4 files changed

Lines changed: 27 additions & 0 deletions

File tree

src/data.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ typedef struct {
106106
float switch_warn_beep_erpm;
107107
bool traction_control;
108108

109+
// Suppress tiltback temporarily
110+
bool suppress_tiltback;
111+
109112
// Darkride aka upside down mode:
110113
bool is_upside_down_started; // dark ride has been engaged
111114
bool enable_upside_down; // dark ride mode is enabled (10 seconds after fault)

src/haptic_feedback.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ void haptic_feedback_update(
151151
}
152152
}
153153

154+
if (hf->suppress) {
155+
should_be_playing = false;
156+
}
154157
if (hf->is_playing && !should_be_playing) {
155158
foc_play_tone(0, 1, 0.0f);
156159
motor_control_stop_tone(mc);

src/haptic_feedback.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ typedef struct {
4343
time_t tone_timer;
4444
time_t hv_start_time;
4545
bool is_playing;
46+
bool suppress;
4647
} HapticFeedback;
4748

4849
void haptic_feedback_init(HapticFeedback *hf);

src/main.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,9 @@ static void calculate_setpoint_target(Data *d) {
577577
} else {
578578
d->setpoint_target = -d->float_conf.tiltback_duty_angle;
579579
}
580+
if (d->suppress_tiltback) {
581+
d->setpoint_target = 0;
582+
}
580583

581584
// FLYWHEEL relies on the duty pushback mechanism, but we don't
582585
// want to show the pushback alert.
@@ -607,6 +610,9 @@ static void calculate_setpoint_target(Data *d) {
607610
} else {
608611
d->setpoint_target = -d->float_conf.tiltback_hv_angle;
609612
}
613+
if (d->suppress_tiltback) {
614+
d->setpoint_target = 0;
615+
}
610616
} else {
611617
// The rider has 5s to react to the triple-beep/haptic
612618
d->setpoint_target = 0;
@@ -633,6 +639,9 @@ static void calculate_setpoint_target(Data *d) {
633639
} else {
634640
d->setpoint_target = -d->float_conf.tiltback_lv_angle;
635641
}
642+
if (d->suppress_tiltback) {
643+
d->setpoint_target = 0;
644+
}
636645
d->state.sat = SAT_PB_TEMPERATURE;
637646
} else {
638647
// The rider has 1 degree Celsius left before we start tilting back
@@ -648,6 +657,9 @@ static void calculate_setpoint_target(Data *d) {
648657
} else {
649658
d->setpoint_target = -d->float_conf.tiltback_lv_angle;
650659
}
660+
if (d->suppress_tiltback) {
661+
d->setpoint_target = 0;
662+
}
651663
d->state.sat = SAT_PB_TEMPERATURE;
652664
} else {
653665
// The rider has 1 degree Celsius left before we start tilting back
@@ -670,6 +682,9 @@ static void calculate_setpoint_target(Data *d) {
670682
} else {
671683
d->setpoint_target = -d->float_conf.tiltback_lv_angle;
672684
}
685+
if (d->suppress_tiltback) {
686+
d->setpoint_target = 0;
687+
}
673688
d->state.sat = SAT_PB_TEMPERATURE;
674689
} else if (d->motor.duty_cycle > 0.05 &&
675690
(d->motor.batt_voltage < d->float_conf.tiltback_lv ||
@@ -696,6 +711,9 @@ static void calculate_setpoint_target(Data *d) {
696711
} else {
697712
d->setpoint_target = -d->float_conf.tiltback_lv_angle;
698713
}
714+
if (d->suppress_tiltback) {
715+
d->setpoint_target = 0;
716+
}
699717

700718
d->state.sat = SAT_PB_LOW_VOLTAGE;
701719
} else {
@@ -1627,6 +1645,8 @@ static void cmd_runtime_tune_tilt(Data *d, unsigned char *cfg, int len) {
16271645
unsigned int flags = cfg[0];
16281646
bool duty_beep = flags & 0x1;
16291647
d->float_conf.is_dutybeep_enabled = duty_beep;
1648+
d->haptic_feedback.suppress = flags & 0x2;
1649+
d->suppress_tiltback = flags & 0x4;
16301650
float retspeed = cfg[1];
16311651
if (retspeed > 0) {
16321652
d->float_conf.tiltback_return_speed = retspeed / 10;

0 commit comments

Comments
 (0)