@@ -42,15 +42,21 @@ last_netstat=""
4242
4343led_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
5055led_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-
9282sim_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
140118main () {
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