#!/bin/bash

## Repository OAI dependencies
sudo add-apt-repository ppa:ettusresearch/uhd -y
sudo apt-get update -y

## Install dependencies 
sudo apt-get install -y autotools-dev
sudo apt-get install -y automake
sudo apt-get install -y libpcre2-dev
sudo apt-get install -y pcre2-utils
sudo apt-get install -y bison
sudo apt-get install -y byacc
sudo apt-get install -y g++ 
sudo apt-get install -y libsctp-dev python3.8 libpcre2-dev python3-dev 

## OAI dependencies
sudo apt-get install libuhd-dev uhd-host -y
sudo apt-get install libuhd4.2.0 -y
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libuhd4.2.0_4.2.0.1-0ubuntu1~focal1_amd64.deb

# Work directory path is the current directory
WORK_DIR=`pwd`

## Configure swig - required for flexric
cd $WORK_DIR/
git clone https://github.com/swig/swig.git
cd $WORK_DIR/swig
./autogen.sh
./configure --prefix=/usr/
make
sudo make install

## Install FlexRIC
cd $WORK_DIR/
git clone https://gitlab.eurecom.fr/mosaic5g/flexric.git
cd $WORK_DIR/flexric
git checkout v1.0.0
mkdir $WORK_DIR/flexric/build
cd $WORK_DIR/flexric/build
cmake ..
make
sudo make install



## Install OAI UE and OAI gNB
cd $WORK_DIR/
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
mv openairinterface5g oai
cd $WORK_DIR/oai
git checkout 2022.41
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git am $WORK_DIR/flexric/multiRAT/oai/oai.patch --whitespace=nowarn

## Download the OAI configuration files (CU/DU, OAI UE, and gNB configuration)
sudo wget -O $WORK_DIR/oai/executables/nr-softmodem.c https://projetos.imd.ufrn.br/reginalab/sdran-openairinterface/-/raw/main/openairinterface5g/openairinterface-conf/nr-softmodem.c?inline=false
sudo wget -O $WORK_DIR/oai/targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf https://projetos.imd.ufrn.br/reginalab/sdran-openairinterface/-/raw/main/openairinterface5g/openairinterface-conf/basic_deployment/cu_gnb.conf?inline=false
sudo wget -O $WORK_DIR/oai/targets/PROJECTS/GENERIC-NR-5GC/CONF/du_gnb.conf https://projetos.imd.ufrn.br/reginalab/sdran-openairinterface/-/raw/main/openairinterface5g/openairinterface-conf/basic_deployment/du_gnb.conf?inline=false
sudo wget -O $WORK_DIR/oai/targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf https://projetos.imd.ufrn.br/reginalab/sdran-openairinterface/-/raw/main/openairinterface5g/openairinterface-conf/basic_deployment/ue.conf?inline=false

source oaienv
cd cmake_targets
sudo ./build_oai -I -w USRP -i
sudo ./build_oai --gNB --nrUE -c -C -w USRP --ninja --build-lib all
