#!/bin/sh

# Dev mode local override
read roku_dev_mode rest < /proc/cmdline
if [ "$roku_dev_mode" = 'dev=1' ] && [ -f /nvram/S66bt ]
then
    echo
    echo "=== BT INIT from /nvram/S66bt"
    source /nvram/S66bt
    exit
fi

if [ "$1" == "stop" ]; then
    echo '=== Stopping bsa-server ==='
    pkill -9 bsa_server
    echo '=== Removing the bluetooth kernel module ==='
    rmmod btusb
    exit 0
fi

PLATFORM=`roku_platform`
BT_FW=/lib/bt/bsa/bt_fw_BCM43570A2.hcd

echo "=== Resetting BT chip  ==="
/bin/gpio BTPwr set 0
usleep 100000
/bin/gpio BTPwr set 1
# Wait for chip to settle (2 sec timeout)
TIMEOUT=200
while ! lsusb | grep "0a5c:2045"; do
    usleep 10000
    let TIMEOUT=TIMEOUT-1
    [ $TIMEOUT -le 0 ] && break
done

if ! lsusb | grep "0a5c:2045"; then
    echo -e "\n\n *** No BT  chip detected! *** \n\n"
    return 1
fi

cd /lib/bt/bsa/

if [ ! -f btusb.ko ]  
then
    echo " No BT (btusb.ko)Driver present at $PWD"
    return 1
fi
### Init selected driver:
echo "=== Starting btusb  Driver ==="
if ! lsmod | grep btusb; then
    insmod btusb.ko
fi

### Start bsa_server 
if [ ! -f bsa_server ] 
then
    echo " No bsa_server  present at $PWD"
    return 1
fi
### Move to writing file-system and start server as background process.
cp bsa_server /tmp/.
cp simple_app /tmp/.
cd /tmp/
./bsa_server -p $BT_FW 2>&1 >/dev/null &


