/*
 * @Author       : ChenJie
 * @Date         : 2021-11-25 15:36:06
 * @Version      : V3.0
 * @LastEditors  : ChenJie
 * @LastEditTime : 2021-12-15 11:53:14
 * @Description  : file content
 * @FilePath     : \VehicleControl\VehicleControl\src\System\Vehicle\VehCo.c
 */
/********************************************************************************
 * 常州易控汽车电子股份有限公司
 * (c) Copyright 2009-2015 ECTEK
 * 保留所有权利
 ********************************************************************************
 * 工程名称：整车管理
 * 文件名： VehCo.c
 * 功能描述 ： 整车管理协调
 * 引用记录：
 * 备注：
 * 修订记录：
 *		日期		      版本		  作者		描述
 *   2011.07.14          00.01.00      李中     第一版
 *******************************************************************************/

#include "VehCo.h"
#include "HardwareLib.h"
#include "CANNet.h"
#include "AccPedCD.h"

#define APPLAYERVER_START_SEC_VAR
#include "MemMap.h"

const uint8 AppLayer_idxVerUBA[64] = "P156V102"; //应用层软件版本信息，可通过UDS接口读取

#define APPLAYERVER_STOP_SEC_VAR
#include "MemMap.h"

/*********************************************************************************************/
/*示例代码*/
#ifdef _SAMPLE_CODE_
#endif //_SAMPLE_CODE_
       /*********************************************************************************************/

/*************************************************************/
/*标定数据区开始（请不要在该区域加入非标定数据相关的内容）                                                                                 */

#define MAPDATA_START_SEC_VAR_CONST
#include "MemMap.h"

/*VehCo*/
PRAGMA_MAPDATA const uint16 VehCo_bTestCANWuFinUW_C = 0; /*测试模式下控制CAN唤醒状态结束*/
PRAGMA_MAPDATA const uint16 VehCo_bTestCPCtrlUW_C = 0;   /*CP下拉阻值选择测试操作*/
#define MAPDATA_STOP_SEC_VAR_CONST
#include "MemMap.h"

/*标定数据区结束                                                                                                                                                                               */
/*************************************************************/

#define _BOOTLOADER_EMBEDDED
#ifdef _BOOTLOADER_EMBEDDED
uint32 VehCo_pBootloaderUIP;
#pragma section ".bootloader_entry" ax
void Bootloader_Entry(void);
#pragma section
#endif

//整车管理初始化
void VehCo_Init(void)
{
#ifdef _BOOTLOADER_EMBEDDED
    VehCo_pBootloaderUIP = (uint32)Bootloader_Entry;
#endif

/*********************************************************************************************/
/*示例代码*/
#ifdef _SAMPLE_CODE_
    AccPedCD_Init();
    //VehCo_uAccPedUW = 0;
#endif //_SAMPLE_CODE_
       /*********************************************************************************************/

    CANNet_Init();

    /*打开强电主继电器*/
    PSwtDrv_Interface(_PSWT_INDEX_MAINRELAY_CHAN, 1);
    //打开蓝牙电源
    PSwtDrv_Interface(_PSWT_INDEX_BLEPWRCONTROL, 1);
}

//整车管理10ms基准运行任务
void VehCo_Manage10ms(void)
{
/*********************************************************************************************/
/*样例代码*/
#ifdef _SAMPLE_CODE_

    VehCo_Ctrl();
    VcuRxDiagnose();
    BcuRxDiagnose();

#endif //_SAMPLE_CODE_
    /*********************************************************************************************/
}

//整车管理1ms基准运行任务
void VehCo_Manage1ms(void)
{
#ifdef _APP_RELEASE_CODE
    CAN0Net_Manage1ms();
    CAN1Net_Manage1ms();
    CAN2Net_Manage1ms();
#endif
    //CAN2Net_Manage1ms();
}

//停机准备状态操作,10ms运行一次
uint8 VehCo_Afterrun(void)
{
    uint8 stRetUB = 0;

    if (HardwareDrv_bBootloaderReqUB == 1)
    {
        //进入Bootloader烧写状态准备，将系统置于安全状态
        {
            stRetUB = 1;
        }
    }
    else
    {
//进入停机关电准备

/*样例代码*/
#ifdef _SAMPLE_CODE_

        VehCo_Ctrl();

#endif //_SAMPLE_CODE_
        {
            stRetUB = 1;
        }
    }
    return stRetUB;
}

/*********************************************************************************************/
/*样例代码*/
#ifdef _SAMPLE_CODE_

void VehCo_Ctrl(void)
{
    /*在CAN唤醒的情况下，由上层算法决定CAN唤醒过程结束*/
    if (BattCD_stWakeupU.B.bCAN == 1)
    {
        if (VehCo_bTestCANWuFinUW_C == 1)
        {
            BattCD_stWakeupU.B.bCAN = 0;
        }
    }
#ifdef _APP_TEST_CODE
    TestDeviceFun();
    VehCo_uBattF = (float32)BattCD_uFltUW / 100.0F;
#endif
#ifdef _APP_TEST_MOTOR_CODE
    MotorTestFun();
#endif
#ifdef _APP_RELEASE_CODE
    /*正式程序开始*/
    GetHVLockState();
    GetDIOState();
    GetAIOValue();
    LockAndUnlockCtrl();
#endif
}
#endif //_SAMPLE_CODE_
/*********************************************************************************************/
