/*
 * @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_
       /*********************************************************************************************/

/*************************************************************/
/*�궨��������ʼ���벻Ҫ�ڸ��������DZ궨������ص����ݣ�                                                                                 */

#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)
{
    CAN0Net_Manage1ms();
    CAN1Net_Manage1ms();
    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;
        }
    }
    /*��ʽ����ʼ*/
    GetHVLockState();
    GetDIOState();
    GetAIOValue();
    LockAndUnlockCtrl();
}
#endif //_SAMPLE_CODE_
/*********************************************************************************************/