Skip to content

Commit 56aceee

Browse files
committed
qmodem: merge LED service management to qmodem_network, clean up unused code in m60k63.sh
1 parent 860fc22 commit 56aceee

File tree

3 files changed

+82
-110
lines changed

3 files changed

+82
-110
lines changed

application/qmodem/files/etc/init.d/qmodem_led

Lines changed: 0 additions & 45 deletions
This file was deleted.

application/qmodem/files/etc/init.d/qmodem_network

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ extra_command "dial" "<modem_cfg> run dial script"
1313
extra_command "hang" "<modem_cfg> run hang script"
1414
extra_command "redial" "<modem_cfg> stop previous dial script. run hang script. and run dial script"
1515
extra_command "modem_status" "<modem_cfg> Check dial script status"
16-
16+
extra_command "start_led_service" "<modem_cfg> add led service for modem"
17+
extra_command "stop_led_service" "<modem_cfg> stop led service for modem"
1718

1819
service_triggers()
1920
{
@@ -51,11 +52,13 @@ update_modem(){
5152
dial()
5253
{
5354
rc_procd _dial $1
55+
rc_procd _led_service $1
5456
}
5557

5658
hang()
5759
{
5860
_hang $1
61+
stop_led_service $1
5962
}
6063

6164
modem_status()
@@ -110,3 +113,32 @@ _modem_status()
110113
data=$(_procd_ubus_call list | jq -r ".$service.instances.$instances")
111114
[ "$data" == "null" ] && echo "$instances Not Running" || echo "$data"
112115
}
116+
117+
start_led_service()
118+
{
119+
local led_script
120+
config_load qmodem
121+
config_get led_script "$1" led_script
122+
if [ -n "$led_script" ] && [ -x "/usr/share/qmodem/led_scripts/${led_script}.sh" ]; then
123+
rc_procd _led_service "$1"
124+
fi
125+
}
126+
127+
_led_service(){
128+
local led_script
129+
config_load qmodem
130+
config_get led_script "$1" led_script
131+
procd_open_instance led_$1
132+
procd_set_param command "/usr/share/qmodem/led_scripts/${led_script}.sh" "$1"
133+
procd_set_param respawn 120 15 10
134+
procd_close_instance
135+
}
136+
137+
stop_led_service(){
138+
local led_script
139+
config_load qmodem
140+
config_get led_script "$1" led_script
141+
if [ -n "$led_script" ] && [ -x "/usr/share/qmodem/led_scripts/${led_script}.sh" ]; then
142+
/usr/share/qmodem/led_scripts/${led_script}.sh "$1" "off"
143+
fi
144+
}

application/qmodem/files/usr/share/qmodem/led_scripts/m60k63.sh

Lines changed: 49 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,21 @@ last_netstat=""
4242

4343
led_turn() {
4444
local path="/sys/class/leds/$1"
45-
local brightness="$2"
46-
45+
local value="$2"
46+
max_brightness=$(cat "$path/max_brightness")
47+
if [ "$value" = "1" ]; then
48+
brightness=$max_brightness
49+
else
50+
brightness="0"
51+
fi
4752
echo "$brightness" > "$path/brightness"
4853
}
4954

5055
led_heartbeat() {
5156
local path="/sys/class/leds/$1"
57+
max_brightness=$(cat "$path/max_brightness")
5258

53-
echo "1" > "$path/brightness"
59+
echo "$max_brightness" > "$path/brightness"
5460
echo "heartbeat" > "$path/trigger"
5561
}
5662

@@ -73,22 +79,6 @@ led_off_all() {
7379
led_turn "${LED_5G_GOOD}" "0"
7480
}
7581

76-
nr_bw() {
77-
local bw="$1"
78-
case "$bw" in
79-
"0"|"1"|"2"|"3"|"4"|"5")
80-
echo "$(((bw + 1) * 5))" ;;
81-
"6"|"7"|"8"|"9"|"10"|"11"|"12")
82-
echo "$(((bw - 2) * 10))" ;;
83-
"13")
84-
echo "200" ;;
85-
"14")
86-
echo "400" ;;
87-
"15"|"25"|"75"|"100")
88-
echo "$(( bw / 5 ))" ;;
89-
esac
90-
}
91-
9282
sim_inserted() {
9383

9484
if at $AT_PORT "AT+CPIN?" | grep -q "CPIN: READY"; then
@@ -108,37 +98,25 @@ internet_led() {
10898
fi
10999
}
110100

111-
sim_netstat() {
112-
local mode
113-
local bw csq rscp rssi
114-
115-
local srvinfo="$(at $AT_PORT 'AT+QENG="servingcell"')"
116-
if echo "$srvinfo" | grep -q "NR5G"; then
117-
mode="5g"
118-
else
119-
mode="4g"
120-
fi
101+
get_mode() {
102+
local rat_mode="$1"
103+
rat_code=$(at $AT_PORT "AT+COPS?" | grep +COPS: | awk -F, '{print $4}' | tr -d '"')
104+
[ "$rat_code" -le "7" ] && echo "0" || echo "1"
105+
}
121106

122-
csq="$(tom_modem -d /dev/mhi_DUN -c "AT+CSQ" | grep -Eo '\+CSQ: [0-9]{2}' | awk '{print $2}')"
123-
rssi="$(( 2 * csq - 113 ))"
124-
if [ "$csq" = "99" ]; then
125-
bw="$(nr_bw "$(echo "$srvinfo" | awk -F ',' '/^\+QENG/ {print $12}')")"
126-
rscp="$(echo "$srvinfo" | awk -F ',' '/^\+QENG/ {print $13}')"
127-
rssi="$(rsrp2rssi "$rscp" "$bw")"
128-
fi
129-
130-
# 0: no service, 1: weak, 2: good
131-
if [ "$rssi" = "-113" ] || [ "$rssi" = "85" ]; then
132-
echo "$mode,0"
133-
elif [ "$rssi" -le "-70" ]; then
134-
echo "$mode,1"
135-
else
136-
echo "$mode,2"
107+
get_rsrp() {
108+
rsrp=$(/usr/share/qmodem/modem_ctrl.sh cell_info "$MODEM_CFG" | jq -r '.modem_info[] | select(.key=="RSRP") | .value')
109+
# if rsrp is empty, return 0
110+
[ -z "$rsrp" ] && rsrp="0"
111+
# if rsrp out of range, return 0
112+
if [ "$rsrp" -gt "0" ] || [ "$rsrp" -lt "-140" ]; then
113+
rsrp="0"
137114
fi
115+
echo "$rsrp"
138116
}
139117

140118
main() {
141-
local siminserted="$(sim_inserted "/dev/mhi_DUN")"
119+
local siminserted="$(sim_inserted)"
142120
if [ "$siminserted" = "0" ] && [ "$siminserted" = "$last_siminserted" ]; then
143121
# there's no update, return
144122
return
@@ -155,49 +133,56 @@ main() {
155133
return
156134
fi
157135

158-
local netstat="$(sim_netstat)"
159-
136+
local is_nr=$(get_mode)
137+
local rsrp=$(get_rsrp)
138+
local signal="0"
139+
140+
#三档singal
141+
if [ "$rsrp" -ge "-95" ] && [ "$rsrp" -lt "0" ]; then
142+
signal="2"
143+
elif [ "$rsrp" -ge "-110" ] && [ "$rsrp" -lt "-95" ]; then
144+
signal="1"
145+
else
146+
signal="0"
147+
fi
148+
149+
netstat="${is_nr}_${signal}"
160150
if [ "$netstat" = "$last_netstat" ]; then
161151
# there's no update, return
162152
return
163153
fi
164-
local mode="${netstat%,*}"
165-
local signal="${netstat#*,}"
154+
last_netstat="$netstat"
166155

167156
case "$signal" in
168157
"0")
169158
led_off_all
170-
case "$mode" in
171-
"4g")
159+
case "$is_nr" in
160+
"0")
172161
led_heartbeat "${LED_4G_POOR}"
173162
;;
174-
"5g")
163+
"1")
175164
led_heartbeat "${LED_5G_POOR}"
176165
;;
177166
esac
178167
;;
179168
"1")
180169
led_off_all
181-
case "$mode" in
182-
"4g")
183-
led_turn "${LED_4G_POOR}" "1"
184-
led_netdev "${LED_4G_GOOD}" "$NET_DEV"
170+
case "$is_nr" in
171+
"0")
172+
led_netdev "${LED_4G_POOR}" "$NET_DEV"
185173
;;
186-
"5g")
187-
led_turn "${LED_5G_POOR}" "1"
188-
led_netdev "${LED_5G_GOOD}" "$NET_DEV"
174+
"1")
175+
led_netdev "${LED_4G_POOR}" "$NET_DEV"
189176
;;
190177
esac
191178
;;
192179
"2")
193180
led_off_all
194-
case "$mode" in
195-
"4g")
196-
led_turn "${LED_4G_GOOD}" "1"
181+
case "$is_nr" in
182+
"0")
197183
led_netdev "${LED_4G_GOOD}" "$NET_DEV"
198184
;;
199-
"5g")
200-
led_turn "${LED_5G_GOOD}" "1"
185+
"1")
201186
led_netdev "${LED_5G_GOOD}" "$NET_DEV"
202187
;;
203188
esac

0 commit comments

Comments
 (0)