#include "FM_GPIO.h"


/**
  * @brief  初始化GPIO
  * @param 
  * @retval 
  */
void FM_GPIO_Init(void)
{
    HD_GPIO_Init();
}

/**
  * @brief  喂狗
  * @param 
  * @retval 
  */
void feedDog(void)
{
    HD_GPIO_Write(WDI_GPIO_PROT, WDI_GPIO_PIN, GPIO_RESET);
    HD_GPIO_Write(WDI_GPIO_PROT, WDI_GPIO_PIN, GPIO_SET);
}

/**
  * @brief  电源输出状态设置
  * @param  type    电源输出接口
            state   输出状态
  * @retval 
  */
void writePwrCtrlState(uint8_t type, uint8_t State)
{
    if (type == J1_PwrCtrl) {
        HD_GPIO_Write(J1_PwrCtrl_GPIO_PROT, J1_PwrCtrl_GPIO_PIN, State);
    } else if (type == J2_PwrCtrl) {
        HD_GPIO_Write(J2_PwrCtrl_GPIO_PROT, J2_PwrCtrl_GPIO_PIN, State);
    } else if (type == J3_PwrCtrl) {
        HD_GPIO_Write(J3_PwrCtrl_GPIO_PROT, J3_PwrCtrl_GPIO_PIN, State);
    } else if (type == J4_PwrCtrl) {
        HD_GPIO_Write(J4_PwrCtrl_GPIO_PROT, J4_PwrCtrl_GPIO_PIN, State);
    } else if (type == J5_PwrCtrl) {
        HD_GPIO_Write(J5_PwrCtrl_GPIO_PROT, J5_PwrCtrl_GPIO_PIN, State);
    } else if (type == J6_PwrCtrl) {
        HD_GPIO_Write(J6_PwrCtrl_GPIO_PROT, J6_PwrCtrl_GPIO_PIN, State);
    } else if (type == J7_PwrCtrl) {
        HD_GPIO_Write(J7_PwrCtrl_GPIO_PROT, J7_PwrCtrl_GPIO_PIN, State);
    } else if (type == J8_PwrCtrl) {
        HD_GPIO_Write(J8_PwrCtrl_GPIO_PROT, J8_PwrCtrl_GPIO_PIN, State);
    } else if (type == J9_PwrCtrl) {
        HD_GPIO_Write(J9_PwrCtrl_GPIO_PROT, J9_PwrCtrl_GPIO_PIN, State);
    } else if (type == Android_PwrCtrl) {
        HD_GPIO_Write(GPIO_PwrCtrl_GPIO_PROT, GPIO_PwrCtrl_GPIO_PIN, State);
    }
}

/**
  * @brief  读取电源输出状态
  * @param  type    电源输出接口            
  * @retval state   输出状态
            0xFF 输入类型错误
            PwrCtrlClose 关闭状态
            PwrCtrlOpen 开启状态
  */
uint8_t readPwrCtrlState(uint8_t type)
{
    if (type == J1_PwrCtrl) {
        return HD_OutputGPIO_Read(J1_PwrCtrl_GPIO_PROT, J1_PwrCtrl_GPIO_PIN);
    } else if (type == J2_PwrCtrl) {
        return HD_OutputGPIO_Read(J2_PwrCtrl_GPIO_PROT, J2_PwrCtrl_GPIO_PIN);
    } else if (type == J3_PwrCtrl) {
        return HD_OutputGPIO_Read(J3_PwrCtrl_GPIO_PROT, J3_PwrCtrl_GPIO_PIN);
    } else if (type == J4_PwrCtrl) {
        return HD_OutputGPIO_Read(J4_PwrCtrl_GPIO_PROT, J4_PwrCtrl_GPIO_PIN);
    } else if (type == J5_PwrCtrl) {
        return HD_OutputGPIO_Read(J5_PwrCtrl_GPIO_PROT, J5_PwrCtrl_GPIO_PIN);
    } else if (type == J6_PwrCtrl) {
        return HD_OutputGPIO_Read(J6_PwrCtrl_GPIO_PROT, J6_PwrCtrl_GPIO_PIN);
    } else if (type == J7_PwrCtrl) {
        return HD_OutputGPIO_Read(J7_PwrCtrl_GPIO_PROT, J7_PwrCtrl_GPIO_PIN);
    } else if (type == J8_PwrCtrl) {
        return HD_OutputGPIO_Read(J8_PwrCtrl_GPIO_PROT, J8_PwrCtrl_GPIO_PIN);
    } else if (type == J9_PwrCtrl) {
        return HD_OutputGPIO_Read(J9_PwrCtrl_GPIO_PROT, J9_PwrCtrl_GPIO_PIN);
    } else if (type == Android_PwrCtrl) {
        return HD_OutputGPIO_Read(GPIO_PwrCtrl_GPIO_PROT, GPIO_PwrCtrl_GPIO_PIN);
    }
    return 0xFF;
}

/**
  * @brief  开始复位安卓模块，7-10S后，安卓模块会复位
  * @param
  * @retval
  */
void startResetAndroidModule(void)
{
    HD_GPIO_Write(GPIO_PwrKey_GPIO_PROT, GPIO_PwrKey_GPIO_PIN, GPIO_SET);
}

/**
  * @brief  停止复位安卓模块，使用开始复位安卓模块函数7-10S后，安卓模块复位后使用该函数
  * @param
  * @retval
  */
void stopResetAndroidModule(void)
{
    HD_GPIO_Write(GPIO_PwrKey_GPIO_PROT, GPIO_PwrKey_GPIO_PIN, GPIO_RESET);
}
