/** * Enables an interrupt in ADXL345 device * * @param Pointer to sensor structure * @param which interrupt(s) to enable * * @return 0 on success, non-zero on failure */ static int enable_interrupt(struct sensor * sensor, uint8_t ints_to_enable) { struct adxl345_private_driver_data *pdd; struct adxl345 *adxl345; struct sensor_itf *itf; if (ints_to_enable == 0) { return SYS_EINVAL; } adxl345 = (struct adxl345 *)SENSOR_GET_DEVICE(sensor); itf = SENSOR_GET_ITF(sensor); pdd = &adxl345->pdd; /* if no interrupts are currently in use enable int pin */ if (pdd->int_enable == 0) { hal_gpio_irq_enable(adxl345->sensor.s_itf.si_ints[pdd->int_num].host_pin); } /* update which interrupts are enabled */ pdd->int_enable |= ints_to_enable; /* enable interrupt in device */ return adxl345_setup_interrupts(itf, pdd->int_enable, pdd->int_route); }
static int enable_interrupt(struct sensor * sensor, uint8_t int_to_enable) { struct lis2dw12 *lis2dw12; struct lis2dw12_private_driver_data *pdd; struct sensor_itf *itf; uint8_t reg; int rc; lis2dw12 = (struct lis2dw12 *)SENSOR_GET_DEVICE(sensor); itf = SENSOR_GET_ITF(sensor); pdd = &lis2dw12->pdd; rc = lis2dw12_clear_int(itf, ®); if (rc) { return rc; } /* if no interrupts are currently in use enable int pin */ if (pdd->int_enable == 0) { hal_gpio_irq_enable(itf->si_ints[pdd->int_num].host_pin); rc = lis2dw12_set_int_enable(itf, 1); if (rc) { return rc; } } /*update which interrupts are enabled */ pdd->int_enable |= int_to_enable; /* enable interrupt in device */ rc = lis2dw12_set_int1_pin_cfg(itf, pdd->int_enable); if (rc) { return rc; } return 0; }
void SX1276IoIrqInit(DioIrqHandler **irqHandlers) { int rc; if (irqHandlers[0] != NULL) { rc = hal_gpio_irq_init(SX1276_DIO0, irqHandlers[0], NULL, HAL_GPIO_TRIG_RISING, HAL_GPIO_PULL_NONE); assert(rc == 0); hal_gpio_irq_enable(SX1276_DIO0); } if (irqHandlers[1] != NULL) { rc = hal_gpio_irq_init(SX1276_DIO1, irqHandlers[1], NULL, HAL_GPIO_TRIG_RISING, HAL_GPIO_PULL_NONE); assert(rc == 0); hal_gpio_irq_enable(SX1276_DIO1); } if (irqHandlers[2] != NULL) { rc = hal_gpio_irq_init(SX1276_DIO2, irqHandlers[2], NULL, HAL_GPIO_TRIG_RISING, HAL_GPIO_PULL_NONE); assert(rc == 0); hal_gpio_irq_enable(SX1276_DIO2); } if (irqHandlers[3] != NULL) { rc = hal_gpio_irq_init(SX1276_DIO3, irqHandlers[3], NULL, HAL_GPIO_TRIG_RISING, HAL_GPIO_PULL_NONE); assert(rc == 0); hal_gpio_irq_enable(SX1276_DIO3); } if (irqHandlers[4] != NULL) { rc = hal_gpio_irq_init(SX1276_DIO4, irqHandlers[4], NULL, HAL_GPIO_TRIG_RISING, HAL_GPIO_PULL_NONE); assert(rc == 0); hal_gpio_irq_enable(SX1276_DIO4); } if (irqHandlers[5] != NULL) { rc = hal_gpio_irq_init(SX1276_DIO5, irqHandlers[5], NULL, HAL_GPIO_TRIG_RISING, HAL_GPIO_PULL_NONE); assert(rc == 0); hal_gpio_irq_enable(SX1276_DIO5); } }