DisplaySch_user.c 11.7 KB
Newer Older
hu's avatar
hu committed
1 2 3 4 5 6 7 8 9
#include "DisplaySch_user.h"
#include "Common_Interface.h"
#include "DispSch.h"
#include "Popup_Scheduler.h"
#include "Popup_List.h"
#include "Key.h"
#include "CAN_Lib.h"
#include "GUI.h"
#include "Menu.h"
hu's avatar
hu committed
10
#include "jcua.h"
hu's avatar
hu committed
11
#include "kwp2000_service.h"
hu's avatar
hu committed
12

hu's avatar
hu committed
13 14
uint32_t EnterTimer[10];
uint8_t UE_EN[Display_MAX];
hu's avatar
hu committed
15 16
#pragma alignvar(8)
#pragma ghs section bss = default
hu's avatar
hu committed
17
uint8_t Mem[32];
hu's avatar
hu committed
18 19
#pragma ghs section bss = default

hu's avatar
hu committed
20
#pragma ghs section bss = ".myNonInitArea"
hu's avatar
hu committed
21
UE_CtrlInfo_Struct_t UE_CtrlInfo;
hu's avatar
hu committed
22
uint8_t BG_display_flag;
hu's avatar
hu committed
23
#pragma ghs section bss = default
hu's avatar
hu committed
24

hu's avatar
hu committed
25
uint16_t HMI_StartAnimationFrameCnt;
26
uint8_t backgroundOFFFlag;
hu's avatar
hu committed
27 28 29 30 31

static void switch_branch(void);

uint8_t Get_Pwr(void)
{
hu's avatar
hu committed
32
    return Common_Get_IG_Sts();
hu's avatar
hu committed
33 34 35
}
uint32_t Get_IG_ON(void)
{
hu's avatar
hu committed
36
    return Common_GetIgnOnTime();
hu's avatar
hu committed
37 38 39
}
uint32_t Get_IG_Off(void)
{
hu's avatar
hu committed
40
    return Common_GetIgnOffTime();
hu's avatar
hu committed
41 42
}

hu's avatar
hu committed
43
static const DispSch_Attr_st loc[] =
44
{
45 46 47 48
    {&UE_EN[Display_StartAnimation], UE_IGN_ON , Display_StartAnimation, ((void *)0), Display_StartAnimationEnter, Display_StartAnimationService, Display_StartAnimationExit},
    {&UE_EN[Display_Menu]          , UE_IGN_ON , Display_Menu          , ((void *)0), Display_MenuEnter          , Display_MenuService          , ((void *)0)},
    {&UE_EN[Display_Alarm]         , UE_IGN_ON , Display_Alarm         , ((void *)0), Display_AlarmEnter         , Display_AlarmService         , ((void *)0)},
    {&UE_EN[Display_Nothing]       , UE_IGN_OFF, Display_Nothing       , ((void *)0), Display_NothingEnter       , Display_NothingService       , ((void *)0)},
hu's avatar
hu committed
49 50 51 52
};

void DispSch_TotalInit(void)
{
hu's avatar
hu committed
53
    uint8_t i;
hu's avatar
hu committed
54
    DispSch_Ext_st m_st;
hu's avatar
hu committed
55 56
    m_st.Get_Power = Get_Pwr;
    m_st.Get_IG_ON_Timer = Get_IG_ON;
hu's avatar
hu committed
57 58
    m_st.Get_IG_OFF_Timer = Get_IG_Off;
    m_st.Get_IG_OFF_Timer = Get_IG_Off;
hu's avatar
hu committed
59
    m_st.TotalSize = Display_MAX;
hu's avatar
hu committed
60
    DispSch_Init(Mem, loc, &m_st, 0u);
hu's avatar
hu committed
61

hu's avatar
hu committed
62
    for (i = 0u; i < Display_MAX; i++)
hu's avatar
hu committed
63
    {
hu's avatar
hu committed
64
        UE_EN[i] = UE_Disable;
hu's avatar
hu committed
65
    }
hu's avatar
hu committed
66 67 68 69 70 71 72 73

    if (BG_display_flag == 0u)
    {
        BG_display_flag = 1u;
        MenuFlag.Menu_Popup_Flag = 0u ;

        MenuInit();
    }
hu's avatar
hu committed
74 75 76 77 78 79
}

