Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh /etc/rc.common
- # Copyright (C) 2006-2010 OpenWrt.org
- # Copyright (C) 2015-09-22 by yuxw.
- START=99
- STOP=50
- . /lib/functions/leds.sh
- #***********************************************************
- # ETH_IN_DISABLE_4G: 1, auto 3g,eth wan
- 0: 3g allways, eth lan
- #***********************************************************
- ETH_IN_DISABLE_4G="0"
- ETH_WAN_OK_DISABLE_4G="1"
- DATE=`date '+%F %T'`
- USE_PROCD=1
- PROG=/bin/usbdongled
- PROC_NAME=usbdongled
- ctrl_3g_power_file=/sys/class/gpio/3g_power/value
- led_3g_green=/sys/class/leds/3g_green/brightness
- led_3g_red=/sys/class/leds/3g_red/brightness
- eth_sys=/sys/class/net/eth0.2/carrier
- init_file=/var/run/usbdongle_init
- lock_file_stop=/var/run/usbdongle_lock_stop
- lock_file_start=/var/run/usbdongle_lock_start
- eth_green_led=/sys/class/leds/eth_green/brightness
- eth_state="`cat $eth_sys`"
- eth_wan_led="`cat $eth_green_led`"
- LOG()
- {
- echo $1 >> /var/run/debug_usbdongle
- }
- DONGLE_LOCK()
- {
- while [ -f "$lock_file_stop" -o -f "$lock_file_start" ]
- do
- LOG "$DATE sleep."
- sleep 3
- done
- }
- DONGLE_UNLOCK()
- {
- rm -f $1
- }
- led_turn_off_3g_green()
- {
- led_off 3g_green
- }
- led_turn_on_3g_green()
- {
- led_on 3g_green
- }
- led_turn_off_3g_red()
- {
- led_off 3g_red
- }
- led_turn_on_3g_red()
- {
- led_on 3g_red
- }
- enable_3g_power()
- {
- echo 1 > $ctrl_3g_power_file
- }
- disable_3g_power()
- {
- echo 0 > $ctrl_3g_power_file
- }
- ####################################
- #
- # START
- #
- ###################################
- start_service()
- {
- DONGLE_LOCK
- touch $lock_file_start
- LOG "$DATE +++ START usbdongled + start +"
- killall -9 $PROC_NAME
- if [ $ETH_IN_DISABLE_4G == "1" ];then
- #echo "eth_state = $eth_state "
- if [ $eth_state = "1" -a ! -f "$init_file" ]; then
- touch $init_file
- LOG "first init because eth is inserted."
- led_turn_off_3g_green
- led_turn_off_3g_red
- DONGLE_UNLOCK $lock_file_start
- disable_3g_power
- LOG "$DATE ETH_IN_DISABLE_4G = 1 "
- return
- fi
- fi
- if [ $ETH_WAN_OK_DISABLE_4G == "1" ];then
- #echo "eth_wan_led: $eth_wan_led"
- if [ $eth_wan_led = "255" ];then
- LOG "wan is eth, return."
- led_turn_off_3g_green
- led_turn_off_3g_red
- DONGLE_UNLOCK $lock_file_start
- disable_3g_power
- LOG "$DATE ETH_WAN_OK_DISABLE_4G = 1 "
- return
- fi
- fi
- led_turn_off_3g_green
- led_turn_on_3g_red
- LOG "+++++ Start usbdongled"
- enable_3g_power
- $PROG &
- LOG "$DATE +++ START usbdongled + end +"
- DONGLE_UNLOCK $lock_file_start
- }
- ####################################
- #
- # STOP
- #
- ###################################
- stop_service()
- {
- DONGLE_LOCK
- touch $lock_file_stop
- LOG "$DATE --- STOP usbdongled + start +"
- led_turn_off_3g_green
- led_turn_off_3g_red
- LOG "---- Stop usbdongled"
- killall -9 $PROC_NAME
- killall -9 pppd
- disable_3g_power
- sleep 1
- LOG "$DATE --- STOP usbdongled - end -"
- DONGLE_UNLOCK $lock_file_stop
- }
- reload_service()
- {
- stop_service
- start_service
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement