From 8faece3cee93301d672d9311649749468c90d405 Mon Sep 17 00:00:00 2001 From: Rakshita Date: Mon, 30 Dec 2024 17:48:32 +0530 Subject: [PATCH] fix: add logic to control display time from c code and blink soc on display while charging --- ivec_APP/inc/socTouchDisplay.h | 8 +- ivec_APP/inc/socTouchDisplay_private.h | 4 +- ivec_APP/inc/socTouchDisplay_types.h | 4 +- ivec_APP/src/socTouchDisplay.c | 100 ++++++++++++++++++------- ivec_RTE/src/ivec_rte.c | 2 +- utils/utils.h | 2 +- 6 files changed, 85 insertions(+), 35 deletions(-) diff --git a/ivec_APP/inc/socTouchDisplay.h b/ivec_APP/inc/socTouchDisplay.h index aba0a60..dc956a3 100644 --- a/ivec_APP/inc/socTouchDisplay.h +++ b/ivec_APP/inc/socTouchDisplay.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'socTouchDisplay'. * - * Model version : 1.111 + * Model version : 1.128 * 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 * Embedded hardware selection: Intel->x86-64 (Windows64) @@ -37,6 +37,7 @@ typedef struct { CAN_MESSAGE_BUS Selector; /* '/Selector' */ CAN_MESSAGE_BUS SFunction; /* '/S-Function' */ uint8_T In1[8]; /* '/In1' */ + boolean_T Compare; /* '/Compare' */ } B_socTouchDisplay_T; /* Block states (default storage) for system '' */ @@ -46,6 +47,7 @@ typedef struct { uint32_T temporalCounter_i1; /* '/Chart' */ uint32_T durationCounter_1_g; /* '/Chart' */ uint32_T durationCounter_2; /* '/Chart' */ + uint32_T durationCounter_3; /* '/Chart' */ uint8_T is_active_c1_socTouchDisplay;/* '/Chart1' */ uint8_T is_c1_socTouchDisplay; /* '/Chart1' */ uint8_T is_active_c3_socTouchDisplay;/* '/Chart' */ @@ -123,6 +125,8 @@ extern RT_MODEL_socTouchDisplay_T *const socTouchDisplay_M; * '' : 'socTouchDisplay/canMsgDecode' * '' : 'socTouchDisplay/displayData' * '' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem' + * '' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem1' + * '' : 'socTouchDisplay/canMsgDecode/Enabled Subsystem1/Compare To Constant' */ #endif /* RTW_HEADER_socTouchDisplay_h_ */ diff --git a/ivec_APP/inc/socTouchDisplay_private.h b/ivec_APP/inc/socTouchDisplay_private.h index 911ccfe..fd32e40 100644 --- a/ivec_APP/inc/socTouchDisplay_private.h +++ b/ivec_APP/inc/socTouchDisplay_private.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'socTouchDisplay'. * - * Model version : 1.104 + * Model version : 1.128 * 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 * Embedded hardware selection: Intel->x86-64 (Windows64) diff --git a/ivec_APP/inc/socTouchDisplay_types.h b/ivec_APP/inc/socTouchDisplay_types.h index 7153d59..0bf81f4 100644 --- a/ivec_APP/inc/socTouchDisplay_types.h +++ b/ivec_APP/inc/socTouchDisplay_types.h @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'socTouchDisplay'. * - * Model version : 1.104 + * Model version : 1.128 * 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 * Embedded hardware selection: Intel->x86-64 (Windows64) diff --git a/ivec_APP/src/socTouchDisplay.c b/ivec_APP/src/socTouchDisplay.c index 746e117..d0e3724 100644 --- a/ivec_APP/src/socTouchDisplay.c +++ b/ivec_APP/src/socTouchDisplay.c @@ -3,9 +3,9 @@ * * Code generated for Simulink model 'socTouchDisplay'. * - * Model version : 1.111 + * Model version : 1.128 * 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 * Embedded hardware selection: Intel->x86-64 (Windows64) @@ -19,10 +19,10 @@ #include "socTouchDisplay_private.h" /* Named constants for Chart: '/Chart' */ -#define socTouchDi_IN_waitTillNextTouch ((uint8_T)4U) -#define socTouchDis_IN_touchNotDetected ((uint8_T)3U) -#define socTouchDisplay_IN_displayError ((uint8_T)1U) -#define socTouchDisplay_IN_displaySoc ((uint8_T)2U) +#define socTouchDis_IN_touchNotDetected ((uint8_T)4U) +#define socTouchDisp_IN_chargingDisplay ((uint8_T)1U) +#define socTouchDisplay_IN_displayError ((uint8_T)2U) +#define socTouchDisplay_IN_displaySoc ((uint8_T)3U) /* Named constants for Chart: '/Chart1' */ #define socTouchDisplay_IN_bmsPresent ((uint8_T)1U) @@ -83,7 +83,7 @@ void socTouchDisplay_step(void) * Constant: '/Constant' * RelationalOperator: '/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++) { /* SignalConversion generated from: '/In1' */ socTouchDisplay_B.In1[i] = socTouchDisplay_B.SFunction.Data[i]; @@ -96,6 +96,23 @@ void socTouchDisplay_step(void) /* DataTypeConversion: '/Cast' */ rtb_Cast = socTouchDisplay_B.In1[2]; + /* Outputs for Enabled SubSystem: '/Enabled Subsystem1' incorporates: + * EnablePort: '/Enable' + */ + /* Logic: '/AND1' incorporates: + * Constant: '/Constant1' + * RelationalOperator: '/Equal2' + */ + if (rtb_Equal && (socTouchDisplay_B.SFunction.Data[0] == 1)) { + /* RelationalOperator: '/Compare' incorporates: + * Constant: '/Constant' + */ + socTouchDisplay_B.Compare = (socTouchDisplay_B.SFunction.Data[6] == 4); + } + + /* End of Logic: '/AND1' */ + /* End of Outputs for SubSystem: '/Enabled Subsystem1' */ + /* Memory: '/Memory' */ rtb_Memory = Memory_PreviousInput; @@ -152,6 +169,7 @@ void socTouchDisplay_step(void) if (socTouchDisplay_DW.is_active_c3_socTouchDisplay == 0U) { socTouchDisplay_DW.is_active_c3_socTouchDisplay = 1U; + socTouchDisplay_DW.durationCounter_3 = 0U; socTouchDisplay_DW.durationCounter_2 = 0U; socTouchDisplay_DW.durationCounter_1_g = 0U; socTouchDisplay_DW.is_c3_socTouchDisplay = socTouchDis_IN_touchNotDetected; @@ -163,14 +181,34 @@ void socTouchDisplay_step(void) socTouchDisplay_Y.op_bErrorStatus = false; } else { switch (socTouchDisplay_DW.is_c3_socTouchDisplay) { + case socTouchDisp_IN_chargingDisplay: + /* Outport: '/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: '/op_bDisplayStatus' */ + socTouchDisplay_Y.op_bDisplayStatus = false; + + /* Outport: '/op_bErrorStatus' */ + socTouchDisplay_Y.op_bErrorStatus = false; + } + break; + case socTouchDisplay_IN_displayError: /* Outport: '/op_bErrorStatus' */ socTouchDisplay_Y.op_bErrorStatus = true; if ((uint32_T)((int32_T)socTouchDisplay_DW.temporalCounter_i1 * 100) >= (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 = - socTouchDi_IN_waitTillNextTouch; + socTouchDis_IN_touchNotDetected; /* Outport: '/op_bDisplayStatus' */ socTouchDisplay_Y.op_bDisplayStatus = false; @@ -185,9 +223,11 @@ void socTouchDisplay_step(void) socTouchDisplay_Y.op_bDisplayStatus = true; if ((uint32_T)((int32_T)socTouchDisplay_DW.temporalCounter_i1 * 100) >= (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 = - socTouchDi_IN_waitTillNextTouch; + socTouchDis_IN_touchNotDetected; /* Outport: '/op_bDisplayStatus' */ socTouchDisplay_Y.op_bDisplayStatus = false; @@ -197,8 +237,9 @@ void socTouchDisplay_step(void) } break; - case socTouchDis_IN_touchNotDetected: + default: /* Outport: '/op_bDisplayStatus' */ + /* case IN_touchNotDetected: */ socTouchDisplay_Y.op_bDisplayStatus = false; /* Outport: '/op_bErrorStatus' */ @@ -229,24 +270,23 @@ void socTouchDisplay_step(void) /* Outport: '/op_bErrorStatus' */ 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: '/op_bDisplayStatus' */ + socTouchDisplay_Y.op_bDisplayStatus = true; + } } } break; - - default: - /* Outport: '/op_bDisplayStatus' */ - /* case IN_waitTillNextTouch: */ - socTouchDisplay_Y.op_bDisplayStatus = false; - - /* Outport: '/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; } + if (socTouchDisplay_B.Compare) { + socTouchDisplay_DW.durationCounter_3++; + } else { + socTouchDisplay_DW.durationCounter_3 = 0U; + } + /* End of Chart: '/Chart' */ /* Outputs for Atomic SubSystem: '/displayData' */ diff --git a/ivec_RTE/src/ivec_rte.c b/ivec_RTE/src/ivec_rte.c index 17e15ad..7ff1ee6 100644 --- a/ivec_RTE/src/ivec_rte.c +++ b/ivec_RTE/src/ivec_rte.c @@ -174,7 +174,7 @@ void vRTE_MatlabInit(void) void vRTE_MatlabRun(void) { 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_u32canId = g_u32CanId; diff --git a/utils/utils.h b/utils/utils.h index 3b77902..db9389a 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -38,7 +38,7 @@ typedef enum // 1 - Basil Battery Smart // 2 - Basil // 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;