#!/bin/sh
RS485_PORT_DEV=/dev/ttymxc2
RS485_MODE_CONFIG_PATH=serial.rs485.mode
RS485_MODE_VALUE=APP
RS485_BAUDRATE_CONFIG_PATH=serial.rs485.baudrate

# check if serial console is in APP mode
cmd get ${RS485_MODE_CONFIG_PATH} | grep "${RS485_MODE_VALUE}" &>/dev/null
if [ $? -ne 0 ]; then
    echo "${RS485_MODE_CONFIG_PATH} is not configured for ${RS485_MODE_VALUE} mode"
    exit 255
fi

# get default baud rate from system config
SERCON_BAUDRATE=$(cmd get ${RS485_BAUDRATE_CONFIG_PATH} | grep ":" | awk -F" " '{print $2}')
if [ "$SERCON_BAUDRATE" = "" ]; then
    SERCON_BAUDRATE=9600
fi

BAUD=$SERCON_BAUDRATE
FORCE=0

while [[ $# -ge 1 ]]; do
    combo_arg="$1"

    # we may get both args 'as one', so we separate them here
    tmp_arg_1=`echo $combo_arg | awk '{print $1}'`
    tmp_arg_2=`echo $combo_arg | awk '{print $2}'`
    
    for i in 1 2; do
        eval arg=\$tmp_arg_${i}

        if [ "$arg" != "" ];then
            case $arg in
                2400|4800|9600|19200|38400|57600|115200)
                    BAUD=$arg
                    ;;
                force)
                    FORCE=1
                    ;;
                -c)
                    # ignore
                    ;;
                *)
                    # unknown option
                    echo " "
                    echo "usage:  oxycom [<baudrate>] [force]"
                    echo "    <baudrate>  2400|4800|9600|19200|38400|57600|115200 (default $SERCON_BAUDRATE)"
                    echo "    force       force termination of existing sessions"
                    echo " "
                    exit 255
                    ;;
            esac
        fi
    done
    
    shift
done

if [ $FORCE = 1 ]; then
    echo " "
    echo "Please wait, terminating existing console session..."
    echo " "

    if [ -f /var/lock/LCK..tty* ]; then 
        kill `cat /var/lock/LCK..tty*`
        rm -f /var/lock/LCK..tty*
    fi
    killall microcom &> /dev/null
    sleep 1

    killall -9 microcom &> /dev/null
    sleep 1
else        
    if [ -f /var/lock/LCK..tty* ]; then
        echo " "
        echo "Detected existing serial console session, use 'force' option to terminate"
        echo " "
        exit 255
    fi
fi

clear
echo "Speed: ${BAUD} 8N1 | <ctrl>-2 to send BREAK | <ctrl>-x to exit"
echo " "

/usr/bin/microcom -s ${BAUD} ${RS485_PORT_DEV}
  
