#!/bin/bash

# Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

sudo apt-get update
sudo apt-get -y upgrade

sudo apt-get -y install curl
sudo apt-get -y install python3
sudo apt-get -y install python3-pip
sudo apt-get -y install git g++ gcc cmake make
sudo apt-get -y install libssl-dev libcurl4-openssl-dev liblog4cplus-1.1-9 liblog4cplus-dev
sudo apt-get -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get -y install gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad
sudo apt-get -y install gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools
sudo apt-get -y install gstreamer1.0-omx
pip3 install AWSIoTPythonSDK

if [ "$MOTOR_DRIVER" == "adafruit" ]
then
    sudo pip3 install adafruit-circuitpython-motorkit
else
    sudo apt-get -y install python3-explorerhat
fi

if [ ! -d /home/pi/Projects ]
then
  mkdir /home/pi/Projects
  cd /home/pi/Projects
else
  cd /home/pi/Projects
fi

if [ ! -d /home/pi/Projects/robot ]
then
  mkdir /home/pi/Projects/robot
  cd /home/pi/Projects/robot
else
  cd /home/pi/Projects/robot
fi

if [ "$MOTOR_DRIVER" == "adafruit" ]
then
    curl --silent 'https://raw.githubusercontent.com/aws-samples/aws-serverless-telepresence-robot/master/scripts/adafruit-motor-hat-main.py' --output main.py
else
    curl --silent 'https://raw.githubusercontent.com/aws-samples/aws-serverless-telepresence-robot/master/scripts/main.py' --output main.py
fi

cat > config.json <<EOF
{
  "IOT_THINGNAME": "",
  "IOT_CORE_ENDPOINT": "",
  "IOT_GET_CREDENTIAL_ENDPOINT": "",
  "ROLE_ALIAS": "robot-camera-streaming-role-alias",
  "AWS_DEFAULT_REGION": ""
}
EOF

mkdir /home/pi/Projects/robot/certs
cd /home/pi/Projects/robot/certs
curl --silent 'https://www.amazontrust.com/repository/SFSRootCAG2.pem' --output cacert.pem
touch certificate.pem
touch private.pem.key

cd /home/pi/Projects

if [ "$USE_PREBUILT" == True ]
then
  cd /home/pi/Projects/robot/
  wget 'https://raw.githubusercontent.com/aws-samples/aws-serverless-telepresence-robot/master/scripts/webrtc_build/kvsWebrtcClientMasterGstSample'
  wget 'https://raw.githubusercontent.com/aws-samples/aws-serverless-telepresence-robot/master/scripts/webrtc_build/libkvsWebrtcClient.so'
  wget 'https://raw.githubusercontent.com/aws-samples/aws-serverless-telepresence-robot/master/scripts/webrtc_build/libkvsWebrtcSignalingClient.so'
  sudo chmod +x kvsWebrtcClientMasterGstSample
else
  if [ ! -d /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c ]
  then
    git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git
    cd /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c
  else
    cd /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c
    git pull
  fi

  git checkout 389703f1f46ce71ab0a77bf9a061feb4a44e9636
  git submodule update --recursive
  cd /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c/samples
  rm /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c/samples/Common.c
  curl --silent 'https://raw.githubusercontent.com/aws-samples/aws-serverless-telepresence-robot/master/scripts/modified-common.c' --output Common.c

  cd /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c
  mkdir build
  cd build
  cmake .. 
  make

  cp /home/pi/Projects/amazon-kinesis-video-streams-webrtc-sdk-c/build/kvsWebrtcClientMasterGstSample /home/pi/Projects/robot/
fi