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

Function rt_led_register

components/drivers/led/led.c:122–194  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

120}
121
122rt_err_t rt_led_register(struct rt_led_device *led)
123{
124 rt_err_t err;
125 int device_id;
126 const char *dev_name;
127 struct blink_timer *btimer = RT_NULL;
128
129 if (!led || !led->ops)
130 {
131 return -RT_EINVAL;
132 }
133
134 if ((device_id = rt_dm_ida_alloc(&led_ida)) < 0)
135 {
136 return -RT_EFULL;
137 }
138
139 rt_dm_dev_set_name(&led->parent, "led%u", device_id);
140 dev_name = rt_dm_dev_get_name(&led->parent);
141
142 led->sysdata = RT_NULL;
143 rt_spin_lock_init(&led->spinlock);
144
145 if (!led->ops->set_period && led->ops->set_state)
146 {
147 btimer = rt_malloc(sizeof(*btimer));
148
149 if (!btimer)
150 {
151 LOG_E("%s create blink timer failed", dev_name);
152
153 err = -RT_ENOMEM;
154 goto _fail;
155 }
156
157 led->sysdata = btimer;
158
159 btimer->toggle = RT_FALSE;
160 btimer->enabled = RT_FALSE;
161 rt_timer_init(&btimer->timer, dev_name, _led_blink_timerout, led,
162 rt_tick_from_millisecond(500), RT_TIMER_FLAG_PERIODIC);
163 }
164
165 led->parent.type = RT_Device_Class_Char;
166#ifdef RT_USING_DEVICE_OPS
167 led->parent.ops = &_led_ops;
168#else
169 led->parent.read = _led_read;
170 led->parent.write = _led_write;
171#endif
172 led->parent.master_id = led_ida.master_id;
173 led->parent.device_id = device_id;
174
175 if ((err = rt_device_register(&led->parent, dev_name, RT_DEVICE_FLAG_RDWR)))
176 {
177 goto _fail;
178 }
179

Callers 1

ofw_append_gpio_ledFunction · 0.85

Calls 11

rt_dm_ida_allocFunction · 0.85
rt_dm_dev_set_nameFunction · 0.85
rt_dm_dev_get_nameFunction · 0.85
rt_mallocFunction · 0.85
rt_timer_initFunction · 0.85
rt_tick_from_millisecondFunction · 0.85
rt_device_registerFunction · 0.85
rt_dm_ida_freeFunction · 0.85
rt_timer_detachFunction · 0.85
rt_freeFunction · 0.85
rt_spin_lock_initFunction · 0.50

Tested by

no test coverage detected