#!/bin/bash

MYPID=$$

pushd `pwd` >/dev/null

DEV_ID='usb-1a86_USB_Single_Serial|usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller'
cd /dev/serial/by-id

COMMAND="$1"
if [ "$COMMAND" == "-s" ]
then
  COMMAND="$3"
  PORT=`ls -1 | egrep "$DEV_ID" | grep "$2" | head -1`
else
  PORT=`ls -1 | egrep "$DEV_ID" | head -1`
fi  
PORT=$([ -L $PORT ] && readlink -f $PORT || echo $PORT)

popd >/dev/null

#echo "PORT=$PORT, CMD=$COMMAND"

if [ -n "$PORT" -a -n "$COMMAND" ]
then 
#  stty -F $PORT 115200 raw -parity cs8 -cstopb -crtscts clocal cread -ixon -ixoff ocrnl
  stty -F $PORT sane
  stty -F $PORT 115200 -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo

# kill all running instances of qrdisplay except of itself  
  kill `ps x | grep qrdisplay | grep -v $MYPID | awk '{ print $1 }'`
# kill all proceses that keep display port opened
  if [ `lsof $PORT | wc -l` -ne 0 ]
  then
    kill `lsof -t $PORT`
#    sleep 0.5
  fi 
#  echo "###############"  
#  ps auxwf	

  sleep 0.2
  cat $PORT >/dev/null 2>&1 &
  CATPID=$!
  sleep 0.2
#ps auxw | grep cat | grep $PORT
#echo -e "$COMMAND" | dd of=$PORT
#echo "$MYPID sending $COMMAND - READPID = $CATPID"
  ( echo -e "\n$COMMAND" ; sleep 0.5 ) > $PORT
  sleep 0.5
  kill $CATPID
fi
exit 0

