@@ -2282,6 +2282,7 @@ enum {
22822282 FLOAT_COMMAND_EXPERIMENT = 11 , // generic cmd for sending data, used for testing/tuning new features
22832283 FLOAT_COMMAND_LOCK = 12 ,
22842284 FLOAT_COMMAND_HANDTEST = 13 ,
2285+ FLOAT_COMMAND_TUNE_TILT = 14 ,
22852286 FLOAT_COMMAND_FLYWHEEL = 22 ,
22862287} float_commands ;
22872288
@@ -2708,6 +2709,40 @@ static void cmd_tune_defaults(data *d){
27082709 }
27092710}
27102711
2712+ /**
2713+ * cmd_runtime_tune_tilt Extract settings from 20byte message but don't write to EEPROM!
2714+ */
2715+ static void cmd_runtime_tune_tilt (data * d , unsigned char * cfg , int len )
2716+ {
2717+ unsigned int flags = cfg [0 ];
2718+ bool duty_buzz = flags & 0x1 ;
2719+ d -> float_conf .is_dutybuzz_enabled = duty_buzz ;
2720+ float retspeed = cfg [1 ];
2721+ if (retspeed > 0 ) {
2722+ d -> float_conf .tiltback_return_speed = retspeed / 10 ;
2723+ d -> tiltback_return_step_size = d -> float_conf .tiltback_return_speed / d -> float_conf .hertz ;
2724+ }
2725+ d -> float_conf .tiltback_duty = (float )cfg [2 ] / 100.0 ;
2726+ d -> float_conf .tiltback_duty_angle = (float )cfg [3 ] / 10.0 ;
2727+ d -> float_conf .tiltback_duty_speed = (float )cfg [4 ] / 10.0 ;
2728+
2729+ if (len >= 6 ) {
2730+ float surge_duty_start = cfg [5 ];
2731+ if (surge_duty_start > 0 ) {
2732+ d -> float_conf .surge_duty_start = surge_duty_start / 100.0 ;
2733+ d -> float_conf .surge_angle = (float )cfg [6 ] / 20.0 ;
2734+ d -> surge_angle = d -> float_conf .surge_angle ;
2735+ d -> surge_angle2 = d -> float_conf .surge_angle * 2 ;
2736+ d -> surge_angle3 = d -> float_conf .surge_angle * 3 ;
2737+ d -> surge_enable = d -> surge_angle > 0 ;
2738+ }
2739+ beep_alert (d , 1 , 1 );
2740+ }
2741+ else {
2742+ beep_alert (d , 3 , 0 );
2743+ }
2744+ }
2745+
27112746/**
27122747 * cmd_runtime_tune_other Extract settings from 20byte message but don't write to EEPROM!
27132748 */
@@ -2976,6 +3011,17 @@ static void on_command_received(unsigned char *buffer, unsigned int len) {
29763011 }
29773012 return ;
29783013 }
3014+ case FLOAT_COMMAND_TUNE_TILT : {
3015+ if (len >= 10 ) {
3016+ cmd_runtime_tune_tilt (d , & buffer [2 ], len - 2 );
3017+ }
3018+ else {
3019+ if (!VESC_IF -> app_is_output_disabled ()) {
3020+ VESC_IF -> printf ("Float App: Command length incorrect (%d)\n" , len );
3021+ }
3022+ }
3023+ return ;
3024+ }
29793025 case FLOAT_COMMAND_RC_MOVE : {
29803026 if (len == 6 ) {
29813027 cmd_rc_move (d , & buffer [2 ]);
0 commit comments