Can_App.c 6.34 KB
Newer Older
李俭双's avatar
李俭双 committed
1
#include "Can_App.h"
2
#include "Components.h"
3
#include "Application.h"
李俭双's avatar
李俭双 committed
4

陈家乐's avatar
陈家乐 committed
5
uint16_t CAN_TX_Count = 0;
6
uint16_t AliveCountTimer = 0;
陈家乐's avatar
陈家乐 committed
7 8 9 10
extern uint8_t Tpms_TX_Flag;
void CAN_TX_Count_Init(void)
{
    CAN_TX_Count = 0;
11
    AliveCountTimer = 0;
陈家乐's avatar
陈家乐 committed
12
}
13
void Can_Set_Buff_220(canlib_uint8_t CopyData[])
李俭双's avatar
李俭双 committed
14
{
15
    CANMsg220Union *p220;
李俭双's avatar
李俭双 committed
16
    uint8_t i = 0;
17 18 19 20 21 22

    p220 = (CANMsg220Union *)CopyData;
    if ( p220 != ( void * )0 )
    {
        for ( i = 0u; i < 8u; i++ )
        {
23
            p220->Msg [ i ] = 0x0u;
24
        }
25 26

        p220 -> Sig.TCS_TX = Get_Dis_Tcs_Val();
27 28 29 30
        p220 -> Sig.AliveCounter = AliveCountTimer;
        p220 -> Sig.CheckSum = (Get_Dis_Tcs_Val() == 1) ? 8 : 0;
    }

31
    
32
    
33 34 35 36 37
}
void Can_Set_Buff_6EE(canlib_uint8_t CopyData[])
{
    CANMsg6EEUnion *p6EE;
    uint8_t i = 0;
38
    uint16_t Vspeed_tx = 0;
39
    uint32_t ODO_tx = Data_ODO_Read();    
40
    Vspeed_tx = Get_DispVechileSpeed_TX()/10;
41
    p6EE = (CANMsg6EEUnion *)CopyData;
李俭双's avatar
李俭双 committed
42
    
43 44 45 46
    if ( p6EE != ( void * )0 )
    {
        for ( i = 0u; i < 8u; i++ )
        {
47
            p6EE->Msg [ i ] = 0x0u;
48
        }
49 50 51 52 53 54 55 56 57 58 59 60
        p6EE -> Sig.ODO_TX_H        = (ODO_tx >> 16) & 0xFF ;
        p6EE -> Sig.ODO_TX_M        = (ODO_tx >> 8) & 0xFF ;
        p6EE -> Sig.ODO_TX_L        = ODO_tx & 0xFF ;
        if(Get_Fuel_RES() > 255)
        {
            p6EE -> Sig.Fuel_Res_TX  = 0xFF ; 
        }
        else
        {
            p6EE -> Sig.Fuel_Res_TX  = Get_Fuel_RES() ; 
        }
       
61
    } 
62 63
    //p6EE -> Sig.Vsppe_H3_TX     = (Vspeed_tx >> 8) & 0x7u ;
    //p6EE -> Sig.Vsppe_L8_TX     = Vspeed_tx & 0xFF ;
64
    
65 66 67 68 69 70 71 72 73 74 75
   // p6EE -> Sig.Uint_TX         = Get_Dis_KM_Unit() ;
   // p6EE -> Sig.Coolant_Seg_TX  = GET_DataCoolantTempSegDisp() ;
    //if (GET_DataCollantTempWarnflg() == 2)
    //{
    //    p6EE -> Sig.Coolant_Warn_TX = 1;
    //}
    //else
    //{
    //    p6EE -> Sig.Coolant_Warn_TX = 0;
    //}
    //p6EE -> Sig.Fuel_Seg_TX  = Get_CurFuelSetp() ;
76
    
77
    
78 79 80 81 82
}
void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
{
    CANMsg6EFUnion *p6EF;
    uint8_t i = 0;
83
    uint16_t Espeed_tx = 0;
84
    uint16_t TripA_tx = 0;
85
    Espeed_tx = Get_ActualEngineSpeed()/100;
86
    TripA_tx  = Data_Read_Trip(EM_TRIP_A);
87 88
    p6EF = (CANMsg6EFUnion *)CopyData;
    if ( p6EF != ( void * )0 )
李俭双's avatar
李俭双 committed
89
    {
90 91
        for ( i = 0u; i < 8u; i++ )
        {
92
            p6EF->Msg [ i ] = 0x0u;
93
        }
94 95
        p6EF -> Sig.TripA_H    = (TripA_tx >> 8) & 0xFF;
        p6EF -> Sig.TripA_L    = TripA_tx  & 0xFF;
李俭双's avatar
李俭双 committed
96
    }
97
    //p6EF -> Sig.Espeed_TX  = Espeed_tx;
98
    
李俭双's avatar
李俭双 committed
99
    //p6EF -> Sig.Coolant_TX = GET_DataCoolantTempValueDisp() + 40;
100 101 102 103 104
}
void Can_Set_Buff_450(canlib_uint8_t CopyData[])
{
    CANMsg450Union *p450;
    uint8_t i = 0;
105 106
    uint16_t u16FrontTpms = 0;
    uint16_t u16RearTpms = 0;
107 108 109

    p450 = (CANMsg450Union *)CopyData;
    if ( p450 != ( void * )0 )
李俭双's avatar
李俭双 committed
110
    {
111 112
        for ( i = 0u; i < 8u; i++ )
        {
113
            p450->Msg [ i ] = 0x0u;
114
        }
115
        if(Get_Front_TPMS_Sig_Vaild() == 0\
116 117 118
            || Get_TPMS_Front_Learn() != 2 
            || CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x373_Msg_Count) == CAN_SIG_LOST\
            || Get_Front_TPMS_ID_Vaild() == 0)
119 120 121 122 123 124
        {
            p450 -> Sig.Front_Pressure_TX_H  = 0;
            p450 -> Sig.Front_Pressure_TX_L  = 0;
        }
        else
        {
125 126 127 128 129 130 131 132 133 134
            if((Get_Front_TPMS_TX() + 146) <= 1000U)
            {
                u16FrontTpms = (Get_Front_TPMS_TX() + 146);
            }
            else
            {
                u16FrontTpms = 1000U;
            }
            p450 -> Sig.Front_Pressure_TX_H  = ( u16FrontTpms >> 8) & 0xFF;
            p450 -> Sig.Front_Pressure_TX_L  = ( u16FrontTpms) & 0xFF;
135
        }
136
        if(Get_Rear_TPMS_Sig_Vaild() == 0\
137 138 139
            || Get_TPMS_Rear_Learn() != 2 
            || CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x373_Msg_Count) == CAN_SIG_LOST\
            || Get_Rear_TPMS_ID_Vaild() == 0)
