// // Created by MightyPork on 2018/12/08. // #include #include #include "console/cmd_common.h" #include #include "actuators.h" #include "settings.h" static int cmd_pwm_show(console_ctx_t *ctx, cmd_signature_t *reg) { EMPTY_CMD_SETUP("Show PWM config"); console_printf("freq %d Hz, duty %d/1024, thres %d mV, ADC = %d mV\n", pwm_freq, pwm_duty, pwm_thres, last_adc_mv); return 0; } static int cmd_duty(console_ctx_t *ctx, cmd_signature_t *reg) { static struct { struct arg_int *duty; struct arg_end *end; } cmd_args; if (reg) { cmd_args.duty = arg_int1(NULL, NULL, "", EXPENDABLE_STRING("Duty cycle")); cmd_args.end = arg_end(1); reg->argtable = &cmd_args; reg->help = "Set duty 0-1023"; return 0; } uint32_t duty = (uint32_t) cmd_args.duty->ival[0]; if (duty > 950) { duty = 950; } pwm_duty = duty; act_pwm_set(pwm_on); gSettings.pwm_duty = duty; settings_persist(SETTINGS_pwm_duty); return 0; } static int cmd_freq(console_ctx_t *ctx, cmd_signature_t *reg) { static struct { struct arg_int *freq; struct arg_end *end; } cmd_args; if (reg) { cmd_args.freq = arg_int1(NULL, NULL, "", EXPENDABLE_STRING("Freq")); cmd_args.end = arg_end(1); reg->argtable = &cmd_args; reg->help = "Set freq Hz"; return 0; } uint32_t freq = (uint32_t) cmd_args.freq->ival[0]; pwm_freq = freq; act_pwm_update_conf(); gSettings.pwm_freq = freq; settings_persist(SETTINGS_pwm_freq); return 0; } static int cmd_thres(console_ctx_t *ctx, cmd_signature_t *reg) { static struct { struct arg_int *thres; struct arg_end *end; } cmd_args; if (reg) { cmd_args.thres = arg_int1(NULL, NULL, "", EXPENDABLE_STRING("Threshold mV 0-950")); cmd_args.end = arg_end(1); reg->argtable = &cmd_args; reg->help = "Set thres 0-1023"; return 0; } uint32_t thres = (uint32_t) cmd_args.thres->ival[0]; pwm_thres = thres; act_pwm_set(pwm_on); gSettings.pwm_thres = thres; settings_persist(SETTINGS_pwm_thres); return 0; } void register_cmd_pwm(void) { console_cmd_register(cmd_pwm_show, "pwm"); console_cmd_register(cmd_duty, "duty"); console_cmd_register(cmd_freq, "freq"); console_cmd_register(cmd_thres, "thres"); console_cmd_add_alias_fn(cmd_duty, "d"); console_cmd_add_alias_fn(cmd_freq, "f"); console_cmd_add_alias_fn(cmd_thres, "t"); }