#!/bin/bash

source "/usr/lib/mx-gpio-lib"
source "/usr/lib/mx-common-lib"

GPC_NAME=""

function V3400::profile() {
        SIO_BATDET=63
        SIO_BATLOW=64
        BATDET_ENABLE=1
        BATDET_DISABLE=0
}

function V3400::init() {
        GPC_NAME="$(gpio_get_gpiochip_name gpio_it87)"
}

function V3400::get_rtc_battery_state() {
        local rtc_battery_state

        # enable HW comparator
        gpio_set_value_sysfs $(gpc_it8786 $SIO_BATDET) $BATDET_ENABLE

        # get HW comparator output
        rtc_battery_state=$(gpio_get_value_sysfs $(gpc_it8786 $SIO_BATLOW))

        # disable HW comparator
        gpio_set_value_sysfs $(gpc_it8786 $SIO_BATDET) $BATDET_DISABLE

        if [ "${rtc_battery_state}" = "1" ]; then
                echo "Normal voltage"
        else
                wall -n "Low voltage, please replace the RTC battery soon"
        fi
}

function script_init() {
        load_model_name

        if [[ ! $(type -t "${MODEL_NAME}"::profile) == function ]]; then
                echo "${MODEL_NAME} profile function is not define"
                exit 1
        fi

        "${MODEL_NAME}"::profile

        if [[ ! $(type -t "${MODEL_NAME}"::init) == function ]]; then
                echo "${MODEL_NAME} init function is not define"
                exit 1
        fi

        "${MODEL_NAME}"::init
}

function load_model_name() {
        for name in $(get_model_name_from_dmi_type12); do
                if [[ "$(type -t "${name}::profile")" = 'function' ]]; then
                        MODEL_NAME="${name}"
                        break
                fi
        done

        if [[ -z "${MODEL_NAME}" ]]; then
                for name in $(get_model_name_from_dmi_type1); do
                        if [[ "$(type -t "${name}::profile")" = 'function' ]]; then
                                MODEL_NAME="${name}"
                                break
                        fi
                done
        fi

        if [[ -z "${MODEL_NAME}" ]]; then
                echo "Unsupported model"
                exit 38
        fi
}

function main() {
        script_init
        "${MODEL_NAME}"::get_rtc_battery_state
}

main $@
