fix: add logic to control display time from c code and blink soc on display while charging

stable
Rakshita 2024-12-30 17:48:32 +05:30
parent bd226465f7
commit 8faece3cee
6 changed files with 85 additions and 35 deletions

View File

@ -3,9 +3,9 @@
* *
* Code generated for Simulink model 'socTouchDisplay'. * Code generated for Simulink model 'socTouchDisplay'.
* *
* Model version : 1.111 * Model version : 1.128
* Simulink Coder version : 23.2 (R2023b) 01-Aug-2023 * Simulink Coder version : 23.2 (R2023b) 01-Aug-2023
* C/C++ source code generated on : Thu Nov 7 22:32:36 2024 * C/C++ source code generated on : Fri Dec 27 18:51:07 2024
* *
* Target selection: ert.tlc * Target selection: ert.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64) * Embedded hardware selection: Intel->x86-64 (Windows64)
@ -37,6 +37,7 @@ typedef struct {
CAN_MESSAGE_BUS Selector; /* '<S3>/Selector' */ CAN_MESSAGE_BUS Selector; /* '<S3>/Selector' */
CAN_MESSAGE_BUS SFunction; /* '<S3>/S-Function' */ CAN_MESSAGE_BUS SFunction; /* '<S3>/S-Function' */
uint8_T In1[8]; /* '<S5>/In1' */ uint8_T In1[8]; /* '<S5>/In1' */
boolean_T Compare; /* '<S7>/Compare' */
} B_socTouchDisplay_T; } B_socTouchDisplay_T;
/* Block states (default storage) for system '<Root>' */ /* Block states (default storage) for system '<Root>' */
@ -46,6 +47,7 @@ typedef struct {
uint32_T temporalCounter_i1; /* '<Root>/Chart' */ uint32_T temporalCounter_i1; /* '<Root>/Chart' */
uint32_T durationCounter_1_g; /* '<Root>/Chart' */ uint32_T durationCounter_1_g; /* '<Root>/Chart' */
uint32_T durationCounter_2; /* '<Root>/Chart' */ uint32_T durationCounter_2; /* '<Root>/Chart' */
uint32_T durationCounter_3; /* '<Root>/Chart' */
uint8_T is_active_c1_socTouchDisplay;/* '<Root>/Chart1' */ uint8_T is_active_c1_socTouchDisplay;/* '<Root>/Chart1' */
uint8_T is_c1_socTouchDisplay; /* '<Root>/Chart1' */ uint8_T is_c1_socTouchDisplay; /* '<Root>/Chart1' */
uint8_T is_active_c3_socTouchDisplay;/* '<Root>/Chart' */ uint8_T is_active_c3_socTouchDisplay;/* '<Root>/Chart' */
@ -123,6 +125,8 @@ extern RT_MODEL_socTouchDisplay_T *const socTouchDisplay_M;
* '<S3>' : 'socTouchDisplay/canMsgDecode' * '<S3>' : 'socTouchDisplay/canMsgDecode'
* '<S4>' : 'socTouchDisplay/displayData' * '<S4>' : 'socTouchDisplay/displayData'
* '<S5>' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem' * '<S5>' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem'
* '<S6>' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem1'
* '<S7>' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem1/Compare To Constant'
*/ */
#endif /* RTW_HEADER_socTouchDisplay_h_ */ #endif /* RTW_HEADER_socTouchDisplay_h_ */

View File

@ -3,9 +3,9 @@
* *
* Code generated for Simulink model 'socTouchDisplay'. * Code generated for Simulink model 'socTouchDisplay'.
* *
* Model version : 1.104 * Model version : 1.128
* Simulink Coder version : 23.2 (R2023b) 01-Aug-2023 * Simulink Coder version : 23.2 (R2023b) 01-Aug-2023
* C/C++ source code generated on : Mon Oct 28 16:04:13 2024 * C/C++ source code generated on : Fri Dec 27 18:51:07 2024
* *
* Target selection: ert.tlc * Target selection: ert.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64) * Embedded hardware selection: Intel->x86-64 (Windows64)

View File

@ -3,9 +3,9 @@
* *
* Code generated for Simulink model 'socTouchDisplay'. * Code generated for Simulink model 'socTouchDisplay'.
* *
* Model version : 1.104 * Model version : 1.128
* Simulink Coder version : 23.2 (R2023b) 01-Aug-2023 * Simulink Coder version : 23.2 (R2023b) 01-Aug-2023
* C/C++ source code generated on : Mon Oct 28 16:04:13 2024 * C/C++ source code generated on : Fri Dec 27 18:51:07 2024
* *
* Target selection: ert.tlc * Target selection: ert.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64) * Embedded hardware selection: Intel->x86-64 (Windows64)