140 141 142 143 144 145
        {
            p450 -> Sig.Rear_Pressure_TX_H   = 0;
            p450 -> Sig.Rear_Pressure_TX_L   = 0;
        }
        else
        {
146 147 148 149 150 151 152 153 154 155
            if((Get_Rear_TPMS_TX() + 146) <= 1000U)
            {
                u16RearTpms = (Get_Rear_TPMS_TX() + 146);
            }
            else
            {
                u16RearTpms = 1000U;
            }
            p450 -> Sig.Rear_Pressure_TX_H   = (u16RearTpms >> 8) & 0xFF;
            p450 -> Sig.Rear_Pressure_TX_L   = (u16RearTpms) & 0xFF;
156 157
        }
        
李俭双's avatar
李俭双 committed
158
    }
159
    
李俭双's avatar
李俭双 committed
160
}
161
//uint8_t Can_580Send_flag = 0;
162 163 164 165 166 167 168 169 170 171
void Can_Set_Buff_580(canlib_uint8_t CopyData[])
{
    CANMsg580Union *p580;
    uint8_t i = 0;

    p580 = (CANMsg580Union *)CopyData;
    if ( p580 != ( void * )0 )
    {
        for ( i = 0u; i < 8u; i++ )
        {
172
            p580->Msg [ i ] = 0x0u;
173
        }
174 175 176

        if(Get_Tpms_TX_Flag() == 1)
        {
177 178 179 180 181 182 183
            //Can_580Send_flag = 1;
            //if(CAN_TX_Count++ > 2)
            //{
            //    Tpms_TX_Flag = 0;
            //    CAN_TX_Count = 0;
            //    //Can_580Send_flag = 0;
            //}
184 185 186 187 188
            p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x31;
            p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x01;
            p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x59;
            p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x08;
            p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x00;
189 190 191 192 193
            //if(Can_580Send_flag == 0)
            //{
            //    Can_580Send_flag = 1;
            //    CAN_TX_Count++;
            //}
194 195 196
        }
        else if(Get_Tpms_TX_Flag() == 2)
        {
197 198 199 200 201 202 203
            //Can_580Send_flag = 1;
            //if(CAN_TX_Count++ > 2)
            //{
            //    Tpms_TX_Flag = 0;
            //    CAN_TX_Count = 0;
            //    //Can_580Send_flag = 0;
            //}
204 205 206 207 208
            p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x31;
            p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x01;
            p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x59;
            p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x08;
            p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x01;
209 210 211 212 213
            //if(Can_580Send_flag == 0)
            //{
            //    Can_580Send_flag = 1;
            //    CAN_TX_Count++;
            //}
214 215 216
        }
        else
        {
217 218
            //Can_580Send_flag = 0;
            //CAN_TX_Count = 0;
219 220 221 222 223
            //p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x0;
            //p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x0;
            //p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x0;
            //p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x0;
            //p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x02;
224
        }
225
    }
226
    
227 228

}
229

230