Private
Public Access
2
0

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:
Thomas Ingleby
2014-07-29 14:16:19 +01:00
committed by Brendan Le Foll
parent 62a1493bdf
commit dd9129d411
2 changed files with 16 additions and 0 deletions

View File

@@ -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;

View File

@@ -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);
}