📄 execute.c
字号:
/******************************************************************************
*
* Freescale Semiconductor Inc.
* (c) Copyright 2004-2006 Freescale Semiconductor, Inc.
* ALL RIGHTS RESERVED.
*
***************************************************************************//*!
*
* @file execute.c
*
* @author R89994
*
* @version 1.0.10.0
*
* @date Jul-28-2006
*
* @brief Executing required task with expected inputs
*
******************************************************************************/
#include "main.h"
#include "spi.h"
#include "LCD_HD44780.h"
#include "DoorLock.h"
#include "tft_main_file.h"
#include "controlfunctions.h"
#include "start_Ux_device.h"
#include "controllbuttons.h"
#include "analog_values.h"
#include <hidef.h>
extern Byte fm_status, fm_task, fm_action0, fm_action1, fm_action2, fm_action3,
fm_action4, fm_action5, fm_action6, fm_action7, fm_action8, fm_action9,
fm_action10, fm_action11, fm_action12, fm_action13, fm_action14;
extern Byte last_action0, last_action1, last_action2, last_action3,
last_action4, last_action5, last_action6, last_action7, last_action8,
last_action9, last_action10, last_action11, last_action12, last_action13,
last_action14;
extern Word fm_analog1, fm_analog2, fm_analog3, fm_analog4, fm_analog5,
fm_analog6, fm_analog7, fm_analog11, fm_analog12, fm_analog13,
fm_analog14, fm_analog21, fm_analog22, fm_analog23, fm_analog24;
extern Byte lastmsgU201, lastmsgU202;
extern UNION16 lastmsgU401, lastmsgU402, lastmsgU403, lastmsgU501, lastmsgU601, lastmsgU605;
extern SPI24 lastmsgU404, lastmsgU405;
extern Byte countercheck; // counter of cycles 30 ms; value is <0,7>
extern TASK arrayTask[SIZE_TASK_ARRAY];
extern Byte actualTask; // pointer to actualy solved task in arrayTask
extern Bool disable_55W;
void ExecuteTask (Byte actual)
{
Byte temp8;
UNION16 temp16;
SPI24 temp24;
switch (arrayTask[actual].number)
{
case MANUAL_GO_TO_FM:
arrayTask[actual].priority = 0; // erase task from list
break;
// Go to sleep mode SBC, there are no power supply for microporcessor
case LOWPWR_GO_TO_SLEEP: // Sleep mode enter procedure
Lowpwr_go_to_sleep();
arrayTask[actual].priority = 0; // erase task from list
break;
// Go to pseu or full Stop Mode procesor. Waking up is provided by IRQ pin
case LOWPWR_GO_TO_PSEUDOSTOP:
Lowpwr_go_to_pseudostop();
arrayTask[actual].priority = 0; // erase task from list
break;
case LOWPWR_GO_TO_FULLSTOP:
Lowpwr_go_to_stop();
arrayTask[actual].priority = 0; // erase task from list
break;
// Show SBC Watchdog timeou
case LOWPWR_WD_TIMEOUT:
Lowpwr_wd_timeout();
arrayTask[actual].priority = 0; // erase task from list
break;
// Show write valid watchdog data but outside watchdog window
case LOWPWR_WD_WINDOW_OUT:
Lowpwr_wd_window_out();
arrayTask[actual].priority = 0; // erase task from list
break;
// start procedure of Lo speed CAN - SBC (U201 - MC33889
case U202_START:
U202_start();
arrayTask[actual].priority = 0; // erase task from list
break;
// start procedure of Hi Speed CAN - SBC (U201 - MC33742)
case U201_START:
U201_start();
arrayTask[actual].priority = 0; // erase task from list
break;
// start procedure of
case U401_START: // MC 33580 e-Switch
U401_start();
arrayTask[actual].priority = 0; // erase task from list
break;
case U402_START: // MC 33874 e-Switch
U402_start();
arrayTask[actual].priority = 0; // erase task from list
break;
case U403_START:
U403_start();
arrayTask[actual].priority = 0; // erase task from list
break;
case U404_START:
U404_start();
arrayTask[actual].priority = 0; // erase task from list
break;
case U405_START:
U405_start();
arrayTask[actual].priority = 0; // erase task from list
break;
case U501_START:
arrayTask[actual].priority = 0; // erase task from list
break;
case U601_START:
arrayTask[actual].priority = 0; // erase task from list
break;
case U602_START:
arrayTask[actual].priority = 0; // erase task from list
break;
case U604_START:
arrayTask[actual].priority = 0; // erase task from list
break;
case U605_START:
U605_start();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_BUTTON_SELECTION:
Analog_button_selection();
arrayTask[actual].priority = 0; // erase task from list
break;
case DOOR_LOCK_UNLOCK: //unlock
arrayTask[actual].priority = DoorOpen(); // erase task from list
break;
case DOOR_LOCK_LOCK: //lock
arrayTask[actual].priority = DoorClose();// erase task from list
break;
case LIGHTS_55W_OFF:
Lights_55W_OFF();
arrayTask[actual].priority = 0; // erase task from list
break;
case LIGHTS_55W_ON:
if(arrayTask[actual].parameter == 0x0)
{
Lights_55WA_on(); //lightA on
arrayTask[actual].parameter = 0x4F0;
}
arrayTask[actual].parameter -= 1;
if(arrayTask[actual].parameter == 0x1)//wait
{
Lights_55WB_on(); //lightB on
arrayTask[actual].priority = 0; // erase task from list
arrayTask[actual].parameter = 0;
}
break;
case LIGHTS_5W_OFF:
Lights_5W_off();
arrayTask[actual].priority = 0; // erase task from list
break;
case LIGHTS_5W_ON:
Lights_5W_on();
arrayTask[actual].priority = 0; // erase task from list
break;
case CABIN_LIGHTS1_OFF:
Cabin_lights_1_off();
arrayTask[actual].priority = 0; // erase task from list
break;
case CABIN_LIGHTS1_ON:
Cabin_lights_1_on();
arrayTask[actual].priority = 0; // erase task from list
break;
case CABIN_LIGHTS2_OFF:
Cabin_lights2_off();
arrayTask[actual].priority = 0; // erase task from list
break;
case CABIN_LIGHTS2_ON:
Cabin_lights2_on();
arrayTask[actual].priority = 0; // erase task from list
break;
case DASH_BOARD_LIGHTS_OFF:
Dash_board_lights_off();
arrayTask[actual].priority = 0; // erase task from list
break;
case DASH_BOARD_LIGHTS_ON:
Dash_board_lights_on();
arrayTask[actual].priority = 0; // erase task from list
break;
case WASHER_PUMP_OFF:
Washer_pump_off();
arrayTask[actual].priority = 0; // erase task from list
break;
case WASHER_PUMP_ON:
Washer_pump_on();
arrayTask[actual].priority = 0; // erase task from list
break;
case MIRROR_OFF:
arrayTask[actual].priority = 0; // erase task from list
break;
case MIRROR_FOLD:
arrayTask[actual].priority = 0; // erase task from list
break;
case MIRROR_DOWN:
arrayTask[actual].priority = 0; // erase task from list
break;
case MIRROR_UP:
arrayTask[actual].priority = 0; // erase task from list
break;
case MIRROR_LEFT:
arrayTask[actual].priority = 0; // erase task from list
break;
case MIRROR_RIGHT:
arrayTask[actual].priority = 0; // erase task from list
break;
case WINDOW_LIFT_OFF:
arrayTask[actual].priority = 0; // erase task from list
break;
case WINDOW_LIFT_DOWN:
arrayTask[actual].priority = 0; // erase task from list
break;
case WINDOW_LIFT_UP:
arrayTask[actual].priority = 0; // erase task from list
break;
case MSDI_OFF:
Msdi_off();
arrayTask[actual].priority = 0; // erase task from list
break;
case MSDI_SINK_CURRENT:
Msdi_sink_current();
arrayTask[actual].priority = 0; // erase task from list
break;
case MSDI_SOURCE_CURRENT:
Msdi_source_current();
arrayTask[actual].priority = 0; // erase task from list
break;
case CAN_MESSAGE_STOP:
arrayTask[actual].priority = 0; // erase task from list
break;
case CAN_MESSAGE_START:
arrayTask[actual].priority = 0; // erase task from list
break;
case LIN_MESSAGE_STOP:
arrayTask[actual].priority = 0; // erase task from list
break;
case LIN_MESSAGE_START:
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_AMBIENT_TEMPERATURE:
Analog_ambient_temperature();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_LIGHT_INTENSITY:
Analog_light_intensity();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_VOLTAGE1:
Analog_voltage1();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_VOLTAGE2:
Analog_voltage2();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_JAGUAR_TEMPERATURE:
Analog_jaguar_temperature();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_JAGUAR_CURRENT_HS0:
Analog_jaguar_current_hso();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_JAGUAR_CURRENT_HS1:
Analog_jaguar_current_hs1();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_JAGUAR_CURRENT_HS2:
Analog_jaguar_current_hs2();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_JAGUAR_CURRENT_HS3:
Analog_jaguar_current_hs3();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_PUMA_TEMPERATURE:
Analog_puma_temperature();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_PUMA_CURRENT_HS0:
Analog_puma_current_hs0();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_PUMA_CURRENT_HS1:
Analog_puma_current_hs1();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_PUMA_CURRENT_HS2:
Analog_puma_curent_hs2();
arrayTask[actual].priority = 0; // erase task from list
break;
case ANALOG_PUMA_CURRENT_HS3:
Analog_puma_current_hs3();
arrayTask[actual].priority = 0; // erase task from list
break;
case LCD_START:
arrayTask[actual].parameter -= 1;
if(arrayTask[actual].parameter == 0)
{
LcdReset();
LcdSetup(LCD_CURSORRIGHT | LCD_SHIFTOFF | LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF | LCD_LARGEFONT ) ;
arrayTask[actual].priority = 0; // erase task from list
}
break;
case FOLLOWMASTERDOORLOCK:
arrayTask[actual].priority = 0; // erase task from list
// FollowMasterDoorLock function not implemented - need to change HW
break;
case LCD_WELCOME:
arrayTask[actual].parameter -= 1;
if(arrayTask[actual].parameter == 0)
{
LcdOutTextL(0,"Freescale semiconductor");
arrayTask[actual].priority = 0; // erase task from list
}
break;
case LCD_MESSAGE:
arrayTask[actual].parameter -= 1;
if(arrayTask[actual].parameter == 0)
{
LcdShowFaultStatus(fm_status);
arrayTask[actual].priority = 0; // erase task from list
}
break;
case TFT_INIT:
arrayTask[actual].parameter -= 1;
if(arrayTask[actual].parameter == 0)
{
TFT_Init();
arrayTask[actual].parameter = 0;
arrayTask[actual].priority = 0; // erase task from list
}
break;
case CABIN_DIMM_OFF:
if (PITTF_PTF2) // 20 ms
{
PITTF = PITTF_PTF2_MASK; // clear the PIT channel 2 interrupt flag
arrayTask[actual].parameter += 1;
PWMDTY6 = (Byte) arrayTask[actual].parameter;
PWMDTY7 = (Byte) arrayTask[actual].parameter;
if (arrayTask[actual].parameter == PWM_MIN)
{
arrayTask[actual].priority = 0; // erase task from list
}
}
break;
case CABIN_DIMM_ON:
PWMDTY6 = PWM_MAX;
PWMDTY7 = PWM_MAX;
arrayTask[actual].priority = 0; // erase task from list
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -