feat(srcData):Use rand data for cluster display change

This commit is contained in:
2026-04-30 19:11:11 +08:00
parent d5b56baefc
commit fc2ab01548
5 changed files with 46 additions and 18 deletions

Binary file not shown.

View File

@@ -358,16 +358,17 @@ MbIicApi Un08 Indicator[8]; /*指示灯状态*/
#define IND_TURN_RIGHT Indicator[6].sbit.b7 /*右转向灯指示灯*/ #define IND_TURN_RIGHT Indicator[6].sbit.b7 /*右转向灯指示灯*/
#define IND_AUTO_PILOT Indicator[7].sbit02.b01 /*自动驾驶指示灯*/ #define IND_AUTO_PILOT Indicator[7].sbit02.b01 /*自动驾驶指示灯*/
#define IND_READY Indicator[7].sbit.b2 /*READY指示灯*/ #define IND_READY 1 //Indicator[7].sbit.b2 /*READY指示灯*/
#define IND_AC_HIGH_COST Indicator[7].sbit.b3 /*空调能耗高*/ #define IND_AC_HIGH_COST Indicator[7].sbit.b3 /*空调能耗高*/
#define IND_BAT_COLD Indicator[7].sbit.b4 /*电池温度低*/ #define IND_BAT_COLD Indicator[7].sbit.b4 /*电池温度低*/
#define IND_OTA_SILENT_MODE Indicator[7].sbit.b5 /*OTA静默模式*/ #define IND_OTA_SILENT_MODE 0 // Indicator[7].sbit.b5 /*OTA静默模式*/
#define IND_CHARGE_CONN Indicator[7].sbit.b6 /*充电枪已连接指示灯*/ #define IND_CHARGE_CONN 0 //Indicator[7].sbit.b6 /*充电枪已连接指示灯*/
#define IND_TIRED_DRIVING Indicator[7].sbit.b7 /*分神提醒二级边框闪烁标志*/ #define IND_TIRED_DRIVING Indicator[7].sbit.b7 /*分神提醒二级边框闪烁标志*/
/*档位*/ /*档位*/
enum enum
{ {
GEAR_INVISIBLE = 0, GEAR_INVISIBLE = 0,
GEAR_D = 1, GEAR_D = 1,
GEAR_N = 2, GEAR_N = 2,
@@ -432,6 +433,7 @@ enum
/*工作模式*/ /*工作模式*/
enum enum
{ {
WORK_MODE_OFF = 1, WORK_MODE_OFF = 1,
WORK_MODE_ON = 2, WORK_MODE_ON = 2,
}; };

View File

@@ -7,12 +7,12 @@
MbIicApi Un08 srcDataBuf[ID_FRAME_R_NUM][I2C_FRAMELEN-1]; MbIicApi Un08 srcDataBuf[ID_FRAME_R_NUM][I2C_FRAMELEN-1];
MbIicApi Un08 dstDataBuf[ID_FRAME_W_NUM][I2C_FRAMELEN-1]; MbIicApi Un08 dstDataBuf[ID_FRAME_W_NUM][I2C_FRAMELEN-1];
#define DATA_SPEED srcDataBuf[ID_FRAME_R_0x00][0].value /*车速*/ #define DATA_SPEED 100// srcDataBuf[ID_FRAME_R_0x00][0].value /*车速*/
#define DATA_BATTERY srcDataBuf[ID_FRAME_R_0x00][1].sbit07.b06 /*电量*/ #define DATA_BATTERY srcDataBuf[ID_FRAME_R_0x00][1].sbit07.b06 /*电量*/
#define DATA_IND_MUTE srcDataBuf[ID_FRAME_R_0x00][1].sbit07.b7 /*静音*/ #define DATA_IND_MUTE srcDataBuf[ID_FRAME_R_0x00][1].sbit07.b7 /*静音*/
#define DATA_SPEED_WARN srcDataBuf[ID_FRAME_R_0x00][2].value /*报警车速*/ #define DATA_SPEED_WARN srcDataBuf[ID_FRAME_R_0x00][2].value /*报警车速*/
#define DATA_POWER srcDataBuf[ID_FRAME_R_0x00][3].value /*功率*/ #define DATA_POWER srcDataBuf[ID_FRAME_R_0x00][3].value /*功率*/
#define DATA_GEAR srcDataBuf[ID_FRAME_R_0x00][4].sbit03.b02 /*档位*/ #define DATA_GEAR GEAR_D // srcDataBuf[ID_FRAME_R_0x00][4].sbit03.b02 /*档位*/
#define DATA_FONT_COLLOSION srcDataBuf[ID_FRAME_R_0x00][4].sbit.b3 /*前向碰撞预防系统故障灯*/ #define DATA_FONT_COLLOSION srcDataBuf[ID_FRAME_R_0x00][4].sbit.b3 /*前向碰撞预防系统故障灯*/
#define DATA_LANE_WARNING srcDataBuf[ID_FRAME_R_0x00][4].sbit.b4 /*车道偏离预警功能故障灯*/ #define DATA_LANE_WARNING srcDataBuf[ID_FRAME_R_0x00][4].sbit.b4 /*车道偏离预警功能故障灯*/
#define DATA_BLIND_AUXILIARY srcDataBuf[ID_FRAME_R_0x00][4].sbit.b5 /*盲区安全辅助系统故障灯*/ #define DATA_BLIND_AUXILIARY srcDataBuf[ID_FRAME_R_0x00][4].sbit.b5 /*盲区安全辅助系统故障灯*/
@@ -20,8 +20,8 @@ MbIicApi Un08 dstDataBuf[ID_FRAME_W_NUM][I2C_FRAMELEN-1];
#define DATA_ACC_FAILURE srcDataBuf[ID_FRAME_R_0x00][4].sbit.b7 /*自适应巡航功能故障灯*/ #define DATA_ACC_FAILURE srcDataBuf[ID_FRAME_R_0x00][4].sbit.b7 /*自适应巡航功能故障灯*/
#define DATA_TRIP_RANGE (srcDataBuf[ID_FRAME_R_0x00][5].value\ #define DATA_TRIP_RANGE (srcDataBuf[ID_FRAME_R_0x00][5].value\
+(srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b01<<8)) /*续航里程*/ +(srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b01<<8)) /*续航里程*/
#define DATA_WORK_MODE srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b23 /*工作模式*/ #define DATA_WORK_MODE WORK_MODE_ON // srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b23 /*工作模式*/
#define DATA_CHARGING_STATE srcDataBuf[ID_FRAME_R_0x00][6].sbit04.b47 /*充电状态*/ #define DATA_CHARGING_STATE CHARGE_DISCONNECTED // srcDataBuf[ID_FRAME_R_0x00][6].sbit04.b47 /*充电状态*/
#define DATA_SPEED_LIMIT srcDataBuf[ID_FRAME_R_0x00][7].value /*限速*/ #define DATA_SPEED_LIMIT srcDataBuf[ID_FRAME_R_0x00][7].value /*限速*/
#define DATA_DATE_DAY srcDataBuf[ID_FRAME_R_0x02][0].sbit05.b04 /*日份*/ #define DATA_DATE_DAY srcDataBuf[ID_FRAME_R_0x02][0].sbit05.b04 /*日份*/
@@ -47,12 +47,12 @@ MbIicApi Un08 dstDataBuf[ID_FRAME_W_NUM][I2C_FRAMELEN-1];
+srcDataBuf[ID_FRAME_R_0x03][4].value) /*行驶里程*/ +srcDataBuf[ID_FRAME_R_0x03][4].value) /*行驶里程*/
#define DATA_TRIP_TIME ((srcDataBuf[ID_FRAME_R_0x03][6].sbit05.b04<<8)\ #define DATA_TRIP_TIME ((srcDataBuf[ID_FRAME_R_0x03][6].sbit05.b04<<8)\
+srcDataBuf[ID_FRAME_R_0x03][5].value) /*行驶时间*/ +srcDataBuf[ID_FRAME_R_0x03][5].value) /*行驶时间*/
#define DATA_SCREENCOLORTEST srcDataBuf[ID_FRAME_R_0x03][6].sbit14.b57 /*平均能耗*/ #define DATA_SCREENCOLORTEST 0 //srcDataBuf[ID_FRAME_R_0x03][6].sbit14.b57 /*平均能耗*/
#define DATA_AVG_ENGCOST srcDataBuf[ID_FRAME_R_0x03][7].value /*平均能耗*/ #define DATA_AVG_ENGCOST srcDataBuf[ID_FRAME_R_0x03][7].value /*平均能耗*/
#define DATA_MODULE_L_ID srcDataBuf[ID_FRAME_R_0x04][0].sbit04.b03 /*左模块ID*/ #define DATA_MODULE_L_ID srcDataBuf[ID_FRAME_R_0x04][0].sbit04.b03 /*左模块ID*/
#define DATA_LIST_CURSOR_L srcDataBuf[ID_FRAME_R_0x04][1].value /*左列表光标值*/ #define DATA_LIST_CURSOR_L srcDataBuf[ID_FRAME_R_0x04][1].value /*左列表光标值*/
#define DATA_MODULE_R_ID srcDataBuf[ID_FRAME_R_0x04][4].sbit04.b03 /*右模块ID*/ #define DATA_MODULE_R_ID MODULE_R_NAVIGATION // srcDataBuf[ID_FRAME_R_0x04][4].sbit04.b03 /*右模块ID*/
#define DATA_LIST_CURSOR_R srcDataBuf[ID_FRAME_R_0x04][5].value /*右列表光标值*/ #define DATA_LIST_CURSOR_R srcDataBuf[ID_FRAME_R_0x04][5].value /*右列表光标值*/
#define DATA_RADAR_SPACING_F0 srcDataBuf[ID_FRAME_R_0x0C][0].value /*雷达探测间距 前0*/ #define DATA_RADAR_SPACING_F0 srcDataBuf[ID_FRAME_R_0x0C][0].value /*雷达探测间距 前0*/
@@ -186,7 +186,7 @@ MbIicApi Un08 dstDataBuf[ID_FRAME_W_NUM][I2C_FRAMELEN-1];
#define DATA_MENU_LEFT_ID srcDataBuf[ID_FRAME_R_0x0B][0].sbit35.b02 /*左侧菜单ID*/ #define DATA_MENU_LEFT_ID srcDataBuf[ID_FRAME_R_0x0B][0].sbit35.b02 /*左侧菜单ID*/
#define DATA_MENU_LEFT_VALUE srcDataBuf[ID_FRAME_R_0x0B][0].sbit35.b37 /*左侧菜单数值*/ #define DATA_MENU_LEFT_VALUE srcDataBuf[ID_FRAME_R_0x0B][0].sbit35.b37 /*左侧菜单数值*/
#define DATA_MCU_BLT_OP_STATE srcDataBuf[ID_FRAME_R_0x0B][1].sbit02.b01 /*蓝牙电话MCU处理状态*/ #define DATA_MCU_BLT_OP_STATE 0 // srcDataBuf[ID_FRAME_R_0x0B][1].sbit02.b01 /*蓝牙电话MCU处理状态*/
#define DATA_MCU_BLT_OP_CURSOR srcDataBuf[ID_FRAME_R_0x0B][1].sbit35.b37 /*蓝牙电话MCU操作光标*/ #define DATA_MCU_BLT_OP_CURSOR srcDataBuf[ID_FRAME_R_0x0B][1].sbit35.b37 /*蓝牙电话MCU操作光标*/
#define DATA_MCU_BLT_OP_CLICK srcDataBuf[ID_FRAME_R_0x0B][1].sbit.b2 /*蓝牙电话MCU点击状态*/ #define DATA_MCU_BLT_OP_CLICK srcDataBuf[ID_FRAME_R_0x0B][1].sbit.b2 /*蓝牙电话MCU点击状态*/
//#define DATA_LANE_LL_LENGTH srcDataBuf[ID_FRAME_R_0x0B][3].sbit06.b05 /*左左车道线长度*/ //#define DATA_LANE_LL_LENGTH srcDataBuf[ID_FRAME_R_0x0B][3].sbit06.b05 /*左左车道线长度*/

