Firefly开源社区

标题: [GPIO] FireWRT-GPIO电源按键----2 [打印本页]

作者: pinyin    时间: 2015-3-30 17:49
标题: [GPIO] FireWRT-GPIO电源按键----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. }
复制代码






作者: pinyin    时间: 2015-3-30 17:52
:lol
作者: hades    时间: 2015-3-31 10:41
顶顶顶,,,讲的不错。。。哈哈哈,,,:lol:lol




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1