博客
关于我
电平触发设备休眠唤醒--输入子系统+内核线程
阅读量:338 次
发布时间:2019-03-04

本文共 532 字,大约阅读时间需要 1 分钟。

场景分析:

KEY_A键作为按键,高电平时设备正常工作,低电平时设备休眠。
KEY_B键作为显示灯,工作时为高电平(亮灯),休眠时为低电平(灭灯)。

思路:

创建一个内核线程,持续检测KEY_A的电平状态,并根据检测结果向输入子系统报告相应事件。

环境支持:

Android7.1系统

技术实现:

  • 导入相关内核头文件,包括输入设备管理、GPIO操作、任务队列管理等。
  • 定义输入设备结构体,并注册设备。
  • 创建内核线程,执行按键状态检测。
  • 在检测到电平变化时,根据状态(高电平或低电平)触发相应的输入事件。
  • 代码逻辑:

    • 初始化函数
      • 请求GPIO资源并设置方向。
      • 分配输入设备结构体,并配置设备属性。
      • 注册输入设备。
      • 创建并启动内核线程,用于持续检测按键状态。
    • 线程函数
      • 持续循环检测KEY_A的电平状态。
      • 如果状态未变化,保持当前工作状态。
      • 如果状态发生变化,根据高电平或低电平调用相应的GPIO输出控制。
      • 同时,报告相应的输入事件(如KEY_WAKEUP或KEY_POWER)。
      • 每隔一秒循环检测,确保及时响应状态变化。

    注意事项:

    • 需要正确配置GPIO号和对应的输入事件类型。
    • 内核线程需要在模块卸载时进行停止和资源释放。
    • 需要在内核模块中正确注册和注销设备。

    转载地址:http://aqme.baihongyu.com/

    你可能感兴趣的文章
    随机四则运算
    查看>>
    Java面向对象
    查看>>
    JAVA带标签的break和continue
    查看>>
    Java获取线程基本信息的方法
    查看>>
    Java集合Collection
    查看>>
    SpringBoot快速入门
    查看>>
    医疗管理系统-手机快速登录和SpringSecurity权限控制
    查看>>
    网页实现微信登录
    查看>>
    vue源码分析(MVVM篇)
    查看>>
    React(八)- ReactUI组件库及Redux的使用
    查看>>
    TypeScript系列(一)- TypeScript简介与编译配置
    查看>>
    TypeScript系列文章导航
    查看>>
    hibernate和mybatis的区别
    查看>>
    Java中Map的用法详解
    查看>>
    base64编码字符串和图片的互转
    查看>>
    汉字转为拼音
    查看>>
    Target runtime Apache Tomcat v7.0 is not defined.错误解决方法
    查看>>
    linux 下安装kolla报错 提示Cannot uninstall requests
    查看>>
    Linux RPM和yum命令的使用技巧
    查看>>
    Python 使jupyter notebook 从指定浏览器启动 以及编程中途更换浏览器
    查看>>