Android系统--灯光系统驱动编写
来源:互联网 发布:二级建造师考试软件 编辑:程序博客网 时间:2024/06/10 03:51
Android系统开发--Android灯光系统tiny4412_led_class驱动编写
框架分析
led_classdev_4412结构体
创建led_classdev_4412结构体
分配结构体空间
struct led_classdev_4412 { struct led_classdev cdev; int gpio;};
struct led_classdev { const char *name; int brightness; int max_brightness; int flags; /* Lower 16 bits reflect status */#define LED_SUSPENDED (1 << 0) /* Upper 16 bits reflect control information */#define LED_CORE_SUSPENDRESUME (1 << 16) /* Set LED brightness level */ /* Must not sleep, use a workqueue if needed */ void (*brightness_set)(struct led_classdev *led_cdev, enum led_brightness brightness); /* Get LED brightness level */ enum led_brightness (*brightness_get)(struct led_classdev *led_cdev); /* * Activate hardware accelerated blink, delays are in milliseconds * and if both are zero then a sensible default should be chosen. * The call should adjust the timings in that case and if it can't * match the values specified exactly. * Deactivate blinking again when the brightness is set to a fixed * value via the brightness_set() callback. */ int (*blink_set)(struct led_classdev *led_cdev, unsigned long *delay_on, unsigned long *delay_off); struct device *dev; struct list_head node; /* LED Device list */ const char *default_trigger; /* Trigger to use */ unsigned long blink_delay_on, blink_delay_off; struct timer_list blink_timer; int blink_brightness;#ifdef CONFIG_LEDS_TRIGGERS /* Protects the trigger data below */ struct rw_semaphore trigger_lock; struct led_trigger *trigger; struct list_head trig_list; void *trigger_data;#endif};
led_devs = kzalloc(sizeof(struct led_classdev_4412) * sizeof(led_gpios)/sizeof(led_gpios[0]), GFP_KERNEL);
设置led_classdev_4412中属性,并注册结构体--led_classdev_register
led_classdev_4412属性如下:
led_cdev->max_brightness
led_cdev->brightness_set
led_cdev->flags
led_cdev->brightness
led_cdev->name
实现代码如下:
struct led_desc { int gpio; char *name;};static struct led_desc led_gpios[] = { {EXYNOS4212_GPM4(0), "led1"}, {EXYNOS4212_GPM4(1), "led2"}, {EXYNOS4212_GPM4(2), "led3"}, {EXYNOS4212_GPM4(3), "led4"},};
for (i = 0; i < sizeof(led_gpios)/sizeof(led_gpios[0]); i++) { s3c_gpio_cfgpin(led_gpios[i].gpio, S3C_GPIO_OUTPUT); gpio_set_value(led_gpios[i].gpio, 1); //设置为LED_OFF led_devs[i].cdev.max_brightness = LED_FULL; led_devs[i].cdev.brightness_set = brightness_set_4412; led_devs[i].cdev.flags = LED_CORE_SUSPENDRESUME; led_devs[i].cdev.brightness = LED_OFF; led_devs[i].cdev.name = led_gpios[i].name; //设置为对应的引脚设备名 led_devs[i].gpio = led_gpios[i].gpio; //记录对应引脚 /* 3. led_classdev_register */ ret = led_classdev_register(NULL, &led_devs[i].cdev); /*注册失败之后,将之前注册的设备注销,并且释放空间*/ if (ret) { i--; while (i >= 0) { led_classdev_unregister(&led_devs[i].cdev); i--; } kfree(led_devs); return -EIO; } } return 0;}
0 0
- Android系统--灯光系统驱动编写
- Android系统--灯光系统驱动编写
- 1.Android灯光系统_led_class驱动
- 2.Android灯光系统_编写HAL_lights.c
- Android灯光系统框架分析
- Android灯光系统-class和HAL
- 1.Android灯光系统_总体框架
- 关于引擎灯光系统
- 2.Android灯光系统_源码分析_电池灯
- 3.Android灯光系统_源码分析_通知灯
- 4.Android灯光系统_源码分析_背光灯
- Android系统驱动概述
- Linux系统I2C设备驱动编写方法
- linux系统下编写I2C驱动
- android驱动之旅-在Ubuntu上为Android系统编写Linux内核驱动程序(3)
- DMX512 数字灯光系统(DMX512-A)
- Android Studio 编写系统APP
- Android架构实例分析之编写hello驱动的系统硬件服务
- JavaSE基础
- 为人处世之道
- Sublime Text 3设置吊炸天PHP开发环境
- Http misc
- Session 缓存配置怎么操作
- Android系统--灯光系统驱动编写
- .val() .html() .text()的区别
- 如何使用php中ftp函数上传文件以及解决php上传文件失败的方法
- vue2.0 生命周期图以及栗子
- c++常量解析
- java 深度复制
- 面试题(其他)
- Practice3_6_vector_sort_struct_gold_silver_bronze_playerName2
- 如何调试Android Native Framework