1 /* 2 * Copyright (c) 2006-2022, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2022-3-08 GuEe-GUI the first version 9 */ 10 11 #ifndef __LED_H__ 12 #define __LED_H__ 13 14 #include <rthw.h> 15 #include <rtdef.h> 16 17 struct rt_led_ops; 18 19 enum rt_led_state 20 { 21 RT_LED_S_OFF, 22 RT_LED_S_ON, 23 RT_LED_S_TOGGLE, 24 RT_LED_S_BLINK, 25 26 RT_LED_STATE_NR, 27 }; 28 29 struct rt_led_device 30 { 31 struct rt_device parent; 32 33 const struct rt_led_ops *ops; 34 35 struct rt_spinlock spinlock; 36 37 void *sysdata; 38 void *priv; 39 }; 40 41 struct rt_led_ops 42 { 43 rt_err_t (*set_state)(struct rt_led_device *led, enum rt_led_state state); 44 rt_err_t (*get_state)(struct rt_led_device *led, enum rt_led_state *out_state); 45 rt_err_t (*set_period)(struct rt_led_device *led, rt_uint32_t period_ms); 46 rt_err_t (*set_brightness)(struct rt_led_device *led, rt_uint32_t brightness); 47 }; 48 49 rt_err_t rt_led_register(struct rt_led_device *led); 50 rt_err_t rt_led_unregister(struct rt_led_device *led); 51 52 rt_err_t rt_led_set_state(struct rt_led_device *led, enum rt_led_state state); 53 rt_err_t rt_led_get_state(struct rt_led_device *led, enum rt_led_state *out_state); 54 rt_err_t rt_led_set_period(struct rt_led_device *led, rt_uint32_t period_ms); 55 rt_err_t rt_led_set_brightness(struct rt_led_device *led, rt_uint32_t brightness); 56 57 #endif /* __LED_H__ */ 58