You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
947 B

/** @file led.c
@author M. P. Hayes, UCECE
@date 15 Feb 2003
@brief LED driver.
*/
#include "system.h"
#include "pio.h"
#include "led.h"
typedef struct
{
pio_t pio;
/* True for active high, false for active low. */
bool active_high;
} led_cfg_t;
/* Define LEDs. */
static const led_cfg_t leds_cfg[] =
{
{.pio = LED1_PIO, .active_high = 1},
/* Add config data for additional LEDs here. */
};
#define LEDS_NUM ARRAY_SIZE (leds_cfg)
void led_set (uint8_t led, bool state)
{
if (led >= LEDS_NUM)
return;
pio_output_set (leds_cfg[led].pio,
leds_cfg[led].active_high ? state : !state);
}
/** Initialise LED driver. */
void led_init (void)
{
uint8_t i;
for (i = 0; i < LEDS_NUM; i++)
{
pio_config_set (leds_cfg[i].pio,
leds_cfg[i].active_high
? PIO_OUTPUT_HIGH : PIO_OUTPUT_LOW);
}
}