is_simple_modem() {
	case "$1" in
		12d1/14db/*|12d1/14dc/*|12d1/1566/*|12d1/1506/*|19d2/1402/*|19d2/1403/*|19d2/1405/*|19d2/1244/*|1e2d/b3/*|1e2d/b7/*|2c7c/306/*|8087/95a/*|2cb7/7/*|2cb7/b/*|e8d/7126/*|e8d/7127/*|413c/81e0/*|2ecc/3012/*|19d2/558/*|1bc7/1070/*|e8d/2004/*) return 0 ;;
		*) return 1 ;;
	esac
}

is_init_modem() {
	case "$1" in
		19d2/1404/*|19d2/9994/*|5c6/90d5/*|5c6/9025/*|1bc7/1900/*|1bc7/1910/*|1bc7/1911/*|413c/81d7*|3f0/857/*|3f0/a57/*) return 0 ;;
		*) return 1 ;;
	esac
}

automodem_start() {
	if ! pgrep -f "/usr/bin/automodem" >/dev/null; then
		/usr/bin/automodem "$1" &
	fi
}

automodem_remove() {
	if ! pgrep -f "/usr/bin/remove-modem" >/dev/null; then
		/usr/bin/remove-modem "$1" &
	fi
}

manage_service() {
	local service="/etc/init.d/smstools3"
	local action="$1"
	
	if [ -x "$service" ]; then
		case "$action" in
			"start")
				"$service" status | grep -q "running" || "$service" start
				;;
			"stop")
				"$service" status | grep -q "running" && "$service" stop
				;;
		esac
	fi
}

case "$ACTION" in
	"add")
		if is_simple_modem "$PRODUCT"; then
			automodem_start "$PRODUCT"
			manage_service "start"
		elif is_init_modem "$PRODUCT"; then
			/usr/bin/modem-init "$PRODUCT"
			automodem_start "$PRODUCT"
			manage_service "start"
		fi
		;;
		
	"remove")
		if is_simple_modem "$PRODUCT" || is_init_modem "$PRODUCT"; then
			manage_service "stop"
			automodem_remove "$PRODUCT"
		fi
		;;
esac

exit 0
