Can_App.c 7.79 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;
7
uint8_t Power_KL30_Init_flag = 0;
8 9
uint8_t AliveCount_KL30_ResettingFlag = 0;

陈家乐's avatar
陈家乐 committed
10
extern uint8_t Tpms_TX_Flag;
11 12 13 14 15 16 17 18 19


#define INVALID_VALUE   0x0

void CAN_TX_Flag_Init(void)
{
    Power_KL30_Init_flag = 0;
}

陈家乐's avatar
陈家乐 committed
20 21 22
void CAN_TX_Count_Init(void)
{
    CAN_TX_Count = 0;
23 24 25 26 27 28 29 30 31
    if(AliveCount_KL30_ResettingFlag > 0)
    {
        AliveCount_KL30_ResettingFlag = 0;
    }
    else
    {
        AliveCountTimer = 0;
    }
    
陈家乐's avatar
陈家乐 committed
32
}
33
void Can_Set_Buff_220(canlib_uint8_t CopyData[])
李俭双's avatar
李俭双 committed
34
{
35
    CANMsg220Union *p220;
李俭双's avatar
李俭双 committed
36
    uint8_t i = 0;
37 38
    uint8_t u8TCSVal = 0;
    u8TCSVal = Get_Dis_Tcs_Val();
39 40 41 42

    p220 = (CANMsg220Union *)CopyData;
    if ( p220 != ( void * )0 )
    {
43 44 45 46
                    for ( i = 0u; i < 8u; i++ )
            {
                p220->Msg [ i ] = 0x0u;
            }
47

48 49 50 51
            p220 -> Sig.TCS_TX = u8TCSVal;
            p220 -> Sig.AliveCounter = AliveCountTimer;
            p220 -> Sig.CheckSum = (u8TCSVal == 1) ? 8 : 0;
            }
52

53
    
54
    
55 56 57 58 59
}
void Can_Set_Buff_6EE(canlib_uint8_t CopyData[])
{
    CANMsg6EEUnion *p6EE;
    uint8_t i = 0;
60
    uint16_t Vspeed_tx = 0;
61
    uint16_t Fuel_tx = 0;
62
    uint32_t ODO_tx = Data_ODO_Read();    
63
    Vspeed_tx = Get_DispVechileSpeed_TX()/10;
64
    Fuel_tx = Get_Fuel_RES();
65
    p6EE = (CANMsg6EEUnion *)CopyData;
李俭双's avatar
李俭双 committed
66
    
67 68
    if ( p6EE != ( void * )0 )
    {
69
        if(Power_KL30_Init_flag == 1)
70
        {
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
            for ( i = 0u; i < 8u; i++ )
            {
                p6EE->Msg [ i ] = 0x0u;
            }
            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(Fuel_tx > 255)
            {
                p6EE -> Sig.Fuel_Res_TX  = 0xFF ; 
            }
            else
            {
                p6EE -> Sig.Fuel_Res_TX  = Fuel_tx ; 
            }
86 87 88
        }
        else
        {
89 90 91 92
            for ( i = 0u; i < 8u; i++ )
            {
                p6EE->Msg [ i ] = INVALID_VALUE;
            }
93
        }
94
        
95
       
96
    } 
97 98
    //p6EE -> Sig.Vsppe_H3_TX     = (Vspeed_tx >> 8) & 0x7u ;
    //p6EE -> Sig.Vsppe_L8_TX     = Vspeed_tx & 0xFF ;
99
    
100 101 102 103 104 105 106 107 108 109 110
   // 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() ;
111
    
112
    
113 114 115 116 117
}
void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
{
    CANMsg6EFUnion *p6EF;
    uint8_t i = 0;
118
    uint16_t Espeed_tx = 0;
119
    uint16_t TripA_tx = 0;
120
    Espeed_tx = Get_ActualEngineSpeed()/100;
121
    TripA_tx  = (uint16_t)Data_Read_Trip(EM_TRIP_A);
122 123
    p6EF = (CANMsg6EFUnion *)CopyData;
    if ( p6EF != ( void * )0 )
李俭双's avatar
李俭双 committed
124
    {
125 126 127 128 129 130 131 132 133 134
        if(Power_KL30_Init_flag == 1)
        {
            for ( i = 0u; i < 8u; i++ )
            {
                p6EF->Msg [ i ] = 0x0u;
            }
            p6EF -> Sig.TripA_H    = (TripA_tx >> 8) & 0xFF;
            p6EF -> Sig.TripA_L    = TripA_tx  & 0xFF;
        }
        else
135
        {
136 137 138 139
            for ( i = 0u; i < 8u; i++ )
            {
                p6EF->Msg [ i ] = INVALID_VALUE;
            }
140
        }
141
        
李俭双's avatar
李俭双 committed
142
    }
143
    //p6EF -> Sig.Espeed_TX  = Espeed_tx;
144
    
李俭双's avatar
李俭双 committed
145
    //p6EF -> Sig.Coolant_TX = GET_DataCoolantTempValueDisp() + 40;
146 147 148 149 150
}
void Can_Set_Buff_450(canlib_uint8_t CopyData[])
{
    CANMsg450Union *p450;
    uint8_t i = 0;
151 152
    uint16_t u16FrontTpms = 0;
    uint16_t u16RearTpms = 0;
153

154 155 156
    uint16_t u16FrontTpmsValue = Get_Front_TPMS_TX();
    uint16_t u16RearTpmsValue = Get_Rear_TPMS_TX();    

157 158
    p450 = (CANMsg450Union *)CopyData;
    if ( p450 != ( void * )0 )
李俭双's avatar
李俭双 committed
159
    {
160
        if(Power_KL30_Init_flag == 1)
161
        {
162
            for ( i = 0u; i < 8u; i++ )
163
            {
164 165 166 167 168 169 170 171 172
                p450->Msg [ i ] = 0x0u;
            }
            if(Get_Front_TPMS_Sig_Vaild() == 0\
                || 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)
            {
                p450 -> Sig.Front_Pressure_TX_H  = 0;
                p450 -> Sig.Front_Pressure_TX_L  = 0;
173 174 175
            }
            else
            {
176 177 178 179 180 181 182 183 184 185
                if((u16FrontTpmsValue + 146) <= 1000U)
                {
                    u16FrontTpms = (u16FrontTpmsValue + 146);
                }
                else
                {
                    u16FrontTpms = 1000U;
                }
                p450 -> Sig.Front_Pressure_TX_H  = ( u16FrontTpms >> 8) & 0xFF;
                p450 -> Sig.Front_Pressure_TX_L  = ( u16FrontTpms) & 0xFF;
186
            }
187 188 189 190
            if(Get_Rear_TPMS_Sig_Vaild() == 0\
                || 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)
191
            {
192 193
                p450 -> Sig.Rear_Pressure_TX_H   = 0;
                p450 -> Sig.Rear_Pressure_TX_L   = 0;
194 195 196
            }
            else
            {
197 198 199 200 201 202 203 204 205 206
                if((u16RearTpmsValue + 146) <= 1000U)
                {
                    u16RearTpms = (u16RearTpmsValue + 146);
                }
                else
                {
                    u16RearTpms = 1000U;
                }
                p450 -> Sig.Rear_Pressure_TX_H   = (u16RearTpms >> 8) & 0xFF;
                p450 -> Sig.Rear_Pressure_TX_L   = (u16RearTpms) & 0xFF;
207
            }
208
        }
209 210 211 212 213 214 215 216
        else
        {
            for ( i = 0u; i < 8u; i++ )
            {
                p450->Msg [ i ] = INVALID_VALUE;
            }
        }
        
217
        
李俭双's avatar
李俭双 committed
218
    }
219
    
李俭双's avatar
李俭双 committed
220
}
221
//uint8_t Can_580Send_flag = 0;
222 223 224 225
void Can_Set_Buff_580(canlib_uint8_t CopyData[])
{
    CANMsg580Union *p580;
    uint8_t i = 0;
226
    uint8_t u8TpmsFlag = Get_Tpms_TX_Flag() ;
227 228 229 230 231
    p580 = (CANMsg580Union *)CopyData;
    if ( p580 != ( void * )0 )
    {
        for ( i = 0u; i < 8u; i++ )
        {
232
            p580->Msg [ i ] = 0x0u;
233
        }
234

235
        if(u8TpmsFlag == 1)
236
        {
237 238 239 240 241 242 243
            //Can_580Send_flag = 1;
            //if(CAN_TX_Count++ > 2)
            //{
            //    Tpms_TX_Flag = 0;
            //    CAN_TX_Count = 0;
            //    //Can_580Send_flag = 0;
            //}
244 245 246 247 248
            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;
249 250 251 252 253
            //if(Can_580Send_flag == 0)
            //{
            //    Can_580Send_flag = 1;
            //    CAN_TX_Count++;
            //}
254
        }
255
        else if(u8TpmsFlag == 2)
256
        {
257 258 259 260 261 262 263
            //Can_580Send_flag = 1;
            //if(CAN_TX_Count++ > 2)
            //{
            //    Tpms_TX_Flag = 0;
            //    CAN_TX_Count = 0;
            //    //Can_580Send_flag = 0;
            //}
264 265 266 267 268
            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;
269 270 271 272 273
            //if(Can_580Send_flag == 0)
            //{
            //    Can_580Send_flag = 1;
            //    CAN_TX_Count++;
            //}
274 275 276
        }
        else
        {
277 278
            //Can_580Send_flag = 0;
            //CAN_TX_Count = 0;
279 280 281 282 283
            //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;
284
        }
285
    }
286
    
287 288

}
289

290