#!/bin/bash

# Copyright 2018-present Open Networking Foundation
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

DEVMEM_MAJOR=`cat /sys/module/devmem/parameters/bcmolt_devmem_chrdev_major`
# kill CLI applications
echo "kill running time application"
[ -n "`pidof dev_mgmt_daemon`" ] && killall dev_mgmt_daemon
[ -n "`pidof bcm.user`" ] && killall bcm.user
[ -n "`pidof dev_mgmt_attach`" ] && killall dev_mgmt_attach
[ -n "`pidof embedded_console`" ] && killall embedded_console 
[ -n "`pidof example_user_appl`" ] && killall example_user_appl 
[ -n "`pidof openolt`" ] && killall openolt
rm -f /tmp/root_dev_mgmt_pid /tmp/root_dev_mgmt_init_done

# unload drivers
echo "unload kernel drivers"
[ -n "`lsmod | grep i2c_devs`" ] && rmmod i2c_devs && sleep 1
[ -n "`lsmod | grep nltr`" ] &&  rmmod nltr && sleep 1
[ -n "`lsmod | grep pcie_proxy`" ] && rmmod pcie_proxy && sleep 1
[ -n "`lsmod | grep devmem`" ] && rmmod devmem && sleep 1
[ -n "`lsmod | grep fld_linux`" ] && rmmod fld_linux && sleep 1
[ -n "`lsmod | grep os_linux`" ] && rmmod os_linux && sleep 1
[ -n "`lsmod | grep ll_pcie`" ] && rmmod ll_pcie && sleep 1
[ -n "`lsmod | grep linux_user_bde`" ] && rmmod linux-user-bde && sleep 1
[ -n "`lsmod | grep linux_kernel_bde`" ] && rmmod linux-kernel-bde && sleep 1
rm -rf /dev/maple_i2c
rm -rf /dev/bcmolt_pcie_proxy
rm -rf /dev/linux-uk-proxy
rm -rf /dev/linux-user-bde
rm -rf /dev/linux-kernel-bde
rm -rf /dev/coop_dba_example
rm -rf /dev/coop_dba
for i in {0..7}; do
    MAJOR=$(($DEVMEM_MAJOR + $i))
    [ ! -f /dev/bcmolt_devmem_sram$i ] && rm -f /dev/bcmolt_devmem_sram$i
    [ ! -f /dev/bcmolt_devmem_ddr$i ] && rm -f /dev/bcmolt_devmem_ddr$i
    [ ! -f /dev/bcmolt_devmem_regs$i ] && rm -f /dev/bcmolt_devmem_regs$i
done

rm -rf /opt/bcm68620
rm -rf /run/bcm68620

rm -rf  /broadcom

rm -rf /usr/local/lib/libgrpc++.so.1
rm -rf /usr/local/lib/libgrpc.so.6
rm -rf /usr/local/lib/libbal_host_api.so
rm -rf /usr/local/lib/libstdc++.so.6

