MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / gpio_led_set_state

Function gpio_led_set_state

components/drivers/led/led-gpio.c:28–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26#define raw_to_gpio_led(raw) rt_container_of(raw, struct gpio_led, parent)
27
28static 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
61static rt_err_t gpio_led_get_state(struct rt_led_device *led, enum rt_led_state *out_state)
62{

Callers

nothing calls this directly

Calls 2

rt_pin_modeFunction · 0.50
rt_pin_writeFunction · 0.50

Tested by

no test coverage detected