void DisplayServices(void)
{
    uint32_t PowerOnTimer;
    uint32_t PowerOFFTimer;
hu's avatar
hu committed
80
    uint8_t PowerStatus;
81
    uint32_t Get_Menu_Off_Time = 0u;
hu's avatar
hu committed
82 83
    uint16_t popupID = 0xFFFFu;

hu's avatar
hu committed
84 85 86
    PowerStatus = Common_Get_IG_Sts();
    PowerOnTimer = Common_GetIgnOnTime();
    PowerOFFTimer = Common_GetIgnOffTime();
87
    Get_Menu_Off_Time = Coom_Get_Menu_Off_Time();
hu's avatar
hu committed
88

hu's avatar
hu committed
89
    if ((PowerOnTimer <= StartAnimationEnd) && (PowerOnTimer >= StartAnimationStart))
hu's avatar
hu committed
90
    {
hu's avatar
hu committed
91 92 93
        UE_EN[Display_StartAnimation] = UE_Enable;
        UE_EN[Display_Menu] = UE_Disable;
        UE_EN[Display_Alarm] = UE_Disable;
hu's avatar
hu committed
94
        UE_EN[Display_Nothing] = UE_Disable;
hu's avatar
hu committed
95 96 97
    }
    else
    {
hu's avatar
hu committed
98
        /*获取四种模式*/
hu's avatar
hu committed
99 100
        Meter_Mode_conversion();

hu's avatar
hu committed
101
        if ((K_Line_Set.K_Line_LID51 == 0x01u) && (MenuFlag.Menu_Test != 1u))
hu's avatar
hu committed
102 103 104
        {
            popupID = Popup_Get_Current_Message();
        }
105

hu's avatar
hu committed
106
        if ((popupID != 0xffffu) && (MenuFlag.Key_Menu_Popup_time == 0x00u))
hu's avatar
hu committed
107
        {
hu's avatar
hu committed
108
            UE_EN[Display_Alarm] = UE_Enable;
109 110 111 112 113 114 115 116 117

            if (PowerStatus == COMMON_POWER_ON)
            {
                ; /*不处理*/
            }
            else
            {
                UE_EN[Display_Nothing] = UE_Disable;
            }
hu's avatar
hu committed
118 119 120
        }
        else
        {
121 122
            if (MenuFlag.Key_Menu_Popup_time != 0x00u)
            {
hu's avatar
hu committed
123
                MenuFlag.Key_Menu_Popup_time--;
124 125 126
            }
            else
            {
hu's avatar
hu committed
127
                ; /*Do Nothing!*/
128 129
            }

hu's avatar
hu committed
130
            UE_EN[Display_Alarm] = UE_Disable;
hu's avatar
hu committed
131

hu's avatar
hu committed
132
            if (PowerStatus == COMMON_POWER_ON)
hu's avatar
hu committed
133
            {
hu's avatar
hu committed
134
                UE_EN[Display_Menu] = UE_Enable;
hu's avatar
hu committed
135 136 137
            }
            else
            {
138
                if ((State_Flag.Menu_Key_Static == 1u) && (Get_Menu_Off_Time < 7550))
139 140 141 142 143 144 145 146 147
                {
                    UE_EN[Display_Menu] = UE_Enable;
                    UE_EN[Display_Nothing] = UE_Disable;
                }
                else
                {
                    UE_EN[Display_Menu] = UE_Disable;
                    UE_EN[Display_Nothing] = UE_Enable;
                }
hu's avatar
hu committed
148 149
            }
        }
hu's avatar
hu committed
150 151
    }

152
    DispSch_xxxMs_Logic(10u);
hu's avatar
hu committed
153
}
154

