49 lines
815 B
C
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;
|
|
} |