Firefly开源社区

打印 上一主题 下一主题

[GPIO] FireWRT-GPIO电源按键----2

23

积分

0

威望

0

贡献

游客

积分
23

[GPIO] FireWRT-GPIO电源按键----2

发表于 2015-3-30 17:49:20      浏览:6565 | 回复:2        打印      只看该作者   [复制链接] 楼主
本帖最后由 pinyin 于 2015-4-16 09:08 编辑

在按键驱动 gpio-button-hotplug.c 中对按键的键值和名称进行了映射,如下所示:

比如 电源键 按键,键值为 116,对应的名称为“power”,当按下或释放该按键时,驱动会向用户层发送事件,最终执行
/etc/rc.button/目录下所对应的脚本 power,其内容如下:
  1. #!/bin/sh
  2. mnt="/mnt"
  3. kill_all() {
  4.     PIDS=`fuser -m $1`
  5.     if [ ! -z "$PIDS"  ];then
  6.         for line in $PIDS
  7.         do
  8.             if [ "$line" -eq "1"  ]; then
  9.                 break
  10.             fi
  11.             kill -9 $line
  12.         done
  13.     fi

  14. }
  15. foreachd(){
  16.         for file in $mnt/*
  17.         do
  18.             if [ -d $file ]
  19.             then
  20.                 kill_all $file 1>/dev/null 2>&1
  21.                        umount_device_ret=$(umount $file 2>&1)
  22.                        umount_device_ret_erro=`echo $umount_device_ret | grep "can't"`
  23.             fi
  24.            
  25.                if [ -z "$umount_device_ret_erro" ];then
  26.                        rm -r $file 1>/dev/null 2>&1
  27.                        echo "Success"
  28.                else
  29.                    echo "Error umout"
  30.                fi
  31.         done
  32. }
  33. countfile=0

  34. for file in $mnt/*
  35. do
  36.     if [ -d $file ]
  37.     then
  38.         countfile=$countfile+1
  39.         break;
  40.     fi
  41. done

  42. if [ $countfile -eq 0 ]#如果没有设备挂在就直接关机
  43. then
  44.     echo 0 > /sys/class/gpio/gpio24/value
  45. else#卸载设备再休眠1s关机
  46.     foreachd $mnt
  47.     sleep 1
  48.     echo 0 > /sys/class/gpio/gpio24/value
  49. fi
复制代码
在此前必须先执行
  1. GPIO24=24
  2. echo $GPIO24 > /sys/class/gpio/export
  3. echo out > /sys/class/gpio/gpio${GPIO24}/direction
  4. echo 1 > /sys/class/gpio/gpio${GPIO24}/value
复制代码
原因时GPIO 24时控制电源
所以我们让上面的这个脚本自动启动
  1. #!/bin/sh /etc/rc.common
  2. # Copyright (C) 2006 OpenWrt.org

  3. START=65
  4. start() {
  5.     /sbin/mkpowerio.sh
  6. }
复制代码





回复

使用道具 举报

23

积分

0

威望

0

贡献

游客

积分
23
发表于 2015-3-30 17:52:48        只看该作者  沙发
:lol
回复

使用道具 举报

30

积分

0

威望

0

贡献

技术小白

积分
30
发表于 2015-3-31 10:41:49        只看该作者  板凳
顶顶顶,,,讲的不错。。。哈哈哈,,,:lol:lol
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表