GaugesInterface.c 8.06 KB
Newer Older
hu's avatar
hu committed
1
#include "GaugesInterface.h"
hu's avatar
hu committed
2 3
#include "Menu.h"
/**@struct _GaugesInfoInit
hu's avatar
hu committed
4 5
 *this is _GaugesInfoInit
 */
hu's avatar
hu committed
6 7
#include "Common_Interface.h"

hu's avatar
hu committed
8
#define Self_time   900u
9

hu's avatar
hu committed
10
static const uint16_t GaugesDataInInit[GaugesTotal][3][25] =
hu's avatar
hu committed
11 12
{
    /*车速*/
hu's avatar
hu committed
13
    {
14 15 16
        {0, 200, 400, 600, 800, 1000, 1200, 1400,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 200, 400, 600, 800, 1000, 1200, 1400,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {1,   5,   9,  13,  17,   21,   25,   29,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
hu's avatar
hu committed
17 18 19 20
    },
    /*转速*/
    {   {0u, 1000, 1500, 2000, 2500, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0u, 1000, 1500, 2000, 2500, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
21
        {1u,    6,   11,   16,   21,   27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
hu's avatar
hu committed
22 23
    },
    /*水温*/
hu's avatar
hu committed
24 25 26
    {   { 0, 50, 55, 61, 66, 72,  77, 102, 104, 106, 108, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {49, 54, 60, 65, 71, 76, 101, 103, 105, 107, 109, 110, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        { 0,  1,  2,  3,  4,  5,   6,   7,   8,   9,  10,  11,  12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
hu's avatar
hu committed
27 28
    },
    /*PRI气压*/
hu's avatar
hu committed
29 30 31
    {   {500, 720,  940, 1160, 1380, 1600, 1820, 2040, 2260, 2480, 2700, 2920, 3140, 3360, 3580, 3800, 4020, 4240, 4500, 0, 0, 0, 0, 0},
        {610, 830, 1050, 1270, 1490, 1710, 1930, 2150, 2370, 2590, 2810, 3030, 3250, 3470, 3690, 3910, 4130, 4350, 4500, 0, 0, 0, 0, 0},
        {  0,   1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,   17,   18, 0, 0, 0, 0, 0}
hu's avatar
hu committed
32 33
    },
    /*SEC气压*/
hu's avatar
hu committed
34 35 36
    {   {500, 720,  940, 1160, 1380, 1600, 1820, 2040, 2260, 2480, 2700, 2920, 3140, 3360, 3580, 3800, 4020, 4240, 4500, 0, 0, 0, 0, 0},
        {610, 830, 1050, 1270, 1490, 1710, 1930, 2150, 2370, 2590, 2810, 3030, 3250, 3470, 3690, 3910, 4130, 4350, 4500, 0, 0, 0, 0, 0},
        {  0,   1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,   17,   18, 0, 0, 0, 0, 0}
hu's avatar
hu committed
37 38
    },
    /*WET气压*/
hu's avatar
hu committed
39 40 41
    {   {500, 730,  960, 1190, 1420, 1650, 1880, 2100, 2330, 2560, 2790, 3020, 3250, 3480, 3710, 3940, 4170, 4400, 4500, 0, 0, 0, 0, 0, 0},
        {600, 830, 1060, 1290, 1520, 1750, 1980, 2200, 2430, 2660, 2890, 3120, 3350, 3580, 3810, 4040, 4270, 4500, 4500, 0, 0, 0, 0, 0, 0},
        {  0,   1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,   17,   18, 0, 0, 0, 0, 0, 0}
hu's avatar
hu committed
42 43
    },
    /*电池电压*/
44 45 46
    {   {0, 17000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 30000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 18500, 19500, 20500, 21500, 22500, 23500, 24500, 25500, 26500, 27500, 28500, 29500, 30500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0,     1,     2,     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,    13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
hu's avatar
hu committed
47 48 49 50
    },

};

hu's avatar
hu committed
51
/*指示类型*/ /*表头1        表头2        表头3        表头4*/ /*表头5*/ /*表头6*/                                                                  /*表头7*/
hu's avatar
hu committed
52
static const uint8_t GaugesIndicatType[GaugesTotal] = {LEDOtherType, LEDOtherType, LEDTempType, LEDGasType, LEDGasType, LEDGasType, LEDBattery}; /*初始化表头显示类型,例如水温,气压*/
hu's avatar
hu committed
53
/*每个表头包含的参数个数*/                                                                                                                         /*表头1 表头2 表头3 表头4*/
54
static const uint8_t GaugesParaNum[GaugesTotal] = {8, 6, 13, 19, 19, 19, 14};
hu's avatar
hu committed
55

hu's avatar
hu committed
56
/*每个表头IGON后开始走动时间*/                             /*表头1 表头2 表头3 表头4 表头5  表头6*/
57
static const uint16_t GaugesStarMoveTime[GaugesTotal] = {0, 0, 0, 0, 0, 0, 0,};                  /*0是上电就开始走动,其他参数是ms*/
hu's avatar
hu committed
58
/*每个表头IGON后是否自检*/ /*表头1 表头2 表头3 表头4 表头5  表头6*/
hu's avatar
hu committed
59
static const uint16_t GaugesTest[GaugesTotal] = {1, 1, 1, 1, 1, 0, 0,}; /*1是自检,0不自检*/
hu's avatar
hu committed
60
/*每个表头自检走动每格时间*/
61
const uint16_t SeftTest_Gauges_Times[GaugesTotal] = {(Self_time / (30 + 1)), (Self_time / (27 + 1)), (Self_time / (12 + 1)), (Self_time / (18 + 1)), (Self_time / (18 + 1)), 0, 0};
hu's avatar
hu committed
62
uint16_t RealDataIn[GaugesTotal];
hu's avatar
hu committed
63 64
_GaugesInfoInit GaugesInfo_Init_Table[GaugesTotal];
/**@brief User Gauge K30 Init function
hu's avatar
hu committed
65 66 67 68 69
 * @author TYW
 * @param[in] GaugeNum  Gauge Postion
 * @param[in] GParam  Gauge Struct
 * @since 1.0.0.0
 */
hu's avatar
hu committed
70 71 72 73 74 75
void UserGaugeK30Init(void)
{
    uint8_t i = 0u;
    uint8_t j = 0u;
    for (i = 0u; i < GaugesTotal; i++)
    {
hu's avatar
hu committed
76 77 78 79 80
        GaugesInfo_Init_Table[i].SectorNum = GaugesParaNum[i];
        GaugesInfo_Init_Table[i].GaugesType = GaugesIndicatType[i];
        GaugesInfo_Init_Table[i].GaugesDataIn = &RealDataIn[i];
        GaugesInfo_Init_Table[i].GaugesStartTime = GaugesStarMoveTime[i];
        GaugesInfo_Init_Table[i].GaugesTestFlag = GaugesTest[i];
hu's avatar
hu committed
81 82 83

        for (j = 0u; j < GaugesParaNum[i]; j++)
        {
hu's avatar
hu committed
84 85 86
            GaugesInfo_Init_Table[i].ReferenceDataInUp[j] = GaugesDataInInit[i][0][j];
            GaugesInfo_Init_Table[i].ReferenceDataInDown[j] = GaugesDataInInit[i][1][j];
            GaugesInfo_Init_Table[i].ReferenceDataInOut[j] = GaugesDataInInit[i][2][j];
hu's avatar
hu committed
87 88 89 90 91 92
        }
    }
    GaugesK15Init_OFF();
}

/**@brief User Gauge K15 Init function
hu's avatar
hu committed
93 94 95 96 97
 * @author TYW
 * @param[in] GaugeNum  Gauge Postion
 * @param[in] GParam  Gauge Struct
 * @since 1.0.0.0
 */
hu's avatar
hu committed
98 99 100 101 102 103
void UserGaugeK15Init(void)
{
    uint8_t i = 0u;
    uint8_t j = 0u;
    for (i = 0u; i < GaugesTotal; i++)
    {
hu's avatar
hu committed
104 105 106 107 108
        GaugesInfo_Init_Table[i].SectorNum = GaugesParaNum[i];
        GaugesInfo_Init_Table[i].GaugesType = GaugesIndicatType[i];
        GaugesInfo_Init_Table[i].GaugesDataIn = &RealDataIn[i];
        GaugesInfo_Init_Table[i].GaugesStartTime = GaugesStarMoveTime[i];
        GaugesInfo_Init_Table[i].GaugesTestFlag = GaugesTest[i];
hu's avatar
hu committed
109 110 111

        for (j = 0u; j < GaugesParaNum[i]; j++)
        {
hu's avatar
hu committed
112 113 114
            GaugesInfo_Init_Table[i].ReferenceDataInUp[j] = GaugesDataInInit[i][0][j];
            GaugesInfo_Init_Table[i].ReferenceDataInDown[j] = GaugesDataInInit[i][1][j];
            GaugesInfo_Init_Table[i].ReferenceDataInOut[j] = GaugesDataInInit[i][2][j];
hu's avatar
hu committed
115 116 117 118 119
        }
    }
    GaugesK15Init_ON();
}
/**@brief Gauge Schedule function
hu's avatar
hu committed
120 121 122 123 124
 * @author TYW
 * @param[in] GaugeNum  Gauge Postion
 * @param[in] GParam  Gauge Struct
 * @since 1.0.0.0
 */
hu's avatar
hu committed
125 126 127 128 129 130 131 132 133 134 135
void UserGaugeSchedule(void)
{
    uint8_t i = 0u;

    for (i = 0u; i < GaugesTotal; i++)
    {
        GaugeSchedule(i, &GaugesInfo_Init_Table[i]);
    }
}

/**@brief Set Gauges Paragram function
hu's avatar
hu committed
136 137 138 139 140
 * @author TYW
 * @param[in] GaugesID  Gauge Name
 * @param[in] GaugesVal  Gauges Val
 * @since 1.0.0.0
 */
hu's avatar
hu committed
141 142 143 144 145 146
void SetGaugesPara(uint8_t GaugesID, uint16_t GaugesVal)
{
    RealDataIn[GaugesID] = GaugesVal;
}

/**@brief Get Gauges Max Out Val function
hu's avatar
hu committed
147 148 149 150
 * @author TYW
 * @param[in] GaugesID  Gauge Name
 * @since 1.0.0.0
 */
hu's avatar
hu committed
151 152 153
uint16_t GetGaugesMaxOutVal(uint8_t GaugesID)
{

hu's avatar
hu committed
154
    return GaugesInfo_Init_Table[GaugesID].ReferenceDataInOut[GaugesParaNum[GaugesID] - 1u];
hu's avatar
hu committed
155 156 157
}

/**@brief Set Gauges Up Val function
hu's avatar
hu committed
158 159 160 161 162
 * @author TYW
 * @param[in] GaugesID  Gauge Name
 * @param[in] GaugesVal  Gauges Val
 * @since 1.0.0.0
 */
hu's avatar
hu committed
163 164 165 166 167
void SetGaugesUpVal(uint8_t GaugesID, uint16_t GaugesUpVal[])
{
    uint8_t i;
    for (i = 0u; i < GaugesParaNum[GaugesID]; i++)
    {
hu's avatar
hu committed
168
        GaugesInfo_Init_Table[GaugesID].ReferenceDataInUp[i] = GaugesUpVal[i];
hu's avatar
hu committed
169 170 171 172
    }
}

/**@brief Set Gauges Dwom Val function
hu's avatar
hu committed
173 174 175 176 177
 * @author TYW
 * @param[in] GaugesID  Gauge Name
 * @param[in] GaugesVal  Gauges Val
 * @since 1.0.0.0
 */
hu's avatar
hu committed
178 179 180 181 182 183
void SetGaugesDownVal(uint8_t GaugesID, uint16_t GaugesDownVal[])
{
    uint8_t i;
    for (i = 0u; i < GaugesParaNum[GaugesID]; i++)
    {

hu's avatar
hu committed
184
        GaugesInfo_Init_Table[GaugesID].ReferenceDataInDown[i] = GaugesDownVal[i];
hu's avatar
hu committed
185 186 187 188
    }
}

/**@brief Set Gauges Out Val function
hu's avatar
hu committed
189 190 191 192 193
 * @author TYW
 * @param[in] GaugesID  Gauge Name
 * @param[in] GaugesVal  Gauges Val
 * @since 1.0.0.0
 */
hu's avatar
hu committed
194 195 196 197 198
void SetGaugesOutVal(uint8_t GaugesID, uint16_t GaugesOutVal[])
{
    uint8_t i;
    for (i = 0u; i < GaugesParaNum[GaugesID]; i++)
    {
hu's avatar
hu committed
199
        GaugesInfo_Init_Table[GaugesID].ReferenceDataInOut[i] = GaugesOutVal[i];
hu's avatar
hu committed
200 201
    }
}