Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3115123
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: 嵌入式

2014-09-26 16:10:21

#!/bin/sh /etc/rc.common
# (C) 2008 openwrt.org

START=96
#从/etc/config目录中的system文件中获取配置参数。
load_led() {
 local name
 local sysfs
 local trigger
 local dev
 local mode
 local default
 local delayon
 local delayoff
 local interval

 config_get sysfs $1 sysfs
 config_get name $1 name "$sysfs"
 config_get trigger $1 trigger "none"
 config_get dev $1 dev
 config_get mode $1 mode "link"
 config_get_bool default $1 default "nil"
 config_get delayon $1 delayon
 config_get delayoff $1 delayoff
 config_get interval $1 interval "50"
 config_get port_state $1 port_state
 config_get delay $1 delay "150"
 config_get message $1 message ""
#若果触发模式配置成rssi(指示无线信号强度),则led灯的亮灭需要自己写应用层程序来控制,往
#/sys/class/leds/${sysfs}/brightness中直接写1/0即可控制灯的亮灭。
 if [ "$trigger" = "rssi" ]; then
  # handled by rssileds userspace process
  return
 fi
#-e为存在性检查,检查是否存在/sys/class/leds/${sysfs}/brightness这个文件
#多个命令用&&相连时,表示前面命令执行成功后面的才能执行;||相连表示前面命令执行失败后面的才能执行。
 [ -e /sys/class/leds/${sysfs}/brightness ] && {#--------------》》》》》》》》》》》》
  echo "setting up led ${name}"
  [ "$default" != nil ] && {#只有默认的亮灭配置数值$default不为空,后面的命令才能执行。
   [ $default -eq 1 ] &&#若led的默认亮灭配置数值为1,则往/sys/class/leds/${sysfs}/brightness写入1.
    echo 1 >/sys/class/leds/${sysfs}/brightness
   [ $default -eq 1 ] ||#只有该命令执行失败(即未配置led的默认亮灭数值),后面通过网络数据流收发、定时器、usb控制led亮灭的命令才能执行。
    echo 0 >/sys/class/leds/${sysfs}/brightness
  }
  echo $trigger > /sys/class/leds/${sysfs}/trigger
  case "$trigger" in
  "netdev")
   [ -n "$dev" ] && {
    echo $dev > /sys/class/leds/${sysfs}/device_name
    echo $mode > /sys/class/leds/${sysfs}/mode
   }
   ;;

  "timer")
   [ -n "$delayon" ] && \
    echo $delayon > /sys/class/leds/${sysfs}/delay_on
   [ -n "$delayoff" ] && \
    echo $delayoff > /sys/class/leds/${sysfs}/delay_off
   ;;

  "usbdev")
   [ -n "$dev" ] && {
    echo $dev > /sys/class/leds/${sysfs}/device_name
    echo $interval > /sys/class/leds/${sysfs}/activity_interval
   }
   ;;

  "port_state")
   [ -n "$port_state" ] && \
    echo $port_state > /sys/class/leds/${sysfs}/port_state
   ;;

  "morse")
   echo $message > /sys/class/leds/${sysfs}/message
   echo $delay > /sys/class/leds/${sysfs}/delay
   ;;

  switch[0-9]*)
   local port_mask

   config_get port_mask $1 port_mask
   [ -n "$port_mask" ] && \
    echo $port_mask > /sys/class/leds/${sysfs}/port_mask
   ;;
  esac
 }
}#《《《《《《《《《----------------------end

start() {
 [ -e /sys/class/leds/ ] && {
  config_load system#从/etc/config目录中的system文件中读取配置选项。
  config_foreach load_led led#执行上面定义的load_led函数,led为入参。
 }
}

阅读(4738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~