View File

@ -3,9 +3,9 @@
* *
* Code generated for Simulink model 'socTouchDisplay'. * Code generated for Simulink model 'socTouchDisplay'.
* *
* Model version : 1.111 * Model version : 1.128
* Simulink Coder version : 23.2 (R2023b) 01-Aug-2023 * Simulink Coder version : 23.2 (R2023b) 01-Aug-2023
* C/C++ source code generated on : Thu Nov 7 22:32:36 2024 * C/C++ source code generated on : Fri Dec 27 18:51:07 2024
* *
* Target selection: ert.tlc * Target selection: ert.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64) * Embedded hardware selection: Intel->x86-64 (Windows64)
@ -19,10 +19,10 @@
#include "socTouchDisplay_private.h" #include "socTouchDisplay_private.h"
/* Named constants for Chart: '<Root>/Chart' */ /* Named constants for Chart: '<Root>/Chart' */
#define socTouchDi_IN_waitTillNextTouch ((uint8_T)4U) #define socTouchDis_IN_touchNotDetected ((uint8_T)4U)
#define socTouchDis_IN_touchNotDetected ((uint8_T)3U) #define socTouchDisp_IN_chargingDisplay ((uint8_T)1U)
#define socTouchDisplay_IN_displayError ((uint8_T)1U) #define socTouchDisplay_IN_displayError ((uint8_T)2U)
#define socTouchDisplay_IN_displaySoc ((uint8_T)2U) #define socTouchDisplay_IN_displaySoc ((uint8_T)3U)
/* Named constants for Chart: '<Root>/Chart1' */ /* Named constants for Chart: '<Root>/Chart1' */
#define socTouchDisplay_IN_bmsPresent ((uint8_T)1U) #define socTouchDisplay_IN_bmsPresent ((uint8_T)1U)
@ -83,7 +83,7 @@ void socTouchDisplay_step(void)
* Constant: '<S3>/Constant' * Constant: '<S3>/Constant'
* RelationalOperator: '<S3>/Equal1' * RelationalOperator: '<S3>/Equal1'
*/ */
if ((socTouchDisplay_B.SFunction.Data[0] == 2) && rtb_Equal) { if (rtb_Equal && (socTouchDisplay_B.SFunction.Data[0] == 2)) {
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
/* SignalConversion generated from: '<S5>/In1' */ /* SignalConversion generated from: '<S5>/In1' */
socTouchDisplay_B.In1[i] = socTouchDisplay_B.SFunction.Data[i]; socTouchDisplay_B.In1[i] = socTouchDisplay_B.SFunction.Data[i];
@ -96,6 +96,23 @@ void socTouchDisplay_step(void)
/* DataTypeConversion: '<S3>/Cast' */ /* DataTypeConversion: '<S3>/Cast' */
rtb_Cast = socTouchDisplay_B.In1[2]; rtb_Cast = socTouchDisplay_B.In1[2];
/* Outputs for Enabled SubSystem: '<S3>/Enabled Subsystem1' incorporates:
* EnablePort: '<S6>/Enable'
*/
/* Logic: '<S3>/AND1' incorporates:
* Constant: '<S3>/Constant1'
* RelationalOperator: '<S3>/Equal2'
*/
if (rtb_Equal && (socTouchDisplay_B.SFunction.Data[0] == 1)) {
/* RelationalOperator: '<S7>/Compare' incorporates:
* Constant: '<S7>/Constant'
*/
socTouchDisplay_B.Compare = (socTouchDisplay_B.SFunction.Data[6] == 4);
}
/* End of Logic: '<S3>/AND1' */
/* End of Outputs for SubSystem: '<S3>/Enabled Subsystem1' */
/* Memory: '<S3>/Memory' */ /* Memory: '<S3>/Memory' */
rtb_Memory = Memory_PreviousInput; rtb_Memory = Memory_PreviousInput;
@ -152,6 +169,7 @@ void socTouchDisplay_step(void)
if (socTouchDisplay_DW.is_active_c3_socTouchDisplay == 0U) { if (socTouchDisplay_DW.is_active_c3_socTouchDisplay == 0U) {
socTouchDisplay_DW.is_active_c3_socTouchDisplay = 1U; socTouchDisplay_DW.is_active_c3_socTouchDisplay = 1U;
socTouchDisplay_DW.durationCounter_3 = 0U;
socTouchDisplay_DW.durationCounter_2 = 0U; socTouchDisplay_DW.durationCounter_2 = 0U;
socTouchDisplay_DW.durationCounter_1_g = 0U; socTouchDisplay_DW.durationCounter_1_g = 0U;
socTouchDisplay_DW.is_c3_socTouchDisplay = socTouchDis_IN_touchNotDetected; socTouchDisplay_DW.is_c3_socTouchDisplay = socTouchDis_IN_touchNotDetected;
@ -163,14 +181,34 @@ void socTouchDisplay_step(void)
socTouchDisplay_Y.op_bErrorStatus = false; socTouchDisplay_Y.op_bErrorStatus = false;
} else { } else {
switch (socTouchDisplay_DW.is_c3_socTouchDisplay) { switch (socTouchDisplay_DW.is_c3_socTouchDisplay) {
case socTouchDisp_IN_chargingDisplay:
/* Outport: '<Root>/op_bDisplayStatus' */
socTouchDisplay_Y.op_bDisplayStatus = true;
if (socTouchDisplay_DW.temporalCounter_i1 >= 20U) {
socTouchDisplay_DW.durationCounter_3 = 0U;
socTouchDisplay_DW.durationCounter_2 = 0U;
socTouchDisplay_DW.durationCounter_1_g = 0U;
socTouchDisplay_DW.is_c3_socTouchDisplay =
socTouchDis_IN_touchNotDetected;
/* Outport: '<Root>/op_bDisplayStatus' */
socTouchDisplay_Y.op_bDisplayStatus = false;
/* Outport: '<Root>/op_bErrorStatus' */
socTouchDisplay_Y.op_bErrorStatus = false;
}
break;
case socTouchDisplay_IN_displayError: case socTouchDisplay_IN_displayError:
/* Outport: '<Root>/op_bErrorStatus' */ /* Outport: '<Root>/op_bErrorStatus' */
socTouchDisplay_Y.op_bErrorStatus = true; socTouchDisplay_Y.op_bErrorStatus = true;
if ((uint32_T)((int32_T)socTouchDisplay_DW.temporalCounter_i1 * 100) >= if ((uint32_T)((int32_T)socTouchDisplay_DW.temporalCounter_i1 * 100) >=
(uint32_T)ceil(socTouchDisplay_U.ip_u32DisplayDuration_msec)) { (uint32_T)ceil(socTouchDisplay_U.ip_u32DisplayDuration_msec)) {
socTouchDisplay_DW.temporalCounter_i1 = 0U; socTouchDisplay_DW.durationCounter_3 = 0U;
socTouchDisplay_DW.durationCounter_2 = 0U;
socTouchDisplay_DW.durationCounter_1_g = 0U;
socTouchDisplay_DW.is_c3_socTouchDisplay = socTouchDisplay_DW.is_c3_socTouchDisplay =
socTouchDi_IN_waitTillNextTouch; socTouchDis_IN_touchNotDetected;
/* Outport: '<Root>/op_bDisplayStatus' */ /* Outport: '<Root>/op_bDisplayStatus' */
socTouchDisplay_Y.op_bDisplayStatus = false; socTouchDisplay_Y.op_bDisplayStatus = false;
@ -185,9 +223,11 @@ void socTouchDisplay_step(void)
socTouchDisplay_Y.op_bDisplayStatus = true; socTouchDisplay_Y.op_bDisplayStatus = true;
if ((uint32_T)((int32_T)socTouchDisplay_DW.temporalCounter_i1 * 100) >= if ((uint32_T)((int32_T)socTouchDisplay_DW.temporalCounter_i1 * 100) >=
(uint32_T)ceil(socTouchDisplay_U.ip_u32DisplayDuration_msec)) { (uint32_T)ceil(socTouchDisplay_U.ip_u32DisplayDuration_msec)) {
socTouchDisplay_DW.temporalCounter_i1 = 0U; socTouchDisplay_DW.durationCounter_3 = 0U;
socTouchDisplay_DW.durationCounter_2 = 0U;
socTouchDisplay_DW.durationCounter_1_g = 0U;
socTouchDisplay_DW.is_c3_socTouchDisplay = socTouchDisplay_DW.is_c3_socTouchDisplay =
socTouchDi_IN_waitTillNextTouch; socTouchDis_IN_touchNotDetected;
/* Outport: '<Root>/op_bDisplayStatus' */ /* Outport: '<Root>/op_bDisplayStatus' */
socTouchDisplay_Y.op_bDisplayStatus = false; socTouchDisplay_Y.op_bDisplayStatus = false;
@ -197,8 +237,9 @@ void socTouchDisplay_step(void)
} }
break; break;
case socTouchDis_IN_touchNotDetected: default:
/* Outport: '<Root>/op_bDisplayStatus' */ /* Outport: '<Root>/op_bDisplayStatus' */
/* case IN_touchNotDetected: */
socTouchDisplay_Y.op_bDisplayStatus = false; socTouchDisplay_Y.op_bDisplayStatus = false;
/* Outport: '<Root>/op_bErrorStatus' */ /* Outport: '<Root>/op_bErrorStatus' */
@ -229,24 +270,23 @@ void socTouchDisplay_step(void)
/* Outport: '<Root>/op_bErrorStatus' */ /* Outport: '<Root>/op_bErrorStatus' */
socTouchDisplay_Y.op_bErrorStatus = true; socTouchDisplay_Y.op_bErrorStatus = true;
} else {
if (!socTouchDisplay_B.Compare) {
socTouchDisplay_DW.durationCounter_3 = 0U;
}
if ((socTouchDisplay_DW.durationCounter_3 > 20U) &&
Memory_PreviousInput) {
socTouchDisplay_DW.temporalCounter_i1 = 0U;
socTouchDisplay_DW.is_c3_socTouchDisplay =
socTouchDisp_IN_chargingDisplay;
/* Outport: '<Root>/op_bDisplayStatus' */
socTouchDisplay_Y.op_bDisplayStatus = true;
}
} }
} }
break; break;
default:
/* Outport: '<Root>/op_bDisplayStatus' */
/* case IN_waitTillNextTouch: */
socTouchDisplay_Y.op_bDisplayStatus = false;
/* Outport: '<Root>/op_bErrorStatus' */
socTouchDisplay_Y.op_bErrorStatus = false;
if (socTouchDisplay_DW.temporalCounter_i1 >= 100U) {
socTouchDisplay_DW.durationCounter_2 = 0U;
socTouchDisplay_DW.durationCounter_1_g = 0U;
socTouchDisplay_DW.is_c3_socTouchDisplay =
socTouchDis_IN_touchNotDetected;
}
break;
} }
} }
@ -258,6 +298,12 @@ void socTouchDisplay_step(void)
socTouchDisplay_DW.durationCounter_2 = 0U; socTouchDisplay_DW.durationCounter_2 = 0U;
} }
if (socTouchDisplay_B.Compare) {
socTouchDisplay_DW.durationCounter_3++;
} else {
socTouchDisplay_DW.durationCounter_3 = 0U;
}
/* End of Chart: '<Root>/Chart' */ /* End of Chart: '<Root>/Chart' */
/* Outputs for Atomic SubSystem: '<Root>/displayData' */ /* Outputs for Atomic SubSystem: '<Root>/displayData' */

