Commit 8eb4fd05 authored by 崔立宝's avatar 崔立宝

变更前A901程序

parent fca71fbb

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

# WZ-EF01
五征A901变更
\ No newline at end of file
This diff is collapsed.
File added
File added
This source diff could not be displayed because it is too large. You can view the blob instead.
OPEN source 0 0 60 100
Source < attributes TOOLTIP on,TOOLTIP_FORMAT signed,TOOLTIP_MODE details,FREEZE off,MARKS off
OPEN assembly 60 0 40 31
Assembly < attributes ADR on,CODE off,ABSADR on,SYMB off,FORMAT Auto,FREEZE off,TOPPC 0x69EC
OPEN procedure 0 39 60 17
Procedure < attributes VALUES on,TYPES off
OPEN register 60 31 40 25
Register < attributes FORMAT AUTO,COMPLEMENT None
OPEN memory 60 56 40 22
Memory < attributes FORMAT hex,COMPLEMENT None,WORD 1,ASC on,ADR on,MODE automatic,UPDATERATE 10,SHOW_ADDRESSSPACE 0,ADDRESS 0x80
OPEN data 0 56 60 22
Data:1 < attributes SCOPE global,COMPLEMENT None,FORMAT Symb,MODE automatic,SORT NotSort,UPDATERATE 10,NAMEWIDTH 16
OPEN data 60 1 60 98
Data:2 < attributes SCOPE local,COMPLEMENT None,FORMAT Symb,MODE periodical,SORT NotSort,UPDATERATE 1,NAMEWIDTH 16
OPEN command 60 78 40 22
Command < attributes CACHESIZE 1000
bckcolor 50331647
font 'Courier New' 9 BLACK
AUTOSIZE on
ACTIVATE "Command" "Procedure" "Data:1" "Register" "Assembly" "Memory" "Source" "Data:2"
File added
//背光调节
#ifndef _BackLight_H_
#define _BackLight_H_
#include "GPIO.h"
#include "PWM.h"
//#include "TIMER0.h"
#include "Warning_Processor.h"
#include "Popup_Scheduler.h"
#include "Startup_Animation.h"
#include "IPC.h"
#include "GPIO.h"
#include "main.h"
#include "Menus.h"
/******************************************************************************
全局变量
******************************************************************************/
//extern volatile uint8_t BLPWMDutyCycle;
//#define BL_PWM_DUTY_CYCLE dutyCycle
/******************************************************************************
背光设置
******************************************************************************/
#define BL_PWM_DUTY_CYCLE_FILTER 5 //接收到的占空比差大于此值认为是无效占空比
#define BL_PWM_FILTER_MAX_CNT 10 //最大阻止接收次数
#define BL_SAMPLE_POINT 10 //10
#define BL_PWM_DUTY_CYCLE_MAX 95
#define BL_PWM_DUTY_CYCLE_MIN 7
#define BL_PWM_DUTY_CYCLE_HYSTERESIS 5 //回差
#define BL_PWM_DUTY_CYCLE_APPR_FACTOR 8 //占空比逼近系数
#define BL_PWM_DUTY_CYCLE_APPR_SPEED 20 //占空比逼近周期,单位ms
#define BL_OFF_TIME_DOOR_OPEN_ONLY 150
/******************************************************************************
结构声明
******************************************************************************/
typedef struct
{
uint8_t Backup;
uint16_t Timer;
uint16_t HiLvTimer;
} BlPWMCaptureStruct;
typedef struct
{
uint8_t InitTimer;
uint8_t Backup;
uint8_t BackupCnt;
uint8_t Sample[BL_SAMPLE_POINT];
uint8_t Ptr;
uint8_t Cnt;
uint8_t Locked;
uint8_t Timer;
uint8_t Current;
} BlPWMFilterStruct;
typedef struct
{
uint8_t DoorStatusBackup;
uint16_t Timer;
} BlOFFCtrlStruct;
/*************************函数*********************************/
void BackLight_Plate_Needle_Set(uint8_t duty);
void BackLight_Plate_Needle_Close(void);
void BackLight_TFT_Set(uint8_t duty);
void BackLight_TFT_Close(void);
void BL_Management_Service(void);
void PWM_INIT(void);
void BL_Init(void);
//void BL_PWM_Duty_Cycle_Capture_ISR(void);
#endif
\ No newline at end of file
#ifndef _Common_H_
#define _Common_H_
#include "CRG.h"
#include "stdint.h"
#include "mc9s12xhy256.h"
#include "comdef.h"
#include "hidef.h"
#include "main.h"
#include "TSzhen.h"
//图层
#define LAYER_BEIJING 0 //底图
#define LAYER_BEIJING1 1 //底图
#define LAYER_VehicleL 2 //车速L
#define LAYER_VehicleR 3 //车速R
#define LAYER_ODO 4 //ODO与km
#define LAYER_ODO1 5 //
#define LAYER_ODO2 6 //
#define LAYER_ODO3 7 //
#define LAYER_ODO4 8 //
#define LAYER_ODO5 9 //
#define LAYER_ODO6 10 //
#define LAYER_Trip 11 //TRIP
#define LAYER_Trip1 12 //
#define LAYER_Trip2 13 //
#define LAYER_Trip3 14 //
#define LAYER_Trip4 15 //
#define LAYER_Gear 16 //档位
#define LAYER_Gear1 17 //档位1
#define LAYER_Gear2 18 //档位2
#define LAYER_Time_Hour1 19 //时间小时
#define LAYER_Time_Hour2 20 //时间小时
#define LAYER_Time_Dot 21 //时间冒号
#define LAYER_Time_Minute1 22 //时间分钟
#define LAYER_Time_Minute2 23 //时间分钟
#define LAYER_AirL1 24 //气压
#define LAYER_AirR1 25 //
#define LAYER_EngineL 26 //转速L
#define LAYER_EngineR 27 //转速R
#define LAYER_Engine1 28 //转速数字
#define LAYER_Engine2 29 //转速数字
#define LAYER_EngineDot 30 //转速数字
#define LAYER_Vehicle1 31 //车速数字
#define LAYER_Vehicle2 32 // 车速数字
#define LAYER_Vehicle3 33 //车速数字
#define LAYER_TUINT 34 //温度单位
#define LAYER_TEMP1 35 //温度负号
#define LAYER_TEMP2 36 //温度
#define LAYER_TEMP3 37 //温度
#define LAYER_LED01 38 //指示灯01
#define LAYER_LED02 39 //指示灯02
#define LAYER_LED03 40 //指示灯03
#define LAYER_LED04 41 //指示灯04
#define LAYER_LED05 42 //指示灯05
#define LAYER_LED06 43 //指示灯06
#define LAYER_LED07 44 //指示灯07
#define LAYER_LED08 45 //指示灯08
#define LAYER_LED09 46 //指示灯09
#define LAYER_LED10 47 //指示灯10
#define LAYER_LED11 48 //指示灯11
#define LAYER_LED12 49 //指示灯12
#define LAYER_LED13 50 //指示灯13
#define LAYER_LED14 51 //指示灯14
#define LAYER_LED15 52 //指示灯15
#define LAYER_LED16 53 //指示灯16
#define LAYER_LED17 54 //指示灯17
#define LAYER_LED18 55 //指示灯18
#define LAYER_LED19 56 //指示灯19
#define LAYER_LED20 57 //指示灯20
#define LAYER_LED21 58 //指示灯21
#define LAYER_LED22 59 //指示灯22
#define LAYER_LED23 60 //指示灯23
#define LAYER_LED24 61 //指示灯24
#define LAYER_LED25 62 //指示灯25
#define LAYER_LED26 63 //指示灯26
#define LAYER_LED27 64 //指示灯27
#define LAYER_LED28 65 //指示灯28
#define LAYER_LED29 66 //指示灯29
#define LAYER_LED30 67 //指示灯30
//共享图层
#define LAYER_MENU01 68 //菜单层
#define LAYER_MENU02 69
#define LAYER_MENU03 70
#define LAYER_MENU04 71
#define LAYER_MENU05 72
#define LAYER_MENU06 73
#define LAYER_MENU07 74
#define LAYER_MENU08 75
#define LAYER_MENU09 76
#define LAYER_MENU10 77
#define LAYER_MENU11 78
#define LAYER_MENU12 79
#define LAYER_MENU13 80
#define LAYER_MENU14 81
//#define LAYER_POPUP_Text //报警图片
//#define LAYER_POPUP_Textwenzi //报警文字
//------
//档位信息
#define Gear_N 0
#define Gear_One 1
#define Gear_Two 2
#define Gear_Three 3
#define Gear_Four 4
#define Gear_Five 5
#define Gear_Six 6
#define Gear_R 13
#define Gear_D 14
#define Gear_P 15
/****************************************************************
普通参数(各模块通用的常量定义)
****************************************************************/
#define cnUASTHandH 0xF5 // 串口接受消息头高位
#define cnUASTHandL 0x5A // 串口接受消息头低位
/****************串口命令定义***********************************/
#define comACK 0x10 //ACK
#define comNCK 0x11 //NCK
#define cnRSBufLen 33 //串口接收缓存区长度
#define cnRSDatLen cnRSBufLen-3 //串口接收数据区最大长度
#define cnCZSB_BJDJ_WBD 12 //车,转速表 1度等于12微步
extern const uint8_t CommandNCK[5];
extern uint8_t RSB_P;
extern uint8_t RX_BUF[cnRSBufLen]; //串口接收缓存区
extern uint8_t TX_BUF[cnRSBufLen]; //串口发送缓存区
/*******************函数************************************/
extern uint8_t RSSRecivJudge(void);
void JSCCSendDataToYQ(void);
void SendRomStrToUART(INT8U *myROMADR, INT8U mDataLen);
void SendACKToSBEI(void);
void ReadDataCOMPRG(void);
void WriteDataCOMPRG(void);
#endif
#ifndef _DRIVE_INFO_H_
#define _DRIVE_INFO_H_
#include "GUI.h"
#include "IPC.h"
#include "IO_Manager.h"
#include "Data_Processor.h"
#include "Popup_Scheduler.h"
#include "Sound_Scheduler.h"
#include "Warning_Processor.h"
#include "Flash_synchronizer.h"
#include "Menus.h"
#include "PowerManagement.h"
#include "Non_volatile_Memorys.h"
#define ChoiceTripA 0
#define ChoiceTripB 1
extern uint8_t TripPlay;
extern uint8_t DriveInfoCurrent;
extern uint8_t Status;
extern uint8_t BL_KEY_Step;
extern uint8_t Flash;
#define DRIVE_INFO_AVG_FUEL_CONS GUI_DRIVE_INFO_AVG_FUEL_CONS
#define DRIVE_INFO_INST_FUEL_CONS GUI_DRIVE_INFO_INST_FUEL_CONS
#define DRIVE_INFO_DTE GUI_DRIVE_INFO_DTE
#define DRIVE_INFO_DRIVING_TIME GUI_DRIVE_INFO_DRIVING_TIME
#define DRIVE_INFO_TPMS GUI_DRIVE_INFO_TPMS
#define DRIVE_INFO_WARNING GUI_DRIVE_INFO_WARNING
#define DRIVE_INFO_PAGE_MAX 6
#define DRIVE_INFO_PAGE_INVALID 0xFF
typedef struct
{
uint8_t Current;
uint8_t Total;
uint8_t DispTotal;
uint8_t DispOffset;
uint8_t Available[10];
uint8_t Attach[10];
} DriveInfoPageStruct;
#define DRIVE_INFO_BCM_ODO_RECEIVED 0x01
#define DRIVE_INFO_EMS_ODO_RECEIVED 0x02
#define DRIVE_INFO_ODO_BACKUP_COMPLETE 0x03
#define TpmsNormal 1;
#define Tpmsfailure 0;
typedef struct
{
uint8_t BackupComplete;
uint8_t BackupEnable;
uint32_t Output;
} DriveInfoODOExchangeStruct;
typedef struct
{
uint8_t TripMask;
uint8_t Enable;
uint8_t IGNOn;
uint8_t Timer;
uint8_t TimerTenS;
uint16_t TimerEighteenS;
uint8_t TpmsStatus;
uint8_t TpmsStatustens;
} DriveInfoODOClearStruct;
typedef struct
{
uint8_t Enable;
uint8_t Level;
uint16_t Timer;
uint16_t Period;
uint16_t ActPeriod;
} DriveInfoSpeedPlusConverterStruct;
typedef struct
{
uint16_t CurBoardVal;
uint16_t CurPosition;
uint16_t DestPosition;
uint16_t CalPosition;
uint16_t Time;
} _MeterPos;
typedef struct //35 byte
{
uint16_t Resistor[8];
uint16_t DashStep[8];
uint8_t bFlag;
uint8_t bVirtualVal;
uint8_t bCheckSun;
uint8_t N;
}_EE_MeterInfo;
extern _MeterPos g_voltageMeter;
extern _MeterPos g_currentMeter;
extern _MeterPos g_EnergyFeedbackMeter;
extern _MeterPos g_EnergyConsumMeter;
extern _MeterPos g_batMeter;
extern _MeterPos g_gas1Meter;
extern _MeterPos g_gas2Meter;
extern _EE_MeterInfo g_gas1MeterInfo;
extern _EE_MeterInfo g_gas2MeterInfo;
extern uint8_t type_nvm;
#define DRIVE_INFO_SPEED_PLUS_PPK 15925 //PPKʵֵ15924.6
void Drive_Info_Tpms_Learning_Ctrl(void);
void Drive_Info_Export_Init(void);
static void Drive_Info_IC1_STATUS_Tx(void);
void Drive_Info_Power_On_Init(void);
void Drive_Info_Display_Update_Service(void);
void Drive_Info_Import_Export_Service(void);
void Drive_Info_ODO_Clear_Ctrl(void);
void Drive_Info_Speed_Plus_Conversion(void);
void Drive_Info_Fuel_Plus_Conversion ( void );
#endif
#ifndef _GAUGES_H_
#define _GAUGES_H_
#include "Data_Processor.h"
#include "Stepper_Motor.h"
#include "Segmented_Gauges.h "
#include "TSzhen.h"
#include "LCD_SEG.h"
#include "main.h"
extern uint32_t ESpeedMicrostep;
extern uint32_t VSpeedMicrostep;
extern uint8_t CoolantTempSeg;
//----hyq--20190430
extern uint8_t ContrlorResumeofTEMP; //水温表控制标志位
extern uint8_t ContrlorResumeofVspeed; //车速表控制标志位
extern uint8_t ContrlorResumeofEspeed; //转速表控制标志位
extern uint8_t ContrlorResumeofGAS1 ; //气压1
extern uint16_t ESpeedVal; //转速
//extern uint16_t VspeedVal; //车速
extern uint16_t ESpeedValNUM; //转速
extern uint16_t VspeedValNUM; //车速
extern uint8_t TempSeg; //水温
//extern uint16_t FuelSeg; //燃油
//extern uint16_t ADblueSeg; //天蓝液
//extern uint16_t OilSeg;
//extern uint16_t GAS1_DISPLAY; //气压1
//extern uint16_t GAS2_DISPLAY; //气压2
//----hyq--20190430
/******************************************************************************
车速段上升表
******************************************************************************/
static const uint16_t GaugesSpeedoMeterSegIncTable[] =
{
/*=================
显示格 | 车 速
---------+-------*/
/* 0 */ 0,
/* 1 */ 110,
/* 2 */ 210,
/* 3 */ 310,
/* 4 */ 410,
/* 5 */ 510,
/* 6 */ 610,
/* 7 */ 710,
/* 8 */ 810,
/* 9 */ 910,
/* 10 */ 1010,
/* 11 */ 1110,
/* 12 */ 1210,
/* 13 */ 1310,
/* 14 */ 1410,
/* 15 */ 1510,
/*===============*/
};
/******************************************************************************
车速段下降表
******************************************************************************/
static const uint16_t GaugesSpeedoMeterSegDecTable[] =
{
/*=================
显示格 | 车 速
---------+-------*/
/* 0 */ 90,
/* 1 */ 190,
/* 2 */ 290,
/* 3 */ 390,
/* 4 */ 490,
/* 5 */ 590,
/* 6 */ 690,
/* 7 */ 790,
/* 8 */ 890,
/* 9 */ 990,
/* 10 */ 1090,
/* 11 */ 1190,
/* 12 */ 1290,
/* 13 */ 1390,
/* 14 */ 1490,
/* 15 */ 1590,
};
#define GAUGES_TOTAL_SPEEDOMETER_SEG (sizeof(GaugesSpeedoMeterSegIncTable) / 2)
/******************************************************************************
转速段上升表
******************************************************************************/
static const uint16_t GaugesTachoMeterSegIncTable[] =
{
/*=================
显示格 | 转 速
---------+-------*/
/* 0 */ 0,
/* 1 */ 600,
/* 2 */ 1100,
/* 3 */ 1600,
/* 4 */ 2100,
/* 5 */ 2600,
/* 6 */ 3100,
/* 7 */ 3600,
/* 8 */ 4100,
/* 9 */ 4600,
/*=== ============*/
};
/******************************************************************************
转速段下降表
******************************************************************************/
static const uint16_t GaugesTachoMeterSegDecTable[] =
{
/*=================
显示格 | 转 速
---------+-------*/
/* 0 */ 400,
/* 1 */ 900 ,
/* 2 */ 1400,
/* 3 */ 1900,
/* 4 */ 2400,
/* 5 */ 2900,
/* 6 */ 3400,
/* 7 */ 3900,
/* 8 */ 4400,
/* 9 */ 4900,
/*===============*/
};
#define GAUGES_TOTAL_TACHOMETER_SEG (sizeof(GaugesTachoMeterSegIncTable) / 2)
/******************************************************************************
气压1段上升表
******************************************************************************/
static const uint16_t GaugesGAS1IncTable[] =
{
/*=================
显示格 | 气压1
---------+-------*/
/* 0 */ 600,
/* 1 */ 872,
/* 2 */ 1144,
/* 3 */ 1401,
/* 4 */ 1658,
/* 5 */ 1945,
/* 6 */ 2233,
/* 7 */ 2505,
/* 8 */ 2777,
/* 9 */ 3049,
/* 10 */ 3321,
/* 11 */ 3593,
/* 12 */ 3865,
/* 13 */ 4110,
/* 14 */ 4500,
/*=== ============*/
};
/******************************************************************************
气压1段下降表
******************************************************************************/
static const uint16_t GaugesGAS1DecTable[] =
{
/*=================
显示格 | 气压1
---------+-------*/
/* 0 */ 400,
/* 1 */ 672,
/* 2 */ 944,
/* 3 */ 1201,
/* 4 */ 1458,
/* 5 */ 1745,
/* 6 */ 2033,
/* 7 */ 2305,
/* 8 */ 2577,
/* 9 */ 2849,
/* 10 */ 3121,
/* 11 */ 3393,
/* 12 */ 3665,
/* 13 */ 3910,
/* 14 */ 4400,
/*=== ============*/
};
#define GAUGES_GAS1_SEG (sizeof(GaugesGAS1IncTable) / 2)
/******************************************************************************
气压2段上升表
******************************************************************************/
static const uint16_t GaugesGAS2IncTable[] =
{
/*=================
显示格 | 气压2
---------+-------*/
/* 0 */ 600,
/* 1 */ 872,
/* 2 */ 1144,
/* 3 */ 1401,
/* 4 */ 1658,
/* 5 */ 1945,
/* 6 */ 2233,
/* 7 */ 2505,
/* 8 */ 2777,
/* 9 */ 3049,
/* 10 */ 3321,
/* 11 */ 3593,
/* 12 */ 3865,
/* 13 */ 4110,
/* 14 */ 4500,
/*=== ============*/
};
/******************************************************************************
转速段下降表
******************************************************************************/
static const uint16_t GaugesGAS2DecTable[] =
{
/*=================
显示格 | 气压2
---------+-------*/
/* 0 */ 400,
/* 1 */ 672,
/* 2 */ 944,
/* 3 */ 1201,
/* 4 */ 1458,
/* 5 */ 1745,
/* 6 */ 2033,
/* 7 */ 2305,
/* 8 */ 2577,
/* 9 */ 2849,
/* 10 */ 3121,
/* 11 */ 3393,
/* 12 */ 3665,
/* 13 */ 3910,
/* 14 */ 4400,
/*=== ============*/
};
#define GAUGES_GAS2_SEG (sizeof(GaugesGAS2IncTable) / 2)
typedef struct
{
uint16_t VSpeedBackup;
uint16_t ESpeedBackup;
uint8_t VSpeedSeg;
uint8_t ESpeedSeg;
uint16_t GAS1Backup;
uint16_t GAS2Backup;
uint8_t GAS1Seg;
uint8_t GAS2Seg;
}GaugesCtrlStruct;
extern GaugesCtrlStruct GaugesCtrl;
/***********************************表头显示函数******************************/
void Gauges_ESpeed_Display_OFF(void);
void Gauges_VSpeed_Display_OFF(void);
void Gauges_Management_Service(void);
void Gauges_AirOne_Display_OFF(void);
void Gauges_AirTwo_Display_OFF(void);
#endif
\ No newline at end of file
#ifndef _MENUS_H_
#define _MENUS_H_
#include "GUI.h"
#include "IO_Manager.h"
#include "Key.h"
#include "Drive_Info.h"
#define HOUR_Ten_Set_Disp 0
#define HOUR_One_Set_Disp 1
#define MINUTE_Ten_Set_Disp 2
#define MINUTE_One_Set_Disp 3
#define TRAPA 0
#define TRAPB 1
#define MenuFuel 0
#define MenuFue2 1
#define MenuFue3 2
extern uint8_t ClockPOS;
//extern uint8_t TrapPOS;
extern uint8_t MenuDisplay;
extern uint16_t keytime;
extern uint8_t SetMenu ; //设置页 0 时间设置 1 雷达设置 2 退出
extern uint8_t SetMenupage ; //显示页 0 设置页 1 时间设置 2 雷达设置
extern uint8_t SetRadar; //雷达显示 0 开启 1 关闭 白条
extern uint8_t SetDot; //雷达设置 0 开启 1 关闭 圆点
extern uint8_t SetHoofswear; //蹄片磨损报警设置
extern uint8_t Setservice;
extern uint8_t Service_Open;
extern uint8_t BcakLightPOS;
extern uint8_t BAOYANGPOS;
extern uint8_t DriveModePOS;
extern uint8_t DriveMode;
extern uint8_t OverSpeedPOS;
extern uint8_t OverSpeedSet;
extern uint8_t SetMinute_Ten; //分钟设置
extern uint8_t SetMinute_One; //分钟设置
extern uint8_t SetHour_Ten; //小时设置
extern uint8_t SetHour_One; //小时设置
extern uint8_t Maintain_clear;
void Menu_Processing_Service(void);
void Time_Seting(void);
void App_CalBatBoard(void);
#endif
\ No newline at end of file
#ifndef _POPUPS_H_
#define _POPUPS_H_
#include "IPC.h"
#include "GUI.h"
#include "IO_Manager.h"
#include "Popup_Scheduler.h"
#include "Sound_Scheduler.h"
#include "Warning_Processor.h"
#include "main.h"
#include "Sound_Player.h"
#include "Communication_Over_CAN.h"
#include "Non_volatile_Memorys.h"
#include "Data_Processor.h"
#define POPUP_UNIT_FL 0x01
#define POPUP_UNIT_FR 0x02
#define POPUP_UNIT_RL 0x04
#define POPUP_UNIT_RR 0x08
#define POPUP_UNIT_TR 0x10
#define POPUP_UNIT_HO 0x20
extern uint8_t CAN_ERROR ;
void Popups_Polling(void);
void Popups_Management_Service(void);
void Popups_Displaying(uint8_t PopupID);
void Popups_Sound_Playing(uint8_t PopupID);
#endif
\ No newline at end of file
#ifndef _STARTUP_ANIMATION_H_
#define _STARTUP_ANIMATION_H_
#include "GUI.h"
/******************************************************************************
开机动画设置
******************************************************************************/
//#define STARTUP_ANIMATION_TOTAL_FRAME 63 //总帧数 23
//#define STARTUP_ANIMATION_FRAME_PERIOD 40 //帧周期,单位ms 110 3S开机动画
#define STARTUP_ANIMATION_TOTAL_FRAME 75 //总帧数 23
#define STARTUP_ANIMATION_FRAME_PERIOD 30 //帧周期,单位ms 110
/******************************************************************************
播放控制结构
******************************************************************************/
typedef struct
{
uint8_t FrameCnt;
uint8_t Timer;
} StartupAnimationPlayStruct;
/******************************************************************************
函数声明
******************************************************************************/
void Startup_Animation_Reset(void);
void Startup_Animation_Play_Service(void);
#endif
#ifndef _TSzhen_H_
#define _TSzhen_H_
#include "UDS_ISO14229_Services.h"
#include "Data_Processor.h"
#include "Common.h"
/******************************************************************************
结构体声明
******************************************************************************/
//----hyq--20190505 ĸ ԸС cnRYB_KJDTBLen cnSWB_KJDTBLen ԸĴ 7
#define cnCSB_KJDTBLen 4
#define cnZSB_KJDTBLen 4
#define cnRYB_KJDTBLen 5
#define cnSWB_KJDTBLen 5
//#define cnWCjd 9 //8度
//#define cnCZBWBjd 12 //车,转速表1度=12微步
//#define cnSYBWBjd 12 //水油表1度=12微步
extern INT16U b_CSB_JD[cnCSB_KJDTBLen]; //车速表刻度--角度数据组
extern INT16U b_ZSB_JD[cnZSB_KJDTBLen]; //转速表刻度--角度数据组
typedef struct
{
INT8U YBala_N; //油表报警点序号(分布角度值)(1/8度单位)
INT8U SBala_N; //水表报警点序号(分布角度值)(1/8度单位)
INT8U SB_KT; //用于设置水表多少时间当前值去逼近目标值(单位3.6MS)
INT8U CS_N; //车速传感器每转一圈的脉冲个数(4,8)
INT8U no_used1; //保留
INT8U no_used2; //保留
INT16U YB_DTXS; //油表输入的动态系数
INT16U SB_DTXS; //水表输入的动态系数
INT16U ZS_G100; //转速表的缸数(100倍)
INT16U CSBIX; //车速比
} KPULSTRUCT;
typedef struct
{
INT16U Kdu;
INT16U WBJD;
} KDVJDSTRUCT;
//----hyq--20190505 ĸ޸
#define cnZSBFrJDTBLen 4+1
extern KDVJDSTRUCT ZSBFrJDTB[cnZSBFrJDTBLen];
#define cnCSBFrJDTBLen 4+1
extern KDVJDSTRUCT CSBFrJDTB[cnCSBFrJDTBLen];
#define cnSUIBVJDTBLen 8+1
extern KDVJDSTRUCT SUIBVJDTB[cnSUIBVJDTBLen];
#define cnYOUBVJDTBLen 8+1
extern KDVJDSTRUCT YOUBVJDTB[cnYOUBVJDTBLen];
/*
extern INT16U CSB_MAX_KUD10;
extern INT16U ZSB_MAX_KUD;
extern INT8U CSB_MAX_XH;
extern INT8U ZSB_MAX_XH;
*/
extern uint16_t CSB_JDMHLBUF_LS;
extern uint16_t zs_JDMHLBUF_LS;
extern uint16_t YOUB_FBJD_MHL;
extern uint16_t SUIB_FBJD_MHL;
extern KPULSTRUCT KPuls_cs;
//extern KDVJDSTRUCT QYB1JDTB[cnCSBFrJDTBLen];
//extern KDVJDSTRUCT QYB2JDTB[cnCSBFrJDTBLen];
INT16U GJ_KDV_JSSYBMBJD(KDVJDSTRUCT *mSTUCT, INT16U mV, INT8U mLEN);
void TSzhen_mode(void);
void SetModeProc(void);
void Read_CZSYBKPILSFR_FLASH(void);
void JSCZSBMAXFRPRG(void);
#endif
\ No newline at end of file
#ifndef _TELLTALES_H_
#define _TELLTALES_H_
#include "GUI.h"
#include "CAN_Communication_Matrix.h"
#include "Line_In.h"
#include "LED.h"
#include "Flash_synchronizer.h"
#include "System_Status_Monitor.h"
#include "Non_volatile_Memorys.h"
#include "IO_Manager.h"
#include "Warning_Processor.h"
#include "Sound_List.h"
#include "Sound_Scheduler.h"
#include "Sound_Player.h"
#include "main.h"
typedef struct
{
uint8_t LastLeft;
uint8_t LastRight;
uint8_t Delay;
} TelltaleLRCtrlStruct;
typedef struct
{
uint8_t Enable;
uint8_t Filter;
uint8_t Timer;
uint8_t Output;
} TelltaleLRSimulateStruct;
extern INT32U BD83790A;
extern INT32U BD83790B;
extern INT32U BD83790C;
extern INT32U OldBD83790A;
extern INT32U OldBD83790B;
extern INT32U OldBD83790C;
extern uint8_t SEATBELT_Count;
extern uint8_t Break_nodown_Count;
extern uint8_t BREAK_FLUID_Count;
extern uint8_t BREAK_Count;
extern uint8_t Break_down_count;
extern uint8_t RR_HOOVES_Count;
extern uint8_t RF_HOOVES_Count;
extern uint8_t DoorSts_Count;
extern uint8_t OVER_SPEED_Count;
extern uint8_t CAB_LOCK_Count ;
extern uint8_t CollantAir_Count;
extern uint8_t Drivability_Count;
extern uint8_t PTO_Count;
extern uint8_t BreakLight_Count;
extern uint8_t FILT_BLOCK_Count;
extern uint8_t CHARGE_Count;
extern uint8_t EngineSeriousFailure_Count;
extern uint8_t Coolant_Temp_Count;
extern uint8_t EngOilPress_Count;
extern uint8_t DPF_Lamp_Count;
extern uint8_t Led_DPF_Count;
extern uint8_t DPF_Forbidden_Count;
extern uint8_t Stop_Start_System_Count;
extern uint8_t EPB_Count ;
extern uint8_t AEB_Count ;
extern uint8_t AMT_Count;
extern uint8_t LowBrakeLuidLevel_temp;
extern uint8_t SafetyBeltSt_temp;
extern uint8_t MaintainSignal_temp;
extern uint8_t ParkingBrakeSwitch_temp;
extern uint8_t CabLockSt_temp;
extern uint8_t PositionLightSts;
extern uint8_t DriveDoorSts;
extern uint8_t PsngrDoorSts;
extern uint8_t LED_T_BOX_RVM;
//Ļָʾ״̬ʶ
typedef union
{
uint32_t Telltale;
struct
{
uint8_t LCD01 : 1; // 1
uint8_t LCD02 : 1; // 2
uint8_t LCD03 : 1; // 3
uint8_t LCD04 : 1; // 4
uint8_t LCD05 : 1; // 5
uint8_t LCD06 : 1; // 6
uint8_t LCD07 : 1; // 7
uint8_t LCD08 : 1; // 8
uint8_t LCD09 : 1; // 9
uint8_t LCD10 : 1; // 10
uint8_t LCD11 : 1; // 11
uint8_t LCD12 : 1; // 12
uint8_t LCD13 : 1; // 13
uint8_t LCD14 : 1; // 14
uint8_t LCD15 : 1; // 15
uint8_t LCD16 : 1; // 16
uint8_t LCD17 : 1; // 17
uint8_t LCD18 : 1; // 18
uint8_t LCD19 : 1; // 19
uint8_t LCD20 : 1; // 20
uint8_t LCD21 : 1; // 21
uint8_t LCD22 : 1; // 22
uint8_t LCD23 : 1; // 23
uint8_t LCD24 : 1; // 24
uint8_t LCD25 : 1; // 25
uint8_t LCD26 : 1; // 26
uint8_t LCD27 : 1; // 27
uint8_t LCD28 : 1; // 28
uint8_t LCD29 : 1; // 29
uint8_t LCD30 : 1; // 30
uint8_t LCD31 : 1; // 31
uint8_t LCD32 : 1; // 32
}Sig;
} TelltaleLCD;
extern TelltaleLCD TelltaleLCDFlag;
/******************************************************************************
ָʾ˸ͬ
******************************************************************************/
#define LED_FLASH_1Hz FLASH_SYNC_1Hz ? LED_ON : LED_OFF
#define LED_FLASH_2Hz FLASH_SYNC_2Hz ? LED_ON : LED_OFF
#define LED_FLASH_7Hz FLASH_SYNC_7Hz ? LED_ON : LED_OFF
/******************************************************************************
******************************************************************************/
void Telltales_Management(void); //50ms
void Telltales_Left_Right_Management_Service(void) ;
#endif
\ No newline at end of file
/******************************************************************************
背光驱动
*****************************************************************************/
#include "BackLight.h"
BlPWMCaptureStruct BlPWMCapture;
BlPWMFilterStruct BlPWMFilter;
BlOFFCtrlStruct BlOFFCtrl;
uint8_t BlTurnOnDelay;
uint8_t BlTurnOffDelay;
/******************************************************************************
函数名: BL_Init
功 能: 背光上电初始化
参 数: dutyCycle用于调节背光
返回值: 无
*******************************************************************************/
void BL_Init(void)
{
BlOFFCtrl.DoorStatusBackup = 0;
BlOFFCtrl.Timer = 0;
BlTurnOnDelay = 10;
BlTurnOffDelay = 10;
}
/******************************************************************************
函数名: Backlight_Plate_Needle_Set
功 能: 表盘及表针背光设定
参 数: duty用于调节的背光占空比
返回值: 无
*******************************************************************************/
void BackLight_Plate_Needle_Set(uint8_t duty)
{
if(duty < 7)
duty = 7;
if(duty > 95)
duty = 95;
PWM_Channel_Set_Duty_Cycle(2, duty);
}
/******************************************************************************
函数名: BackLight_Plate_Needle_Close
功 能: 表盘及表针背光关闭
参 数: 无
返回值: 无
*******************************************************************************/
void BackLight_Plate_Needle_Close(void)
{
PWM_Channel_Set_Duty_Cycle(2, 0);
}
/******************************************************************************
函数名: Backlight_Init
功 能: TFT屏的背光设置
参 数: duty用于设置的占空比
返回值: 无
*******************************************************************************/
void BackLight_TFT_Set(uint8_t duty)
{
if((duty < 7))
duty = 7;
if(duty > 95)
duty = 95;
PWM_Channel_Set_Duty_Cycle(7, duty);
}
/******************************************************************************
函数名: Backlight_Init
功 能: TFT屏背光关闭
参 数: 无
返回值: 无
*******************************************************************************/
void BackLight_TFT_Close(void)
{
PWM_Channel_Set_Duty_Cycle(7, 0);
}
/*******************************************************************************
函数名:背光服务函数
参 数:背光调节步数KEY_Step
********************************************************************************/
void BL_Management_Service(void)
{
// uint8_t Msg;
// uint8_t DutyCycle;
//DutyCycle = BL_KEY_Step;
//if(SYS_OPR_STAT_IGN_ON)
//{}
if(SYS_IGN_OFF_DISP_MODE)
{
BlOFFCtrl.Timer = 0;
if(BlTurnOffDelay)
BlTurnOffDelay--;
else
{
if((DriveDoorSts==1)||(PsngrDoorSts==1)||(PositionLightSts==1)||(HazardLightSts==1)||((PepslcuAlarm>0)&&(PepslcuAlarm<13))||(PepslcuAlarm == 14)||((RHTurnSignalSts == 1) &&(LHTurnSignalSts == 1))) //20200501 fhl
{
if(PositionLightSts==1)
{
BackLight_TFT_Set((BcakLightPOS+1)*15);
if((DriveDoorSts==1)||(PsngrDoorSts==1)||(HazardLightSts==1)||((RHTurnSignalSts == 1) &&(LHTurnSignalSts == 1)))
{
// BackLight_Plate_Needle_Set((BcakLightPOS+1)*15);
PWM_Channel_Set_Duty_Cycle(5, ((BcakLightPOS+1)*15));
}
else
{
//BackLight_Plate_Needle_Close(); //20200306
PWM_Channel_Set_Duty_Cycle(5, 0);
}
}
else
{
if((DriveDoorSts==1)||(PsngrDoorSts==1)||(HazardLightSts==1)||((RHTurnSignalSts == 1) &&(LHTurnSignalSts == 1)))
{
// BackLight_Plate_Needle_Set((BcakLightPOS+1)*25);
PWM_Channel_Set_Duty_Cycle(5, ((BcakLightPOS+1)*25));
}
if((DriveDoorSts==1)||(PsngrDoorSts==1))/*||((PepslcuAlarm>0)&&(PepslcuAlarm<13))||(PepslcuAlarm==14)) */
{
BackLight_TFT_Set((BcakLightPOS+1)*25);
}
else if(((PepslcuAlarm>0)&&(PepslcuAlarm<13))||(PepslcuAlarm==14))
{
BackLight_TFT_Set((BcakLightPOS+1)*25);
PWM_Channel_Set_Duty_Cycle(5, 0); //2020 01 06 WH 修改off下报警大C问题
}
else
BackLight_TFT_Close(); //屏
}
}
else
{
BackLight_TFT_Close(); //屏
PWM_Channel_Set_Duty_Cycle(5, 0);
}
BackLight_Plate_Needle_Close(); //20200306
}
} else {
BlOFFCtrl.Timer = 0;
if(BlTurnOnDelay)
BlTurnOnDelay--;
else
{
if (PositionLightSts == 1)
{
BackLight_TFT_Set((BcakLightPOS+1)*15);
BackLight_Plate_Needle_Set((BcakLightPOS+1)*15);
PWM_Channel_Set_Duty_Cycle(5, ((BcakLightPOS+1)*15));
}
else
{
BackLight_TFT_Set((BcakLightPOS+1)*25);
BackLight_Plate_Needle_Set((BcakLightPOS+1)*25);
PWM_Channel_Set_Duty_Cycle(5, ((BcakLightPOS+1)*25));
}
}
}
}
void PWM_INIT(void)
{
PWM_Channel_Init(7, PWM_CLOCK_SB, PWM_POL_POS, PWM_LEFT_ALIGN, PWM7_PM3);//屏背光初始化
PWM_Channel_Set_Freq(7, 20000);
PWM_Channel_Set_Duty_Cycle(7, 0); //初始化为背光关闭,由后续应用程序开启
PWM_Channel_Start(7);
PWM_Channel_Init(2, PWM_CLOCK_SB, PWM_POL_POS, PWM_LEFT_ALIGN, PWM2_PP2);//指示灯背光
PWM_Channel_Set_Freq(2, 20000);
PWM_Channel_Set_Duty_Cycle(2, 0); //初始化为背光关闭,由后续应用程序开启
PWM_Channel_Start(2);
PWM_Channel_Init(5, PWM_CLOCK_SA, PWM_POL_POS, PWM_LEFT_ALIGN, PWM5_PP5);//大C背光
PWM_Channel_Set_Freq(5, 100);
PWM_Channel_Set_Duty_Cycle(5, 0); //初始化为背光关闭,由后续应用程序开启
PWM_Channel_Start(5);
}
/**************************表针调试驱动**************************************/
#include "Common.h"
uint8_t RSB_P;
uint8_t RX_BUF[cnRSBufLen]; //串口接收缓存区
uint8_t TX_BUF[cnRSBufLen]; //串口发送缓存区
//ACK命令数据
#pragma INTO_ROM
const uint8_t CommandACK[5] =
{
cnUASTHandH, // 串口接受消息头高位
cnUASTHandL, // 串口接受消息头低位
2,
comACK, // ACK
(uint8_t)(2 + comACK),
};
//NCK命令数据
#pragma INTO_ROM
const uint8_t CommandNCK[5] =
{
cnUASTHandH, // 串口接受消息头高位
cnUASTHandL, // 串口接受消息头低位
2,
comNCK, // NACK
(uint8_t)(2 + comNCK),
};
//---------------------------------------------------------------------------
//读写命令对应的RAM数据首地址表
#pragma INTO_ROM
const uint8_t *CommandRAMIF[16] =
{
(uint8_t *)0,
(uint8_t *)0,
(uint8_t *) &CSBFrJDTB[1], //编号不能动 车速表
(uint8_t *) &ZSBFrJDTB[1], //编号不能动 转速表
(uint8_t *)0,//&KPuls_cs, //编号不能动
(uint8_t *)0, //编号不能动
(uint8_t *) &SUIBVJDTB[0], //编号不能动 水温表
(uint8_t *) &YOUBVJDTB[0], //编号不能动 燃油表
(uint8_t *)0, //
(uint8_t *)0, //
(uint8_t *)0, //
(uint8_t *)0,//&CSB_SS_FrHL, //编号不能动
(uint8_t *)0,//&ZSB_SS_FrHL, //编号不能动
(uint8_t *)0,//&SBInputV, //编号不能动
(uint8_t *)0,//&YBInputV, //编号不能动
(uint8_t *)0,//&CJINF[0] //编号不能动
};
/**************************************************
向串口发送1个字节数据
***************************************************/
void SendByteToUART(uint8_t myByte)
{
wdt_reset(); //复位看门狗定时器
while(SCI0SR1_TDRE == 0); //等待发送缓存区空
SCI0DRL = myByte;
}
/**************************************************
向串口发送1个字节数据(用于调试)
***************************************************/
void SendWordToUART(uint16_t myWord)
{
uint8_t *mP;
mP = (uint8_t *)&myWord;
SendByteToUART(mP[0]);
SendByteToUART(mP[1]);
}
/**************************************************
把ROM中的一组数据从串口发送出去
***************************************************/
void SendRomStrToUART(uint8_t *myROMADR, uint8_t mDataLen)
{
uint8_t i;
for(i = 0; i < mDataLen; i++)
{
SendByteToUART(myROMADR[i]); //向串口发送1个字节数据
}
}
/**************************************************
向仪器发ACK
***************************************************/
void SendACKToSBEI(void)
{
SendRomStrToUART((uint8_t *)CommandACK, sizeof(CommandACK)); //给仪器发ACK
}
/**************************************************
//初始化串口接收程序
***************************************************/
void InitUARTRecvP(void)
{
cli(); //禁止全局中断
RSB_P = 0;
sei(); //开全局中断
}
/**************************************************
串口接收程序(在19200波特率下.用于设置参数)
出口:=1表示收到一帧数据
***************************************************/
INT8U UARTRecvieP(void)
{
if((RSB_P >= 1) && (RX_BUF[0] != cnUASTHandH))
goto UARTRciP1;
if((RSB_P >= 2) && (RX_BUF[1] != cnUASTHandL))
goto UARTRciP1;
if((RSB_P >= 3) && (RX_BUF[2] > cnRSDatLen))
goto UARTRciP1;
if(RSB_P >= (RX_BUF[2] + 3))
return 1;
else
return 0;
UARTRciP1:
InitUARTRecvP(); //初始化串口接收程序
return 0;
}
/*****************************************************************************
判断串口接受缓存区是否收到正确的数据
出口:=0表示数据正确,COPY数据到发送缓存区,且函数自动清空缓存区,并重新开始接受
=1表示数据不正确,且函数自动清空缓存区,并重新开始接受
=2表示没有收到数据
*****************************************************************************/
INT8U RSSRecivJudge(void)
{
INT8U i;
INT8U mCC = 0;
if(!UARTRecvieP()) //串口有收到一帧数据
return 2; //no
for(i = 0; i < RX_BUF[2]; i++)
mCC = mCC + RX_BUF[2 + i];
if(mCC == RX_BUF[RX_BUF[2] + 2])
{
for(i = 0; i < cnRSBufLen; i++) //COPY串口接收缓存区数据到串口发送缓存区
TX_BUF[i] = RX_BUF[i];
InitUARTRecvP(); //初始化并打开串口接收程序
return 0;
}
else
{
InitUARTRecvP(); //初始化并打开串口接收程序
return 1;
}
}
/***************************************************
根据发送缓存区的数据类型,序号,数据字节数计算RAM首地址
入口:发送缓存区数据
***************************************************/
INT8U *JSRAMADRGJLXN(void)
{
return TX_BUF[4] * TX_BUF[5] + (INT8U *)CommandRAMIF[TX_BUF[3] & 0x0F];
}
/***************************************************
处理从仪器发来的读数据命令函数
入口:命令数据在发送缓存区
***************************************************/
void ReadDataCOMPRG(void)
{
INT8U i;
INT8U *pRAMAdr;
TX_BUF[2] = TX_BUF[2] + TX_BUF[5];
pRAMAdr = JSRAMADRGJLXN(); //根据发送缓存区的数据类型,序号,数据字节数计算RAM首地址
for(i = 0; i < TX_BUF[5]; i++)
TX_BUF[6 + i] = *(pRAMAdr + i);
JSCCSendDataToYQ(); //计算发送缓存区数据CC并发送数据到仪器
}
/***************************************************
计算发送缓存区数据CC并发送数据到仪器
***************************************************/
void JSCCSendDataToYQ(void)
{
INT8U i;
INT8U mCC = 0;
for(i = 0; i < TX_BUF[2]; i++)
mCC = mCC + TX_BUF[2 + i];
TX_BUF[TX_BUF[2] + 2] = mCC;
for(i = 0; i < (TX_BUF[2] + 3); i++)
SendByteToUART(TX_BUF[i]);
}
/***************************************************
处理从仪器发来的写数据命令函数
入口:命令数据在发送缓存区
(注:如果是,写车,转速表,油,水表,则要更新表的目标角度
***************************************************/
void WriteDataCOMPRG(void)
{
INT8U i;
INT8U *pRAMAdr;
INT8U mTPE;
pRAMAdr = JSRAMADRGJLXN(); //根据发送缓存区的数据类型,序号,数据字节数计算RAM首地址
for(i = 0; i < TX_BUF[5]; i++)
*(pRAMAdr + i) = TX_BUF[6 + i];
mTPE = TX_BUF[3] & 0x0F;
if(mTPE == 2) //
STEPPER_MOTOR_0_DST_STEP = *((INT16U *)(pRAMAdr + 2));
if(mTPE == 3) //
STEPPER_MOTOR_3_DST_STEP = *((INT16U *)(pRAMAdr + 2));
if(mTPE == 6) //
STEPPER_MOTOR_1_DST_STEP = *((INT16U *)(pRAMAdr + 2));
if(mTPE == 7) //
STEPPER_MOTOR_2_DST_STEP = *((INT16U *)(pRAMAdr + 2));
}
This diff is collapsed.
#include "Gauges.h"
uint32_t ESpeedMicrostep;
uint32_t VSpeedMicrostep;
uint8_t CoolantTempSeg;
uint8_t CoolantFuelSeg;
uint8_t GaugesTimer;
//extern uint8_t ContrlorResumeofFUEL; //油表控制标志位
//extern uint8_t ContrlorResumeofTEMP; //水温表控制标志位
//extern uint8_t ContrlorResumeofVspeed; //车速表控制标志位
//extern uint8_t ContrlorResumeofEspeed; //转速表控制标志位
//extern uint16_t ESpeedVal; //转速
//extern uint16_t VspeedVal; //车速
//extern uint16_t ESpeedValNUM; //转速
//extern uint16_t VspeedValNUM; //车速
//extern uint16_t TempSeg; //水温
//extern uint16_t FuelSeg; //燃油
//extern uint16_t WaterTempValNUM; //水温
//extern uint16_t FuelValNUM; //燃油
//extern uint16_t WaterTempVal; //水温
//extern uint16_t FuelVal; //车速
//extern uint8_t FuelDisp ;
/*********************车转水油显示***************************/
void Gauges_Management_Service(void)
{
uint8_t UpdateFlag;
if (SYS_IGN_OFF_DISP_MODE)
{
Gauges_ESpeed_Display_OFF();
Gauges_VSpeed_Display_OFF();
Gauges_AirOne_Display_OFF();
Gauges_AirTwo_Display_OFF();
}
if( SYS_IGN_ON_DISP_MODE )
{
if (GaugesTimer)
{
UpdateFlag = 0;
GaugesTimer--;
}
else
{
UpdateFlag = 1;
GaugesTimer = 5;
}
if(UpdateFlag)
{
//天蓝液 右下
if(ContrlorResumeofVspeed == 0)
{
CSB_JDMHLBUF_LS = GJ_KDV_JSSYBMBJD(&CSBFrJDTB[0], DataCoolantADblueSegDisp, cnCSBFrJDTBLen);
STEPPER_MOTOR_0_DST_STEP = CSB_JDMHLBUF_LS;
}
else
{
CSB_JDMHLBUF_LS = GJ_KDV_JSSYBMBJD(&CSBFrJDTB[0], ADblueSeg, cnCSBFrJDTBLen);
STEPPER_MOTOR_0_DST_STEP = CSB_JDMHLBUF_LS;
}
//机油 左下
if(ContrlorResumeofEspeed == 0)
{
zs_JDMHLBUF_LS = GJ_KDV_JSSYBMBJD(&ZSBFrJDTB[0], DataCoolantOilSegDisp, cnZSBFrJDTBLen);
STEPPER_MOTOR_3_DST_STEP = zs_JDMHLBUF_LS;
}
else
{
zs_JDMHLBUF_LS = GJ_KDV_JSSYBMBJD(&ZSBFrJDTB[0], OilSeg, cnZSBFrJDTBLen);
STEPPER_MOTOR_3_DST_STEP = zs_JDMHLBUF_LS;
}
//燃油 左上
if(ContrlorResumeofFUEL == 0)
{
YOUB_FBJD_MHL = GJ_KDV_JSSYBMBJD( &YOUBVJDTB[0], Fuel_Seg , cnYOUBVJDTBLen );
STEPPER_MOTOR_2_DST_STEP = YOUB_FBJD_MHL;
}
else
{
YOUB_FBJD_MHL = GJ_KDV_JSSYBMBJD( &YOUBVJDTB[0], Fuel_Seg , cnYOUBVJDTBLen );
STEPPER_MOTOR_2_DST_STEP = YOUB_FBJD_MHL;
}
//水温 右上
if( ContrlorResumeofTEMP == 0 )
{
SUIB_FBJD_MHL = GJ_KDV_JSSYBMBJD( &SUIBVJDTB[0], DataCoolantTempSegDisp , cnSUIBVJDTBLen );
STEPPER_MOTOR_1_DST_STEP = SUIB_FBJD_MHL;
}
else
{
SUIB_FBJD_MHL = GJ_KDV_JSSYBMBJD( &SUIBVJDTB[0], TempSeg , cnSUIBVJDTBLen );
STEPPER_MOTOR_1_DST_STEP = SUIB_FBJD_MHL;
}
}
}
}
/***************************************************************
转速显示归零 左下
****************************************************************/
void Gauges_ESpeed_Display_OFF(void)
{
STEPPER_MOTOR_3_DST_STEP = 0;
}
/***************************************************************
车速显示归零 右下
****************************************************************/
void Gauges_VSpeed_Display_OFF(void)
{
STEPPER_MOTOR_0_DST_STEP = 0;
}
/***************************************************************
水表显示归零 左上
****************************************************************/
void Gauges_AirOne_Display_OFF(void)
{
STEPPER_MOTOR_2_DST_STEP = 0;
}
/***************************************************************
油表显示归零 右上
****************************************************************/
void Gauges_AirTwo_Display_OFF(void)
{
STEPPER_MOTOR_1_DST_STEP = 0;
}
This diff is collapsed.
This diff is collapsed.
#include "Startup_Animation.h"
StartupAnimationPlayStruct StartupAnimationPlay;
/******************************************************************************
函数:Startup_Animation_Reset
******************************************************************************/
void Startup_Animation_Reset(void)
{
StartupAnimationPlay.FrameCnt = 0;
StartupAnimationPlay.Timer = 0;
}
/******************************************************************************
函数:Startup_Animation_Play_Service
*******************************************************************************/
void Startup_Animation_Play_Service(void)
{
if (IO_ANIMATION_DISPLAY_ENABLE)
{
if (StartupAnimationPlay.FrameCnt < STARTUP_ANIMATION_TOTAL_FRAME)
{
if (StartupAnimationPlay.Timer == 0)
{
StartupAnimationPlay.FrameCnt++;
GUI_Animation_Frame_Display(StartupAnimationPlay.FrameCnt); //开机动画
//GUI_Animation_Frame_Display(0); //开机动画
}
StartupAnimationPlay.Timer++;
if (StartupAnimationPlay.Timer >= (STARTUP_ANIMATION_FRAME_PERIOD / 10))
StartupAnimationPlay.Timer = 0;
}
}
/* else
{
TFT_LCD_Clear_Layer(LAYER_BEIJING); //清开机LOGO
TFT_LCD_Clear_Layer(LAYER_BEIJING1);
}
*/
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/******************************************************************************
文 件 名:Buzzer.c
功能描述:蜂鸣器驱动库头文件
作 者:张暄
版 本:V1.0
日 期:2016.5.18
******************************************************************************/
#ifndef _BUZZER_H_
#define _BUZZER_H_
#include "GPIO.h"
#include "PWM.h"
#include "Sound_Tracks.h"
/******************************************************************************
硬件配置
******************************************************************************/
#define BUZZER_PWM_CHANNEL 4
#ifndef BUZZER_CTRL
#define BUZZER_CTRL LINE_BUZZER
#endif
#define BUZZER_MODE_IDLE 0
#define BUZZER_MODE_SINGLE 1
#define BUZZER_MODE_LOOP 2
typedef struct
{
uint8_t Mode;
uint8_t Track;
uint8_t Note;
uint16_t Timer;
uint16_t Fade;
}BuzzerPlayCtrlStruct;
/******************************************************************************
函数声明
******************************************************************************/
void Buzzer_Start_Up(void);
void Buzzer_Shutdown(void);
void Buzzer_Play_Track(uint8_t TrackID);
void Buzzer_Repeat_Play_Track(uint8_t TrackID);
void Buzzer_Stop_Play(void);
void Buzzer_Play_ISR(void);
#endif
\ No newline at end of file
#ifndef _C035QAN01_H_
#define _C035QAN01_H_
#include "stdint.h"
#include "API.h"
#include "GPIO.h"
#include "Simulated_SPI_Master.h"
/**********************************************************************************
显示设置
**********************************************************************************/
#define LCD_VERTICAL_DOWN_TO_UP 0 //垂直刷屏方向 0:由上至下
// 1:由下至上
#define LCD_HORIZONTAL_RIGHT_TO_LEFT 0 //水平刷屏方向 0:由左至右
// 1:由右至左
#define LCD_USE_SYNC_MODE 1 //数据模式 0:DE模式
// 1:SYNC模式
/**********************************************************************************
寄存器参数预处理
**********************************************************************************/
#if LCD_VERTICAL_DOWN_TO_UP
#define LCD_REG_VDIR ((uint16_t)0x0080)
#else
#define LCD_REG_VDIR ((uint16_t)0x0000)
#endif
#if LCD_HORIZONTAL_RIGHT_TO_LEFT
#define LCD_REG_HDIR ((uint16_t)0x0080)
#else
#define LCD_REG_HDIR ((uint16_t)0x0000)
#endif
#if LCD_USE_SYNC_MODE
#define LCD_REG_SYNC_DE ((uint16_t)0x0020)
#else
#define LCD_REG_SYNC_DE ((uint16_t)0x0000)
#endif
/**********************************************************************************
初始化数据表
**********************************************************************************/
/*** Gamma Setting ***/
static const uint16_t LCDGammaSetting[] =
{
0x1800, 0x190F, 0x1A1A, 0x1B1F, 0x1C27, 0x1D0E, 0x1E0D, 0x1F10, 0x200C, 0x2106,
0x220B, 0x230A, 0x2404, 0x250B, 0x260C, 0x270E, 0x280E, 0x291E, 0x2A14, 0x2B10,
0x2C0B, 0x2D04, 0x2E04, 0x2F0B, 0x3010, 0x3114, 0x321E, 0x330E, 0x340E, 0x350C,
0x360B, 0x3704, 0x380A, 0x390B, 0x3A06, 0x3B0C, 0x3C10, 0x3D0D, 0x3E0E, 0x3F27,
0x801F, 0x811C, 0x8213, 0x8309,
};
/*** Fine Tune Charge Pump Setting ***/
static const uint16_t LCDChargePumpSetting[] =
{
0xBF02, 0x0608, 0x0764, 0xBF00, 0xB1C0,
};
/**********************************************************************************
函数声明
**********************************************************************************/
void LCD_Init(void);
void LCD_Wait_ms(uint8_t msCnt);
#endif
This diff is collapsed.
This diff is collapsed.
#ifndef _ISD2260_H_
#define _ISD2260_H_
#include "Simulated_SPI_Master.h"
/******************************************************************************
命令列表
******************************************************************************/
#define ISD_STOP_LP_CODE 0x2E
#define ISD_PLAY_VP_LP_CODE 0xA4
#define ISD_STOP_CODE 0x2A
#define ISD_PLAY_VP_CODE 0xA6
#define ISD_EXE_VM_CODE 0xB0
#define ISD_READ_STATUS_CODE 0x40
#define ISD_READ_INT_CODE 0x46
#define ISD_READ_ID_CODE 0x48
#define ISD_DIG_READ_CODE 0xA2
#define ISD_DIG_WRITE_CODE 0xA0
#define ISD_CHIP_ERASE_CODE 0x26
#define ISD_CHECK_SUM_CODE 0xF2
#define ISD_PWR_UP_CODE 0x10
#define ISD_PWR_DN_CODE 0x12
#define ISD_WR_CFG_REG_CODE 0xB8
#define ISD_RD_CFG_REG_CODE 0xBA
#define ISD_RESET_CODE 0x14
/******************************************************************************
声音播放通道列表
******************************************************************************/
#define ISD_CHANNEL_0 0x00
#define ISD_CHANNEL_1 0x01
#define ISD_CHANNEL_2 0x02
#define ISD_CHANNEL_ALL 0x03
/******************************************************************************
函数声明
******************************************************************************/
void ISD_Init(void);
void ISD_Power_Up(void);
void ISD_Power_Down(void);
void ISD_Play_Vp(uint16_t Index);
void ISD_Stop(void);
void ISD_Play_Vp_Loop(uint16_t Index, uint16_t LoopCnt);
//void ISD_Stop_Loop(void);
void ISD_Set_Volume(uint8_t Volume);
void ISD_Select_Channel(uint8_t ChNum);
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#ifndef _PWM_CAPTURE_VALUE_H_
#define _PWM_CAPTURE_VALUE_H_
#include "main.h"
#include "GPIO.h"
/******************************************************************************
******************************************************************************/
INT16U GJ_T_JSCCSBF(INT8U mTYPE) ;
INT8U ReadCSBPULESP(void) ;
/******************************************************************************
******************************************************************************/
void BL_PWM_Duty_Cycle_Capture_CSB_ISR(void);
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#include "Radar_Common.h"
volatile uint8_t RadarValid;
volatile uint8_t RadarSelfTestPassed;
volatile uint8_t RadarSysFault;
volatile uint8_t RadarSound;
volatile uint8_t RadarSensorFL;
volatile uint8_t RadarSensorFLM;
volatile uint8_t RadarSensorFRM;
volatile uint8_t RadarSensorFR;
volatile uint16_t RadarSensorRL;
volatile uint16_t RadarSensorRLM;
volatile uint16_t RadarSensorRRM;
volatile uint16_t RadarSensorRR;
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/******************************************************************************
文 件 名:Diag_ID_Def
功能描述:诊断地址配置文件
作 者:张暄
版 本:V1.0
日 期:2016.9.22
******************************************************************************/
#ifndef _DIAG_ID_DEF_H_
#define _DIAG_ID_DEF_H_
#define DIAG_ID_Tx 0x18DAF1FC //发送ID
#define DIAG_ID_Rx_PHY 0x18DAFCF1 //接收ID,物理寻址
#define DIAG_ID_Rx_FUN 0x18DB33F1 //接收ID,功能寻址
#endif
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment