#if 0
#include <stdio.h>      /*標準輸入輸出定義*/
#include <stdlib.h>     /*標準函數庫定義*/
#include <string.h>
#include <stdint.h>

#include "../Config.h"
#include "../Log/log.h"
#include "../Define/define.h"
#include "../ShareMemory/shmMem.h"
#include "../timeout.h"
#include "../CSU/main.h"

#include "SelectGun.h"

//------------------------------------------------------------------------------
int WaitAuthorPageState(void)
{
    int ret = FAIL;
    struct SysInfoData *pSysInfo = (struct SysInfoData *)GetShmSysInfoData();

#if !defined DD360Audi
    return PASS;
#endif //!defined DD360Audi

    if (pSysInfo->SystemPage != _LCM_AUTHORIZING &&
            pSysInfo->SystemPage != _LCM_AUTHORIZ_COMP &&
            pSysInfo->SystemPage != _LCM_AUTHORIZ_FAIL) {
        ret = PASS;
    }

    return ret;
}

void destroySelGun(uint8_t curGun)
{
    uint8_t i = 0;

#if !defined DD360Audi
    return;
#endif //!defined DD360Audi

    struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
    struct SysInfoData *pSysInfo = (struct SysInfoData *)GetShmSysInfoData();
    SelectGunInfo *pSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo(); //Jerry add
    struct OCPP16Data *ShmOCPP16Data = (struct OCPP16Data *)GetShmOCPP16Data();

    //for status timeout
    if (curGun == DESTROY_ALL_SEL) {
        pSelectGunInfo->SelGunInfo.RightGun = SEL_GUN_RELEASE;
        pSelectGunInfo->SelGunInfo.LeftGun = SEL_GUN_RELEASE;
        log_info("destroy all gun = %d, %d",
                 pSelectGunInfo->SelGunInfo.LeftGun,
                 pSelectGunInfo->SelGunInfo.RightGun);
        for (i = 0; i < pSysConfig->TotalConnectorCount; i++) {
            StopGunInfoTimeoutDet(i);
            memset(&pSelectGunInfo->PricesInfo[i], 0, sizeof(PricesInfo));
        }
        pSysInfo->CurGunSelected = 0;
        strcpy((char *)pSysConfig->UserId, "");
        //changeLcmPage(_LCM_SELECT_GUN);
        return;
    }

    //for charging timeout or complete
    if ((curGun == LEFT_GUN_NUM) && (pSelectGunInfo->SelGunInfo.LeftGun != SEL_GUN_RELEASE)) {
        if (pSelectGunInfo->SelGunInfo.LeftGun == SEL_GUN_CONFIRM ||
                pSelectGunInfo->SelGunInfo.LeftGun == SEL_GUN_ATHOR) {
            pSysInfo->SystemPage = _LCM_SELECT_GUN;
        }
        pSelectGunInfo->SelGunInfo.LeftGun = SEL_GUN_RELEASE;
        StopGunInfoTimeoutDet(LEFT_GUN_NUM);
        if (ShmOCPP16Data->SpMsg.bits.AuthorizeConf != NO) {
            ClearAuthorizedFlag();
        }

        log_info("destroy left gun, cur page = %d", pSysInfo->SystemPage);
        //if (pSysInfo->SystemPage == pSysInfo->SystemPage) {
        log_info("clear left balance");
        memset(&pSelectGunInfo->PricesInfo[curGun], 0, sizeof(PricesInfo));
        pSelectGunInfo->PricesInfo[curGun].Balance = FAIL_BALANCE_PRICES;
        //}
    }

    if ((curGun == RIGHT_GUN_NUM) && (pSelectGunInfo->SelGunInfo.RightGun != SEL_GUN_RELEASE)) {
        if (pSelectGunInfo->SelGunInfo.RightGun == SEL_GUN_CONFIRM ||
                pSelectGunInfo->SelGunInfo.RightGun == SEL_GUN_ATHOR) {
            pSysInfo->SystemPage = _LCM_SELECT_GUN;
        }
        pSelectGunInfo->SelGunInfo.RightGun = SEL_GUN_RELEASE;
        StopGunInfoTimeoutDet(RIGHT_GUN_NUM);
        if (ShmOCPP16Data->SpMsg.bits.AuthorizeConf != NO) {
            ClearAuthorizedFlag();
        }

        log_info("destroy right gun, cur page = %d", pSysInfo->SystemPage);
        //if (pSysInfo->SystemPage == pSysInfo->SystemPage) {
        log_info("clear right balance");
        memset(&pSelectGunInfo->PricesInfo[curGun], 0, sizeof(PricesInfo));
        pSelectGunInfo->PricesInfo[curGun].Balance = FAIL_BALANCE_PRICES;
        //}
    }
}

