diff --git a/clusterApp/bin/clusterApp b/clusterApp/bin/clusterApp index 8a84216..7feb7e3 100755 Binary files a/clusterApp/bin/clusterApp and b/clusterApp/bin/clusterApp differ diff --git a/clusterApp/include/Protocol/MainBoard_IIC_App.h b/clusterApp/include/Protocol/MainBoard_IIC_App.h index 5e19898..969e5a6 100644 --- a/clusterApp/include/Protocol/MainBoard_IIC_App.h +++ b/clusterApp/include/Protocol/MainBoard_IIC_App.h @@ -358,16 +358,17 @@ MbIicApi Un08 Indicator[8]; /*指示灯状态*/ #define IND_TURN_RIGHT Indicator[6].sbit.b7 /*右转向灯指示灯*/ #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_BAT_COLD Indicator[7].sbit.b4 /*电池温度低*/ -#define IND_OTA_SILENT_MODE Indicator[7].sbit.b5 /*OTA静默模式*/ -#define IND_CHARGE_CONN Indicator[7].sbit.b6 /*充电枪已连接指示灯*/ +#define IND_OTA_SILENT_MODE 0 // Indicator[7].sbit.b5 /*OTA静默模式*/ +#define IND_CHARGE_CONN 0 //Indicator[7].sbit.b6 /*充电枪已连接指示灯*/ #define IND_TIRED_DRIVING Indicator[7].sbit.b7 /*分神提醒二级边框闪烁标志*/ /*档位*/ enum -{ +{ + GEAR_INVISIBLE = 0, GEAR_D = 1, GEAR_N = 2, @@ -431,7 +432,8 @@ enum /*工作模式*/ enum -{ +{ + WORK_MODE_OFF = 1, WORK_MODE_ON = 2, }; diff --git a/clusterApp/include/Protocol/MainBoard_IIC_Sys.h b/clusterApp/include/Protocol/MainBoard_IIC_Sys.h index df31754..b8608f3 100644 --- a/clusterApp/include/Protocol/MainBoard_IIC_Sys.h +++ b/clusterApp/include/Protocol/MainBoard_IIC_Sys.h @@ -7,12 +7,12 @@ MbIicApi Un08 srcDataBuf[ID_FRAME_R_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_IND_MUTE srcDataBuf[ID_FRAME_R_0x00][1].sbit07.b7 /*静音*/ #define DATA_SPEED_WARN srcDataBuf[ID_FRAME_R_0x00][2].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_LANE_WARNING srcDataBuf[ID_FRAME_R_0x00][4].sbit.b4 /*车道偏离预警功能故障灯*/ #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_TRIP_RANGE (srcDataBuf[ID_FRAME_R_0x00][5].value\ +(srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b01<<8)) /*续航里程*/ -#define DATA_WORK_MODE srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b23 /*工作模式*/ -#define DATA_CHARGING_STATE srcDataBuf[ID_FRAME_R_0x00][6].sbit04.b47 /*充电状态*/ +#define DATA_WORK_MODE WORK_MODE_ON // srcDataBuf[ID_FRAME_R_0x00][6].sbit02.b23 /*工作模式*/ +#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_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) /*行驶里程*/ #define DATA_TRIP_TIME ((srcDataBuf[ID_FRAME_R_0x03][6].sbit05.b04<<8)\ +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_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_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_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_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_CLICK srcDataBuf[ID_FRAME_R_0x0B][1].sbit.b2 /*蓝牙电话MCU点击状态*/ //#define DATA_LANE_LL_LENGTH srcDataBuf[ID_FRAME_R_0x0B][3].sbit06.b05 /*左左车道线长度*/ diff --git a/clusterApp/src/InsRender/Render.c b/clusterApp/src/InsRender/Render.c index d5ea266..9a78d05 100644 --- a/clusterApp/src/InsRender/Render.c +++ b/clusterApp/src/InsRender/Render.c @@ -7286,12 +7286,14 @@ static Bool ShowFaceRecognition(UInt08 state) { GLenum err; 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); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); err = glGetError(); 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]]); err = glGetError(); if(err != GL_NO_ERROR) @@ -9592,12 +9594,14 @@ static Bool ShowHintInfo(UInt08 hintID) { GLenum err; 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); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); err = glGetError(); 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]]); err = glGetError(); if(err != GL_NO_ERROR) @@ -10228,12 +10232,18 @@ static Bool ShowAlarmInfo(UInt08 alarmID) { GLenum err; 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); + 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); + 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); err = glGetError(); 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]); err = glGetError(); if(err != GL_NO_ERROR) @@ -16006,7 +16016,8 @@ static void Render_PwrOnState() 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]); glUniformMatrix4fv(Prgm_Simple_Font_UNFM_Prj, 1, GL_FALSE, StackMat(mPrjMatStack)); @@ -16063,6 +16074,7 @@ static void Render_PwrOnState() { selfTestDuration += mFrameTimeMs; ShowSelfTest(selfTestDuration); + printf("selfTestDuration %d, mFrameTimeMs %d\r\n", selfTestDuration, mFrameTimeMs); goto _End_Render_PwrOnState_0; } @@ -16774,7 +16786,10 @@ void *Render(void *argv) preUsec = curTick.tv_usec; #endif // COMPILE_IN_WINDOWS if(mFrameTimeMs > 100) + { + printf("Elapsed time: %llu ms\n", mFrameTimeMs); mFrameTimeMs = 100; + } if(baseInit != INS_TRUE) { @@ -16970,7 +16985,7 @@ void *Render(void *argv) if(mRender_RenderState == POWER_ON_STATE) // ready to switch { 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; /*ÎÞoff_bmp_playing¶¯»­,Ö±½ÓÇÐoff_state*/ mRender_RenderState = POWER_OFF_STATE; diff --git a/clusterApp/src/InsTask/MainBoardCommunication.c b/clusterApp/src/InsTask/MainBoardCommunication.c index ab48773..d13d9b1 100644 --- a/clusterApp/src/InsTask/MainBoardCommunication.c +++ b/clusterApp/src/InsTask/MainBoardCommunication.c @@ -560,7 +560,7 @@ static void MBC_Task_ReadFrame(UInt08 frameId, UInt08 *errCnt) // } // if(errCnt)*errCnt = 0; - // MB_IIC_DecodeData(frameId); + MB_IIC_DecodeData(frameId); } 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); } } + + /* 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 gettimeofday(&cur_tick, 0); time_gap_microsecond = (cur_tick.tv_sec - pre_tick.tv_sec) * 1000 * 1000;