64 lines
1.9 KiB
C
64 lines
1.9 KiB
C
|
|
#include "typesdef.h"
|
||
|
|
#include "list.h"
|
||
|
|
#include "errno.h"
|
||
|
|
#include "dev.h"
|
||
|
|
#include "hal/led.h"
|
||
|
|
|
||
|
|
|
||
|
|
int32 led_open(struct led_device *led, enum led_work_mode work_mode, enum led_seg_cnt seg_cnt, enum led_com_cnt com_cnt)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->open) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->open(led, work_mode, seg_cnt, com_cnt);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|
||
|
|
int32 led_on(struct led_device *led, uint32 num, enum led_com_cnt pos)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->on) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->on(led, num, pos);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|
||
|
|
int32 led_off(struct led_device *led, enum led_com_cnt pos)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->off) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->off(led, pos);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|
||
|
|
int32 led_close(struct led_device *led)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->close) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->close(led);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|
||
|
|
int32 led_ioctl(struct led_device *led, enum led_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->ioctl) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->ioctl(led, ioctl_cmd, param1, param2);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|
||
|
|
int32 led_request_irq(struct led_device *led, enum led_irq_flag irq_flag, led_irq_hdl irq_hdl, uint32 irq_data)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->request_irq) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->request_irq(led, irq_flag, irq_hdl, irq_data);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|
||
|
|
int32 led_release_irq(struct led_device *led, enum led_irq_flag irq_flag)
|
||
|
|
{
|
||
|
|
if (led && ((const struct led_hal_ops *)led->dev.ops)->release_irq) {
|
||
|
|
return ((const struct led_hal_ops *)led->dev.ops)->release_irq(led, irq_flag);
|
||
|
|
}
|
||
|
|
return RET_ERR;
|
||
|
|
}
|
||
|
|
|