#!/bin/bash

COMPANY_NAME="digitalwatchdog"
TARGET_DEVICE="linux_arm32"

VMS_DIR=$(dirname $(dirname $(readlink -m "${BASH_SOURCE[0]}")))

EXE="$VMS_DIR/bin/mediaserver-bin"
ARGS="-e"

source "$VMS_DIR/build_info.txt"
FULL_VERSION="$version-$changeSet-$customization"
[ ! -z "$beta" ] && FULL_VERSION+="-beta"

detect_HW_PLATFORM()
{
    HW_PLATFORM="unknown"
    if [[ $TARGET_DEVICE == "linux_arm32" ]]
    then
        if grep '^Hardware.*:.*BCM2835[[:space:]]*$' /proc/cpuinfo &>/dev/null
        then
            HW_PLATFORM="raspberryPi"
        elif grep '^Hardware.*:.*sun8i[[:space:]]*$' /proc/cpuinfo &>/dev/null
        then
            HW_PLATFORM="bananaPi"
        fi
    fi
}

# TODO: Consider generating installation_info.json in Client-only distributions as well.
INSTALLATION_INFO_JSON="/opt/$COMPANY_NAME/installation_info.json"
if [[ ! -f $INSTALLATION_INFO_JSON ]]
then
    detect_HW_PLATFORM
    echo -e "{\n    \"hwPlatform\": \"$HW_PLATFORM\"\n}" >"$INSTALLATION_INFO_JSON"
fi

# Switch off rp_filter for all interfaces to allow
# discover/install cameras with invalid ip addresses
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "0" > ${interface}
done

# Process core dumps async
if [ "false" = "true" ]; then
    CRASH_DIR="$VMS_DIR/var/crash"
    ARGS+=" --crash-directory=$CRASH_DIR"
else
    CRASH_DIR="/root"
fi

"$VMS_DIR/bin/shell_utils.sh" crash_gdb_bt \
    "$VMS_DIR/bin/mediaserver-bin" "$CRASH_DIR" "$FULL_VERSION"

lsblk -o MODEL -n | grep -v '^$' > /tmp/hddlist

echo
echo --- Set ulimits:
ulimit -c unlimited
ulimit -a

echo
echo --- Starting: $EXE $ARGS

if [ "false" = "true" ]; then
    su digitalwatchdog -c 'ulimit -c unlimited; ulimit -a'
    exec start-stop-daemon --start \
        --chuid digitalwatchdog:digitalwatchdog \
        -d "$VMS_DIR/bin" --exec $EXE -- $ARGS
else
    exec start-stop-daemon --start -d "$VMS_DIR/bin" --exec $EXE -- $ARGS
fi

