android hdmi拔插广播,Android drivers/switch驱动详解(用于通过GPIO状态检测耳机、HDMI等的插拔状态)...
一、相关文件:
/drivers/switch/switch_gpio.c
/drivers/switch/switch_class.c
二、节点创建流程:
1、在/sys/class/目录下创建“switch”类,创建完成后出现/sys/class/switch,具体实现如下:
struct class *switch_class;
switch_class = class_create(THIS_MODULE, "switch");
2、在/sys/class/switch目录下创建某个具体设备(比如“h2w”),创建完成后出现/sys/class/switch/h2w,具体实现如下:
struct switch_dev *sdev;
sdev->dev = device_create(switch_class, NULL,
MKDEV(0, sdev->index), NULL, sdev->name); // 其中sdev->name赋值为“h2w”
3、在/sys/class/switch/h2w目录下创建设备的属性文件(比如“name”和“state”),创建完成后出现/sys/class/switch/h2w/name和/sys/class/switch/h2w/state,具体实现如下:
static DEVICE_ATTR(state, S_IRUGO | S_IWUSR, state_show, NULL); // state_show实现对state属性文件读操作
static DEVICE_ATTR(name, S_IRUGO | S_IWUSR, name_show, NULL);//name_show实现对name属性文件读操作
int ret;
ret = device_create_file(sdev->dev, &dev_attr_name);
ret = device_create_file(sdev->dev, &dev_attr_state);
三、节点创建关键函数:
1、class_create
该函数用于创建一个class;
2、device_create
/**
* device_create - 创建一个设备并将它注册到sysfs文件系统里
* @class: 指向class_create函数创建的class
* @parent: pointer to the parent struct device of this new device, if any
* @devt: the dev_t for the char device to be added
* @drvdata: the data to be added to the device for callbacks
* @fmt: 设备名称
*/
struct device *device_create(struct class *class, struct device *parent,
dev_t devt, void *drvdata, const char *fmt, ...);
3、device_create_file
/** * device_create_file - 创建设备的属性文件 * @dev: 指定具体为哪个设备创建属性文件 * @attr: 该设备对应的属性描述 */ int device_create_file(struct device *dev, const struct device_attribute *attr);
android hdmi拔插广播,Android drivers/switch驱动详解(用于通过GPIO状态检测耳机、HDMI等的插拔状态)...相关推荐
- Android 基础知识4-3.6 ToggleButton(开关按钮)Switch(开关)详解
一.ToggleButton(开关按钮) 1.1.简介 ToggleButton 类似开关有开和关两种状态,不同的状态下可以有不同的文本. public class ToggleBut ...
- android系统休眠发广播,Android - BroadcastReceiver
BroadcastReceiver BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等: BroadcastReceiver 是 A ...
- Android 系统(214)---Android 7.1.1时间更新NITZ和NTP详解
Android 7.1.1时间更新NITZ和NTP详解 1.NTP和NITZ简介 最近在项目中遇到手机首次插上移动卡时不能自动更新时间的问题,就特意跟了下Android系统中手机时间更新有两种方式NT ...
- Android M新特性Doze and App Standby模式详解
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...
- Android异步处理三:Handler+Looper+MessageQueue深入详解
本博文地址:http://blog.csdn.net/mylzc/article/details/6771331 转载请注明出处 Android异步处理系列文章索引 Android异步处理一:使用Th ...
- Android VCard联系人备份恢复(导入/导出)详解
原文地址为: Android VCard联系人备份恢复(导入/导出)详解 首先我们简单的看下在Android中联系人的存储结构. 工作环境:android 2.3.3 联系人的主要数据存放在raw_c ...
- Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash
Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...
- Android基础入门教程——2.5.3 AlertDialog(对话框)详解
Android基础入门教程--2.5.3 AlertDialog(对话框)详解 标签(空格分隔): Android基础入门教程 本节引言: 本节继续给大家带来是显示提示信息的第三个控件AlertDia ...
- android setinputtype光标,Android屏蔽软键盘并且显示光标的实例详解
Android屏蔽软键盘并且显示光标的实例详解 如果是android4.0以下,那么 editText.setInputType(InputType.TYPE_NULL); 就够了,android4. ...
最新文章
- 【神经网络】(11) 轻量化网络MobileNetV1代码复现、解析,附Tensorflow完整代码
- 深入理解Eureka之源码解析
- 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)
- 13.PHP中循环结构之foreach循环语句(任务一)
- 数据库怎么看是什么编码_离婚了怎么发朋友圈?看你喜欢什么类型
- 【Divided Two】cpp
- 常见makefile写法
- LDA话题模型与推荐系统
- 第十篇 requests模块
- 中国裁判文书网爬虫分析(2019年7月版)
- 今天我们来聊聊递归喝汽水问题
- 终于交作业了,View Design 的设计资源上线啦,免费哦
- 规格说明书:吉林市一日游
- emule最新服务器地址,emule 国内服务器(最新emule服务器)
- 分享137个ASP源码,总有一款适合您
- 阿里云ECS云服务器资源购买决策
- CString 使用详解
- go concurrent map writes map并发问题
- 字符串的几种常见的反转
- 安装【银河麒麟V10】linux系统