diff --git a/src/systemcmds/pwm/pwm.c b/src/systemcmds/pwm/pwm.c index f8da686cd0..620b0a6f67 100644 --- a/src/systemcmds/pwm/pwm.c +++ b/src/systemcmds/pwm/pwm.c @@ -279,7 +279,14 @@ pwm_main(int argc, char *argv[]) if (pwm_value == 0) usage("no PWM value provided"); - struct pwm_output_values pwm_values = {.values = {0}, .channel_count = 0}; + struct pwm_output_values pwm_values; + memset(&pwm_values, 0, sizeof(pwm_values)); + pwm_values.channel_count = servo_count; + /* first get current state before modifying it */ + ret = ioctl(fd, PWM_SERVO_GET_MIN_PWM, (long unsigned int)&pwm_values); + if (ret != OK) { + errx(ret, "failed get min values"); + } for (unsigned i = 0; i < servo_count; i++) { if (set_mask & 1<