int waitRightGunPlugIt(uint8_t curGun)
{
#if !defined DD360Audi
    return;
#endif //!defined DD360Audi

    SelectGunInfo *pSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo(); //Jerry add


    if ((curGun == RIGHT_GUN_NUM) && (pSelectGunInfo->SelGunInfo.RightGun == SEL_GUN_ATHOR)) {
        return PASS;
    }

    return FAIL;
}

int waitLeftGunPlugIt(uint8_t curGun)
{
#if !defined DD360Audi
    return;
#endif //!defined DD360Audi

    SelectGunInfo *pSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo(); //Jerry add

    if ((curGun == LEFT_GUN_NUM) && (pSelectGunInfo->SelGunInfo.LeftGun == SEL_GUN_ATHOR)) {
        return PASS;
    }

    return FAIL;
}

void setSelGunWaitToAuthor(uint8_t curSel)
{
#if !defined DD360Audi
    return;
#endif //!defined DD360Audi

    SelectGunInfo *pSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo(); //Jerry add

    if (curSel == LEFT_GUN_NUM && pSelectGunInfo->SelGunInfo.LeftGun == SEL_GUN_CONFIRM) {
        pSelectGunInfo->SelGunInfo.LeftGun = SEL_GUN_ATHOR;
        //printf("setSelGunWaitToAuthor left");
        StopGunInfoTimeoutDet(curSel);
    } else if (curSel == RIGHT_GUN_NUM && pSelectGunInfo->SelGunInfo.RightGun == SEL_GUN_CONFIRM) {
        pSelectGunInfo->SelGunInfo.RightGun = SEL_GUN_ATHOR;
        //printf("setSelGunWaitToAuthor right");
        StopGunInfoTimeoutDet(curSel);
    }
}

int getConfirmSelectedGun(uint8_t curSel)
{
#if !defined DD360Audi
    return;
#endif //!defined DD360Audi

    SelectGunInfo *pSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo(); //Jerry add

    if (((curSel == LEFT_GUN_NUM) && (pSelectGunInfo->SelGunInfo.LeftGun >= SEL_GUN_CONFIRM)) ||
            ((curSel == RIGHT_GUN_NUM) && (pSelectGunInfo->SelGunInfo.RightGun >= SEL_GUN_CONFIRM))) {
        return PASS;
    }

    return FAIL;
}

void confirmSelGun(uint8_t selGun)
{
#if !defined DD360Audi
    return;
#endif //!defined DD360Audi

    struct SysInfoData *pSysInfo = (struct SysInfoData *)GetShmSysInfoData();
    SelectGunInfo *pSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo(); //Jerry add

    if (selGun == LEFT_GUN_NUM) {
        pSelectGunInfo->SelGunInfo.LeftGun = SEL_GUN_CONFIRM;
        StopGunInfoTimeoutDet(selGun);
        //printf("confirmSelGun left");
    } else if (selGun == RIGHT_GUN_NUM) {
        pSelectGunInfo->SelGunInfo.RightGun = SEL_GUN_CONFIRM;
        StopGunInfoTimeoutDet(selGun);
        //printf("confirmSelGun right");
    }

    pSysInfo->SystemPage = _LCM_IDLE;

    StartGunInfoTimeoutDet(selGun, Timeout_SelectGun);
}
#endif //0