155
/*----开机动画----*/
156 157
void Display_StartAnimationEnter(void)
{
hu's avatar
hu committed
158
    HMI_StartAnimationFrameCnt = 0u;
159
    backgroundOFFFlag = 0;
hu's avatar
hu committed
160
    MenuFlag.Menu_Popup_Flag = 0u ;
hu's avatar
hu committed
161

162
    /*硬清空所有缓存数据*/
hu's avatar
hu committed
163
    loc_free_mem(MENU_Sprite, MENU_Sprite);
164

165 166 167
    /*使能底图窗口*/
    JCUA_Enable_window();
}
168 169 170 171 172 173
void Display_StartAnimationService(void)
{
    uint16_t m16_FrameCnt;

    HMI_StartAnimationFrameCnt++;
    m16_FrameCnt = HMI_StartAnimationFrameCnt;
hu's avatar
hu committed
174 175

    if ((m16_FrameCnt % 4) == 0u)
176
    {
hu's avatar
hu committed
177
        GUI_Display_Animation_Frame(m16_FrameCnt / 4u);
178 179 180 181 182 183
    }
}
void Display_StartAnimationExit(void)
{
}

hu's avatar
hu committed
184 185 186 187 188
uint16_t Common_GetHMI_StartAnimationFrameCnt(void)
{
    return HMI_StartAnimationFrameCnt;
}

189 190 191
/*----菜单----*/
void Display_MenuEnter (void)
{
192 193 194 195 196 197 198 199
    /*开机动画播放完毕使能底图窗口 二次使能窗口*/
    JCUA_Enable_window();

    /*使能PNG窗口*/
    loc_Enable_Window_App();

    /*刷底图*/
    GUI_Display_background();
200
}
201 202 203
void Display_MenuService(void)
{
}
204 205 206 207
/*----报警----*/
void Display_AlarmEnter (void)
{
}
hu's avatar
hu committed
208 209 210 211
void Display_AlarmService(void)
{
}

212
/*----Nothing----*/
213 214 215
void Display_NothingEnter(void)
{
    JCUA_Disable_window();
216 217
    loc_Disable_Window_App( );
    loc_free_mem(WET_Sprite, MENU_Sprite);
218 219 220 221 222 223
}
void Display_NothingService(void)
{

}

