-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathreset.sh
executable file
·120 lines (101 loc) · 2.02 KB
/
reset.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
declare -A ports
ports=( ["atx"]=60 ["odroid0"]=46 ["odroid1"]=47
["odroid2"]=26 ["odroid3"]=44 ["parallella0"]=45
["parallella1"]=115 ["wandboard0"]=49 ["wandboard1"]=48)
function exportPin {
pin=$1
path="/sys/class/gpio/gpio$pin/value"
if [ ! -f $path ]; then
echo $pin > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$pin/direction
fi
}
function parseMach {
mach=$1
NO=${mach//[^0-9]/}
MACH=${mach/[0-9]/}
}
function checkATX {
pin=${ports["atx"]}
exportPin $pin
pinVal=$(cat /sys/class/gpio/gpio$pin/value)
if [ $pinVal -eq 1 ]; then
echo 0 > /sys/class/gpio/gpio$pin/value
sleep 0.6
fi
}
function powerOn {
if [ "$1" != "atx" ]; then
checkATX
fi
pin=${ports[$1]}
exportPin $pin
pinVal=$(cat /sys/class/gpio/gpio$pin/value)
if [ $pinVal -eq 0 ]; then
echo 1 > /sys/class/gpio/gpio$pin/value
fi
}
function powerOff {
turnoffState=0
isOn=1
if [ "$1" == "atx" ]; then
turnoffState=1
isOn=0
fi
pin=${ports[$1]}
exportPin $pin
pinVal=$(cat /sys/class/gpio/gpio$pin/value)
if [ $pinVal -eq $isOn ]; then
echo $turnoffState > /sys/class/gpio/gpio$pin/value
fi
}
function switchPower {
if [ "$1" != "atx" ]; then
checkATX
fi
pin=${ports[$1]}
exportPin $pin
pinVal=$(cat /sys/class/gpio/gpio$pin/value)
if [ $pinVal -eq 0 ]; then
echo 1 > /sys/class/gpio/gpio$pin/value
else
echo 0 > /sys/class/gpio/gpio$pin/value
fi
}
function iterate {
funcName=$1
target=$2
i=0
parseMach $target
if [ "$NO" == "" -a "$target" != "atx" ]; then
while true; do
key="$MACH$i"
if [[ ${ports[$key]} ]]; then
echo "$funcName: $key";
$funcName $key
i=$((i+1))
sleep 0.6
else
break
fi
done
else
echo "$funcName: $target"
$funcName $target
sleep 0.6
fi
}
ACTION=$1
IFS=","
for v in $2; do
if [ "$ACTION" == "on" ]; then
iterate "powerOn" $v
elif [ "$ACTION" == "off" ]; then
iterate "powerOff" $v
elif [ "$ACTION" == "switch" ]; then
iterate "switchPower" $v
else
echo "Unrecognized action"
fi
done