Commit e53f6b3e authored by hu's avatar hu

调整BUG

parent b3aa1672
...@@ -1355,6 +1355,7 @@ void GUI_AVG_FuelSpeed_Display(uint8_t Mode) ...@@ -1355,6 +1355,7 @@ void GUI_AVG_FuelSpeed_Display(uint8_t Mode)
} }
else if (Mode == GUI_DISP_MODE_BLANK) else if (Mode == GUI_DISP_MODE_BLANK)
{ {
;/*Do Nothing !*/
} }
else else
{ {
......
This diff is collapsed.
#include "Rscan.h"
#include "GPIO.h" #include "GPIO.h"
#include "dr7f701441.dvf.h" #include "dr7f701441.dvf.h"
......
...@@ -4,7 +4,7 @@ _EOL_Data_Type EOL_Data_Type; ...@@ -4,7 +4,7 @@ _EOL_Data_Type EOL_Data_Type;
void EOL_InitVal(void) void EOL_InitVal(void)
{ {
EOL_Data_Type.Flag = 0x7AA7A55Au; EOL_Data_Type.Flag = 0x7AA7A55Au;
EOL_Data_Type.DID_605C = 1u; EOL_Data_Type.DID_605C = 1u;
EOL_Data_Type.DID_605D = 1u; EOL_Data_Type.DID_605D = 1u;
EOL_Data_Type.DID_605E = 1u; EOL_Data_Type.DID_605E = 1u;
...@@ -46,149 +46,149 @@ void EOL_InitVal(void) ...@@ -46,149 +46,149 @@ void EOL_InitVal(void)
/*LDWS(车道偏离)系统开关*/ /*LDWS(车道偏离)系统开关*/
uint8_t Val_EOL_605C_LDWS(void) uint8_t Val_EOL_605C_LDWS(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_605C; Res = EOL_Data_Type.DID_605C;
return Res; return Res;
} }
/*AFS 系统开关*/ /*AFS 系统开关*/
uint8_t Val_EOL_605D_AFS(void) uint8_t Val_EOL_605D_AFS(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_605D; Res = EOL_Data_Type.DID_605D;
return Res; return Res;
} }
/*HUD 系统开关*/ /*HUD 系统开关*/
uint8_t Val_EOL_605E_HUD(void) uint8_t Val_EOL_605E_HUD(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_605E; Res = EOL_Data_Type.DID_605E;
return Res; return Res;
} }
/* ACC 系统开关关*/ /* ACC 系统开关关*/
uint8_t Val_EOL_605F_ACC(void) uint8_t Val_EOL_605F_ACC(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_605F; Res = EOL_Data_Type.DID_605F;
return Res; return Res;
} }
/* 称重系统开关*/ /* 称重系统开关*/
uint8_t Val_EOL_6060_Weigh(void) uint8_t Val_EOL_6060_Weigh(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6060; Res = EOL_Data_Type.DID_6060;
return Res; return Res;
} }
/* 车速里程表 K 值*/ /* 车速里程表 K 值*/
uint16_t Val_EOL_6062_KValue(void) uint16_t Val_EOL_6062_KValue(void)
{ {
uint16_t Res; uint16_t Res;
Res = 0u; Res = 0u;
Res = Res | (EOL_Data_Type.DID_6062[0u] << 8u); Res = Res | (EOL_Data_Type.DID_6062[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_6062[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_6062[1u];
return Res; return Res;
} }
/* 发动机速比*/ /* 发动机速比*/
uint8_t Val_EOL_6063_Engine(void) uint8_t Val_EOL_6063_Engine(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6063; Res = EOL_Data_Type.DID_6063;
return Res; return Res;
} }
/* 单位*/ /* 单位*/
uint8_t Val_EOL_6064_Unit(void) uint8_t Val_EOL_6064_Unit(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6064; Res = EOL_Data_Type.DID_6064;
return Res; return Res;
} }
/* 语言*/ /* 语言*/
uint8_t Val_EOL_6068_Language(void) uint8_t Val_EOL_6068_Language(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6068; Res = EOL_Data_Type.DID_6068;
return Res; return Res;
} }
/* 轮胎防盗使能开关*/ /* 轮胎防盗使能开关*/
uint8_t Val_EOL_606D_TireAntiTheft(void) uint8_t Val_EOL_606D_TireAntiTheft(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_606D; Res = EOL_Data_Type.DID_606D;
return Res; return Res;
} }
/* 换挡提示设置*/ /* 换挡提示设置*/
uint8_t Val_EOL_606E_Shift(void) uint8_t Val_EOL_606E_Shift(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_606E; Res = EOL_Data_Type.DID_606E;
return Res; return Res;
} }
/* 油箱容量设置*/ /* 油箱容量设置*/
uint16_t Val_EOL_606F_FuelTank(void) uint16_t Val_EOL_606F_FuelTank(void)
{ {
uint16_t Res; uint16_t Res;
Res = 0u; Res = 0u;
Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u); Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u];
return Res; return Res;
} }
/* HAS 系统开关*/ /* HAS 系统开关*/
uint8_t Val_EOL_6070_HAS(void) uint8_t Val_EOL_6070_HAS(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6070; Res = EOL_Data_Type.DID_6070;
return Res; return Res;
} }
/* ESC 系统开关*/ /* ESC 系统开关*/
uint8_t Val_EOL_6071_ESC(void) uint8_t Val_EOL_6071_ESC(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6071; Res = EOL_Data_Type.DID_6071;
return Res; return Res;
} }
/* 盘式制动磨损报警功能*/ /* 盘式制动磨损报警功能*/
uint8_t Val_EOL_6072_DiscBrake(void) uint8_t Val_EOL_6072_DiscBrake(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6072; Res = EOL_Data_Type.DID_6072;
return Res; return Res;
} }
/*挂车设置*/ /*挂车设置*/
uint8_t Val_EOL_6073_SetRrailer(void) uint8_t Val_EOL_6073_SetRrailer(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6073; Res = EOL_Data_Type.DID_6073;
return Res; return Res;
} }
/*排放配置*/ /*排放配置*/
uint8_t Val_EOL_6074_Emission(void) uint8_t Val_EOL_6074_Emission(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6074; Res = EOL_Data_Type.DID_6074;
return Res; return Res;
} }
/*超速报警车型信号*/ /*超速报警车型信号*/
uint8_t Val_EOL_6075_SpeedAlarm(void) uint8_t Val_EOL_6075_SpeedAlarm(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_6075; Res = EOL_Data_Type.DID_6075;
return Res; return Res;
} }
/* 油箱容量设置*/ /* 油箱容量设置*/
...@@ -207,86 +207,86 @@ uint32_t Val_EOL_6076_FuelTank(void) ...@@ -207,86 +207,86 @@ uint32_t Val_EOL_6076_FuelTank(void)
/*尿素箱容积*/ /*尿素箱容积*/
uint8_t Val_EOL_60C9_Urea(void) uint8_t Val_EOL_60C9_Urea(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60C9; Res = EOL_Data_Type.DID_60C9;
return Res; return Res;
} }
/* 主油箱容积*/ /* 主油箱容积*/
uint16_t Val_EOL_60CA_MainFuelTank(void) uint16_t Val_EOL_60CA_MainFuelTank(void)
{ {
uint16_t Res; uint16_t Res;
Res = 0u; Res = 0u;
Res = Res | (EOL_Data_Type.DID_60CA[0u] << 8u); Res = Res | (EOL_Data_Type.DID_60CA[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CA[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CA[1u];
return Res; return Res;
} }
/* 副油箱容积*/ /* 副油箱容积*/
uint16_t Val_EOL_60CB_AuxiliaryTank(void) uint16_t Val_EOL_60CB_AuxiliaryTank(void)
{ {
uint16_t Res; uint16_t Res;
Res = 0; Res = 0;
Res = Res | (EOL_Data_Type.DID_60CB[0u] << 8u); Res = Res | (EOL_Data_Type.DID_60CB[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CB[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CB[1u];
return Res; return Res;
} }
/*油箱类型*/ /*油箱类型*/
uint8_t Val_EOL_60CC_FuelTankType(void) uint8_t Val_EOL_60CC_FuelTankType(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60CC; Res = EOL_Data_Type.DID_60CC;
return Res; return Res;
} }
/* 发动机类型*/ /* 发动机类型*/
uint16_t Val_EOL_60CD_EngineType(void) uint16_t Val_EOL_60CD_EngineType(void)
{ {
uint16_t Res; uint16_t Res;
Res = 0; Res = 0;
Res = Res | (EOL_Data_Type.DID_60CD[0u] << 8u); Res = Res | (EOL_Data_Type.DID_60CD[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CD[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CD[1u];
return Res; return Res;
} }
/*TCU 类型*/ /*TCU 类型*/
uint8_t Val_EOL_60CE_FuelTankType(void) uint8_t Val_EOL_60CE_FuelTankType(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60CE; Res = EOL_Data_Type.DID_60CE;
return Res; return Res;
} }
/*驱动能源类型*/ /*驱动能源类型*/
uint8_t Val_EOL_60CF_DriveEnergy(void) uint8_t Val_EOL_60CF_DriveEnergy(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60CF; Res = EOL_Data_Type.DID_60CF;
return Res; return Res;
} }
/*驱动形式*/ /*驱动形式*/
uint8_t Val_EOL_60D0_DriveForm(void) uint8_t Val_EOL_60D0_DriveForm(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60D0; Res = EOL_Data_Type.DID_60D0;
return Res; return Res;
} }
/*蓄电池容量*/ /*蓄电池容量*/
uint8_t Val_EOL_60D1_BatteryCapacity(void) uint8_t Val_EOL_60D1_BatteryCapacity(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60D1; Res = EOL_Data_Type.DID_60D1;
return Res; return Res;
} }
/*电池管理系统*/ /*电池管理系统*/
uint8_t Val_EOL_60D2_BatteryManagement(void) uint8_t Val_EOL_60D2_BatteryManagement(void)
{ {
uint8_t Res; uint8_t Res;
Res = EOL_Data_Type.DID_60D2; Res = EOL_Data_Type.DID_60D2;
return Res; return Res;
} }
\ No newline at end of file
...@@ -5,36 +5,36 @@ ...@@ -5,36 +5,36 @@
typedef struct typedef struct
{ {
uint32_t Flag; uint32_t Flag;
uint8_t DID_605C; uint8_t DID_605C;
uint8_t DID_605D; uint8_t DID_605D;
uint8_t DID_605E; uint8_t DID_605E;
uint8_t DID_605F; uint8_t DID_605F;
uint8_t DID_6060; uint8_t DID_6060;
uint8_t DID_6062[2]; uint8_t DID_6062[2];
uint8_t DID_6063; uint8_t DID_6063;
uint8_t DID_6064; uint8_t DID_6064;
uint8_t DID_6068; uint8_t DID_6068;
uint8_t DID_606D; uint8_t DID_606D;
uint8_t DID_606E; uint8_t DID_606E;
uint8_t DID_606F[2]; uint8_t DID_606F[2];
uint8_t DID_6070; uint8_t DID_6070;
uint8_t DID_6071; uint8_t DID_6071;
uint8_t DID_6072; uint8_t DID_6072;
uint8_t DID_6073; uint8_t DID_6073;
uint8_t DID_6074; uint8_t DID_6074;
uint8_t DID_6075; uint8_t DID_6075;
uint8_t DID_6076[3]; uint8_t DID_6076[3];
uint8_t DID_60C9; uint8_t DID_60C9;
uint8_t DID_60CA[2]; uint8_t DID_60CA[2];
uint8_t DID_60CB[2]; uint8_t DID_60CB[2];
uint8_t DID_60CC; uint8_t DID_60CC;
uint8_t DID_60CD[2]; uint8_t DID_60CD[2];
uint8_t DID_60CE; uint8_t DID_60CE;
uint8_t DID_60CF; uint8_t DID_60CF;
uint8_t DID_60D0; uint8_t DID_60D0;
uint8_t DID_60D1; uint8_t DID_60D1;
uint8_t DID_60D2; uint8_t DID_60D2;
} _EOL_Data_Type; } _EOL_Data_Type;
extern _EOL_Data_Type EOL_Data_Type; extern _EOL_Data_Type EOL_Data_Type;
...@@ -98,4 +98,5 @@ uint8_t Val_EOL_60D0_DriveForm(void); ...@@ -98,4 +98,5 @@ uint8_t Val_EOL_60D0_DriveForm(void);
uint8_t Val_EOL_60D1_BatteryCapacity(void); uint8_t Val_EOL_60D1_BatteryCapacity(void);
/*电池管理系统*/ /*电池管理系统*/
uint8_t Val_EOL_60D2_BatteryManagement(void); uint8_t Val_EOL_60D2_BatteryManagement(void);
#endif #endif
\ No newline at end of file
...@@ -28,8 +28,8 @@ const uint8_t Ser22_DID_F18C[20] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x ...@@ -28,8 +28,8 @@ const uint8_t Ser22_DID_F18C[20] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x
/*IC 系列号*/ /*IC 系列号*/
const uint8_t Ser22_DID_F190[17] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}; const uint8_t Ser22_DID_F190[17] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20};
/*车辆标识号 VIN*/ /*车辆标识号 VIN*/
const uint8_t Ser22_DID_F193[6] = {'V', '3', '.', '1', '.', '0'}; /*IC 硬件版本号 SystemSupplierECUHardwareVersionNumberApp*/ const uint8_t Ser22_DID_F193[6] = {'V', '1', '.', '2', '.', '0'}; /*IC 硬件版本号 SystemSupplierECUHardwareVersionNumberApp*/
const uint8_t Ser22_DID_F195[6] = {'V', '3', '.', '1', '.', '0'}; /*IC 逻辑程序软件版本号 SystemSupplierECUSoftwareInformationApp*/ const uint8_t Ser22_DID_F195[6] = {'V', '1', '.', '1', '.', '0'}; /*IC 逻辑程序软件版本号 SystemSupplierECUSoftwareInformationApp*/
DiagMSGUnion DiagMSG; DiagMSGUnion DiagMSG;
DiagFlagUnion DiagFlag; DiagFlagUnion DiagFlag;
......
...@@ -18,7 +18,7 @@ void UDS_Service_19_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_ ...@@ -18,7 +18,7 @@ void UDS_Service_19_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
{ {
NRC = UDS_19Service_NRC7F(); /*19服务会话是否支持验证*/ NRC = UDS_19Service_NRC7F(); /*19服务会话是否支持验证*/
} }
if(NRC == positiveResponse) if (NRC == positiveResponse)
{ {
UDS_19Service_NRC13_MinLengthCheck(); /*19服务最小长度验证*/ UDS_19Service_NRC13_MinLengthCheck(); /*19服务最小长度验证*/
} }
...@@ -45,7 +45,7 @@ void UDS_Service_19_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_ ...@@ -45,7 +45,7 @@ void UDS_Service_19_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
if (NRC == positiveResponse) if (NRC == positiveResponse)
{ {
NRC = UDS_19Service_Sub_NRC31(); /*19服务子功能超出请求范围验证*/ NRC = UDS_19Service_Sub_NRC31(); /*19服务子功能超出请求范围验证*/
} }
if (NRC == positiveResponse) if (NRC == positiveResponse)
{ {
UDS_19Service_Sub(); /*19服务子功能*/ UDS_19Service_Sub(); /*19服务子功能*/
...@@ -99,7 +99,7 @@ void UDS_19Service_Sub(void) ...@@ -99,7 +99,7 @@ void UDS_19Service_Sub(void)
break; break;
/*case ReportDTCSnapshotRecordByDTCNumber: /*case ReportDTCSnapshotRecordByDTCNumber:
UDS_19Service_Sub04(); /*19服务04子功能*/ UDS_19Service_Sub04(); /*19服务04子功能*/
/*break;*/ /*break;*/
case ReportSupportedDTC: case ReportSupportedDTC:
UDS_19Service_Sub0A(); /*19服务0A子功能*/ UDS_19Service_Sub0A(); /*19服务0A子功能*/
break; break;
...@@ -119,7 +119,7 @@ void UDS_19Service_Sub01(void) ...@@ -119,7 +119,7 @@ void UDS_19Service_Sub01(void)
uint16_t DTCCount = 0u; uint16_t DTCCount = 0u;
for (i = 0u; i < sizeof(DTCToDFlashInfo.DTC) / sizeof(DTCUnion); ++i) for (i = 0u; i < sizeof(DTCToDFlashInfo.DTC) / sizeof(DTCUnion); ++i)
{ {
if(DTCList[i][1u]) if (DTCList[i][1u])
{ {
DTCStatus = DTCToDFlashInfo.DTC[i].DTCStatus & DTCMask; DTCStatus = DTCToDFlashInfo.DTC[i].DTCStatus & DTCMask;
if (DTCStatus & DiagMSG.msgData.SidDetail.Data[0]) if (DTCStatus & DiagMSG.msgData.SidDetail.Data[0])
...@@ -146,7 +146,7 @@ void UDS_19Service_Sub02(void) ...@@ -146,7 +146,7 @@ void UDS_19Service_Sub02(void)
uint32_t DTC = 0u; uint32_t DTC = 0u;
for (i = 0u; i < sizeof(DTCToDFlashInfo.DTC) / sizeof(DTCUnion); ++i) for (i = 0u; i < sizeof(DTCToDFlashInfo.DTC) / sizeof(DTCUnion); ++i)
{ {
if(DTCList[i][1u]) if (DTCList[i][1u])
{ {
DTCStatus = DTCToDFlashInfo.DTC[i].DTCStatus & DTCMask; DTCStatus = DTCToDFlashInfo.DTC[i].DTCStatus & DTCMask;
if (DTCStatus & DiagMSG.msgData.SidDetail.Data[0]) if (DTCStatus & DiagMSG.msgData.SidDetail.Data[0])
...@@ -165,7 +165,7 @@ void UDS_19Service_Sub02(void) ...@@ -165,7 +165,7 @@ void UDS_19Service_Sub02(void)
/** /**
*19服务04子功能 *19服务04子功能
void UDS_19Service_Sub04(void) void UDS_19Service_Sub04(void)
{ {
uint8_t DTCcount = 0u; uint8_t DTCcount = 0u;
...@@ -222,7 +222,7 @@ void UDS_19Service_Sub0A(void) ...@@ -222,7 +222,7 @@ void UDS_19Service_Sub0A(void)
DiagMSG.msgData.SidDetail.Data[count++] = DTCMask; DiagMSG.msgData.SidDetail.Data[count++] = DTCMask;
for (i = 0u; i < sizeof(DTCToDFlashInfo.DTC) / sizeof(DTCUnion); ++i) for (i = 0u; i < sizeof(DTCToDFlashInfo.DTC) / sizeof(DTCUnion); ++i)
{ {
if(DTCList[i][1u]) if (DTCList[i][1u])
{ {
DTC = getDTCNumber(i); DTC = getDTCNumber(i);
DTCStatus = DTCToDFlashInfo.DTC[i].DTCStatus & DTCMask; DTCStatus = DTCToDFlashInfo.DTC[i].DTCStatus & DTCMask;
......
...@@ -265,6 +265,8 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] ) ...@@ -265,6 +265,8 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] )
Can_Write(&canMag); Can_Write(&canMag);
//RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data); //RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data);
#else #else
canMag.u8CANLEN = dlc;
Can_Write(&canMag); Can_Write(&canMag);
//RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data); //RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data);
#endif #endif
...@@ -380,7 +382,7 @@ void DoCAN_L_Data_Indication ( uint32_t Identifier, uint8_t dlc, uint8_t pData[] ...@@ -380,7 +382,7 @@ void DoCAN_L_Data_Indication ( uint32_t Identifier, uint8_t dlc, uint8_t pData[]
} }
else else
{ {
LinkRxFIFO.LinkData[LinkRxFIFO.IPtr].Identifier = Identifier; /*装入报文ID*/ LinkRxFIFO.LinkData[LinkRxFIFO.IPtr].Identifier = Identifier; /*装入报文ID*/
for ( i = 0u; i < dlc; i++ ) /*拷贝报文*/ for ( i = 0u; i < dlc; i++ ) /*拷贝报文*/
{ {
LinkRxFIFO.LinkData[LinkRxFIFO.IPtr].Data[i] = pData[i]; LinkRxFIFO.LinkData[LinkRxFIFO.IPtr].Data[i] = pData[i];
......
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