hu's avatar
hu committed
224 225
void GUI_DisplayServices(void)
{
226 227
    uint16_t DispVSpeed = 0u;
    uint16_t DispESpeed = 0u;
228
    uint32_t PowerStatus = 0u;
hu's avatar
hu committed
229
    UElib_uint16_t HMI_MENU_Sta = 0u;
hu's avatar
hu committed
230

hu's avatar
hu committed
231 232 233 234
    if (MenuFlag.Disp_Test_Flag == 1)
    {
        return ;
    }
hu's avatar
hu committed
235
    HMI_MENU_Sta = Get_Cur_HMI();
236
    PowerStatus = Common_Get_IG_Sts();
237
    DispVSpeed = Common_Get_Disp_V_Speed();
hu's avatar
hu committed
238

hu's avatar
hu committed
239
    if (HMI_MENU_Sta == Display_Alarm)
hu's avatar
hu committed
240
    {
hu's avatar
hu committed
241
        loc_Del_Sprite(MENU_Sprite, MENU_Sprite);
hu's avatar
hu committed
242

hu's avatar
hu committed
243 244 245 246 247 248 249 250 251
        if (Common_Get_window_Sta() != 1u)
        {
            JCUA_Enable_window();
        }

        if (MenuFlag.Menu_Popup_Flag == 0u)
        {
            MenuFlag.Menu_Popup_Flag = 1u;

252 253 254 255 256 257 258 259 260
            if (bCurMenuIDX < _MN_DSP_Menu_OFF)
            {
                MenuFlag.Meun_Test_Dealer = bCurMenuIDX ;
            }
            else
            {
                MenuFlag.Meun_Test_Dealer = 0u;
            }

hu's avatar
hu committed
261
            NextMenu(_MN_DSP_LEVEPOPUP);
hu's avatar
hu committed
262
            bCurMenuIDX = _MN_DSP_LEVEPOPUP;
hu's avatar
hu committed
263
        }
hu's avatar
hu committed
264
    }
hu's avatar
hu committed
265
    else if ((HMI_MENU_Sta == Display_Menu) || (HMI_MENU_Sta == Display_Nothing))
hu's avatar
hu committed
266
    {
hu's avatar
hu committed
267
        if (PowerStatus == COMMON_POWER_ON)
hu's avatar
hu committed
268
        {
hu's avatar
hu committed
269
            if (MenuFlag.Menu_Factory == 1u)
hu's avatar
hu committed
270 271 272 273
            {
                MenuFlag.Menu_Factory = 0u;
                MenuFlag.Menu_Popup_Flag = 2u;

hu's avatar
hu committed
274 275
                NextMenu( _FAC_DSP_LEVEL0MENU_1 );
                bCurMenuIDX = _FAC_DSP_LEVEL0MENU_1;
hu's avatar
hu committed
276 277 278 279 280 281
            }
            else if (MenuFlag.Menu_Dealer == 1u)
            {
                MenuFlag.Menu_Dealer = 0u;
                MenuFlag.Menu_Popup_Flag = 3u;

hu's avatar
hu committed
282 283
                NextMenu( _DEA_DSP_LEVEL0MENU_1 );
                bCurMenuIDX = _DEA_DSP_LEVEL0MENU_1;
hu's avatar
hu committed
284 285 286 287 288 289 290
            }
            else if (MenuFlag.Menu_Test == 1u)
            {
                MenuFlag.Menu_Test = 0;
                MenuFlag.Menu_Popup_Flag = 4u;

                NextMenu( _MN_DSP_Menu_Test );
hu's avatar
hu committed
291 292 293 294 295 296
                bCurMenuIDX = _MN_DSP_Menu_Test;
            }
            else  if (MenuFlag.Menu_Popup_Flag == 1u)
            {
                MenuFlag.Menu_Popup_Flag = 0u;

297
                if (DispVSpeed > DISPSPEEDNULLMAX)
298 299 300 301 302 303 304 305 306
                {
                    NextMenu(MenuFlag.Menu_Flag);
                    bCurMenuIDX = MenuFlag.Menu_Flag;
                }
                else
                {
                    NextMenu(MenuFlag.Meun_Test_Dealer);
                    bCurMenuIDX = MenuFlag.Meun_Test_Dealer;
                }
hu's avatar
hu committed
307
            }
hu's avatar
hu committed
308

hu's avatar
hu committed
309
            if (((bCurMenuIDX > _MN_DSP_LEVEPOPUP) && (bCurMenuIDX < _MN_DSP_LEVEL3_5_MENU_1)) ||
hu's avatar
hu committed
310
                    (bCurMenuIDX >= _FAC_DSP_LEVEL0MENU_1))
hu's avatar
hu committed
311
            {
hu's avatar
hu committed
312
                loc_Del_Sprite(ADAS_Sprite, Gear_Sprite);
313
                loc_Del_Sprite(MENU_Sprite, MENU_Sprite);
hu's avatar
hu committed
314
                if (Common_Get_window_Sta() != 0u)
315
                {
hu's avatar
hu committed
316
                    JCUA_Disable_window();
317
                }
hu's avatar
hu committed
318 319 320
            }
            else
            {
hu's avatar
hu committed
321 322 323 324 325
                loc_Del_Sprite(MENU_Sprite, MENU_Sprite);
                if (Common_Get_window_Sta() != 1u)
                {
                    JCUA_Enable_window();
                }
hu's avatar
hu committed
326
            }
hu's avatar
hu committed
327
        }
hu's avatar
hu committed
328 329 330 331 332 333 334
        else
        {
            ;/*Do Nothing!*/
            //BG_display_flag = 0u;
            //NextMenu(_MN_DSP_Menu_OFF);
        }
    }
hu's avatar
hu committed
335
    if (HMI_MENU_Sta != Display_StartAnimation)
hu's avatar
hu committed
336
    {
hu's avatar
hu committed
337 338 339 340 341 342
        if (PowerStatus == COMMON_POWER_ON)
        {
            MenuManage();
        }
        else
        {
343 344 345
            if (backgroundOFFFlag == 0u)
            {
                loc_Enable_Window_App();
hu's avatar
hu committed
346 347
                GUI_Display_backgroundOFF();

348 349 350
                loc_Del_Sprite(MENU_Sprite, MENU_Sprite);
                backgroundOFFFlag = 1u;
            }
hu's avatar
hu committed
351

hu's avatar
hu committed
352 353 354
            GUI_Time_OilTemp_OFF_Display(GUI_DISP_MODE_NORMAL);
            BG_display_flag = 0u;
        }
hu's avatar
hu committed
355 356 357
    }
    else
    {
hu's avatar
hu committed
358
        ; /*Do  Nothing!*/
hu's avatar
hu committed
359 360 361
    }
}

