uqmi: fix acquiring PIN status
Evaluating the return value of 'json_load' didn't work in the intended way resulting in PIN status no longer being read on modems where --get-pin-status doesn't fail. Fix this by trying --get-pin-status first and checking if pin1_status field exists in JSON, and if it doesn't try again with --uim-get-sim-state. Fixes: #9501 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
		| @@ -105,10 +105,12 @@ proto_qmi_setup() { | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	else | 	else | ||||||
| 		. /usr/share/libubox/jshn.sh | 		json_load "$(uqmi -s -d "$device" --get-pin-status)" | ||||||
| 		json_load "$(uqmi -s -d "$device" --get-pin-status)" 2>&1 | grep -q Failed && |  | ||||||
| 			json_load "$(uqmi -s -d "$device" --uim-get-sim-state)" |  | ||||||
| 		json_get_var pin1_status pin1_status | 		json_get_var pin1_status pin1_status | ||||||
|  | 		if [ -z "$pin1_status" ]; then | ||||||
|  | 			json_load "$(uqmi -s -d "$device" --uim-get-sim-state)" | ||||||
|  | 			json_get_var pin1_status pin1_status | ||||||
|  | 		fi | ||||||
| 		json_get_var pin1_verify_tries pin1_verify_tries | 		json_get_var pin1_verify_tries pin1_verify_tries | ||||||
|  |  | ||||||
| 		case "$pin1_status" in | 		case "$pin1_status" in | ||||||
| @@ -152,6 +154,7 @@ proto_qmi_setup() { | |||||||
| 				return 1 | 				return 1 | ||||||
| 			;; | 			;; | ||||||
| 		esac | 		esac | ||||||
|  | 		json_cleanup | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	if [ -n "$plmn" ]; then | 	if [ -n "$plmn" ]; then | ||||||
| @@ -247,7 +250,8 @@ proto_qmi_setup() { | |||||||
|  |  | ||||||
| 	echo "Starting network $interface" | 	echo "Starting network $interface" | ||||||
|  |  | ||||||
| 	pdptype=$(echo "$pdptype" | awk '{print tolower($0)}') | 	pdptype="$(echo "$pdptype" | awk '{print tolower($0)}')" | ||||||
|  |  | ||||||
| 	[ "$pdptype" = "ip" -o "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] || pdptype="ip" | 	[ "$pdptype" = "ip" -o "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] || pdptype="ip" | ||||||
|  |  | ||||||
| 	if [ "$pdptype" = "ip" ]; then | 	if [ "$pdptype" = "ip" ]; then | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Golle
					Daniel Golle