Files

49 lines
815 B
C

#include "led.h"
#include "led_if.h"
int led_init(led_t *led, int id)
{
if (!led) return -1;
led->id = id;
led->state = 0;
int ret = led_if_init(id);
if (ret == 0) {
// 同步硬件状态
int hw_state = led_if_read(id);
led->state = (hw_state > 0) ? 1 : 0;
}
return ret;
}
int led_on(led_t *led)
{
if (!led) return -1;
int ret = led_if_write(led->id, 1);
if (ret == 0) led->state = 1;
return ret;
}
int led_off(led_t *led)
{
if (!led) return -1;
int ret = led_if_write(led->id, 0);
if (ret == 0) led->state = 0;
return ret;
}
int led_toggle(led_t *led)
{
if (!led) return -1;
int ret = led_if_toggle(led->id);
if (ret == 0) led->state ^= 1;
return ret;
}