embox
1/**
2* @file
3* @brief
4*
5* @author Dmitry Kocherygin
6* @date 15.12.2021
7*/
8
9#include <stdio.h>10#include <stdlib.h>11#include <errno.h>12#include <unistd.h>13
14#include <lib/libds/array.h>15#include <drivers/gpio/gpio.h>16
17struct led_desc {18int gpio; /**< port */19int pin; /**< pin mask */20};21
22static const struct led_desc leds[] = {23#include <gpio_config.inc>24};25
26#define LEDS_N ARRAY_SIZE(leds)27
28int led_driver_set(unsigned int nr) {29
30if (nr >= 2) {31return -EINVAL;32}33gpio_set(leds[nr].gpio, leds[nr].pin, GPIO_PIN_HIGH);34
35return 0;36}
37
38int led_driver_clear(unsigned int nr) {39
40if (nr >= 2) {41return -EINVAL;42}43
44gpio_set(leds[nr].gpio, leds[nr].pin, GPIO_PIN_LOW);45
46return 0;47}
48
49int main(int argc, char *argv[]) {50int i;51for (i = 0; i < LEDS_N; i++) {52if (0 != gpio_setup_mode(leds[i].gpio, leds[i].pin,53GPIO_MODE_OUT)) {54return -EINVAL;55}56}57
58while (1) {59for (i = 0; i < LEDS_N; i++) {60led_driver_set(i);61sleep (1);62led_driver_clear(i);63if (LEDS_N == 1) {64sleep (1);65}66}67}68return 0;69}
70