失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 驱动_Input输入子系统

驱动_Input输入子系统

时间:2020-07-31 09:43:45

相关推荐

驱动_Input输入子系统

<结构体>

struct input_dev{

const char *name;

const char *phys;

const char *uniq;

struct input_id id;

//位表

unsigned long evbit[BITS_TO_LONGS(EV_CNT)]; //表示能够产生哪种类型的数据:EV_KEY,EV_ABS

unsigned long keybit[BITS_TO_LONGS(KEY_CNT)]; //表示能够产生哪些按键数据

unsigned long relbit[BITS_TO_LONGS(REL_CNT)]; //表示能够产生哪些相对坐标数据

unsigned long absbit[BITS_TO_LONGS(ABS_CNT)]; //表示能够产生哪些绝对坐标数据

unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];

unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];

unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];

unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];

unsigned long swbit[BITS_TO_LONGS(SW_CNT)];

struct device dev; //父类

struct list_head h_list;

struct list_head node; //链表的节点

};

struct input_event{ //上报给用户的输入设备的数据包的类型

struct timeval time; //时间戳

__u16 type; //读到的数据类型:EV_KEY,EV_ABS,EV_REL

__u16 code; //编码值

__s32 value; //状态

};

<笔记>

1.input handler 用户交互,不知数据,只知上传

2.input_core 维护了两个链表,为上下层提供接口,他不是总线!!

3.input device 硬件交互,知道数据,不知上传

4.编程:

1,分配一个 input device对象

2,初始化input device对象

3,注册input device对象

4,硬件初始化,获取到硬件的数据,上报给input handler

5.代码:

key:/panda-w/p/10943249.html

ts :/panda-w/p/10949993.html

6.input_core层也实现了一个fops,但只实现了open,就回到了input_handler层,所以他第一个打开

7.一个设备对应一个connect方法,对应一个设备节点,对应一个event对象,对应一个input_handle,对应一个event_client缓冲队列,所以数据上报不会混乱

8.应用程序会根据设备号找到对应的缓冲队列

如果觉得《驱动_Input输入子系统》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。