Engine idle, Generating 시퀀스 수정
This commit is contained in:
268
Display.c
268
Display.c
@@ -88,6 +88,8 @@ static void CDrawSimpleLine(Uint16 row, const int8* label);
|
||||
static void CDrawStatusTitle(const int8* title, const int8* pageNumStr);
|
||||
static void CDrawSensorTitle(const int8* title, const int8* pageNumStr);
|
||||
static void CDrawFaultTitle(const int8* title, const int8* pageNumStr);
|
||||
static inline Uint16 CIsWarningBitSet(Uint32 value, Uint16 bitNumber);
|
||||
static inline Uint16 CIsFaultBitSet(Uint32 value, Uint16 bitNumber);
|
||||
|
||||
/* ========================================================================= */
|
||||
/* 5. Global Variables & Structure Initialization (전역 변수 및 구조체 초기화) */
|
||||
@@ -101,16 +103,20 @@ static void CDrawPageTitle(const int8* title, const int8* pageNumStr)
|
||||
{
|
||||
Uint16 uiTitleLen = 0U;
|
||||
|
||||
CCopyStr(OledOperValue.cStrBuff[IDX_OLED_ROW_0], title);
|
||||
CDrawStr(10U, (Uint16)IDX_OLED_LINE_TITLE, OledOperValue.cStrBuff[IDX_OLED_ROW_0]);
|
||||
|
||||
if (title != NULL)
|
||||
{
|
||||
while ((title[uiTitleLen] != ASCII_NULL) && (uiTitleLen < (Uint16)TXT_MAX_LEN))
|
||||
CCopyStr(OledOperValue.cStrBuff[IDX_OLED_ROW_0], title);
|
||||
CDrawStr(10U, (Uint16)IDX_OLED_LINE_TITLE, OledOperValue.cStrBuff[IDX_OLED_ROW_0]);
|
||||
|
||||
for (uiTitleLen = 0U; uiTitleLen < (Uint16)TXT_MAX_LEN; uiTitleLen++)
|
||||
{
|
||||
uiTitleLen++;
|
||||
if (OledOperValue.cStrBuff[IDX_OLED_ROW_0][uiTitleLen] == ASCII_NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CDrawTitleBox(uiTitleLen * 6U);
|
||||
|
||||
if (pageNumStr != NULL)
|
||||
@@ -246,7 +252,7 @@ static void CDrawPageLineTwoFloat(Uint16 row, const int8* label, float32 value1,
|
||||
|
||||
finalBuf[j] = ASCII_NULL; /* '\0' */
|
||||
|
||||
CDrawPageLine(row, label, finalBuf, (const int8*)"A");
|
||||
CDrawPageLine(row, label, (const int8*)finalBuf, (const int8*)"A");
|
||||
}
|
||||
|
||||
static void CDrawPageLineInt(Uint16 row, const int8* label, int32 value, const int8* unitStr)
|
||||
@@ -295,7 +301,7 @@ static void CDrawTwoStatusLine(Uint16 row, const int8* label1, Uint16 status1, c
|
||||
// Status 2
|
||||
CStrncat(OledOperValue.cStrBuff[row], statusStr2, CStrLen(statusStr2));
|
||||
|
||||
CDrawLineText(0U, drawY, OledOperValue.cStrBuff[row]);
|
||||
CDrawLineText(0U, drawY, (const int8*)OledOperValue.cStrBuff[row]);
|
||||
}
|
||||
|
||||
static void CPageApu1(void)
|
||||
@@ -350,7 +356,7 @@ static void CPageApu1(void)
|
||||
CStrncat(OledOperValue.cStrBuff[IDX_OLED_ROW_4], cTemp, CStrLen(cTemp));
|
||||
}
|
||||
|
||||
CDrawLineText(0U, (Uint16)IDX_OLED_LINE_4, OledOperValue.cStrBuff[IDX_OLED_ROW_4]);
|
||||
CDrawLineText(0U, (Uint16)IDX_OLED_LINE_4, (const int8*)OledOperValue.cStrBuff[IDX_OLED_ROW_4]);
|
||||
|
||||
uiDummyRun = (uiDummyRun == 1U) ? 0U : uiDummyRun;
|
||||
}
|
||||
@@ -542,16 +548,16 @@ static void CPageWarning1(void)
|
||||
CDrawPageTitle("Warning", "1/2");
|
||||
|
||||
// LINE 1
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "PCBOT:", CIsBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_PCB_OT), "FETOT:", CIsBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_FET_OT));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "PCBOT:", CIsWarningBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_PCB_OT), "FETOT:", CIsWarningBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_FET_OT));
|
||||
|
||||
// LINE 2
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "GEOT1:", CIsBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_WINDING1_OH), "GEOT2:", CIsBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_WINDING2_OH));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "GEOT1:", CIsWarningBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_WINDING1_OH), "GEOT2:", CIsWarningBitSet((Uint32)Rx210.GcuWarning, (Uint16)IDX_WARNING_GCU_WINDING2_OH));
|
||||
|
||||
// LINE 3
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "ENGOT:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_ENGINE_OH), "LOILP:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_LO_OIL_PRESS));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "ENGOT:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_ENGINE_OH), "LOILP:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_LO_OIL_PRESS));
|
||||
|
||||
// LINE 4
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "INTOT:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_INTAKE_OH), "INTLP:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_INTAKE_LO_PRESS));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "INTOT:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_INTAKE_OH), "INTLP:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_INTAKE_LO_PRESS));
|
||||
}
|
||||
|
||||
static void CPageWarning2(void)
|
||||
@@ -560,10 +566,10 @@ static void CPageWarning2(void)
|
||||
CDrawPageTitle("Warning", "2/2");
|
||||
|
||||
/* LINE 1 */
|
||||
CDrawTwoStatusLine((Uint16)IDX_OLED_ROW_1, (const int8*)"ENGLT:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_ENGINE_LO_TEMP), (const int8*)"ENGSF:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_ENGINE_SENSOR));
|
||||
CDrawTwoStatusLine((Uint16)IDX_OLED_ROW_1, (const int8*)"ENGLT:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_ENGINE_LO_TEMP), (const int8*)"ENGSF:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_ENGINE_SENSOR));
|
||||
|
||||
/* LINE 2 */
|
||||
CDrawPageLineStatus((Uint16)IDX_OLED_ROW_2, (const int8*)"DEFAC:", CIsBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_DEFAULT_ACTIVE));
|
||||
CDrawPageLineStatus((Uint16)IDX_OLED_ROW_2, (const int8*)"DEFAC:", CIsWarningBitSet((Uint32)Rx310.EcuWarning, (Uint16)IDX_WARNING_ECU_DEFAULT_ACTIVE));
|
||||
}
|
||||
|
||||
static void CPageFault1(void)
|
||||
@@ -572,16 +578,16 @@ static void CPageFault1(void)
|
||||
CDrawFaultTitle("APU Fault", "1/7");
|
||||
|
||||
// LINE 1
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "CARCT:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_CAR_COMM), "GCUCT:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GCU_COMM));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "CARCT:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_CAR_COMM), "GCUCT:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GCU_COMM));
|
||||
|
||||
// LINE 2
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "ECUCT:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ECU_COMM), "RPMER:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_RPM_ERR));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "ECUCT:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ECU_COMM), "RPMER:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_RPM_ERR));
|
||||
|
||||
// LINE 3
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "EHLOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ENGINE_HEAT_OC), "GPLOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_OC));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "EHLOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ENGINE_HEAT_OC), "GPLOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_OC));
|
||||
|
||||
// LINE 4
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "SOLOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_OC), "FPLOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_OC));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "SOLOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_OC), "FPLOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_OC));
|
||||
}
|
||||
|
||||
static void CPageFault2(void)
|
||||
@@ -590,16 +596,16 @@ static void CPageFault2(void)
|
||||
CDrawFaultTitle("APU Fault", "2/7");
|
||||
|
||||
// LINE 1
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "CPLOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_OC), "F1LOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_OC));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "CPLOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_OC), "F1LOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_OC));
|
||||
|
||||
// LINE 2
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "F2LOC:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_OC), "EHVUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ENGINE_HEAT_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "F2LOC:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_OC), "EHVUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ENGINE_HEAT_UV));
|
||||
|
||||
// LINE 3
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "EHVOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ENGINE_HEAT_OV), "GPVUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "EHVOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_ENGINE_HEAT_OV), "GPVUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_UV));
|
||||
|
||||
// LINE 4
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "GPVOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_OV), "SLVUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "GPVOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_OV), "SLVUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_UV));
|
||||
}
|
||||
|
||||
static void CPageFault3(void)
|
||||
@@ -608,16 +614,16 @@ static void CPageFault3(void)
|
||||
CDrawFaultTitle("APU Fault", "3/7");
|
||||
|
||||
// LINE 1
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "SLVOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_OV), "FPVUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_1, "SLVOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_OV), "FPVUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_UV));
|
||||
|
||||
// LINE 2
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "FPVOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_OV), "CPVUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_2, "FPVOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_OV), "CPVUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_UV));
|
||||
|
||||
// LINE 3
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "CPVOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_OV), "F1VUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_3, "CPVOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_OV), "F1VUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_UV));
|
||||
|
||||
// LINE 4
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "F1VOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_OV), "F2VUV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_UV));
|
||||
CDrawTwoStatusLine(IDX_OLED_ROW_4, "F1VOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_OV), "F2VUV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_UV));
|
||||
}
|
||||
|
||||
static void CPageFault4(void)
|
||||
@@ -626,7 +632,7 @@ static void CPageFault4(void)
|
||||
CDrawFaultTitle((const int8*)"APU Fault", (const int8*)"4/7");
|
||||
|
||||
/* LINE 1: */
|
||||
CDrawFaultStatusLine((Uint16)IDX_OLED_ROW_1, (const int8*)"F2VOV:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_OV), (const int8*)"CRKFL:", CIsBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_CRANKING_FAIL));
|
||||
CDrawFaultStatusLine((Uint16)IDX_OLED_ROW_1, (const int8*)"F2VOV:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_OV), (const int8*)"CRKFL:", CIsFaultBitSet(ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_CRANKING_FAIL));
|
||||
}
|
||||
|
||||
static void CPageFault5(void)
|
||||
@@ -635,16 +641,16 @@ static void CPageFault5(void)
|
||||
CDrawFaultTitle("GCU Fault", "5/7");
|
||||
|
||||
// LINE 1
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_1, "HTRIP:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_HWTRIP), "HIGBT:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_HWIGBT));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_1, "HTRIP:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_HWTRIP), "HIGBT:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_HWIGBT));
|
||||
|
||||
// LINE 2
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_2, "HDCOV:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_HW_DC), "GNOCU:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OCU));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_2, "HDCOV:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_HW_DC), "GNOCU:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OCU));
|
||||
|
||||
// LINE 3
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_3, "GNOCV:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OCW), "GNOCW:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OCW));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_3, "GNOCV:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OCW), "GNOCW:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OCW));
|
||||
|
||||
// LINE 4
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_4, "SDCOV:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_DC_OV), "SDCOC:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_DC_OC));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_4, "SDCOV:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_DC_OV), "SDCOC:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_DC_OC));
|
||||
}
|
||||
|
||||
static void CPageFault6(void)
|
||||
@@ -653,16 +659,16 @@ static void CPageFault6(void)
|
||||
CDrawFaultTitle("GCU Fault", "6/7");
|
||||
|
||||
// LINE 1
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_1, "SMOOC:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_CRANK_OC), "PCBOT:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_PCB_OT));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_1, "SMOOC:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_CRANK_OC), "PCBOT:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_PCB_OT));
|
||||
|
||||
// LINE 2
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_2, "FETOT:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_FET_OT), "GW1OT:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_WINDING1_OH));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_2, "FETOT:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_FET_OT), "GW1OT:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_WINDING1_OH));
|
||||
|
||||
// LINE 3
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_3, "GW2OT:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_WINDING2_OH), "GENOS:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OS));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_3, "GW2OT:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_WINDING2_OH), "GENOS:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_GEN_OS));
|
||||
|
||||
// LINE 4
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_4, "RSICF:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_RES_IC), "RSPRT:", CIsBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_RES_PRTY));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_4, "RSICF:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_RES_IC), "RSPRT:", CIsFaultBitSet(ulGcuTotalAlarm, (Uint16)IDX_FAULT_GCU_RES_PRTY));
|
||||
}
|
||||
|
||||
static void CPageFault7(void)
|
||||
@@ -671,13 +677,13 @@ static void CPageFault7(void)
|
||||
CDrawFaultTitle("ECU Fault", "7/7");
|
||||
|
||||
// LINE 1
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_1, "OILMS:", CIsBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_OIL_MS), "INTOT:", CIsBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_INT_OH));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_1, "OILMS:", CIsFaultBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_OIL_MS), "INTOT:", CIsFaultBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_INT_OH));
|
||||
|
||||
// LINE 2
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_2, "ENGOH:", CIsBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_ENG_OH), "ACTUA:", CIsBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_ACTUATOR));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_2, "ENGOH:", CIsFaultBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_ENG_OH), "ACTUA:", CIsFaultBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_ACTUATOR));
|
||||
|
||||
// LINE 3
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_3, "RPMSG:", CIsBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_RPM_SIG), "ENGSF:", CIsBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_ENG_SF));
|
||||
CDrawFaultStatusLine(IDX_OLED_ROW_3, "RPMSG:", CIsFaultBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_RPM_SIG), "ENGSF:", CIsFaultBitSet(ulEcuTotalAlarm, (Uint16)IDX_FAULT_ECU_ENG_SF));
|
||||
}
|
||||
|
||||
static void CDrawAlarmBox(void)
|
||||
@@ -730,7 +736,7 @@ static void CDrawPostStatusLine(Uint16 row, const int8* l1, Uint16 s1, const int
|
||||
}
|
||||
else
|
||||
{
|
||||
CTextAlign(OledOperValue.cAlignBuffer, OledOperValue.cStrBuff[row]);
|
||||
CTextAlign(OledOperValue.cAlignBuffer, (const int8*)OledOperValue.cStrBuff[row]);
|
||||
pPrintStr = OledOperValue.cAlignBuffer;
|
||||
}
|
||||
|
||||
@@ -835,17 +841,12 @@ static void CPageMaintenance(void)
|
||||
|
||||
// LINE 1
|
||||
CLineFocus((OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_1) ? 1U : 0U);
|
||||
cTemp = (GeneralOperValue.Maintenance.ManualCranking > 0U) ? (int8*)"ON " : (int8*)"OFF";
|
||||
CDrawPageLine(IDX_OLED_ROW_1, "Manual Cranking ", cTemp, NULL);
|
||||
cTemp = (GeneralOperValue.Maintenance.LampTest > 0U) ? (int8*)"ON " : (int8*)"OFF";
|
||||
CDrawPageLine(IDX_OLED_ROW_1, "Lamp Test ", cTemp, NULL);
|
||||
|
||||
// LINE 2
|
||||
CLineFocus((OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_2) ? 1U : 0U);
|
||||
cTemp = (GeneralOperValue.Maintenance.LampTest > 0U) ? (int8*)"ON " : (int8*)"OFF";
|
||||
CDrawPageLine(IDX_OLED_ROW_2, "Lamp Test ", cTemp, NULL);
|
||||
|
||||
// LINE 3
|
||||
CLineFocus((OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_3) ? 1U : 0U);
|
||||
CDrawPageLine(IDX_OLED_ROW_3, "Switch Test ", NULL, NULL);
|
||||
CDrawPageLine(IDX_OLED_ROW_2, "Switch Test ", NULL, NULL);
|
||||
}
|
||||
|
||||
static void CPageVersion(void)
|
||||
@@ -859,21 +860,21 @@ static void CPageVersion(void)
|
||||
|
||||
// LINE 2
|
||||
CMakeVersionString(cTemp, (int16)FIRMWARE_VERSION_MAJOR, (int16)FIRMWARE_VERSION_MINOR, (int16)FIRMWARE_VERSION_PATCH);
|
||||
CDrawPageLine(IDX_OLED_ROW_2, " DCU : ", cTemp, NULL);
|
||||
CDrawPageLine(IDX_OLED_ROW_2, " DCU : ", (const int8*)cTemp, NULL);
|
||||
|
||||
// LINE 3
|
||||
CMakeVersionString(cTemp, (int16)Rx200.VersionMajor, (int16)Rx200.VersionMinor, (int16)Rx200.VersionPatch);
|
||||
CDrawPageLine(IDX_OLED_ROW_3, " GCU : ", cTemp, NULL);
|
||||
CDrawPageLine(IDX_OLED_ROW_3, " GCU : ", (const int8*)cTemp, NULL);
|
||||
|
||||
// LINE 4
|
||||
CMakeVersionString(cTemp, (int16)Rx300.VersionMajor, (int16)Rx300.VersionMinor, (int16)Rx300.VersionPatch);
|
||||
CDrawPageLine(IDX_OLED_ROW_4, " ECU : ", cTemp, NULL);
|
||||
CDrawPageLine(IDX_OLED_ROW_4, " ECU : ", (const int8*)cTemp, NULL);
|
||||
}
|
||||
|
||||
static void CDrawCenteredLine(Uint16 y, const int8* text)
|
||||
{
|
||||
CStrncpy(OledOperValue.cStrBuff[IDX_OLED_ROW_0], text, CStrLen(text));
|
||||
CTextAlign(OledOperValue.cAlignBuffer, OledOperValue.cStrBuff[IDX_OLED_ROW_0]);
|
||||
CTextAlign(OledOperValue.cAlignBuffer, (const int8*)OledOperValue.cStrBuff[IDX_OLED_ROW_0]);
|
||||
CDrawStr(0U, y, OledOperValue.cAlignBuffer);
|
||||
}
|
||||
|
||||
@@ -929,7 +930,7 @@ static void CDrawKeyStatusLine(Uint16 row, const int8* l1, Uint16 s1, const int8
|
||||
}
|
||||
}
|
||||
|
||||
CDrawLineText(0U, y, OledOperValue.cStrBuff[row]);
|
||||
CDrawLineText(0U, y, (const int8*)OledOperValue.cStrBuff[row]);
|
||||
}
|
||||
|
||||
static void CPageKeyTest(void)
|
||||
@@ -1074,21 +1075,21 @@ static void CInitProgress(void)
|
||||
{
|
||||
OledOperValue.Color.TxtColor = 1U;
|
||||
|
||||
CTextAlign(OledOperValue.cAlignBuffer, "K2 APU");
|
||||
CTextAlign(OledOperValue.cAlignBuffer, (const int8*)"K2 APU");
|
||||
CDrawStr(0, (Uint16)IDX_OLED_LINE_TITLE, OledOperValue.cAlignBuffer);
|
||||
|
||||
CDrawBox(OLED_LOAD_PROGRESS_X, OLED_LOAD_PROGRESS_Y, OLED_LOAD_PROGRESS_W, OLED_LOAD_PROGRESS_H);
|
||||
|
||||
(void)memset(OledOperValue.cAlignBuffer, 0, sizeof(char) * TXT_MAX_LEN);
|
||||
|
||||
CTextAlign(OledOperValue.cAlignBuffer, "Initializing System");
|
||||
CTextAlign(OledOperValue.cAlignBuffer, (const int8*)"Initializing System");
|
||||
CDrawStr(0, (Uint16)IDX_OLED_LINE_2, OledOperValue.cAlignBuffer);
|
||||
}
|
||||
|
||||
static void CAddLineIndent(int8 *buffer, const int8 *str)
|
||||
{
|
||||
Uint16 i;
|
||||
Uint16 uiSpaceNeeded = ((Uint16)TXT_MAX_LEN - 1U) - CStrLen(buffer) - CStrLen(str);
|
||||
Uint16 uiSpaceNeeded = ((Uint16)TXT_MAX_LEN - 1U) - CStrLen((const int8*)buffer) - CStrLen((const int8*)str);
|
||||
|
||||
if (uiSpaceNeeded > 0U)
|
||||
{
|
||||
@@ -1171,7 +1172,7 @@ static void CDrawLine(Uint16 x1, Uint16 y1, Uint16 x2, Uint16 y2)
|
||||
int16 err = 0;
|
||||
int16 ystep = 0;
|
||||
|
||||
dx = uiX2 - uiX1;
|
||||
dx = (uiX1 > uiX2) ? (uiX1 - uiX2) : (uiX2 - uiX1);
|
||||
dy = (uiY1 > uiY2) ? (uiY1 - uiY2) : (uiY2 - uiY1);
|
||||
|
||||
if (dy > dx)
|
||||
@@ -1322,23 +1323,35 @@ void CInitXintf(void)
|
||||
static void CDrawStr(Uint16 x, Uint16 y, const int8* str)
|
||||
{
|
||||
Uint16 i = 0U;
|
||||
Uint16 uiHighByte = 0U; /* 2바이트 문자 조합용 임시 변수 */
|
||||
Uint16 uiLowByte = 0U;
|
||||
|
||||
if (str != NULL)
|
||||
{
|
||||
/* 널 문자를 만나거나 최대 한계에 도달할 때까지 그리기 수행 */
|
||||
while ((str[i] != ASCII_NULL) && (i < (Uint16)TXT_MAX_LEN))
|
||||
while ((i < (Uint16)TXT_MAX_LEN) && (str[i] != ASCII_NULL))
|
||||
{
|
||||
if (((Uint8)str[i] & 0x80U) != 0U)
|
||||
{
|
||||
CDrawChar(x, y, (Uint16)(((Uint16)str[i] << 8U) | (Uint16)str[i + 1U]), TXT_TYPE_ETC);
|
||||
uiHighByte = (Uint16)str[i];
|
||||
i++;
|
||||
x += (TXT_ENG_WIDTH * 2U);
|
||||
|
||||
if (i < (Uint16)TXT_MAX_LEN)
|
||||
{
|
||||
uiLowByte = (Uint16)str[i];
|
||||
CDrawChar(x, y, (Uint16)((uiHighByte << 8U) | uiLowByte), TXT_TYPE_ETC);
|
||||
x += (TXT_ENG_WIDTH * 2U);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CDrawChar(x, y, (Uint16)str[i], TXT_TYPE_ENG);
|
||||
x += TXT_ENG_WIDTH;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -1505,50 +1518,62 @@ static Uint16 CStrLen(const int8 *s)
|
||||
}
|
||||
static void CStrncpy(int8 *pTarget, const int8 *pSource, Uint16 Size)
|
||||
{
|
||||
Uint16 i;
|
||||
Uint16 i = 0U;
|
||||
Uint16 uiSafeLimit;
|
||||
int8 *pCurTarget = pTarget;
|
||||
|
||||
uiSafeLimit = (Size >= TXT_MAX_LEN) ? (TXT_MAX_LEN - 1U) : Size;
|
||||
const int8 *pCurSource = pSource;
|
||||
|
||||
//for (i = 0U; i < uiSafeLimit; i++)
|
||||
for (i = 0U; (i < uiSafeLimit) && (i < (TXT_MAX_LEN - 1U)); i++)
|
||||
if ((pTarget != NULL) && (pSource != NULL))
|
||||
{
|
||||
pTarget[i] = pSource[i];
|
||||
}
|
||||
uiSafeLimit = (Size >= (Uint16)TXT_MAX_LEN) ? ((Uint16)TXT_MAX_LEN - 1U) : Size;
|
||||
|
||||
pTarget[i] = ASCII_NULL;
|
||||
while ((i < (Uint16)(TXT_MAX_LEN - 1U)) && (i < uiSafeLimit) && (*pCurSource != ASCII_NULL))
|
||||
{
|
||||
*pCurTarget = *pCurSource;
|
||||
|
||||
pCurTarget++;
|
||||
pCurSource++;
|
||||
i++;
|
||||
}
|
||||
|
||||
*pCurTarget = ASCII_NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void CStrncat(int8 *pTarget, const int8 *pSource, Uint16 Size)
|
||||
{
|
||||
Uint16 i;
|
||||
Uint16 uiTargetSize;
|
||||
Uint16 i = 0U; /* pSource를 읽을 인덱스 */
|
||||
Uint16 uiTargetSize = 0U;
|
||||
Uint16 uiRemainSpace;
|
||||
Uint16 uiSafeLimit;
|
||||
|
||||
uiTargetSize = 0U;
|
||||
int8 *pCurTarget = pTarget;
|
||||
|
||||
if (pTarget != NULL)
|
||||
if ((pTarget != NULL) && (pSource != NULL))
|
||||
{
|
||||
/* 함수를 부르지 않고, 해당 위치에서 직접 널 문자를 찾을 때까지 카운트 (FUNCR 증가 없음) */
|
||||
while (pTarget[uiTargetSize] != ASCII_NULL)
|
||||
while ((uiTargetSize < (Uint16)TXT_MAX_LEN) && (*pCurTarget != ASCII_NULL))
|
||||
{
|
||||
uiTargetSize++;
|
||||
pCurTarget++; /* 포인터 주소를 1바이트씩 직접 전진 */
|
||||
}
|
||||
}
|
||||
|
||||
if (uiTargetSize < (Uint16)(TXT_MAX_LEN - 1U))
|
||||
{
|
||||
uiRemainSpace = (Uint16)((Uint16)(TXT_MAX_LEN - 1U) - uiTargetSize);
|
||||
|
||||
uiSafeLimit = (Size >= uiRemainSpace) ? uiRemainSpace : Size;
|
||||
|
||||
for (i = 0U; (i < uiSafeLimit) && ((uiTargetSize + i) < (Uint16)(TXT_MAX_LEN - 1U)); i++)
|
||||
if (uiTargetSize < (Uint16)(TXT_MAX_LEN - 1U))
|
||||
{
|
||||
pTarget[uiTargetSize + i] = pSource[i];
|
||||
}
|
||||
uiRemainSpace = (Uint16)((Uint16)(TXT_MAX_LEN - 1U) - uiTargetSize);
|
||||
uiSafeLimit = (Size >= uiRemainSpace) ? uiRemainSpace : Size;
|
||||
|
||||
pTarget[uiTargetSize + i] = ASCII_NULL;
|
||||
while ((i < uiSafeLimit) && (uiTargetSize < (Uint16)(TXT_MAX_LEN - 1U)) && (pSource[i] != ASCII_NULL))
|
||||
{
|
||||
*pCurTarget = pSource[i];
|
||||
|
||||
pCurTarget++;
|
||||
uiTargetSize++;
|
||||
i++;
|
||||
}
|
||||
|
||||
*pCurTarget = ASCII_NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1560,13 +1585,12 @@ static void CDecToString(int16 Data, int8 *Array, Uint16 ArrayLen)
|
||||
Uint16 x = 0U; // cTmp에 추출된 숫자의 개수 (자릿수 카운트)
|
||||
Uint16 y = 0U; // 최종 문자열 Array에 값을 써넣을 인덱스
|
||||
|
||||
int32 lData = (int32)Data * 10;
|
||||
Uint16 uiSafeLen = (ArrayLen > (Uint16)TXT_MAX_LEN) ? (Uint16)TXT_MAX_LEN : ArrayLen;
|
||||
|
||||
// 추출된 각 자리의 숫자를 임시로 저장할 버퍼 (역순으로 저장됨)
|
||||
int32 lData = (int32)Data * 10;
|
||||
int8 cTmp[6] = { ASCII_NULL, ASCII_NULL, ASCII_NULL, ASCII_NULL, ASCII_NULL, ASCII_NULL };
|
||||
|
||||
// 출력할 배열 전체를 공백(ASCII 32 = ' ')으로 초기화
|
||||
for (i = 0U; (i < ArrayLen) && (i < TXT_MAX_LEN); i++)
|
||||
for (i = 0U; (i < uiSafeLen) && (i < (Uint16)TXT_MAX_LEN); i++)
|
||||
{
|
||||
Array[i] = ASCII_BLANK;
|
||||
}
|
||||
@@ -1589,9 +1613,8 @@ static void CDecToString(int16 Data, int8 *Array, Uint16 ArrayLen)
|
||||
// 추출한 숫자를 최종 배열에 배치 (우측 정렬 적용)
|
||||
if (x == 0U)
|
||||
{
|
||||
// 수치가 0인 경우, 지정된 고정 위치(y=3)에 '0' 표시
|
||||
y = 4U;
|
||||
if (y < ArrayLen)
|
||||
if (y < uiSafeLen)
|
||||
{
|
||||
Array[y] = ASCII_0;
|
||||
y++;
|
||||
@@ -1601,14 +1624,11 @@ static void CDecToString(int16 Data, int8 *Array, Uint16 ArrayLen)
|
||||
{
|
||||
if (x > 0U)
|
||||
{
|
||||
// 앞서 '* 10'으로 부풀리며 추가되었던 최하위 숫자(0)를 버리기 위해 인덱스를 1 감소시킴
|
||||
x = (Uint16)(x - 1U);
|
||||
}
|
||||
|
||||
// 전체 폭(5칸 기준)에서 자릿수를 빼서, 문자가 쓰이기 시작할 시작 위치(y) 계산
|
||||
y = (x <= 5U) ? (Uint16)(5U - x) : 0U;
|
||||
|
||||
// 부호('-')가 들어갈 자리 지정 (숫자가 시작되는 곳의 바로 앞 칸)
|
||||
if (y < 1U)
|
||||
{
|
||||
uiSignLocate = 0U;
|
||||
@@ -1622,23 +1642,22 @@ static void CDecToString(int16 Data, int8 *Array, Uint16 ArrayLen)
|
||||
uiSignLocate = 0U;
|
||||
}
|
||||
|
||||
// 계산된 부호 위치에 '-' 또는 공백 삽입
|
||||
if (uiSign == 1U)
|
||||
{
|
||||
if ((uiSignLocate > 0U) && (uiSignLocate < 6U) && (uiSignLocate < ArrayLen))
|
||||
if ((uiSignLocate > 0U) && (uiSignLocate < 6U) && (uiSignLocate < uiSafeLen))
|
||||
{
|
||||
Array[uiSignLocate] = ASCII_MINUS; // '-'
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (uiSignLocate < ArrayLen)
|
||||
if (uiSignLocate < uiSafeLen)
|
||||
{
|
||||
Array[uiSignLocate] = ASCII_BLANK; // ' '
|
||||
}
|
||||
}
|
||||
|
||||
while ((x > 0U) && (x < 6U) && (y < ArrayLen) && (y < TXT_MAX_LEN))
|
||||
while ((x > 0U) && (x < 6U) && (y < uiSafeLen))
|
||||
{
|
||||
Array[y] = cTmp[x];
|
||||
y++;
|
||||
@@ -1646,23 +1665,29 @@ static void CDecToString(int16 Data, int8 *Array, Uint16 ArrayLen)
|
||||
}
|
||||
}
|
||||
|
||||
// 문자열의 끝을 알리는 널(NULL, ASCII 0) 문자 삽입하여 문자열 완성
|
||||
if ((y < ArrayLen) && (y < TXT_MAX_LEN))
|
||||
if (y < uiSafeLen)
|
||||
{
|
||||
Array[y] = ASCII_NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ArrayLen > 0U)
|
||||
if (uiSafeLen > 0U)
|
||||
{
|
||||
Array[(Uint16)(ArrayLen - 1U)] = ASCII_NULL;
|
||||
y = (Uint16)(uiSafeLen - 1U);
|
||||
|
||||
if (y < ArrayLen)
|
||||
{
|
||||
Array[y] = ASCII_NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void CFloatToString(float32 Data, int8 *Array, Uint16 ArrayLen)
|
||||
{
|
||||
int32 iTemp; // 음수 처리를 위해 signed int32 사용 (범위 확보)
|
||||
float32 fData = Data;
|
||||
|
||||
int32 iTemp; // 음수 처리
|
||||
Uint16 isNegative = 0U; // 음수 여부 플래그
|
||||
int8 cTmp[10]; // 임시 변환 버퍼
|
||||
Uint16 len = 0U; // 현재 변환된 문자 길이
|
||||
@@ -1675,14 +1700,14 @@ static void CFloatToString(float32 Data, int8 *Array, Uint16 ArrayLen)
|
||||
}
|
||||
|
||||
// 음수 확인 및 양수 변환
|
||||
if (Data < 0.0F)
|
||||
if (fData < 0.0F)
|
||||
{
|
||||
isNegative = 1U;
|
||||
Data = -Data; // 절대값으로 변환
|
||||
fData = -fData; // 절대값으로 변환
|
||||
}
|
||||
|
||||
// 소수점 1자리 정수로 변환 (예: 12.34 -> 123.4 -> 123)
|
||||
iTemp = (int32)((float32)((Data * 10.0F) + 0.5F));
|
||||
iTemp = (int32)((float32)((fData * 10.0F) + 0.5F));
|
||||
|
||||
// 소수점 첫째 자리 추출
|
||||
cTmp[len++] = (int8)((int8)(iTemp % 10) + ASCII_0); // '0'
|
||||
@@ -1713,19 +1738,18 @@ static void CFloatToString(float32 Data, int8 *Array, Uint16 ArrayLen)
|
||||
|
||||
// 최종 배열에 복사 (우측 정렬, 총 6자리 제한)
|
||||
|
||||
// 만약 변환된 길이가 6자리를 넘으면 6자리로 자름
|
||||
if (len > 6U)
|
||||
{
|
||||
len = 6U;
|
||||
}
|
||||
|
||||
if (ArrayLen >= 7U) // ArrayLen 보호
|
||||
{
|
||||
startIdx = 6U - len;
|
||||
|
||||
for (i = 0U; i < len; i++)
|
||||
if (len > 0U)
|
||||
{
|
||||
Array[startIdx + i] = cTmp[len - 1U - i]; // cTmp는 역순이므로 len-1-i 로 접근
|
||||
Uint16 uiReadIdx = len; /* cTmp 배열을 역순으로 읽기 위한 전용 인덱스 */
|
||||
startIdx = 6U - len;
|
||||
|
||||
for (i = 0U; i < len; i++)
|
||||
{
|
||||
uiReadIdx--;
|
||||
Array[startIdx + i] = cTmp[uiReadIdx];
|
||||
}
|
||||
}
|
||||
|
||||
Array[6] = ASCII_NULL;
|
||||
@@ -1977,3 +2001,17 @@ static void CDrawFaultTitle(const int8* title, const int8* pageNumStr)
|
||||
{
|
||||
CDrawPageTitle(title, pageNumStr);
|
||||
}
|
||||
|
||||
static inline Uint16 CIsWarningBitSet(Uint32 value, Uint16 bitNumber)
|
||||
{
|
||||
Uint32 ulMask = 1UL << (Uint32)bitNumber;
|
||||
|
||||
return (((value & ulMask) != 0UL) ? 1U : 0U);
|
||||
}
|
||||
|
||||
static inline Uint16 CIsFaultBitSet(Uint32 value, Uint16 bitNumber)
|
||||
{
|
||||
Uint32 ulMask = 1UL << (Uint32)bitNumber;
|
||||
|
||||
return (((value & ulMask) != 0UL) ? 1U : 0U);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user