Sensor interrupt initialization function */
| 100 | |
| 101 | /* Sensor interrupt initialization function */ |
| 102 | static rt_err_t rt_sensor_irq_init(rt_sensor_t sensor) |
| 103 | { |
| 104 | if (sensor->config.irq_pin.pin == RT_PIN_NONE) |
| 105 | { |
| 106 | return -RT_EINVAL; |
| 107 | } |
| 108 | |
| 109 | rt_pin_mode(sensor->config.irq_pin.pin, sensor->config.irq_pin.mode); |
| 110 | |
| 111 | if (sensor->config.irq_pin.mode == PIN_MODE_INPUT_PULLDOWN) |
| 112 | { |
| 113 | rt_pin_attach_irq(sensor->config.irq_pin.pin, PIN_IRQ_MODE_RISING, irq_callback, (void *)sensor); |
| 114 | } |
| 115 | else if (sensor->config.irq_pin.mode == PIN_MODE_INPUT_PULLUP) |
| 116 | { |
| 117 | rt_pin_attach_irq(sensor->config.irq_pin.pin, PIN_IRQ_MODE_FALLING, irq_callback, (void *)sensor); |
| 118 | } |
| 119 | else if (sensor->config.irq_pin.mode == PIN_MODE_INPUT) |
| 120 | { |
| 121 | rt_pin_attach_irq(sensor->config.irq_pin.pin, PIN_IRQ_MODE_RISING_FALLING, irq_callback, (void *)sensor); |
| 122 | } |
| 123 | |
| 124 | rt_pin_irq_enable(sensor->config.irq_pin.pin, RT_TRUE); |
| 125 | |
| 126 | LOG_I("interrupt init success"); |
| 127 | |
| 128 | return 0; |
| 129 | } |
| 130 | |
| 131 | // local rt_sensor_ops |
| 132 |
no test coverage detected