View File

@ -174,7 +174,7 @@ void vRTE_MatlabInit(void)
void vRTE_MatlabRun(void) void vRTE_MatlabRun(void)
{ {
socTouchDisplay_U.in_bTouchDetected = (u32MCAL_gpioRead(GPIOB, DL_GPIO_PIN_17) == DL_GPIO_PIN_17) ? 1 : 0; socTouchDisplay_U.in_bTouchDetected = (u32MCAL_gpioRead(GPIOB, DL_GPIO_PIN_17) == DL_GPIO_PIN_17) ? 1 : 0;
socTouchDisplay_U.ip_u32DisplayDuration_msec = 2000; socTouchDisplay_U.ip_u32DisplayDuration_msec = 10000;
socTouchDisplay_U.ip_u32TouchDuration_msec = 100; socTouchDisplay_U.ip_u32TouchDuration_msec = 100;
socTouchDisplay_U.ip_u32canId = g_u32CanId; socTouchDisplay_U.ip_u32canId = g_u32CanId;

View File

@ -38,7 +38,7 @@ typedef enum
// 1 - Basil Battery Smart // 1 - Basil Battery Smart
// 2 - Basil // 2 - Basil
// 3 - Battery Swapping Station // 3 - Battery Swapping Station
#define UART_PIN_SELECTION 2 // Set the desired UART configuration here #define UART_PIN_SELECTION 1 // Set the desired UART configuration here
volatile int i32TickCnt; volatile int i32TickCnt;