You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							91 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							91 lines
						
					
					
						
							2.6 KiB
						
					
					
				| #!/bin/sh | |
|  | |
| . /etc/init.d/globals | |
| 
 | |
| LSUSB=$(lsusb) | |
| 
 | |
| # supported dpf-devices | |
| DPF="1908:0102" | |
| DPFbootloader="1908:3318" | |
| # | |
| DPF="${DPF} ${DPFbootloader}" | |
| 
 | |
| # supported spf-devices | |
| SPFstorage="04E8:200A 04E8:200E 04E8:200C 04E8:2012 04E8:2016 04E8:2025 04E8:2033 04E8:201C 04E8:2027 04E8:2035 04E8:204F 04E8:2039" | |
| SPFmonitor="04E8:200B 04E8:200F 04E8:200D 04E8:2013 04E8:2017 04E8:2026 04E8:2034 04E8:201B 04E8:2028 04E8:2036 04E8:2050 04E8:2040" | |
| # SPFmodel: ^SPF-72H  ^SPF-75H  ^SPF-83H  ^SPF-85H  ^SPF-85P  ^SPF-87H  ^SPF-87H  ^SPF-105P ^SPF-107H ^SPF-107H ^SPF-700T ^SPF-1000P | |
| # SPFmodel:           ^SPF-76H            ^SPF-86H  ^SPF-86P   old                                     new | |
| SPF="${SPFstorage} ${SPFmonitor}" | |
| 
 | |
| DEVICES="${DPF} ${SPF}" | |
| for DEVICE in ${DEVICES}; do | |
| 	V=$(echo ${DEVICE:0:4} | sed 's/^[0]*//' | tr [:upper:] [:lower:]) # lower case vendor  w/o leading zeros | |
| 	P=$(echo ${DEVICE:5:4} | sed 's/^[0]*//' | tr [:upper:] [:lower:]) # lower case product w/o leading zeros | |
| 
 | |
| 	flagLCD=/tmp/.lcd-${V} | |
| 
 | |
| 	case "$1" in | |
| 		start|add) | |
| 			# LOGINFO "trying to process ${DEVICE} (V:{$V} P:{$P})" | |
| 
 | |
| 			echo "${LSUSB}" | grep -q -i "${DEVICE}" || continue | |
| 
 | |
| 			if $(echo "${LSUSB}" | grep -q "${DPFbootloader}"); then | |
| 				LOGINFO "unsupported device (ID ${DEVICE}) found" | |
| 				LOGINFO "${DEVICE} is in bootloader mode" | |
| 				break | |
| 			fi | |
| 
 | |
| 			LOGINFO "supported device (ID ${DEVICE}) found" | |
| 
 | |
| 			if $(echo "${DPF} ${SPF}" | grep -q "${DEVICE}"); then | |
| 				LOGINFO "creating flagfile '$flagLCD'" | |
| 				echo "${DEVICE}" > $flagLCD | |
| 
 | |
| 				if $(echo "${DPF} ${SPFstorage}" | grep -q "${DEVICE}"); then | |
| 					LOGINFO "DPF or SPF in storage mode found" | |
| 					LOGINFO "(re)starting lcd4linux" | |
| 
 | |
| 					service lcd4linux restart | |
| 				fi | |
| 
 | |
| 				if $(echo "${SPFmonitor}" | grep -q "${DEVICE}"); then | |
| 					LOGINFO "SPF in monitor mode found" | |
| 					if [ -e /var/run/lcd4linux.pid ]; then | |
| 						LOGINFO "do nothing" | |
| 					else | |
| 						LOGINFO "(re)starting lcd4linux" | |
| 						service lcd4linux restart | |
| 					fi | |
| 				fi | |
| 				break | |
| 			fi | |
| 		;; | |
| 		stop|remove) | |
| 			if [ -e $flagLCD ]; then | |
| 				grep "^${DEVICE}" $flagLCD >/dev/null || continue | |
| 
 | |
| 				LOGINFO "supported DPF/SPF (ID ${DEVICE}) removed" | |
| 
 | |
| 				if $(echo "${DPF} ${SPFmonitor}" | grep -q "${DEVICE}"); then | |
| 					LOGINFO "DPF or SPF in monitor mode removed" | |
| 					LOGINFO "stopping lcd4linux" | |
| 
 | |
| 					service lcd4linux stop | |
| 				fi | |
| 
 | |
| 				if $(echo "${SPFstorage}" | grep -q "${DEVICE}"); then | |
| 					LOGINFO "SPF in storage mode removed" | |
| 					LOGINFO "do nothing" | |
| 				fi | |
| 
 | |
| 				LOGINFO "removing flagfile '$flagLCD'" | |
| 				rm -f $flagLCD | |
| 				break | |
| 			fi | |
| 		;; | |
| 		*) | |
| 			echo "[${BASENAME}] Usage: $0 {start|stop}" | |
| 		;; | |
| 	esac | |
| done
 | |
| 
 |