First commit
This commit is contained in:
46
drivers/led/led.c
Normal file
46
drivers/led/led.c
Normal file
@@ -0,0 +1,46 @@
|
||||
#include "led.h"
|
||||
#include <zephyr/sys/printk.h>
|
||||
|
||||
/* Device tree bindings */
|
||||
#define LED0_NODE DT_ALIAS(led0)
|
||||
#define LED1_NODE DT_ALIAS(led1)
|
||||
|
||||
static const struct gpio_dt_spec led0 = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
|
||||
static const struct gpio_dt_spec led1 = GPIO_DT_SPEC_GET(LED1_NODE, gpios);
|
||||
|
||||
static struct k_timer led0_timer;
|
||||
static struct k_timer led1_timer;
|
||||
|
||||
static void led0_timer_handler(struct k_timer *dummy) { gpio_pin_toggle_dt(&led0); }
|
||||
static void led1_timer_handler(struct k_timer *dummy) { gpio_pin_toggle_dt(&led1); }
|
||||
|
||||
void led_init(void) {
|
||||
if (!device_is_ready(led0.port) || !device_is_ready(led1.port)) {
|
||||
printk("LED devices not ready\n");
|
||||
return;
|
||||
}
|
||||
gpio_pin_configure_dt(&led0, GPIO_OUTPUT_INACTIVE);
|
||||
gpio_pin_configure_dt(&led1, GPIO_OUTPUT_INACTIVE);
|
||||
k_timer_init(&led0_timer, led0_timer_handler, NULL);
|
||||
k_timer_init(&led1_timer, led1_timer_handler, NULL);
|
||||
}
|
||||
|
||||
void led_set(int led_id, int state) {
|
||||
if (led_id == 0) gpio_pin_set_dt(&led0, state);
|
||||
else if (led_id == 1) gpio_pin_set_dt(&led1, state);
|
||||
}
|
||||
|
||||
void led_toggle(int led_id) {
|
||||
if (led_id == 0) gpio_pin_toggle_dt(&led0);
|
||||
else if (led_id == 1) gpio_pin_toggle_dt(&led1);
|
||||
}
|
||||
|
||||
void led_start_blink(int led_id, int interval_ms) {
|
||||
if (led_id == 0) k_timer_start(&led0_timer, K_MSEC(interval_ms), K_MSEC(interval_ms));
|
||||
else if (led_id == 1) k_timer_start(&led1_timer, K_MSEC(interval_ms), K_MSEC(interval_ms));
|
||||
}
|
||||
|
||||
void led_stop_blink(int led_id) {
|
||||
if (led_id == 0) k_timer_stop(&led0_timer);
|
||||
else if (led_id == 1) k_timer_stop(&led1_timer);
|
||||
}
|
||||
13
drivers/led/led.h
Normal file
13
drivers/led/led.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef LED_H
|
||||
#define LED_H
|
||||
|
||||
#include <zephyr/drivers/gpio.h>
|
||||
#include <zephyr/kernel.h>
|
||||
|
||||
void led_init(void);
|
||||
void led_set(int led_id, int state);
|
||||
void led_toggle(int led_id);
|
||||
void led_start_blink(int led_id, int interval_ms);
|
||||
void led_stop_blink(int led_id);
|
||||
|
||||
#endif // LED_H
|
||||
Reference in New Issue
Block a user