准备工作: 1.在InitEarlyUserFeatures()函数下会调用buttonManagerInit(),进行button管理初始化 ![]() (1)BUTTON_GDATA这个全局变量非常重要,这里不展开说这个结构体,因为后面就会使用到,在那说明更容易理解,但名字要记住喔! ![]() buttonManagerInit()函数前面几句就是开辟了结构体空间,并赋予了theSink.task (2)ButtonsInit()函数 ![]() (3)bmInitButtonConfig函数 这个函数有4步操作 ![]() 第一步获取硬件接口转换列表,保存到BUTTON_GDATA下的button_translation_type_t结构体参数中,看到下面结构体的定义就很容易与ADK configuration tool的Translation Table关联起来了 ![]() 第二步设置按键短按长按等时间配置,若没有设置防抖时间会设置默认 ![]() 第三步设置button event 上一篇我们说到ADK configuration tool可以配置总共66个event,这 66个event是分三个保存,每个22个event ![]() bmInitInputCheckMasks函数遍历66个event 上面都配置好后,就是在ButtonsMessageHandler()函数监听MESSAGE_PIO_CHANGED和MESSAGE_CHARGER_CHANGED,如果收到了PIO改变就会调用ButtonsCheckDetection()–>ButtonsLevelDetect()等函数来判断哪个按键按下,然后把event发到system去。 来源:https://blog.csdn.net/weixin_43177813/article/details/82826426 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
GMT+8, 2025-5-1 00:47 , Processed in 0.142620 second(s), 16 queries , Gzip On, MemCached On.
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.