hu's avatar
hu committed
362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
void Meter_Mode_conversion(void)
{
    uint16_t popupID = 0xFFFFu;
    uint16_t DispVSpeed = 0u;
    uint16_t DispESpeed = 0u;

    DispVSpeed = Common_Get_Disp_V_Speed();
    DispESpeed = Common_Get_Act_E_Speed();

    /*工厂模式*/
    if (MenuFlag.Menu_Popup_Flag == 2u)
    {
        if (K_Line_Set.K_Line_LID51 == 0x01u)
        {
            popupID = Popup_Get_Current_Message();
hu's avatar
hu committed
377
            if ((popupID != 0xffffu) && (MenuFlag.Key_Menu_Popup_time == 0x00u))
hu's avatar
hu committed
378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400
            {
                MenuFlag.Menu_Popup_Flag = 0u;
            }
            else
            {
                MenuFlag.Menu_Popup_Flag = 1u;
            }
        }
        else if (K_Line_Set.K_Line_LID51 == 0x02u)
        {
            MenuFlag.Menu_Dealer = 1u;
        }
        else
        {
            ;/*Do Nothing!*/
        }
    }
    /*经销商模式*/
    else if (MenuFlag.Menu_Popup_Flag == 3u)
    {
        if (K_Line_Set.K_Line_LID51 == 0x01u)
        {
            popupID = Popup_Get_Current_Message();
hu's avatar
hu committed
401
            if ((popupID != 0xffffu) && (MenuFlag.Key_Menu_Popup_time == 0x00u))
hu's avatar
hu committed
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421
            {
                MenuFlag.Menu_Popup_Flag = 0u;
            }
            else
            {
                MenuFlag.Menu_Popup_Flag = 1u;
            }
        }
        else if (K_Line_Set.K_Line_LID51 == 0x00u)
        {
            MenuFlag.Menu_Factory = 1u;
        }
        else
        {
            ;/*Do Nothing!*/
        }
    }
    /*自检模式*/
    else if (MenuFlag.Menu_Popup_Flag == 4u)
    {
422
        if ((DispVSpeed > DISPSPEEDNULLMAX) || (DispESpeed >= 330u))
hu's avatar
hu committed
423 424
        {
            popupID = Popup_Get_Current_Message();
hu's avatar
hu committed
425
            if ((popupID != 0xffffu) && (MenuFlag.Key_Menu_Popup_time == 0x00u))
hu's avatar
hu committed
426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446
            {
                MenuFlag.Menu_Popup_Flag = 0u;
            }
            else
            {
                MenuFlag.Menu_Popup_Flag = 1u;
            }
        }
        else if (K_Line_Set.K_Line_LID51 == 0x02u)
        {
            MenuFlag.Menu_Dealer = 1u;
        }
        else
        {
            ;/*Do Nothing!*/
        }
    }
    /*通常模式*/
    else
    {
        /*进入自检模式*/
447 448
        if ((MenuFlag.Key_MenuTest_Long == 1u) && (MenuFlag.Key_MenuTest_ShortNum >= 3u))
            //if (MenuFlag.Key_MenuTest_ShortNum >= 3u)
hu's avatar
hu committed
449 450 451 452 453 454 455 456 457 458 459 460 461 462 463
        {
            MenuFlag.Menu_Test = 1u;
            MenuFlag.Key_MenuTest_Long = 0u;
            MenuFlag.Key_MenuTest_ShortNum = 0u;
        }
        else if (K_Line_Set.K_Line_LID51 == 0x00u)
        {
            MenuFlag.Menu_Factory = 1u;
        }
        else if (K_Line_Set.K_Line_LID51 == 0x02u)
        {
            MenuFlag.Menu_Dealer = 1u;
        }
        else
        {
464
            ;/*Do Nothing!*/
hu's avatar
hu committed
465 466 467
        }
    }
}