View File

@@ -7286,12 +7286,14 @@ static Bool ShowFaceRecognition(UInt08 state)
{ {
GLenum err; GLenum err;
glBindTexture(GL_TEXTURE_2D, texPool[poolTxtFaceIdx[i]]); glBindTexture(GL_TEXTURE_2D, texPool[poolTxtFaceIdx[i]]);
if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "glBindTexture failed, gl error:0x%x\n", err);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
err = glGetError(); err = glGetError();
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "hint txt before glTexImage2D, gl error:0x%x\n", err); DBG_Log(DBG_WARN, "1.hint txt before glTexImage2D, gl error:0x%x\n", err);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, txtWidth[i], txtHeight[i], 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmpPool[poolTxtFaceIdx[i]]); glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, txtWidth[i], txtHeight[i], 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmpPool[poolTxtFaceIdx[i]]);
err = glGetError(); err = glGetError();
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
@@ -9592,12 +9594,14 @@ static Bool ShowHintInfo(UInt08 hintID)
{ {
GLenum err; GLenum err;
glBindTexture(GL_TEXTURE_2D, texPool[poolTxtIdx[i]]); glBindTexture(GL_TEXTURE_2D, texPool[poolTxtIdx[i]]);
if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "glBindTexture failed, gl error:0x%x\n", err);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
err = glGetError(); err = glGetError();
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "hint txt before glTexImage2D, gl error:0x%x\n", err); DBG_Log(DBG_WARN, "2.hint txt before glTexImage2D, gl error:0x%x\n", err);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, txtWidth[i], txtHeight[i], 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmpPool[poolTxtIdx[i]]); glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, txtWidth[i], txtHeight[i], 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmpPool[poolTxtIdx[i]]);
err = glGetError(); err = glGetError();
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
@@ -10228,12 +10232,18 @@ static Bool ShowAlarmInfo(UInt08 alarmID)
{ {
GLenum err; GLenum err;
glBindTexture(GL_TEXTURE_2D, texPool[poolTxtIdx]); glBindTexture(GL_TEXTURE_2D, texPool[poolTxtIdx]);
if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "glBindTexture failed, gl error:0x%x\n", err);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "glPixelStorei failed, gl error:0x%x\n", err);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "glTexParameteri failed, gl error:0x%x\n", err);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
err = glGetError(); err = glGetError();
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
DBG_Log(DBG_WARN, "hint txt before glTexImage2D, gl error:0x%x\n", err); DBG_Log(DBG_WARN, "3.hint txt before glTexImage2D, gl error:0x%x\n", err);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, txtWidth, txtHeight, 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmpPool[poolTxtIdx]); glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, txtWidth, txtHeight, 0, GL_ALPHA, GL_UNSIGNED_BYTE, bmpPool[poolTxtIdx]);
err = glGetError(); err = glGetError();
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
@@ -16006,7 +16016,8 @@ static void Render_PwrOnState()
if(chargingUI == INS_TRUE) if(chargingUI == INS_TRUE)
{ {
ShowChargineUI(INS_TRUE, Battery, TripRange); //TODO:Thread 3 "clusterApp" received signal SIGSEGV, Segmentation fault.
//ShowChargineUI(INS_TRUE, Battery, TripRange);
glUseProgram(shader[Prgm_Simple_Font]); glUseProgram(shader[Prgm_Simple_Font]);
glUniformMatrix4fv(Prgm_Simple_Font_UNFM_Prj, 1, GL_FALSE, StackMat(mPrjMatStack)); glUniformMatrix4fv(Prgm_Simple_Font_UNFM_Prj, 1, GL_FALSE, StackMat(mPrjMatStack));
@@ -16063,6 +16074,7 @@ static void Render_PwrOnState()
{ {
selfTestDuration += mFrameTimeMs; selfTestDuration += mFrameTimeMs;
ShowSelfTest(selfTestDuration); ShowSelfTest(selfTestDuration);
printf("selfTestDuration %d, mFrameTimeMs %d\r\n", selfTestDuration, mFrameTimeMs);
goto _End_Render_PwrOnState_0; goto _End_Render_PwrOnState_0;
} }
@@ -16774,7 +16786,10 @@ void *Render(void *argv)
preUsec = curTick.tv_usec; preUsec = curTick.tv_usec;
#endif // COMPILE_IN_WINDOWS #endif // COMPILE_IN_WINDOWS
if(mFrameTimeMs > 100) if(mFrameTimeMs > 100)
{
printf("Elapsed time: %llu ms\n", mFrameTimeMs);
mFrameTimeMs = 100; mFrameTimeMs = 100;
}
if(baseInit != INS_TRUE) if(baseInit != INS_TRUE)
{ {
@@ -16970,7 +16985,7 @@ void *Render(void *argv)
if(mRender_RenderState == POWER_ON_STATE) // ready to switch if(mRender_RenderState == POWER_ON_STATE) // ready to switch
{ {
mRender_WorkMode = WORK_MODE_OFF; mRender_WorkMode = WORK_MODE_OFF;
//DBG_Log(DBG_INFO, "switching to work mode OFF, power_off_bmp_playing...\n"); DBG_Log(DBG_INFO, "switching to work mode OFF, power_off_bmp_playing...\n");
//mRender_RenderState = POWER_OFF_BMP_PLAYING; //mRender_RenderState = POWER_OFF_BMP_PLAYING;
/*ÎÞoff_bmp_playing¶¯»­,Ö±½ÓÇÐoff_state*/ /*ÎÞoff_bmp_playing¶¯»­,Ö±½ÓÇÐoff_state*/
mRender_RenderState = POWER_OFF_STATE; mRender_RenderState = POWER_OFF_STATE;

View File

@@ -560,7 +560,7 @@ static void MBC_Task_ReadFrame(UInt08 frameId, UInt08 *errCnt)
// } // }
// if(errCnt)*errCnt = 0; // if(errCnt)*errCnt = 0;
// MB_IIC_DecodeData(frameId); MB_IIC_DecodeData(frameId);
} }
static void MBC_Task_WriteFrame(UInt08 frameId, UInt08 *errCnt) static void MBC_Task_WriteFrame(UInt08 frameId, UInt08 *errCnt)
@@ -888,6 +888,17 @@ static void* MBC_Task_I2cDispatch(void* argv)
srcDataBuf[i][7].sbit04.b47, srcDataBuf[i][7].sbit04.b03); srcDataBuf[i][7].sbit04.b47, srcDataBuf[i][7].sbit04.b03);
} }
} }
/* TODO : tmp Add rand data for srcDataBuf */
//uint8_t srcDataBuf[15][8];
srand((unsigned)time(NULL));
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 8; j++) {
srcDataBuf[i][j].value = (UInt08)(rand() % 256);
}
}
#define I2C_REQ_MIN_PERIOD 50 #define I2C_REQ_MIN_PERIOD 50
gettimeofday(&cur_tick, 0); gettimeofday(&cur_tick, 0);
time_gap_microsecond = (cur_tick.tv_sec - pre_tick.tv_sec) * 1000 * 1000; time_gap_microsecond = (cur_tick.tv_sec - pre_tick.tv_sec) * 1000 * 1000;