From: Thomas Ingleby Date: Tue, 29 Jul 2014 13:16:19 +0000 (+0100) Subject: hook: add pwm hook around init X-Git-Tag: v0.5.0~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dd9129d4115532e82275931216c2b4247737e367;p=contrib%2Fmraa.git hook: add pwm hook around init Signed-off-by: Thomas Ingleby Signed-off-by: Brendan Le Foll --- diff --git a/include/mraa_adv_func.h b/include/mraa_adv_func.h index 4b04802..56ebba2 100644 --- a/include/mraa_adv_func.h +++ b/include/mraa_adv_func.h @@ -54,5 +54,7 @@ typedef struct { mraa_result_t (*aio_init_pre) (unsigned int aio); mraa_result_t (*aio_init_post) (mraa_aio_context dev); + mraa_result_t (*pwm_init_pre) (int pin); + mraa_result_t (*pwm_init_post) (mraa_pwm_context pwm); 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 b848dee..56e8694 100644 --- a/src/pwm/pwm.c +++ b/src/pwm/pwm.c @@ -124,12 +124,26 @@ mraa_pwm_read_duty(mraa_pwm_context dev) mraa_pwm_context mraa_pwm_init(int pin) { + if (advance_func->pwm_init_pre != NULL) { + if (advance_func->pwm_init_pre(pin) != MRAA_SUCCESS) + return NULL; + } mraa_pin_t* pinm = mraa_setup_pwm(pin); if (pinm == NULL) return NULL; int chip = pinm->parent_id; int pinn = pinm->pinmap; free(pinm); + + if (advance_func->gpio_init_post != NULL) { + mraa_pwm_context pret = mraa_pwm_init_raw(chip,pinn); + mraa_result_t ret = advance_func->pwm_init_post(pret); + if (ret != MRAA_SUCCESS) { + free(pret); + return NULL; + } + return pret; + } return mraa_pwm_init_raw(chip,pinn); }