diff --git a/include/mraa_adv_func.h b/include/mraa_adv_func.h index ab265af..98f21ab 100644 --- a/include/mraa_adv_func.h +++ b/include/mraa_adv_func.h @@ -49,4 +49,6 @@ typedef struct { mraa_result_t (*i2c_init_pre) (unsigned int bus); mraa_result_t (*i2c_init_post) (mraa_i2c_context dev); + + mraa_result_t (*pwm_period_replace) (mraa_pwm_context dev, int period); } mraa_adv_func_t; diff --git a/src/pwm/pwm.c b/src/pwm/pwm.c index b590b8b..a0ffb4b 100644 --- a/src/pwm/pwm.c +++ b/src/pwm/pwm.c @@ -60,6 +60,9 @@ mraa_pwm_setup_duty_fp(mraa_pwm_context dev) static mraa_result_t mraa_pwm_write_period(mraa_pwm_context dev, int period) { + if (advance_func->pwm_period_replace != NULL) + return advance_func->pwm_period_replace(dev,period); + char bu[MAX_SIZE]; snprintf(bu,MAX_SIZE ,"/sys/class/pwm/pwmchip%d/pwm%d/period", dev->chipid, dev->pin);