Data_AirPressure.c 12.8 KB
Newer Older
hu's avatar
hu committed
1 2 3 4 5
#include "Data_AirPressure.h"
#include "Gauges.h"
#include "CAN_Communication_Matrix.h"
#include "RTE_ADC.h"

hu's avatar
hu committed
6 7
#include "Common_Interface.h"

8 9 10
DataStruct DataStrGas1;
DataStruct DataStrGas2;
DataStruct DataStrWET;
hu's avatar
hu committed
11 12 13

/*-------------------------------------------------------------------------
 * Function Name  : AirPressure_KL30_Init
hu's avatar
hu committed
14
 * Description    :
hu's avatar
hu committed
15 16 17 18 19 20
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : Table固化 斜率同时固化
 --------------------------------------------------------------------------*/
void AirPressure_KL30_Init(void)
hu's avatar
hu committed
21 22
{
}
23
void AirPressure_KL15_ON_Init(void)
hu's avatar
hu committed
24
{
25 26 27 28
    uint8_t i = 0u;
    /*气压1结构体初始化*/
    DataStrGas1.Count = 0u;
    for (i = 0; i < 15u; i++)
hu's avatar
hu committed
29
    {
30
        DataStrGas1.DataBuf[i] = 0u;
hu's avatar
hu committed
31
    }
32 33 34 35 36 37 38 39
    DataStrGas1.DataDisplay = 0u;
    DataStrGas1.Valid = 0u;
    DataStrGas1.LostTimer = 0u;
    DataStrGas1.Status = 0u;

    /*气压2结构体初始化*/
    DataStrGas2.Count = 0u;
    for (i = 0; i < 15u; i++)
hu's avatar
hu committed
40
    {
41
        DataStrGas2.DataBuf[i] = 0u;
hu's avatar
hu committed
42
    }
43 44 45 46 47 48 49 50 51 52 53 54 55 56
    DataStrGas2.DataDisplay = 0u;
    DataStrGas2.Valid = 0u;
    DataStrGas2.LostTimer = 0u;
    DataStrGas2.Status = 0u;

    /*wet 气压结构体初始化*/
    DataStrWET.Count = 0u;
    for (i = 0; i < 15u; i++)
    {
        DataStrWET.DataBuf[i] = 0u;
    }
    DataStrWET.DataDisplay = 0u;
    DataStrWET.Valid = 0u;
    DataStrWET.LostTimer = 0u;
hu's avatar
hu committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
}
void AirPressure_KL15_OFF_Init(void)
{
}
void AirPressure_Wakeup_Init(void)
{
}
void AirPressure_Sleep_Init(void)
{
}
/*-------------------------------------------------------------------------
 * Function Name  : AirPressure_Processing_Service
 * Description    : 主函数周期调用
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
void AirPressure_Processing_Service(void)
{
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
    Data_Gas1_Processing_Service();
    Data_Gas2_Processing_Service();
    Data_WET_Processing_Service();

    SetGaugesPara(PRIGasGauges, DataStrGas1.DataDisplay);
    SetGaugesPara(SECGasGauges, DataStrGas2.DataDisplay);
    SetGaugesPara(WETGasGauges, DataStrWET.DataDisplay);
}

/*-------------------------------------------------------------------------
 * Function Name  : Data_Gas1_Processing_Service
 * Description    : 气压1
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
void Data_Gas1_Processing_Service(void)
{
    uint32_t Gas_Value = 0u;
    uint32_t data = 0u;
hu's avatar
hu committed
98

99 100 101 102 103 104 105 106
    if ((K_Line_Set.K_Line_LID42 == 0x00) || (K_Line_Set.K_Line_LID42 == 0x02))
    {
        Gas_Value = RTE_Read_PRIMARY_AIR_Voltage();
    }
    else if ((K_Line_Set.K_Line_LID42 == 0x01) || (K_Line_Set.K_Line_LID42 == 0x03))
    {
        Gas_Value = RTE_Read_SECONDARY_AIR_Voltage();
    }
hu's avatar
hu committed
107

108
    if ((Common_Get_IG_Sts_Valid() == 1u) && (Common_Get_IG_Sts() == COMMON_POWER_ON))
hu's avatar
hu committed
109
    {
hu's avatar
hu committed
110
        if ((Gas_Value < 250u) || (Gas_Value > 4250u))
hu's avatar
hu committed
111
        {
112
            if (DataStrGas1.LostTimer < 200u)
hu's avatar
hu committed
113
            {
114 115 116 117 118 119 120 121 122 123
                if (DataStrGas1.Valid == 1u)
                {
                    DataStrGas1.LostTimer++;
                }
                else
                {
                    DataStrGas1.Count = 0u;
                    DataStrGas1.DataDisplay = 0u;
                    DataStrGas1.LostTimer = 200u;
                }
hu's avatar
hu committed
124 125 126
            }
            else
            {
127 128 129 130
                DataStrGas1.Valid = 0u;
                DataStrGas1.Count = 0u;
                DataStrGas1.DataDisplay = 0u;
                DataStrGas1.Status = 1u;
hu's avatar
hu committed
131 132 133 134
            }
        }
        else
        {
135 136 137
            DataStrGas1.Status = 0u;
            DataStrGas1.LostTimer = 0u;
            if (DataStrGas1.Valid == 0u)
hu's avatar
hu committed
138
            {
139 140
                DataStrGas1.DataDisplay = Gas_Value;
                DataStrGas1.Valid = 1u;
hu's avatar
hu committed
141 142 143
            }
            else
            {
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
                if (DataStrGas1.Count >= 15)
                {
                    DataStrGas1.Count = 0u;
                    App_SortNByte(DataStrGas1.DataBuf, 5u);
                    App_SortNByte(DataStrGas1.DataBuf + 5u, 5u);
                    App_SortNByte(DataStrGas1.DataBuf + 10u, 5u);
                    data = (DataStrGas1.DataBuf[2u] + DataStrGas1.DataBuf[7u] + DataStrGas1.DataBuf[12u]);
                    data = data / 3u;
                    DataStrGas1.DataDisplay = (uint16_t)data;
                }
                else
                {
                    DataStrGas1.Count++;
                    DataStrGas1.DataBuf[DataStrGas1.Count - 1u] = Gas_Value;
                }
hu's avatar
hu committed
159 160
            }
        }
161 162 163 164 165 166 167 168
    }
    else
    {
        DataStrGas1.Count = 0u;
        DataStrGas1.DataDisplay = 0u;
        DataStrGas1.Valid = 0u;
        DataStrGas1.LostTimer = 0u;
        DataStrGas1.Status = 0u;
hu's avatar
hu committed
169
    }
hu's avatar
hu committed
170
}
171

hu's avatar
hu committed
172
/*-------------------------------------------------------------------------
173 174
 * Function Name  : Data_Gas2_Processing_Service
 * Description    : 气压2
hu's avatar
hu committed
175 176 177 178 179
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
180
void Data_Gas2_Processing_Service(void)
hu's avatar
hu committed
181
{
182 183
    uint32_t Gas_Value = 0u;
    uint32_t data = 0u;
hu's avatar
hu committed
184

185
    if ((K_Line_Set.K_Line_LID42 == 0x00) || (K_Line_Set.K_Line_LID42 == 0x02))
hu's avatar
hu committed
186
    {
187
        Gas_Value = RTE_Read_SECONDARY_AIR_Voltage();
hu's avatar
hu committed
188
    }
189
    else if ((K_Line_Set.K_Line_LID42 == 0x01) || (K_Line_Set.K_Line_LID42 == 0x03))
hu's avatar
hu committed
190
    {
191
        Gas_Value = RTE_Read_PRIMARY_AIR_Voltage();
hu's avatar
hu committed
192
    }
193 194

    if ((Common_Get_IG_Sts_Valid() == 1u) && (Common_Get_IG_Sts() == COMMON_POWER_ON))
hu's avatar
hu committed
195
    {
hu's avatar
hu committed
196
        if ((Gas_Value < 250u) || (Gas_Value > 4250u))
hu's avatar
hu committed
197
        {
198 199 200 201 202 203 204 205 206 207 208 209 210 211
            if (DataStrGas2.LostTimer < 200u)
            {
                if (DataStrGas2.Valid == 1u)
                {
                    DataStrGas2.LostTimer++;
                }
                else
                {
                    DataStrGas2.Count = 0u;
                    DataStrGas2.DataDisplay = 0u;
                    DataStrGas2.LostTimer = 200u;
                }
            }
            else
hu's avatar
hu committed
212
            {
213 214 215 216
                DataStrGas2.Valid = 0u;
                DataStrGas2.Count = 0u;
                DataStrGas2.DataDisplay = 0u;
                DataStrGas2.Status = 1u;
hu's avatar
hu committed
217 218
            }
        }
219
        else
hu's avatar
hu committed
220
        {
221 222 223 224 225 226 227 228
            DataStrGas2.Status = 0u;
            DataStrGas2.LostTimer = 0u;
            if (DataStrGas2.Valid == 0u)
            {
                DataStrGas2.DataDisplay = Gas_Value;
                DataStrGas2.Valid = 1u;
            }
            else
hu's avatar
hu committed
229
            {
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
                if (DataStrGas2.Count >= 15)
                {
                    DataStrGas2.Count = 0u;
                    App_SortNByte(DataStrGas2.DataBuf, 5u);
                    App_SortNByte(DataStrGas2.DataBuf + 5u, 5u);
                    App_SortNByte(DataStrGas2.DataBuf + 10u, 5u);
                    data = (DataStrGas2.DataBuf[2u] + DataStrGas2.DataBuf[7u] + DataStrGas2.DataBuf[12u]);
                    data = data / 3u;
                    DataStrGas2.DataDisplay = (uint16_t)data;
                }
                else
                {
                    DataStrGas2.Count++;
                    DataStrGas2.DataBuf[DataStrGas2.Count - 1u] = Gas_Value;
                }
hu's avatar
hu committed
245 246 247 248 249
            }
        }
    }
    else
    {
250 251 252 253 254
        DataStrGas2.Count = 0u;
        DataStrGas2.DataDisplay = 0u;
        DataStrGas2.Valid = 0u;
        DataStrGas2.LostTimer = 0u;
        DataStrGas2.Status = 0u;
hu's avatar
hu committed
255
    }
hu's avatar
hu committed
256
}
257

hu's avatar
hu committed
258
/*-------------------------------------------------------------------------
259 260
 * Function Name  : Data_WET_Processing_Service
 * Description    : WET 气压
hu's avatar
hu committed
261 262 263 264 265
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
266
void Data_WET_Processing_Service(void)
hu's avatar
hu committed
267
{
268 269
    uint32_t Gas_Value = 0u;
    uint32_t data = 0u;
hu's avatar
hu committed
270

hu's avatar
hu committed
271 272
    if ((K_Line_Set.K_Line_LID42 == 0x00) || (K_Line_Set.K_Line_LID42 == 0x02))
    {
273
        Gas_Value = RTE_Read_WET_AIR_Voltage();
hu's avatar
hu committed
274 275 276
    }
    else if ((K_Line_Set.K_Line_LID42 == 0x01) || (K_Line_Set.K_Line_LID42 == 0x03))
    {
277
        Gas_Value = RTE_Read_WET_AIR_Voltage();
hu's avatar
hu committed
278 279
    }

280
    if ((Common_Get_IG_Sts_Valid() == 1u) && (Common_Get_IG_Sts() == COMMON_POWER_ON))
hu's avatar
hu committed
281
    {
hu's avatar
hu committed
282
        if ((Gas_Value < 500u) || (Gas_Value > 4500u))
hu's avatar
hu committed
283
        {
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
            if (DataStrWET.LostTimer < 200u)
            {
                if (DataStrWET.Valid == 1u)
                {
                    DataStrWET.LostTimer++;
                }
                else
                {
                    DataStrWET.Count = 0u;
                    DataStrWET.DataDisplay = 0u;
                    DataStrWET.LostTimer = 200u;
                }
            }
            else
            {
                DataStrWET.Valid = 0u;
                DataStrWET.Count = 0u;
                DataStrWET.DataDisplay = 0u;
            }
hu's avatar
hu committed
303 304 305
        }
        else
        {
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
            DataStrWET.LostTimer = 0u;
            if (DataStrWET.Valid == 0u)
            {
                DataStrWET.DataDisplay = Gas_Value;
                DataStrWET.Valid = 1u;
            }
            else
            {
                if (DataStrWET.Count >= 15)
                {
                    DataStrWET.Count = 0u;
                    App_SortNByte(DataStrWET.DataBuf, 5u);
                    App_SortNByte(DataStrWET.DataBuf + 5u, 5u);
                    App_SortNByte(DataStrWET.DataBuf + 10u, 5u);
                    data = (DataStrWET.DataBuf[2u] + DataStrWET.DataBuf[7u] + DataStrWET.DataBuf[12u]);
                    data = data / 3u;
                    DataStrWET.DataDisplay = (uint16_t)data;
                }
                else
                {
                    DataStrWET.Count++;
                    DataStrWET.DataBuf[DataStrWET.Count - 1u] = Gas_Value;
                }
            }
hu's avatar
hu committed
330 331 332 333
        }
    }
    else
    {
334 335 336 337
        DataStrWET.Count = 0u;
        DataStrWET.DataDisplay = 0u;
        DataStrWET.Valid = 0u;
        DataStrWET.LostTimer = 0u;
hu's avatar
hu committed
338
    }
hu's avatar
hu committed
339
}
hu's avatar
hu committed
340

hu's avatar
hu committed
341
/*-------------------------------------------------------------------------
342 343
 * Function Name  : Common_Get_Air1_Valid
 * Description    : 获取气压 1 的有效性
hu's avatar
hu committed
344 345 346 347 348
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
349
uint8_t Common_Get_Air1_Valid(void)
hu's avatar
hu committed
350
{
351
    return DataStrGas1.Valid;
hu's avatar
hu committed
352
}
353

hu's avatar
hu committed
354
/*-------------------------------------------------------------------------
355 356
 * Function Name  : Common_Get_Air2_Valid
 * Description    : 获取气压 2 的有效性
hu's avatar
hu committed
357 358 359 360 361
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
362
uint8_t Common_Get_Air2_Valid(void)
hu's avatar
hu committed
363
{
364
    return DataStrGas2.Valid;
hu's avatar
hu committed
365
}
366

hu's avatar
hu committed
367
/*-------------------------------------------------------------------------
368 369
 * Function Name  : Common_Get_WET_Valid
 * Description    : 获取 WET 有效性
hu's avatar
hu committed
370 371 372 373 374
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
375
uint8_t Common_Get_WET_Valid(void)
hu's avatar
hu committed
376
{
377
    return DataStrWET.Valid;
hu's avatar
hu committed
378 379
}

380 381 382 383 384 385 386 387
/*-------------------------------------------------------------------------
 * Function Name  : Common_Get_Air1_Data
 * Description    : 获取
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
hu's avatar
hu committed
388 389 390 391 392
uint16_t Common_Get_Air1_Data(void)
{
    return DataStrGas1.DataDisplay;
}

393 394 395 396 397 398 399 400
/*-------------------------------------------------------------------------
 * Function Name  : Common_Get_Air2_Data
 * Description    : 获取
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
hu's avatar
hu committed
401 402 403 404 405
uint16_t Common_Get_Air2_Data(void)
{
    return DataStrGas2.DataDisplay;
}

406 407 408 409 410 411 412 413
/*-------------------------------------------------------------------------
 * Function Name  : Common_Get_WET_Data
 * Description    : 获取
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
hu's avatar
hu committed
414 415 416 417
uint16_t Common_Get_WET_Data(void)
{
    return DataStrWET.DataDisplay;
}