OpenWrt – Rev 1

Subversion Repositories:
Rev:
#!/bin/sh /etc/rc.common

START=99

adb_exec() {
        adb -s "$serial" shell "( $1 ) >/dev/null 2>&1"'; printf "\nEXIT_CODE: %i\n" $?' | head -c 64 | grep -qx 'EXIT_CODE: 0\r\?'
}

enablemodem_do() {
        logger -t adb-enablemodem 'INFO: waiting for device'
        adb wait-for-device
        serial="$(adb get-serialno)"

        vendor_id="$(adb -s "$serial" shell 'uci get product.usb.vid' | head -c 16 | tr -d '\r\n')"
        product_id="$(adb -s "$serial" shell 'uci get product.usb.pid' | head -c 16 | tr -d '\r\n')"

        case "$vendor_id:$product_id" in
        "0x2357:0x000D") # TP-LINK LTE MODULE
                case "$1" in
                start)
                        if adb_exec '
                                chmod +x /WEBSERVER/www/cgi-bin/*
                                fds="$(ls /proc/$$/fd | grep -v "^[012]$")"
                                for fd in $fds; do
                                        eval "exec $fd>&-"
                                done
                                start-stop-daemon -x httpd -S -- -h /WEBSERVER/www/
                        '; then
                                logger -t adb-enablemodem 'INFO: httpd on modem started'
                        else
                                logger -t adb-enablemodem 'ERROR: failed to start httpd on modem'
                        fi
                        option_newid='/sys/bus/usb-serial/drivers/option1/new_id'
                        if [ -e "$option_newid" ]; then
                                printf '%s %s' "$vendor_id" "$product_id" > "$option_newid"
                        fi
                        ;;
                stop)
                        if adb_exec 'start-stop-daemon -x httpd -K'; then
                                logger -t adb-enablemodem 'INFO: httpd on modem stopped'
                        else
                                logger -t adb-enablemodem 'ERROR: failed to stop httpd on modem'
                        fi
                        ;;
                esac
                ;;
        *)
                logger -t adb-enablemodem "ERROR: unknown device $vendor_id:$product_id"
                ;;
        esac
}

start() {
        ( enablemodem_do start ) &
}

stop() {
        ( enablemodem_do stop ) &
}

restart() {
        ( enablemodem_do stop; enablemodem_do start ) &
}