| 26 | #define raw_to_gpio_led(raw) rt_container_of(raw, struct gpio_led, parent) |
| 27 | |
| 28 | static rt_err_t gpio_led_set_state(struct rt_led_device *led, enum rt_led_state state) |
| 29 | { |
| 30 | rt_err_t err = RT_EOK; |
| 31 | struct gpio_led *gled = raw_to_gpio_led(led); |
| 32 | |
| 33 | rt_pin_mode(gled->pin, PIN_MODE_OUTPUT); |
| 34 | |
| 35 | switch (state) |
| 36 | { |
| 37 | case RT_LED_S_OFF: |
| 38 | rt_pin_write(gled->pin, !gled->active_val); |
| 39 | break; |
| 40 | |
| 41 | case RT_LED_S_ON: |
| 42 | rt_pin_write(gled->pin, gled->active_val); |
| 43 | break; |
| 44 | |
| 45 | case RT_LED_S_TOGGLE: |
| 46 | err = led->ops->get_state(led, &state); |
| 47 | |
| 48 | if (!err) |
| 49 | { |
| 50 | err = led->ops->set_state(led, state == RT_LED_S_OFF ? RT_LED_S_ON : RT_LED_S_OFF); |
| 51 | } |
| 52 | break; |
| 53 | |
| 54 | default: |
| 55 | return -RT_ENOSYS; |
| 56 | } |
| 57 | |
| 58 | return err; |
| 59 | } |
| 60 | |
| 61 | static rt_err_t gpio_led_get_state(struct rt_led_device *led, enum rt_led_state *out_state) |
| 62 | { |
nothing calls this directly
no test coverage detected