hook: add pwm hook around init
Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
committed by
Brendan Le Foll
parent
62a1493bdf
commit
dd9129d411
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user