From 4d65c17d07d3ccbc9a87e791f69d6a346adfefa4 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Tue, 17 Jan 2023 16:59:21 -0300 Subject: [PATCH 01/37] rgb feature 1.0 --- Core/Src/driver_settings/RTD.c | 2 +- Core/Src/leds/rgb_led_handler.c | 4 +++ Core/Src/util/main_task.c | 52 ++++++++++++++++++++++++++++++++- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 066cd412..746089f4 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -48,7 +48,7 @@ void exit_RTD() { // seta modo_selecionado como erro set_global_var_value(SELECTED_MODE, erro); set_global_var_value(RACE_MODE, ERRO); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); + //set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); // limpa flag de RTD osEventFlagsClear(e_ECU_control_flagsHandle, RTD_FLAG); osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_FLAG); diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 79b2df67..4753b424 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -75,6 +75,10 @@ void blink_rgb(uint32_t delay) { osDelay(delay); write_rgb_color(get_rgb_color(PRETO)); } +void blink_rgb_colors(uint32_t delay, cores_t color) { + osDelay(delay); + write_rgb_color(get_rgb_color(color)); +} void write_rgb_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_RED_GPIO_Port, C_LED_RED_Pin, rgb_gpio.red); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index b7f368b6..f140a628 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -17,6 +17,54 @@ #include "util/global_variables.h" #include "util/util.h" +void led_color_response(uint32_t flag){ + switch(flag){ + //Hard error + case INVERTER_BUS_OFF_ERROR_FLAG: + blink_rgb_colors(200, VERMELHO); + blink_rgb_colors(200, AZUL); + blink_rgb_colors(200, BRANCO); + break; + case INVERTER_CAN_TRANSMIT_ERROR_FLAG: + blink_rgb_colors(200, VERMELHO); + blink_rgb_colors(200, AZUL); + blink_rgb_colors(200, AMARELO); + break; + case INVERTER_COMM_ERROR_FLAG: + blink_rgb_colors(200, VERMELHO); + blink_rgb_colors(200, AZUL); + blink_rgb_colors(200, AMARELO); + break; + case SU_F_ERROR_FLAG: + blink_rgb_colors(200, VERMELHO); + blink_rgb_colors(200, BRANCO); + break; + //Soft error + case APPS_ERROR_FLAG: + blink_rgb_colors(200, AMARELO); + blink_rgb_colors(200, VERDE); + break; + case BSE_ERROR_FLAG: + blink_rgb_colors(200, AMARELO); + blink_rgb_colors(200, ROXO); + break; + // Warning + case REGEN_WARN_FLAG: + blink_rgb_colors(200, BRANCO); + blink_rgb_colors(200, VERDE); + break; + case DYNAMIC_CONTROL_WARN_FLAG: + blink_rgb_colors(200, BRANCO); + blink_rgb_colors(200, CIANO); + break; + case FLASH_SAVE_LIMIT_FLAG: + blink_rgb_colors(200, BRANCO); + blink_rgb_colors(200, ROXO); + break; + } + +} + void main_task(void* argument) { UNUSED(argument); @@ -46,6 +94,7 @@ void main_task(void* argument) { isErrorPresent = event_flags & INVERTER_BUS_OFF_ERROR_FLAG; if (isErrorPresent) { exit_RTD(); + led_color_response(most_significant_error_flag); } else { // Starts a timer. If the error happens again before the timer expires // the car leaves RTD mode. @@ -63,6 +112,7 @@ void main_task(void* argument) { isErrorPresent = event_flags & most_significant_error_flag; if (isErrorPresent) { exit_RTD(); + led_color_response(most_significant_error_flag); } else { // Clear the thread flag osThreadFlagsClear(most_significant_error_flag); @@ -75,7 +125,7 @@ void main_task(void* argument) { // If the event flag contains the error flag ECU led is set to yellow isErrorPresent = event_flags & most_significant_error_flag; if (isErrorPresent) { - set_rgb_led(AMARELO, NO_CHANGE); + led_color_response(most_significant_error_flag); osDelay(20); } else { // Clear the thread flag and set ECU led to normal From 8485fe9856556a0a864bb4936106f7314599ceb6 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Tue, 24 Jan 2023 17:36:18 -0300 Subject: [PATCH 02/37] new rgb function --- Core/Src/driver_settings/RTD.c | 35 +++++++------ Core/Src/leds/rgb_led_handler.c | 4 -- Core/Src/util/main_task.c | 89 ++++++++++++++++++++++++--------- 3 files changed, 84 insertions(+), 44 deletions(-) diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 746089f4..4911481b 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -23,25 +23,30 @@ void set_RTD(); void RTD(void* argument) { UNUSED(argument); - // seta o led rgb no primeira execucao do codigo - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); + // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo + //for (;;){ - for (;;) { + //if(!(ALL_MINOR_ERROR_FLAG | ALL_SEVERE_ERROR_FLAG)){ + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); - // espera receber flag q o botao de RTD foi pressionado - osThreadFlagsWait(RTD_BTN_PRESSED_FLAG, osFlagsWaitAny, osWaitForever); + for (;;) { - bool is_RTD_active = get_individual_flag(e_ECU_control_flagsHandle, RTD_FLAG); + // espera receber flag q o botao de RTD foi pressionado + osThreadFlagsWait(RTD_BTN_PRESSED_FLAG, osFlagsWaitAny, osWaitForever); - if (!is_RTD_active) { - if (can_RTD_be_enabled()) { - set_RTD(); - } else { - // envia uma mensagem de alerta caso n seja possivel acionar RTD - set_debugleds(DEBUGLED1, BLINK, 2); - } - } - } + bool is_RTD_active = get_individual_flag(e_ECU_control_flagsHandle, RTD_FLAG); + + if (!is_RTD_active) { + if (can_RTD_be_enabled()) { + set_RTD(); + } else { + // envia uma mensagem de alerta caso n seja possivel acionar RTD + set_debugleds(DEBUGLED1, BLINK, 2); + } + } + } + //} + //} } void exit_RTD() { diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 4753b424..79b2df67 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -75,10 +75,6 @@ void blink_rgb(uint32_t delay) { osDelay(delay); write_rgb_color(get_rgb_color(PRETO)); } -void blink_rgb_colors(uint32_t delay, cores_t color) { - osDelay(delay); - write_rgb_color(get_rgb_color(color)); -} void write_rgb_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_RED_GPIO_Port, C_LED_RED_Pin, rgb_gpio.red); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index f140a628..81392168 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -16,59 +16,98 @@ #include "util/global_instances.h" #include "util/global_variables.h" #include "util/util.h" +#include "util/global_definitions.h" + +/*void set_the_pettern(uint32_t delay, cores_t *pattern ){ + int lenght = (int)(sizeof(pattern) / sizeof(pattern[0])); + for(int i = 0; i=16; i--) { + + aux = 1< Date: Wed, 25 Jan 2023 21:58:54 -0300 Subject: [PATCH 03/37] new rgb function 1.1 --- Core/Src/util/main_task.c | 101 ++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 60 deletions(-) diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 81392168..6275c28f 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -18,14 +18,16 @@ #include "util/util.h" #include "util/global_definitions.h" -/*void set_the_pettern(uint32_t delay, cores_t *pattern ){ - int lenght = (int)(sizeof(pattern) / sizeof(pattern[0])); - for(int i = 0; i=16; i--) { - aux = 1< Date: Mon, 13 Feb 2023 16:10:46 -0300 Subject: [PATCH 04/37] new rgb function 1.2 --- Core/Inc/leds/rgb_led_handler.h | 4 ++-- Core/Src/driver_settings/RTD.c | 7 +------ Core/Src/leds/rgb_led_handler.c | 7 +++++++ Core/Src/util/main_task.c | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index a3deb8ae..cd21ed71 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -13,7 +13,7 @@ #include "stdint.h" #include "util/global_definitions.h" -#define RGB_BLINK_DELAY 200 + #define RGB_BLACK \ (rgb_t) { \ @@ -48,7 +48,7 @@ 1, 1, 1 \ } -typedef enum { FIXED, BLINK200, NO_CHANGE } control_rgb_led_e; +typedef enum { FIXED, BLINK200, NO_CHANGE, BLINK500 } control_rgb_led_e; typedef struct { cores_t color; diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 4911481b..140a31a4 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -23,10 +23,7 @@ void set_RTD(); void RTD(void* argument) { UNUSED(argument); - // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo - //for (;;){ - - //if(!(ALL_MINOR_ERROR_FLAG | ALL_SEVERE_ERROR_FLAG)){ + // seta o led rgb na primeira execucao do codigo set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); for (;;) { @@ -45,8 +42,6 @@ void RTD(void* argument) { } } } - //} - //} } void exit_RTD() { diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 79b2df67..84f84423 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -26,6 +26,8 @@ void write_debug_color(rgb_t rgb_gpio); rgb_t get_rgb_color(cores_t color); void blink_rgb(uint32_t delay); +int RGB_BLINK_DELAY = 200; + osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control) { rgb_led_message_t message = {color, control}; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); @@ -57,6 +59,11 @@ void rgb_led(void* argument) { osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, osWaitForever); if (message.control == BLINK200) { + RGB_BLINK_DELAY = 200; + break; + } + if (message.control == BLINK500) { + RGB_BLINK_DELAY = 500; break; } } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 6275c28f..604218cc 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -21,15 +21,15 @@ void set_the_pattern(uint32_t delay, cores_t *pattern){ int lenght = pattern[0]; //header for(int i = 1; i<=lenght; i++){ - set_rgb_led(pattern[i], NO_CHANGE); + set_rgb_led(pattern[i], BLINK500); osDelay(delay); } - } -cores_t pattern[4]={}; + void led_color_response(uint32_t flag){ + cores_t pattern[4]={}; uint32_t delay; delay = 500; From e2c86f66715e649493377fbc6e505fa98c27d7d4 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Thu, 16 Feb 2023 00:07:32 -0300 Subject: [PATCH 05/37] new rgb function 1.3 --- Core/Inc/leds/rgb_led_handler.h | 2 +- Core/Src/driver_settings/RTD.c | 7 ++- Core/Src/leds/rgb_led_handler.c | 19 ++++--- Core/Src/util/main_task.c | 95 ++++++++++++++++++++------------- 4 files changed, 78 insertions(+), 45 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index cd21ed71..267cbe9f 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -13,7 +13,7 @@ #include "stdint.h" #include "util/global_definitions.h" - +#define RGB_BLINK_DELAY 200 #define RGB_BLACK \ (rgb_t) { \ diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 140a31a4..4911481b 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -23,7 +23,10 @@ void set_RTD(); void RTD(void* argument) { UNUSED(argument); - // seta o led rgb na primeira execucao do codigo + // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo + //for (;;){ + + //if(!(ALL_MINOR_ERROR_FLAG | ALL_SEVERE_ERROR_FLAG)){ set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); for (;;) { @@ -42,6 +45,8 @@ void RTD(void* argument) { } } } + //} + //} } void exit_RTD() { diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 84f84423..2c9b8bea 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -26,8 +26,6 @@ void write_debug_color(rgb_t rgb_gpio); rgb_t get_rgb_color(cores_t color); void blink_rgb(uint32_t delay); -int RGB_BLINK_DELAY = 200; - osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control) { rgb_led_message_t message = {color, control}; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); @@ -59,15 +57,22 @@ void rgb_led(void* argument) { osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, osWaitForever); if (message.control == BLINK200) { - RGB_BLINK_DELAY = 200; - break; - } - if (message.control == BLINK500) { - RGB_BLINK_DELAY = 500; break; } } break; + case BLINK500: + for (;;) { + write_rgb_color(get_rgb_color(message.color)); + osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, + osWaitForever); + blink_rgb(500); + if (message.control != BLINK200) { + break; + } + break; + } + default: write_rgb_color(get_rgb_color(message.color)); blink_rgb(RGB_BLINK_DELAY); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 604218cc..8bb9576b 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -4,7 +4,7 @@ * Created on: Jun 3, 2020 * Author: renanmoreira */ - +#include #include "util/main_task.h" #include "cmsis_os.h" @@ -18,17 +18,50 @@ #include "util/util.h" #include "util/global_definitions.h" + void set_the_pattern(uint32_t delay, cores_t *pattern){ - int lenght = pattern[0]; //header - for(int i = 1; i<=lenght; i++){ + for(int i = 0; i<=2; i++){ set_rgb_led(pattern[i], BLINK500); osDelay(delay); } } +#define pattern_table(c1, c2, c3) ((cores_t[]){c1, c2, c3}) void led_color_response(uint32_t flag){ + cores_t pattern[3] = {}; + uint32_t delay = 500; + + switch(flag) { + // Hard error + case INVERTER_BUS_OFF_ERROR_FLAG: + memcpy(pattern, pattern_table(VERMELHO, AZUL, BRANCO), sizeof(pattern)); + break; + case INVERTER_CAN_TRANSMIT_ERROR_FLAG: + memcpy(pattern, pattern_table(VERMELHO, AZUL, AMARELO), sizeof(pattern)); + break; + case INVERTER_COMM_ERROR_FLAG: + memcpy(pattern, pattern_table(VERMELHO, AZUL, VERDE), sizeof(pattern)); + break; + case SU_F_ERROR_FLAG: + memcpy(pattern, pattern_table(VERMELHO, BRANCO, BRANCO), sizeof(pattern)); + break; + // Soft error + case APPS_ERROR_FLAG: + memcpy(pattern, pattern_table(AMARELO, VERDE, BRANCO), sizeof(pattern)); + break; + case BSE_ERROR_FLAG: + memcpy(pattern, pattern_table(AMARELO, BRANCO, ROXO), sizeof(pattern)); + break; + } + set_the_pattern(delay, pattern); +} + + + +/*void led_color_response(uint32_t flag){ + cores_t pattern[4]={}; uint32_t delay; delay = 500; @@ -36,50 +69,40 @@ void led_color_response(uint32_t flag){ switch(flag){ //Hard error case INVERTER_BUS_OFF_ERROR_FLAG: - pattern[0]= 3; //the first position is a header to flag the right number of colors to be used in the pattern - pattern[1]=VERMELHO; - pattern[2]= AZUL; - pattern[3]= BRANCO; + pattern[0]= VERMELHO; + pattern[1]= AZUL; + pattern[2]= BRANCO; + break; case INVERTER_CAN_TRANSMIT_ERROR_FLAG: - pattern[0]= 3; - pattern[1]=VERMELHO; - pattern[2]= AZUL; - pattern[3]= AMARELO; + pattern[0]= VERMELHO; + pattern[1]= AZUL; + pattern[2]= AMARELO; + break; case INVERTER_COMM_ERROR_FLAG: - pattern[0]= 3; - pattern[1]=VERMELHO; - pattern[2]= AZUL; - pattern[3]= VERDE; + pattern[0]= VERMELHO; + pattern[1]= AZUL; + pattern[2]= VERDE; + break; case SU_F_ERROR_FLAG: - pattern[0]= 2; - pattern[1]=VERMELHO; + pattern[0]= VERMELHO; + pattern[1]= BRANCO; pattern[2]= BRANCO; + break; //Soft error case APPS_ERROR_FLAG: - pattern[0]= 2; - pattern[1]=AMARELO; - pattern[2]= VERDE; + pattern[0]= AMARELO; + pattern[1]= VERDE; + pattern[2]= BRANCO; + break; case BSE_ERROR_FLAG: - pattern[0]= 2; - pattern[1]=AMARELO; - pattern[2]= ROXO; - // Warning - case REGEN_WARN_FLAG: - pattern[0]= 2; - pattern[1]=BRANCO; - pattern[2]= VERDE; - case DYNAMIC_CONTROL_WARN_FLAG: - pattern[0]= 2; - pattern[1]=BRANCO; - pattern[2]=CIANO; - case FLASH_SAVE_LIMIT_FLAG: - pattern[0]= 2; - pattern[1]=BRANCO; + pattern[0]= AMARELO; + pattern[1]= BRANCO; pattern[2]= ROXO; + break; } set_the_pattern(delay, pattern); -} +}*/ void main_task(void* argument) { From 98b8764a9b642e37f127d7495a17a038615d4f29 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 22 Feb 2023 21:53:20 -0300 Subject: [PATCH 06/37] new rgb function 1.4 --- Core/Inc/leds/rgb_led_handler.h | 3 +- Core/Src/driver_settings/RTD.c | 4 +- Core/Src/driver_settings/modo.c | 2 +- Core/Src/leds/rgb_led_handler.c | 39 +++++++++++----- Core/Src/util/main_task.c | 81 ++++++++------------------------- 5 files changed, 51 insertions(+), 78 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index 267cbe9f..d8fa8ad1 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -53,6 +53,7 @@ typedef enum { FIXED, BLINK200, NO_CHANGE, BLINK500 } control_rgb_led_e; typedef struct { cores_t color; control_rgb_led_e control; + cores_t *pattern; } rgb_led_message_t; typedef struct { @@ -61,6 +62,6 @@ typedef struct { GPIO_PinState blue; } rgb_t; -osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control); +osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control, cores_t *pattern); #endif /* INC_RGB_LED_H_ */ diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 4911481b..59db9d1c 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -27,7 +27,7 @@ void RTD(void* argument) { //for (;;){ //if(!(ALL_MINOR_ERROR_FLAG | ALL_SEVERE_ERROR_FLAG)){ - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200,NULL); for (;;) { @@ -107,7 +107,7 @@ bool can_RTD_be_enabled() { void set_RTD() { // Seta flag de RTD osEventFlagsSet(e_ECU_control_flagsHandle, RTD_FLAG); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED, NULL); aciona_sirene(); } diff --git a/Core/Src/driver_settings/modo.c b/Core/Src/driver_settings/modo.c index 9bb95595..a4e880af 100644 --- a/Core/Src/driver_settings/modo.c +++ b/Core/Src/driver_settings/modo.c @@ -39,7 +39,7 @@ void seleciona_modo(void* argument) { default: set_global_var_value(SELECTED_MODE, erro); break; } - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200,NULL); } // todo: dataloggar modos } diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 2c9b8bea..7c665af1 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -26,9 +26,18 @@ void write_debug_color(rgb_t rgb_gpio); rgb_t get_rgb_color(cores_t color); void blink_rgb(uint32_t delay); -osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control) { +/*osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control) { rgb_led_message_t message = {color, control}; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); +}*/ +osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control, cores_t *pattern) { + if(pattern != NULL) { + rgb_led_message_t message = {color, control, pattern}; + return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); + } else { + rgb_led_message_t message = {color, control, NULL}; + return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); + } } void rgb_led(void* argument) { @@ -59,19 +68,19 @@ void rgb_led(void* argument) { if (message.control == BLINK200) { break; } + if( message.control == BLINK500){ + for (;;) { + write_pattern(message.pattern); + osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, + osWaitForever); + if (message.control != BLINK500) { + break; + } + break; + } + } } break; - case BLINK500: - for (;;) { - write_rgb_color(get_rgb_color(message.color)); - osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, - osWaitForever); - blink_rgb(500); - if (message.control != BLINK200) { - break; - } - break; - } default: write_rgb_color(get_rgb_color(message.color)); @@ -87,6 +96,12 @@ void blink_rgb(uint32_t delay) { osDelay(delay); write_rgb_color(get_rgb_color(PRETO)); } +void write_pattern(cores_t *pattern){ + for(int i = 0; i<=2; i++){ + write_rgb_color(get_rgb_color(pattern[i])); + blink_rgb(500); + } +} void write_rgb_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_RED_GPIO_Port, C_LED_RED_Pin, rgb_gpio.red); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 8bb9576b..7c863709 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -4,7 +4,6 @@ * Created on: Jun 3, 2020 * Author: renanmoreira */ -#include #include "util/main_task.h" #include "cmsis_os.h" @@ -19,91 +18,49 @@ #include "util/global_definitions.h" -void set_the_pattern(uint32_t delay, cores_t *pattern){ - for(int i = 0; i<=2; i++){ - set_rgb_led(pattern[i], BLINK500); - osDelay(delay); - - } +void set_the_pattern(cores_t *pattern){ + set_rgb_led(PRETO,FIXED, NULL); + set_rgb_led(PRETO,BLINK500,pattern); } #define pattern_table(c1, c2, c3) ((cores_t[]){c1, c2, c3}) void led_color_response(uint32_t flag){ cores_t pattern[3] = {}; - uint32_t delay = 500; switch(flag) { // Hard error case INVERTER_BUS_OFF_ERROR_FLAG: - memcpy(pattern, pattern_table(VERMELHO, AZUL, BRANCO), sizeof(pattern)); + my_memcpy(pattern, pattern_table(VERMELHO, AZUL, BRANCO), sizeof(pattern)); break; case INVERTER_CAN_TRANSMIT_ERROR_FLAG: - memcpy(pattern, pattern_table(VERMELHO, AZUL, AMARELO), sizeof(pattern)); + my_memcpy(pattern, pattern_table(VERMELHO, AZUL, AMARELO), sizeof(pattern)); break; case INVERTER_COMM_ERROR_FLAG: - memcpy(pattern, pattern_table(VERMELHO, AZUL, VERDE), sizeof(pattern)); + my_memcpy(pattern, pattern_table(VERMELHO, AZUL, VERDE), sizeof(pattern)); break; case SU_F_ERROR_FLAG: - memcpy(pattern, pattern_table(VERMELHO, BRANCO, BRANCO), sizeof(pattern)); + my_memcpy(pattern, pattern_table(VERMELHO, BRANCO, BRANCO), sizeof(pattern)); break; // Soft error case APPS_ERROR_FLAG: - memcpy(pattern, pattern_table(AMARELO, VERDE, BRANCO), sizeof(pattern)); + my_memcpy(pattern, pattern_table(AMARELO, VERDE, BRANCO), sizeof(pattern)); break; case BSE_ERROR_FLAG: - memcpy(pattern, pattern_table(AMARELO, BRANCO, ROXO), sizeof(pattern)); + my_memcpy(pattern, pattern_table(AMARELO, BRANCO, ROXO), sizeof(pattern)); break; } - set_the_pattern(delay, pattern); + set_the_pattern(pattern); } - - -/*void led_color_response(uint32_t flag){ - - cores_t pattern[4]={}; - uint32_t delay; - delay = 500; - - switch(flag){ - //Hard error - case INVERTER_BUS_OFF_ERROR_FLAG: - pattern[0]= VERMELHO; - pattern[1]= AZUL; - pattern[2]= BRANCO; - break; - case INVERTER_CAN_TRANSMIT_ERROR_FLAG: - pattern[0]= VERMELHO; - pattern[1]= AZUL; - pattern[2]= AMARELO; - break; - case INVERTER_COMM_ERROR_FLAG: - pattern[0]= VERMELHO; - pattern[1]= AZUL; - pattern[2]= VERDE; - break; - case SU_F_ERROR_FLAG: - pattern[0]= VERMELHO; - pattern[1]= BRANCO; - pattern[2]= BRANCO; - break; - //Soft error - case APPS_ERROR_FLAG: - pattern[0]= AMARELO; - pattern[1]= VERDE; - pattern[2]= BRANCO; - break; - case BSE_ERROR_FLAG: - pattern[0]= AMARELO; - pattern[1]= BRANCO; - pattern[2]= ROXO; - break; - } - set_the_pattern(delay, pattern); - -}*/ - +void* my_memcpy(void* dest, const void* src, size_t n) { + char* cdest = dest; + const char* csrc = src; + for (size_t i = 0; i < n; i++) { + cdest[i] = csrc[i]; + } + return dest; +} void main_task(void* argument) { @@ -173,7 +130,7 @@ void main_task(void* argument) { } else { // Clear the thread flag and set ECU led to normal osThreadFlagsClear(most_significant_error_flag); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, NO_CHANGE); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, NO_CHANGE, NULL); } break; From ee7557f1fe7a24ba4bbcf3c9b6e14a28d470e30a Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 22 Feb 2023 21:59:13 -0300 Subject: [PATCH 07/37] new rgb function 1.4.2 --- Core/Src/util/main_task.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 7c863709..8dba7314 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -4,6 +4,7 @@ * Created on: Jun 3, 2020 * Author: renanmoreira */ +#include #include "util/main_task.h" #include "cmsis_os.h" @@ -31,37 +32,28 @@ void led_color_response(uint32_t flag){ switch(flag) { // Hard error case INVERTER_BUS_OFF_ERROR_FLAG: - my_memcpy(pattern, pattern_table(VERMELHO, AZUL, BRANCO), sizeof(pattern)); + memcpy(pattern, pattern_table(VERMELHO, AZUL, BRANCO), sizeof(pattern)); break; case INVERTER_CAN_TRANSMIT_ERROR_FLAG: - my_memcpy(pattern, pattern_table(VERMELHO, AZUL, AMARELO), sizeof(pattern)); + memcpy(pattern, pattern_table(VERMELHO, AZUL, AMARELO), sizeof(pattern)); break; case INVERTER_COMM_ERROR_FLAG: - my_memcpy(pattern, pattern_table(VERMELHO, AZUL, VERDE), sizeof(pattern)); + memcpy(pattern, pattern_table(VERMELHO, AZUL, VERDE), sizeof(pattern)); break; case SU_F_ERROR_FLAG: - my_memcpy(pattern, pattern_table(VERMELHO, BRANCO, BRANCO), sizeof(pattern)); + memcpy(pattern, pattern_table(VERMELHO, BRANCO, BRANCO), sizeof(pattern)); break; // Soft error case APPS_ERROR_FLAG: - my_memcpy(pattern, pattern_table(AMARELO, VERDE, BRANCO), sizeof(pattern)); + memcpy(pattern, pattern_table(AMARELO, VERDE, BRANCO), sizeof(pattern)); break; case BSE_ERROR_FLAG: - my_memcpy(pattern, pattern_table(AMARELO, BRANCO, ROXO), sizeof(pattern)); + memcpy(pattern, pattern_table(AMARELO, BRANCO, ROXO), sizeof(pattern)); break; } set_the_pattern(pattern); } -void* my_memcpy(void* dest, const void* src, size_t n) { - char* cdest = dest; - const char* csrc = src; - for (size_t i = 0; i < n; i++) { - cdest[i] = csrc[i]; - } - return dest; -} - void main_task(void* argument) { UNUSED(argument); From fa174a7d676380ba073218bcc40483fceacc5633 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Fri, 24 Feb 2023 09:41:47 -0300 Subject: [PATCH 08/37] new rgb function 1.4.3 --- Core/Src/leds/rgb_led_handler.c | 2 +- Core/Src/util/main_task.c | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 7c665af1..99a2a99e 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -76,8 +76,8 @@ void rgb_led(void* argument) { if (message.control != BLINK500) { break; } - break; } + break; } } break; diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 8dba7314..ab3edf99 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -4,7 +4,7 @@ * Created on: Jun 3, 2020 * Author: renanmoreira */ -#include +//#include #include "util/main_task.h" #include "cmsis_os.h" @@ -23,6 +23,16 @@ void set_the_pattern(cores_t *pattern){ set_rgb_led(PRETO,FIXED, NULL); set_rgb_led(PRETO,BLINK500,pattern); } + +void myMemCpy(void *dest, void *src, size_t n) +{ +char *csrc = (char *)src; +char *cdest = (char *)dest; + +for (int i=0; i Date: Mon, 27 Feb 2023 15:22:30 -0300 Subject: [PATCH 09/37] possible solution --- Core/Inc/leds/rgb_led_handler.h | 42 +++++++------------- Core/Inc/util/global_definitions.h | 2 +- Core/Src/driver_settings/RTD.c | 40 +++++++++---------- Core/Src/driver_settings/modo.c | 3 +- Core/Src/leds/rgb_led_handler.c | 52 ++++++++----------------- Core/Src/util/initializers.c | 20 +++++----- Core/Src/util/main_task.c | 62 ++++++++---------------------- 7 files changed, 78 insertions(+), 143 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index d8fa8ad1..b3b2b635 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -13,47 +13,32 @@ #include "stdint.h" #include "util/global_definitions.h" -#define RGB_BLINK_DELAY 200 +#define RGB_BLINK_DELAY 200 +#define RGB_BLINK500_DELAY 500 #define RGB_BLACK \ - (rgb_t) { \ - 0, 0, 0 \ - } + (rgb_t) { 0, 0, 0 } #define RGB_RED \ - (rgb_t) { \ - 1, 0, 0 \ - } + (rgb_t) { 1, 0, 0 } #define RGB_GREEN \ - (rgb_t) { \ - 0, 1, 0 \ - } + (rgb_t) { 0, 1, 0 } #define RGB_BLUE \ - (rgb_t) { \ - 0, 0, 1 \ - } + (rgb_t) { 0, 0, 1 } #define RGB_YELLOW \ - (rgb_t) { \ - 1, 1, 0 \ - } + (rgb_t) { 1, 1, 0 } #define RGB_PURBLE \ - (rgb_t) { \ - 1, 0, 1 \ - } + (rgb_t) { 1, 0, 1 } #define RGB_CYAN \ - (rgb_t) { \ - 0, 1, 1 \ - } + (rgb_t) { 0, 1, 1 } #define RGB_WHITE \ - (rgb_t) { \ - 1, 1, 1 \ - } + (rgb_t) { 1, 1, 1 } typedef enum { FIXED, BLINK200, NO_CHANGE, BLINK500 } control_rgb_led_e; typedef struct { - cores_t color; + cores_t* pattern; control_rgb_led_e control; - cores_t *pattern; + uint8_t sizeOfPattern; } rgb_led_message_t; typedef struct { @@ -62,6 +47,7 @@ typedef struct { GPIO_PinState blue; } rgb_t; -osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control, cores_t *pattern); +osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, + uint8_t sizeOfPattern); #endif /* INC_RGB_LED_H_ */ diff --git a/Core/Inc/util/global_definitions.h b/Core/Inc/util/global_definitions.h index 4d9d737f..819a979b 100644 --- a/Core/Inc/util/global_definitions.h +++ b/Core/Inc/util/global_definitions.h @@ -43,7 +43,7 @@ typedef struct // struct de modo int torq_gain; // ganho de torque, aconselhavel q seja proporcional ao torque maximo ( // de 0 a 40) race_mode_t mode; // 1 enduro, 2 aceleracao, 3 skidpad, 4 autox - cores_t cor; + cores_t cor[1]; } modos; #define R_MOTOR 0 diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 59db9d1c..ef0e8334 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -24,37 +24,32 @@ void RTD(void* argument) { UNUSED(argument); // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo - //for (;;){ + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, 1); - //if(!(ALL_MINOR_ERROR_FLAG | ALL_SEVERE_ERROR_FLAG)){ - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200,NULL); + for (;;) { - for (;;) { + // espera receber flag q o botao de RTD foi pressionado + osThreadFlagsWait(RTD_BTN_PRESSED_FLAG, osFlagsWaitAny, osWaitForever); - // espera receber flag q o botao de RTD foi pressionado - osThreadFlagsWait(RTD_BTN_PRESSED_FLAG, osFlagsWaitAny, osWaitForever); + bool is_RTD_active = get_individual_flag(e_ECU_control_flagsHandle, RTD_FLAG); - bool is_RTD_active = get_individual_flag(e_ECU_control_flagsHandle, RTD_FLAG); - - if (!is_RTD_active) { - if (can_RTD_be_enabled()) { - set_RTD(); - } else { - // envia uma mensagem de alerta caso n seja possivel acionar RTD - set_debugleds(DEBUGLED1, BLINK, 2); - } - } - } - //} - //} + if (!is_RTD_active) { + if (can_RTD_be_enabled()) { + set_RTD(); + } else { + // envia uma mensagem de alerta caso n seja possivel acionar RTD + set_debugleds(DEBUGLED1, BLINK, 2); + } + } + } } void exit_RTD() { // seta modo_selecionado como erro set_global_var_value(SELECTED_MODE, erro); set_global_var_value(RACE_MODE, ERRO); - //set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); - // limpa flag de RTD + // set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); + // limpa flag de RTD osEventFlagsClear(e_ECU_control_flagsHandle, RTD_FLAG); osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_FLAG); } @@ -96,7 +91,8 @@ bool can_RTD_be_enabled() { RACE_MODE_t race_mode = get_global_var_value(RACE_MODE); // flag that indicates when the inverter precharge time has passed and the inverter is // ready - bool is_inverter_ready = get_individual_flag(e_ECU_control_flagsHandle, INVERTER_READY); + bool is_inverter_ready = + get_individual_flag(e_ECU_control_flagsHandle, INVERTER_READY); if (is_brake_active && !is_throttle_active && !error_flags && (race_mode != ERRO) && is_inverter_ready) { return true; diff --git a/Core/Src/driver_settings/modo.c b/Core/Src/driver_settings/modo.c index a4e880af..64e8b0a9 100644 --- a/Core/Src/driver_settings/modo.c +++ b/Core/Src/driver_settings/modo.c @@ -38,8 +38,7 @@ void seleciona_modo(void* argument) { case AUTOX: set_global_var_value(SELECTED_MODE, autox); break; default: set_global_var_value(SELECTED_MODE, erro); break; } - - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200,NULL); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, NULL); } // todo: dataloggar modos } diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 99a2a99e..578ab602 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -26,18 +26,10 @@ void write_debug_color(rgb_t rgb_gpio); rgb_t get_rgb_color(cores_t color); void blink_rgb(uint32_t delay); -/*osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control) { - rgb_led_message_t message = {color, control}; +osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, + uint8_t sizeOfPattern) { + rgb_led_message_t message = {pattern, control, sizeOfPattern}; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); -}*/ -osStatus_t set_rgb_led(cores_t color, control_rgb_led_e control, cores_t *pattern) { - if(pattern != NULL) { - rgb_led_message_t message = {color, control, pattern}; - return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); - } else { - rgb_led_message_t message = {color, control, NULL}; - return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); - } } void rgb_led(void* argument) { @@ -54,37 +46,33 @@ void rgb_led(void* argument) { // caso timeout estore vai piscar o led, indicando que ta fora do RTD case osErrorTimeout: - write_rgb_color(get_rgb_color(message.color)); - blink_rgb(RGB_BLINK_DELAY); + for (int i = 0; i < message.sizeOfPattern; ++i) { + write_rgb_color(get_rgb_color(message.pattern[i])); + blink_rgb(RGB_BLINK_DELAY); + } break; default: switch (message.control) { case FIXED: for (;;) { - write_rgb_color(get_rgb_color(message.color)); + for (int i = 0; i < message.sizeOfPattern; ++i) { + write_rgb_color(get_rgb_color(message.pattern[i])); + blink_rgb(RGB_BLINK500_DELAY); + } osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, osWaitForever); if (message.control == BLINK200) { break; } - if( message.control == BLINK500){ - for (;;) { - write_pattern(message.pattern); - osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, - osWaitForever); - if (message.control != BLINK500) { - break; - } - } - break; - } + uint32_t message_count = + osMessageQueueGetCount(q_rgb_led_messageHandle); } - break; - default: - write_rgb_color(get_rgb_color(message.color)); - blink_rgb(RGB_BLINK_DELAY); + for (int i = 0; i < message.sizeOfPattern; ++i) { + write_rgb_color(get_rgb_color(message.pattern[i])); + blink_rgb(RGB_BLINK_DELAY); + } break; } break; @@ -96,12 +84,6 @@ void blink_rgb(uint32_t delay) { osDelay(delay); write_rgb_color(get_rgb_color(PRETO)); } -void write_pattern(cores_t *pattern){ - for(int i = 0; i<=2; i++){ - write_rgb_color(get_rgb_color(pattern[i])); - blink_rgb(500); - } -} void write_rgb_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_RED_GPIO_Port, C_LED_RED_Pin, rgb_gpio.red); diff --git a/Core/Src/util/initializers.c b/Core/Src/util/initializers.c index 41323351..7b67d09b 100644 --- a/Core/Src/util/initializers.c +++ b/Core/Src/util/initializers.c @@ -11,6 +11,7 @@ #include "CAN/general_can.h" #include "CAN/inverter_can.h" #include "cmsis_os.h" +#include "dynamic_controls/initializer_controls.h" #include "main.h" #include "stm32h7xx.h" #include "stm32h7xx_hal.h" @@ -18,7 +19,6 @@ #include "util/constants.h" #include "util/global_definitions.h" #include "util/global_variables.h" -#include "dynamic_controls/initializer_controls.h" // inicializa prioridade dos ISRs para permitir chamada da API do RTOS de dentro dos ISRs // mantendo a prioridade maxima de ISRs @@ -65,7 +65,7 @@ void init_modes() { enduro.bat_safe = 1; enduro.torq_gain = 10; // ERA 15 enduro.mode = ENDURO; - enduro.cor = VERDE; + enduro.cor[0] = VERDE; aceleracao.tor_max = 1500; aceleracao.vel_max = vel_max_rpm; @@ -75,7 +75,7 @@ void init_modes() { aceleracao.bat_safe = 0; aceleracao.torq_gain = 15; aceleracao.mode = ACELERACAO; - aceleracao.cor = ROXO; + aceleracao.cor[0] = ROXO; skidpad.tor_max = 2000; skidpad.vel_max = vel_max_rpm; @@ -85,7 +85,7 @@ void init_modes() { skidpad.bat_safe = 0; skidpad.torq_gain = 20; skidpad.mode = SKIDPAD; - skidpad.cor = CIANO; + skidpad.cor[0] = CIANO; autox.tor_max = 2500; autox.vel_max = vel_max_rpm; @@ -95,7 +95,7 @@ void init_modes() { autox.bat_safe = 0; autox.torq_gain = 25; autox.mode = AUTOX; - autox.cor = AZUL; + autox.cor[0] = AZUL; erro.tor_max = 0; erro.vel_max = 0; @@ -105,7 +105,7 @@ void init_modes() { erro.bat_safe = 0; erro.torq_gain = 0; erro.mode = ERRO; - erro.cor = VERMELHO; + erro.cor[0] = VERMELHO; set_global_var_value(SELECTED_MODE, enduro); // inicializa no modo enduro } @@ -126,10 +126,10 @@ void deInit_all_peripherals() { void init_ECU() { /* ### - 2 - Start calibration ############################################ */ - if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK) - { - ; - } + if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) + != HAL_OK) { + ; + } HAL_TIM_Base_Start(&htim2); init_ADC_DMA(&hadc1); init_CAN(); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index ab3edf99..14a81449 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -4,7 +4,7 @@ * Created on: Jun 3, 2020 * Author: renanmoreira */ -//#include +// #include #include "util/main_task.h" #include "cmsis_os.h" @@ -13,64 +13,36 @@ #include "leds/rgb_led_handler.h" #include "sensors/APPS.h" #include "util/CMSIS_extra/global_variables_handler.h" +#include "util/global_definitions.h" #include "util/global_instances.h" #include "util/global_variables.h" #include "util/util.h" -#include "util/global_definitions.h" - - -void set_the_pattern(cores_t *pattern){ - set_rgb_led(PRETO,FIXED, NULL); - set_rgb_led(PRETO,BLINK500,pattern); -} - -void myMemCpy(void *dest, void *src, size_t n) -{ -char *csrc = (char *)src; -char *cdest = (char *)dest; - -for (int i=0; i Date: Mon, 27 Feb 2023 19:48:53 -0300 Subject: [PATCH 10/37] possible solution pt.2 --- Core/Src/driver_settings/RTD.c | 2 +- Core/Src/driver_settings/modo.c | 2 +- Core/Src/leds/rgb_led_handler.c | 11 +++++++---- Core/Src/util/main_task.c | 1 - 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index ef0e8334..c5ee13c7 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -103,7 +103,7 @@ bool can_RTD_be_enabled() { void set_RTD() { // Seta flag de RTD osEventFlagsSet(e_ECU_control_flagsHandle, RTD_FLAG); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED, NULL); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED, 1); aciona_sirene(); } diff --git a/Core/Src/driver_settings/modo.c b/Core/Src/driver_settings/modo.c index 64e8b0a9..0df35372 100644 --- a/Core/Src/driver_settings/modo.c +++ b/Core/Src/driver_settings/modo.c @@ -38,7 +38,7 @@ void seleciona_modo(void* argument) { case AUTOX: set_global_var_value(SELECTED_MODE, autox); break; default: set_global_var_value(SELECTED_MODE, erro); break; } - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, NULL); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, 1); } // todo: dataloggar modos } diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 578ab602..a8003098 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -56,18 +56,21 @@ void rgb_led(void* argument) { switch (message.control) { case FIXED: for (;;) { + const uint32_t message_count = + osMessageQueueGetCount(q_rgb_led_messageHandle); for (int i = 0; i < message.sizeOfPattern; ++i) { write_rgb_color(get_rgb_color(message.pattern[i])); blink_rgb(RGB_BLINK500_DELAY); } - osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, - osWaitForever); + if (message_count > 0) { + osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, + osWaitForever); + } if (message.control == BLINK200) { break; } - uint32_t message_count = - osMessageQueueGetCount(q_rgb_led_messageHandle); } + break; default: for (int i = 0; i < message.sizeOfPattern; ++i) { write_rgb_color(get_rgb_color(message.pattern[i])); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index e8ad10f6..8ff8584f 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -30,7 +30,6 @@ void led_color_response(uint32_t flag) { break; } case INVERTER_CAN_TRANSMIT_ERROR_FLAG: break; - case INVERTER_COMM_ERROR_FLAG: break; case SU_F_ERROR_FLAG: break; // Soft error case APPS_ERROR_FLAG: break; From 578284e71eb2177cedc3d90c72ab7853cd06d5bf Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Tue, 28 Feb 2023 15:25:09 -0300 Subject: [PATCH 11/37] possible solution pt.3 --- Core/Inc/leds/rgb_led_handler.h | 2 +- Core/Src/leds/rgb_led_handler.c | 21 +++++---- .../CMSIS_extra/global_variables_handler.c | 1 + Core/Src/util/main_task.c | 44 +++++++++++++++---- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index b3b2b635..7a0eb466 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -33,7 +33,7 @@ #define RGB_WHITE \ (rgb_t) { 1, 1, 1 } -typedef enum { FIXED, BLINK200, NO_CHANGE, BLINK500 } control_rgb_led_e; +typedef enum { FIXED, BLINK200, NO_CHANGE} control_rgb_led_e; typedef struct { cores_t* pattern; diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index a8003098..47815ceb 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -56,16 +56,21 @@ void rgb_led(void* argument) { switch (message.control) { case FIXED: for (;;) { - const uint32_t message_count = - osMessageQueueGetCount(q_rgb_led_messageHandle); - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK500_DELAY); + if(message.sizeOfPattern > 1) { + for(;;){ + for (int i = 0; i < message.sizeOfPattern; ++i) { + write_rgb_color(get_rgb_color(message.pattern[i])); + blink_rgb(RGB_BLINK500_DELAY); + } + if (osMessageQueueGetCount(q_rgb_led_messageHandle) > 0) { + break; + } + } + break; } - if (message_count > 0) { - osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, + write_rgb_color(get_rgb_color(message.pattern[0])); + osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, osWaitForever); - } if (message.control == BLINK200) { break; } diff --git a/Core/Src/util/CMSIS_extra/global_variables_handler.c b/Core/Src/util/CMSIS_extra/global_variables_handler.c index a1b4c4ca..8a01bcdf 100644 --- a/Core/Src/util/CMSIS_extra/global_variables_handler.c +++ b/Core/Src/util/CMSIS_extra/global_variables_handler.c @@ -33,6 +33,7 @@ static global_variable_message_queue_data_t queues_info[_global_vars_quan]; * (THROTTLE_PERCENT_t)THROTTLE_PERCENT_DEFAULT_VALUE; * osMessageQueuePut(THROTTLE_PERCENT_info->id, &THROTTLE_PERCENT_msg, 0, 0); */ + #define INSTANTIATE_GLOBAL_VAR_QUEUE(var_name) \ /* get a pointer to the queue_data struct intance at position var_name*/ \ global_variable_message_queue_data_t* var_name##_info = queues_info + (var_name); \ diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 8ff8584f..cd05dc53 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -18,22 +18,50 @@ #include "util/global_variables.h" #include "util/util.h" -#define ERROR_COLORS_PATTERN_SIZE 3 +#define HARD_ERROR_COLORS_PATTERN_SIZE 3 +#define SOFT_ERROR_COLORS_PATTERN_SIZE 2 void led_color_response(uint32_t flag) { switch (flag) { + // Soft error + case BSE_ERROR_FLAG: { + cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, ROXO}; + set_rgb_led(pattern, FIXED, SOFT_ERROR_COLORS_PATTERN_SIZE); + break; + } + case APPS_ERROR_FLAG: { + cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, VERDE}; + set_rgb_led(pattern, FIXED, SOFT_ERROR_COLORS_PATTERN_SIZE); + break; + } // Hard error + case INVERTER_CAN_TRANSMIT_ERROR_FLAG: { + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, AMARELO}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + break; + } + case SU_F_ERROR_FLAG:{ + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, BRANCO, PRETO}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + break; + } case INVERTER_BUS_OFF_ERROR_FLAG: { - cores_t pattern[ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, AMARELO}; - set_rgb_led(pattern, BLINK500, ERROR_COLORS_PATTERN_SIZE); + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, VERDE}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } - case INVERTER_CAN_TRANSMIT_ERROR_FLAG: break; - case SU_F_ERROR_FLAG: break; - // Soft error - case APPS_ERROR_FLAG: break; - case BSE_ERROR_FLAG: break; + case LEFT_INVERTER_COMM_ERROR_FLAG: { + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, ROXO}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + break; + } + case RIGHT_INVERTER_COMM_ERROR_FLAG: { + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, CIANO}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + break; + } + } } From 36a0b4a00a7557ab86db65670136477d15212b62 Mon Sep 17 00:00:00 2001 From: dmrohrs Date: Thu, 2 Mar 2023 14:38:45 -0300 Subject: [PATCH 12/37] possible changes --- Core/Src/leds/rgb_led_handler.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index a8003098..0fce29b1 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -32,6 +32,13 @@ osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); } +void write_pattern(rgb_led_message_t message) { + for (int i = 0; i < message.sizeOfPattern; ++i) { + write_rgb_color(get_rgb_color(message.pattern[i])); + blink_rgb(RGB_BLINK500_DELAY); + } +} + void rgb_led(void* argument) { UNUSED(argument); @@ -45,12 +52,7 @@ void rgb_led(void* argument) { osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, RGB_BLINK_DELAY)) { // caso timeout estore vai piscar o led, indicando que ta fora do RTD - case osErrorTimeout: - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK_DELAY); - } - break; + case osErrorTimeout: write_pattern(message); break; default: switch (message.control) { @@ -58,25 +60,17 @@ void rgb_led(void* argument) { for (;;) { const uint32_t message_count = osMessageQueueGetCount(q_rgb_led_messageHandle); - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK500_DELAY); - } + write_pattern(message); if (message_count > 0) { osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, osWaitForever); + if (message.control == BLINK200 || message.control == NO_CHANGE) { + break; + } } - if (message.control == BLINK200) { - break; - } - } - break; - default: - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK_DELAY); } break; + default: write_pattern(message); break; } break; } From badb6184e63e5b3f5b977003735967a7b3729d71 Mon Sep 17 00:00:00 2001 From: dmrohrs Date: Fri, 3 Mar 2023 13:47:37 -0300 Subject: [PATCH 13/37] test chages --- Core/Src/leds/rgb_led_handler.c | 21 +++++++++++++-------- Core/Src/util/main_task.c | 13 +++++++------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 0fce29b1..97206cc4 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -21,6 +21,8 @@ #include "util/global_variables.h" #include "util/util.h" +osStatus_t resultado; + void write_rgb_color(rgb_t rgb_gpio); void write_debug_color(rgb_t rgb_gpio); rgb_t get_rgb_color(cores_t color); @@ -29,13 +31,15 @@ void blink_rgb(uint32_t delay); osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern) { rgb_led_message_t message = {pattern, control, sizeOfPattern}; - return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); + resultado = osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); } void write_pattern(rgb_led_message_t message) { for (int i = 0; i < message.sizeOfPattern; ++i) { write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK500_DELAY); + if (message.sizeOfPattern > 1) { + blink_rgb(RGB_BLINK500_DELAY); + } } } @@ -45,7 +49,7 @@ void rgb_led(void* argument) { rgb_led_message_t message; for (;;) { - ECU_ENABLE_BREAKPOINT_DEBUG(); + // ECU_ENABLE_BREAKPOINT_DEBUG(); // espera RTD ser setado ou timeout estourar switch ( @@ -58,16 +62,17 @@ void rgb_led(void* argument) { switch (message.control) { case FIXED: for (;;) { - const uint32_t message_count = - osMessageQueueGetCount(q_rgb_led_messageHandle); +// const uint32_t message_count = +// osMessageQueueGetCount(q_rgb_led_messageHandle); write_pattern(message); - if (message_count > 0) { + //if (message_count > 0) { osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, osWaitForever); - if (message.control == BLINK200 || message.control == NO_CHANGE) { + if (message.control == BLINK200 + || message.control == NO_CHANGE) { break; } - } + // } } break; default: write_pattern(message); break; diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 8ff8584f..872915c4 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -45,16 +45,17 @@ void main_task(void* argument) { ECU_ENABLE_BREAKPOINT_DEBUG(); - wait_for_rtd(); + //wait_for_rtd(); // Wait for any error - osThreadFlagsWait(ALL_ERRORS_FLAG, osFlagsWaitAny | osFlagsNoClear, - osWaitForever); + //osThreadFlagsWait(ALL_ERRORS_FLAG, osFlagsWaitAny | osFlagsNoClear, + // osWaitForever); // Get the most significant thread flag - uint32_t most_significant_error_flag = get_most_significant_thread_flag(); + uint32_t most_significant_error_flag; //= get_most_significant_thread_flag(); // Get the event flag - uint32_t event_flags = osEventFlagsGet(e_ECU_control_flagsHandle); - + uint32_t event_flags; //osEventFlagsGet(e_ECU_control_flagsHandle); + most_significant_error_flag = INVERTER_BUS_OFF_ERROR_FLAG; + event_flags = INVERTER_BUS_OFF_ERROR_FLAG; bool isErrorPresent; switch (most_significant_error_flag) { From d31822836eb746679fc30102ffff89b00a42c4ae Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Fri, 10 Mar 2023 08:23:37 -0300 Subject: [PATCH 14/37] possible solution pt.4 --- Core/Inc/leds/rgb_led_handler.h | 3 +- Core/Src/leds/rgb_led_handler.c | 63 ++++++++++++++++++--------------- Core/Src/util/main_task.c | 16 ++++----- 3 files changed, 45 insertions(+), 37 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index 7a0eb466..2342ba5c 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -36,7 +36,7 @@ typedef enum { FIXED, BLINK200, NO_CHANGE} control_rgb_led_e; typedef struct { - cores_t* pattern; + cores_t pattern[3]; control_rgb_led_e control; uint8_t sizeOfPattern; } rgb_led_message_t; @@ -50,4 +50,5 @@ typedef struct { osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern); + #endif /* INC_RGB_LED_H_ */ diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 47815ceb..85424cbd 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -28,10 +28,22 @@ void blink_rgb(uint32_t delay); osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern) { - rgb_led_message_t message = {pattern, control, sizeOfPattern}; + rgb_led_message_t message; + message.control = control; + message.sizeOfPattern = sizeOfPattern; + //config(sizeOfPattern, pattern, &message); + message.pattern[0] = pattern[0]; + message.pattern[1] = sizeOfPattern>1 ? pattern[1]: 0; + message.pattern[2] = sizeOfPattern>2 ? pattern[2]: 0; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); } +/*void config(int size, cores_t* pattern, rgb_led_message_t *message){ + for (int i = 0; i<3; i++){ + message->pattern[i]= size>i ? pattern[i]: 0; + } +}*/ + void rgb_led(void* argument) { UNUSED(argument); @@ -46,42 +58,22 @@ void rgb_led(void* argument) { // caso timeout estore vai piscar o led, indicando que ta fora do RTD case osErrorTimeout: - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK_DELAY); - } + write_pattern(message, RGB_BLINK_DELAY); break; default: switch (message.control) { case FIXED: - for (;;) { if(message.sizeOfPattern > 1) { - for(;;){ - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK500_DELAY); - } - if (osMessageQueueGetCount(q_rgb_led_messageHandle) > 0) { - break; - } - } - break; + while(osMessageQueueGetCount(q_rgb_led_messageHandle) > 0){ + write_pattern(message, RGB_BLINK500_DELAY); + }break; } write_rgb_color(get_rgb_color(message.pattern[0])); - osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, - osWaitForever); - if (message.control == BLINK200) { - break; - } - } - break; + messageWait(q_rgb_led_messageHandle); + break; default: - for (int i = 0; i < message.sizeOfPattern; ++i) { - write_rgb_color(get_rgb_color(message.pattern[i])); - blink_rgb(RGB_BLINK_DELAY); - } - break; + write_pattern(message, RGB_BLINK_DELAY);break; } break; } @@ -93,6 +85,21 @@ void blink_rgb(uint32_t delay) { write_rgb_color(get_rgb_color(PRETO)); } +void write_pattern(rgb_led_message_t message, int delay){ + for (int i = 0; i < message.sizeOfPattern; ++i) { + write_rgb_color(get_rgb_color(message.pattern[i])); + blink_rgb(delay); + } +} + +void messageWait(osMessageQueueId_t q_rgb_led_messageHandle){ + for(;;){ + if(osMessageQueueGetCount(q_rgb_led_messageHandle) > 0){ + break; + } + } +} + void write_rgb_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_RED_GPIO_Port, C_LED_RED_Pin, rgb_gpio.red); HAL_GPIO_WritePin(C_LED_GREEN_GPIO_Port, C_LED_GREEN_Pin, rgb_gpio.green); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index cd05dc53..ab231fe2 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -52,14 +52,14 @@ void led_color_response(uint32_t flag) { break; } case LEFT_INVERTER_COMM_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, ROXO}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); - break; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, ROXO}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + break; } case RIGHT_INVERTER_COMM_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, CIANO}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); - break; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, CIANO}; + set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + break; } } @@ -79,9 +79,9 @@ void main_task(void* argument) { osThreadFlagsWait(ALL_ERRORS_FLAG, osFlagsWaitAny | osFlagsNoClear, osWaitForever); // Get the most significant thread flag - uint32_t most_significant_error_flag = get_most_significant_thread_flag(); + uint32_t most_significant_error_flag = /*INVERTER_BUS_OFF_ERROR_FLAG; */get_most_significant_thread_flag(); // Get the event flag - uint32_t event_flags = osEventFlagsGet(e_ECU_control_flagsHandle); + uint32_t event_flags = /*INVERTER_BUS_OFF_ERROR_FLAG; */osEventFlagsGet(e_ECU_control_flagsHandle); bool isErrorPresent; switch (most_significant_error_flag) { From ad8148b46aa81bb06eae3042ecdcc109862b789f Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Tue, 14 Mar 2023 12:59:07 -0300 Subject: [PATCH 15/37] possible solution pt.4 --- Core/Src/leds/rgb_led_handler.c | 7 +++++-- Core/Src/util/main_task.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 85424cbd..2004436a 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -38,7 +38,7 @@ osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); } -/*void config(int size, cores_t* pattern, rgb_led_message_t *message){ +/*void config(uint8_t size, cores_t* pattern, rgb_led_message_t *message){ for (int i = 0; i<3; i++){ message->pattern[i]= size>i ? pattern[i]: 0; } @@ -65,8 +65,11 @@ void rgb_led(void* argument) { switch (message.control) { case FIXED: if(message.sizeOfPattern > 1) { - while(osMessageQueueGetCount(q_rgb_led_messageHandle) > 0){ + for(;;){ write_pattern(message, RGB_BLINK500_DELAY); + if (osMessageQueueGetCount(q_rgb_led_messageHandle) > 0){ + break; + } }break; } write_rgb_color(get_rgb_color(message.pattern[0])); diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index ab231fe2..ccb29beb 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -4,7 +4,7 @@ * Created on: Jun 3, 2020 * Author: renanmoreira */ -// #include + #include "util/main_task.h" #include "cmsis_os.h" @@ -70,6 +70,11 @@ void main_task(void* argument) { UNUSED(argument); for (;;) { + //for (int i = 0; i <=28; i++) { + //volatile int aux = (i<=7) ? 16 : 19; + //volatile uint32_t tempError = 1< Date: Wed, 15 Mar 2023 09:47:26 -0300 Subject: [PATCH 16/37] logic test changes & defines added --- Core/Inc/leds/rgb_led_handler.h | 10 +++++--- Core/Inc/util/util.h | 17 +++++++------- Core/Src/CAN/inverter_can.c | 9 ++++---- Core/Src/CAN/inverter_can_monitor.c | 11 +++++---- Core/Src/driver_settings/RTD.c | 9 ++++---- Core/Src/driver_settings/modo.c | 3 ++- Core/Src/leds/rgb_led_handler.c | 36 ++++++++++++----------------- Core/Src/sensors/APPS.c | 30 +++++++++++++++++++----- Core/Src/util/main_task.c | 34 +++++++++++---------------- 9 files changed, 86 insertions(+), 73 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index 2342ba5c..d0899628 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -13,8 +13,12 @@ #include "stdint.h" #include "util/global_definitions.h" -#define RGB_BLINK_DELAY 200 -#define RGB_BLINK500_DELAY 500 +#define RGB_TIMEOUT 200 +#define RGB_BLINK_200_DELAY 200 +#define RGB_BLINK_1000_DELAY 1000 +#define ONE_COLOR_PATTERN_POS 0 +#define HARD_ERROR_COLORS_PATTERN_SIZE 3 +#define SOFT_ERROR_COLORS_PATTERN_SIZE 2 #define RGB_BLACK \ (rgb_t) { 0, 0, 0 } @@ -33,7 +37,7 @@ #define RGB_WHITE \ (rgb_t) { 1, 1, 1 } -typedef enum { FIXED, BLINK200, NO_CHANGE} control_rgb_led_e; +typedef enum { FIXED, BLINK200} control_rgb_led_e; typedef struct { cores_t pattern[3]; diff --git a/Core/Inc/util/util.h b/Core/Inc/util/util.h index d9c39294..64207891 100644 --- a/Core/Inc/util/util.h +++ b/Core/Inc/util/util.h @@ -22,14 +22,15 @@ bool is_the_car_stationary(); bool is_RTD_active(); void wait_for_rtd(); -#define sign(x) (((x) >= 0) - ((x) < 0)) -#define max(x, y) ((x) > (y) ? (x) : (y)) -#define min(x, y) (((x) < (y)) ? (x) : (y)) -#define abs(x) ((x) < 0 ? -(x) : (x)) -#define avg(x, y) (((x) + (y)) / 2) -#define cm_to_m(x) ((x) / 100) -#define m_to_cm(x) ((x)*100) -#define UNUSED(x) ((void)(x)) +#define sign(x) (((x) >= 0) - ((x) < 0)) +#define max(x, y) ((x) > (y) ? (x) : (y)) +#define min(x, y) (((x) < (y)) ? (x) : (y)) +#define abs(x) ((x) < 0 ? -(x) : (x)) +#define avg(x, y) (((x) + (y)) / 2) +#define cm_to_m(x) ((x) / 100) +#define m_to_cm(x) ((x)*100) +#define UNUSED(x) ((void)(x)) +#define ONE_COLOR_PATTERN_SIZE 1 #ifdef DEBUG_ECU #define ECU_ENABLE_BREAKPOINT_DEBUG() \ diff --git a/Core/Src/CAN/inverter_can.c b/Core/Src/CAN/inverter_can.c index 757be299..a8c19140 100644 --- a/Core/Src/CAN/inverter_can.c +++ b/Core/Src/CAN/inverter_can.c @@ -50,9 +50,9 @@ bool is_there_inverter_can_transmit_error() { // Function used to send a message via can void inverter_can_transmit(uint32_t id, uint16_t* data) { inverter_can_status = can_transmit(can_ptr, &TxHeader, id, data); - check_for_errors_with_timeout( - is_there_inverter_can_transmit_error, INVERTER_CAN_TRANSMIT_ERROR_FLAG, - tim_inverter_can_transmit_errorHandle, INVERTER_CAN_TRANSMIT_ERROR_TIMER); + // check_for_errors_with_timeout( + // is_there_inverter_can_transmit_error, INVERTER_CAN_TRANSMIT_ERROR_FLAG, + // tim_inverter_can_transmit_errorHandle, INVERTER_CAN_TRANSMIT_ERROR_TIMER); osDelay(CAN_DELAY); } @@ -89,7 +89,8 @@ void CAN_inverter_receive_callback(FDCAN_HandleTypeDef* hfdcan, uint32_t RxFifo0 void CAN_inverter_error_callback(FDCAN_HandleTypeDef* hfdcan, uint32_t ErrorStatusITs) { if (ErrorStatusITs | FDCAN_IT_BUS_OFF) { // Issue the error so main_task.c treats it - issue_error(INVERTER_BUS_OFF_ERROR_FLAG, /*should_set_control_event_flag=*/false); + // issue_error(INVERTER_BUS_OFF_ERROR_FLAG, + // /*should_set_control_event_flag=*/false); // Clean the INIT CAN bit to start receiving messages again CLEAR_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_INIT); } diff --git a/Core/Src/CAN/inverter_can_monitor.c b/Core/Src/CAN/inverter_can_monitor.c index 4e92cb33..aa959444 100644 --- a/Core/Src/CAN/inverter_can_monitor.c +++ b/Core/Src/CAN/inverter_can_monitor.c @@ -40,11 +40,11 @@ void inverter_can_diff(uint32_t id) { // gets received if (id >= 100 && id <= 103) { osTimerStart(tim_left_inv_errorHandle, INV_COMM_ERROR_TIME); - clear_error(LEFT_INVERTER_COMM_ERROR_FLAG); + // clear_error(LEFT_INVERTER_COMM_ERROR_FLAG); } if (id >= 200 && id <= 203) { osTimerStart(tim_right_inv_errorHandle, INV_COMM_ERROR_TIME); - clear_error(RIGHT_INVERTER_COMM_ERROR_FLAG); + // clear_error(RIGHT_INVERTER_COMM_ERROR_FLAG); } // Calls the precharge_monitor() if there is no error flags @@ -59,7 +59,7 @@ void inverter_can_diff(uint32_t id) { // for 500ms void left_inv_error_callback() { - issue_error(LEFT_INVERTER_COMM_ERROR_FLAG, /*should_set_control_event_flag=*/true); + // issue_error(LEFT_INVERTER_COMM_ERROR_FLAG, /*should_set_control_event_flag=*/true); osEventFlagsClear(e_ECU_control_flagsHandle, INVERTER_READY_THREAD_FLAG); @@ -70,7 +70,8 @@ void left_inv_error_callback() { // for 500ms void right_inv_error_callback() { - issue_error(RIGHT_INVERTER_COMM_ERROR_FLAG, /*should_set_control_event_flag=*/true); + // issue_error(RIGHT_INVERTER_COMM_ERROR_FLAG, + // /*should_set_control_event_flag=*/true); osEventFlagsClear(e_ECU_control_flagsHandle, INVERTER_READY_THREAD_FLAG); @@ -92,7 +93,7 @@ void precharge_monitor() { // if no more errors are present the event flag will be cleared void inverter_BUS_OFF_error_callback(void* argument) { UNUSED(argument); - clear_error(INVERTER_BUS_OFF_ERROR_FLAG); + // clear_error(INVERTER_BUS_OFF_ERROR_FLAG); } // the flag wil be setted after the precharge time has passed diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 9ccec27a..15391ac2 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -24,7 +24,8 @@ void RTD(void* argument) { UNUSED(argument); // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, 1); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, + ONE_COLOR_PATTERN_SIZE); for (;;) { @@ -44,12 +45,12 @@ void RTD(void* argument) { void exit_RTD() { // seta modo_selecionado como erro - set_global_var_value(SELECTED_MODE, erro); - set_global_var_value(RACE_MODE, ERRO); + // set_global_var_value(SELECTED_MODE, erro); + // set_RTD(); // set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); // limpa flag de RTD osEventFlagsClear(e_ECU_control_flagsHandle, RTD_THREAD_FLAG); - osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_THREAD_FLAG); + // osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_THREAD_FLAG); } /* diff --git a/Core/Src/driver_settings/modo.c b/Core/Src/driver_settings/modo.c index 5d758ec6..b22cd78c 100644 --- a/Core/Src/driver_settings/modo.c +++ b/Core/Src/driver_settings/modo.c @@ -37,7 +37,8 @@ void seleciona_modo(void* argument) { case AUTOX: set_global_var_value(SELECTED_MODE, autox); break; default: set_global_var_value(SELECTED_MODE, erro); break; } - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, 1); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, + ONE_COLOR_PATTERN_SIZE); osEventFlagsClear(e_ECU_control_flagsHandle, DYNAMIC_CONTROL_THREAD_FLAG); } // todo: dataloggar modos diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 47367094..e125c471 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -21,31 +21,24 @@ #include "util/global_variables.h" #include "util/util.h" -osStatus_t resultado; - void write_rgb_color(rgb_t rgb_gpio); void write_debug_color(rgb_t rgb_gpio); -rgb_t get_rgb_color(cores_t color); +void write_pattern(rgb_led_message_t message, int delay); +void messageWait(osMessageQueueId_t q_rgb_led_messageHandle); void blink_rgb(uint32_t delay); +rgb_t get_rgb_color(cores_t color); osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern) { rgb_led_message_t message; message.control = control; message.sizeOfPattern = sizeOfPattern; - // config(sizeOfPattern, pattern, &message); - message.pattern[0] = pattern[0]; - message.pattern[1] = sizeOfPattern > 1 ? pattern[1] : 0; - message.pattern[2] = sizeOfPattern > 2 ? pattern[2] : 0; + message.pattern[0] = pattern[0]; + message.pattern[1] = sizeOfPattern > 1 ? pattern[1] : 0; + message.pattern[2] = sizeOfPattern > 2 ? pattern[2] : 0; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); } -/*void config(uint8_t size, cores_t* pattern, rgb_led_message_t *message){ - for (int i = 0; i<3; i++){ - message->pattern[i]= size>i ? pattern[i]: 0; - } -}*/ - void rgb_led(void* argument) { UNUSED(argument); @@ -55,28 +48,29 @@ void rgb_led(void* argument) { // ECU_ENABLE_BREAKPOINT_DEBUG(); // espera RTD ser setado ou timeout estourar - switch ( - osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, RGB_BLINK_DELAY)) { + switch (osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, RGB_TIMEOUT)) { // caso timeout estore vai piscar o led, indicando que ta fora do RTD - case osErrorTimeout: write_pattern(message, RGB_BLINK_DELAY); break; + case osErrorTimeout: write_pattern(message, RGB_BLINK_200_DELAY); break; default: switch (message.control) { case FIXED: if (message.sizeOfPattern > 1) { for (;;) { - write_pattern(message, RGB_BLINK500_DELAY); + write_pattern(message, RGB_BLINK_1000_DELAY); if (osMessageQueueGetCount(q_rgb_led_messageHandle) > 0) { break; } } break; } - write_rgb_color(get_rgb_color(message.pattern[0])); + write_rgb_color( + get_rgb_color(message.pattern[ONE_COLOR_PATTERN_POS])); messageWait(q_rgb_led_messageHandle); break; - default: write_pattern(message, RGB_BLINK_DELAY); break; + + default: write_pattern(message, RGB_BLINK_200_DELAY); break; } break; } @@ -95,9 +89,9 @@ void write_pattern(rgb_led_message_t message, int delay) { } } -void messageWait(osMessageQueueId_t q_rgb_led_messageHandle) { +void messageWait(osMessageQueueId_t q_id) { for (;;) { - if (osMessageQueueGetCount(q_rgb_led_messageHandle) > 0) { + if (osMessageQueueGetCount(q_id) > 0) { break; } } diff --git a/Core/Src/sensors/APPS.c b/Core/Src/sensors/APPS.c index 90eb0a3a..979ad82b 100644 --- a/Core/Src/sensors/APPS.c +++ b/Core/Src/sensors/APPS.c @@ -34,6 +34,9 @@ static uint16_t apps1_throttle_percent = 0; static uint16_t apps2_throttle_percent = 0; static uint16_t throttle_percent = 0; +int i = 0; +int j = 0; + void APPS_read(void* argument) { UNUSED(argument); @@ -68,16 +71,31 @@ void APPS_read(void* argument) { log_data(ID_BRAKE, get_global_var_value(BRAKE_STATUS)); // verifica a plausabilidade do APPS e BSE e plausabilidade dos APPSs - check_for_errors(is_there_BSE_error, BSE_ERROR_FLAG); - check_for_errors_with_timeout(is_there_APPS_error, APPS_ERROR_FLAG, - tim_APPS_errorHandle, APPS_ERROR_TIMER); + // check_for_errors(is_there_BSE_error, BSE_ERROR_FLAG); + // check_for_errors_with_timeout(is_there_APPS_error, APPS_ERROR_FLAG, + // tim_APPS_errorHandle, APPS_ERROR_TIMER); // verifica se a placa de freio esta enviando sinal de curto - check_for_errors_with_timeout(is_there_SU_F_error, SU_F_ERROR_FLAG, - tim_SU_F_errorHandle, SU_F_ERROR_TIMER); + // check_for_errors_with_timeout(is_there_SU_F_error, SU_F_ERROR_FLAG, + // tim_SU_F_errorHandle, SU_F_ERROR_TIMER); + // if (i< 200) + // issue_error(APPS_ERROR_FLAG, /*Should_set_control_event_flag=*/true); uint16_t message = throttle_percent; osMessageQueuePut(q_throttle_controlHandle, &message, 0, 0U); - + ++i; + ++j; + if (i > 500 && i < 800) + issue_error(APPS_ERROR_FLAG, /*Should_set_control_event_flag=*/true); + else + clear_error(APPS_ERROR_FLAG); + if (j > 1000 && j < 1050) { + issue_error(LEFT_INVERTER_COMM_ERROR_FLAG, true); + } + + if (i > 1500) { + set_global_var_value(RACE_MODE, ENDURO); + osThreadFlagsSet(t_seleciona_modoHandle, MODE_BTN_PRESSED_THREAD_FLAG); + } osDelay(THROTTLE_DELAY); } } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 004bc5af..659742f1 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -18,21 +18,18 @@ #include "util/global_variables.h" #include "util/util.h" -#define HARD_ERROR_COLORS_PATTERN_SIZE 3 -#define SOFT_ERROR_COLORS_PATTERN_SIZE 2 - void led_color_response(uint32_t flag) { switch (flag) { // Soft error case BSE_ERROR_FLAG: { cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, ROXO}; - set_rgb_led(pattern, FIXED, SOFT_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } case APPS_ERROR_FLAG: { - cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, VERDE}; - set_rgb_led(pattern, FIXED, SOFT_ERROR_COLORS_PATTERN_SIZE); + cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, AZUL}; + set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } // Hard error @@ -68,27 +65,22 @@ void main_task(void* argument) { UNUSED(argument); + set_RTD(); for (;;) { - // for (int i = 0; i <=28; i++) { - // volatile int aux = (i<=7) ? 16 : 19; - // volatile uint32_t tempError = 1< Date: Wed, 15 Mar 2023 15:49:42 -0300 Subject: [PATCH 17/37] final solution --- Core/Inc/leds/rgb_led_handler.h | 6 ++++-- Core/Inc/util/util.h | 17 ++++++++-------- Core/Src/CAN/inverter_can.c | 9 ++++----- Core/Src/CAN/inverter_can_monitor.c | 11 +++++------ Core/Src/driver_settings/RTD.c | 9 ++++----- Core/Src/sensors/APPS.c | 30 ++++++----------------------- Core/Src/util/main_task.c | 1 - 7 files changed, 31 insertions(+), 52 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index d0899628..d7ef0f2a 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -13,12 +13,14 @@ #include "stdint.h" #include "util/global_definitions.h" -#define RGB_TIMEOUT 200 +#define RGB_TIMEOUT 200 #define RGB_BLINK_200_DELAY 200 #define RGB_BLINK_1000_DELAY 1000 #define ONE_COLOR_PATTERN_POS 0 -#define HARD_ERROR_COLORS_PATTERN_SIZE 3 +#define ONE_COLOR_PATTERN_SIZE 1 #define SOFT_ERROR_COLORS_PATTERN_SIZE 2 +#define HARD_ERROR_COLORS_PATTERN_SIZE 3 + #define RGB_BLACK \ (rgb_t) { 0, 0, 0 } diff --git a/Core/Inc/util/util.h b/Core/Inc/util/util.h index 64207891..d9c39294 100644 --- a/Core/Inc/util/util.h +++ b/Core/Inc/util/util.h @@ -22,15 +22,14 @@ bool is_the_car_stationary(); bool is_RTD_active(); void wait_for_rtd(); -#define sign(x) (((x) >= 0) - ((x) < 0)) -#define max(x, y) ((x) > (y) ? (x) : (y)) -#define min(x, y) (((x) < (y)) ? (x) : (y)) -#define abs(x) ((x) < 0 ? -(x) : (x)) -#define avg(x, y) (((x) + (y)) / 2) -#define cm_to_m(x) ((x) / 100) -#define m_to_cm(x) ((x)*100) -#define UNUSED(x) ((void)(x)) -#define ONE_COLOR_PATTERN_SIZE 1 +#define sign(x) (((x) >= 0) - ((x) < 0)) +#define max(x, y) ((x) > (y) ? (x) : (y)) +#define min(x, y) (((x) < (y)) ? (x) : (y)) +#define abs(x) ((x) < 0 ? -(x) : (x)) +#define avg(x, y) (((x) + (y)) / 2) +#define cm_to_m(x) ((x) / 100) +#define m_to_cm(x) ((x)*100) +#define UNUSED(x) ((void)(x)) #ifdef DEBUG_ECU #define ECU_ENABLE_BREAKPOINT_DEBUG() \ diff --git a/Core/Src/CAN/inverter_can.c b/Core/Src/CAN/inverter_can.c index a8c19140..757be299 100644 --- a/Core/Src/CAN/inverter_can.c +++ b/Core/Src/CAN/inverter_can.c @@ -50,9 +50,9 @@ bool is_there_inverter_can_transmit_error() { // Function used to send a message via can void inverter_can_transmit(uint32_t id, uint16_t* data) { inverter_can_status = can_transmit(can_ptr, &TxHeader, id, data); - // check_for_errors_with_timeout( - // is_there_inverter_can_transmit_error, INVERTER_CAN_TRANSMIT_ERROR_FLAG, - // tim_inverter_can_transmit_errorHandle, INVERTER_CAN_TRANSMIT_ERROR_TIMER); + check_for_errors_with_timeout( + is_there_inverter_can_transmit_error, INVERTER_CAN_TRANSMIT_ERROR_FLAG, + tim_inverter_can_transmit_errorHandle, INVERTER_CAN_TRANSMIT_ERROR_TIMER); osDelay(CAN_DELAY); } @@ -89,8 +89,7 @@ void CAN_inverter_receive_callback(FDCAN_HandleTypeDef* hfdcan, uint32_t RxFifo0 void CAN_inverter_error_callback(FDCAN_HandleTypeDef* hfdcan, uint32_t ErrorStatusITs) { if (ErrorStatusITs | FDCAN_IT_BUS_OFF) { // Issue the error so main_task.c treats it - // issue_error(INVERTER_BUS_OFF_ERROR_FLAG, - // /*should_set_control_event_flag=*/false); + issue_error(INVERTER_BUS_OFF_ERROR_FLAG, /*should_set_control_event_flag=*/false); // Clean the INIT CAN bit to start receiving messages again CLEAR_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_INIT); } diff --git a/Core/Src/CAN/inverter_can_monitor.c b/Core/Src/CAN/inverter_can_monitor.c index 7f444881..7a766ec6 100644 --- a/Core/Src/CAN/inverter_can_monitor.c +++ b/Core/Src/CAN/inverter_can_monitor.c @@ -44,11 +44,11 @@ void inverter_can_diff(uint32_t id) { // gets received if (id >= LEFT_INV_SMALLEST_ID && id <= LEFT_INV_BIGGEST_ID) { osTimerStart(tim_left_inv_errorHandle, INV_COMM_ERROR_TIME); - // clear_error(LEFT_INVERTER_COMM_ERROR_FLAG); + clear_error(LEFT_INVERTER_COMM_ERROR_FLAG); } if (id >= RIGHT_INV_SMALLEST_ID && id <= RIGHT_INV_BIGGEST_ID) { osTimerStart(tim_right_inv_errorHandle, INV_COMM_ERROR_TIME); - // clear_error(RIGHT_INVERTER_COMM_ERROR_FLAG); + clear_error(RIGHT_INVERTER_COMM_ERROR_FLAG); } // Calls the precharge_monitor() if there is no error flags @@ -63,7 +63,7 @@ void inverter_can_diff(uint32_t id) { // for 500ms void left_inv_error_callback() { - // issue_error(LEFT_INVERTER_COMM_ERROR_FLAG, /*should_set_control_event_flag=*/true); + issue_error(LEFT_INVERTER_COMM_ERROR_FLAG, /*should_set_control_event_flag=*/true); osEventFlagsClear(e_ECU_control_flagsHandle, INVERTER_READY_THREAD_FLAG); @@ -74,8 +74,7 @@ void left_inv_error_callback() { // for 500ms void right_inv_error_callback() { - // issue_error(RIGHT_INVERTER_COMM_ERROR_FLAG, - // /*should_set_control_event_flag=*/true); + issue_error(RIGHT_INVERTER_COMM_ERROR_FLAG, /*should_set_control_event_flag=*/true); osEventFlagsClear(e_ECU_control_flagsHandle, INVERTER_READY_THREAD_FLAG); @@ -97,7 +96,7 @@ void precharge_monitor() { // if no more errors are present the event flag will be cleared void inverter_BUS_OFF_error_callback(void* argument) { UNUSED(argument); - // clear_error(INVERTER_BUS_OFF_ERROR_FLAG); + clear_error(INVERTER_BUS_OFF_ERROR_FLAG); } // the flag wil be setted after the precharge time has passed diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 15391ac2..567a978f 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -45,12 +45,11 @@ void RTD(void* argument) { void exit_RTD() { // seta modo_selecionado como erro - // set_global_var_value(SELECTED_MODE, erro); - // set_RTD(); - // set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200); + set_global_var_value(SELECTED_MODE, erro); + set_global_var_value(RACE_MODE, ERRO); // limpa flag de RTD osEventFlagsClear(e_ECU_control_flagsHandle, RTD_THREAD_FLAG); - // osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_THREAD_FLAG); + osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_THREAD_FLAG); } /* @@ -102,7 +101,7 @@ bool can_RTD_be_enabled() { void set_RTD() { // Seta flag de RTD osEventFlagsSet(e_ECU_control_flagsHandle, RTD_THREAD_FLAG); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED, 1); + set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED, ONE_COLOR_PATTERN_SIZE); aciona_sirene(); } diff --git a/Core/Src/sensors/APPS.c b/Core/Src/sensors/APPS.c index 979ad82b..90eb0a3a 100644 --- a/Core/Src/sensors/APPS.c +++ b/Core/Src/sensors/APPS.c @@ -34,9 +34,6 @@ static uint16_t apps1_throttle_percent = 0; static uint16_t apps2_throttle_percent = 0; static uint16_t throttle_percent = 0; -int i = 0; -int j = 0; - void APPS_read(void* argument) { UNUSED(argument); @@ -71,31 +68,16 @@ void APPS_read(void* argument) { log_data(ID_BRAKE, get_global_var_value(BRAKE_STATUS)); // verifica a plausabilidade do APPS e BSE e plausabilidade dos APPSs - // check_for_errors(is_there_BSE_error, BSE_ERROR_FLAG); - // check_for_errors_with_timeout(is_there_APPS_error, APPS_ERROR_FLAG, - // tim_APPS_errorHandle, APPS_ERROR_TIMER); + check_for_errors(is_there_BSE_error, BSE_ERROR_FLAG); + check_for_errors_with_timeout(is_there_APPS_error, APPS_ERROR_FLAG, + tim_APPS_errorHandle, APPS_ERROR_TIMER); // verifica se a placa de freio esta enviando sinal de curto - // check_for_errors_with_timeout(is_there_SU_F_error, SU_F_ERROR_FLAG, - // tim_SU_F_errorHandle, SU_F_ERROR_TIMER); - // if (i< 200) - // issue_error(APPS_ERROR_FLAG, /*Should_set_control_event_flag=*/true); + check_for_errors_with_timeout(is_there_SU_F_error, SU_F_ERROR_FLAG, + tim_SU_F_errorHandle, SU_F_ERROR_TIMER); uint16_t message = throttle_percent; osMessageQueuePut(q_throttle_controlHandle, &message, 0, 0U); - ++i; - ++j; - if (i > 500 && i < 800) - issue_error(APPS_ERROR_FLAG, /*Should_set_control_event_flag=*/true); - else - clear_error(APPS_ERROR_FLAG); - if (j > 1000 && j < 1050) { - issue_error(LEFT_INVERTER_COMM_ERROR_FLAG, true); - } - - if (i > 1500) { - set_global_var_value(RACE_MODE, ENDURO); - osThreadFlagsSet(t_seleciona_modoHandle, MODE_BTN_PRESSED_THREAD_FLAG); - } + osDelay(THROTTLE_DELAY); } } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 659742f1..ad360989 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -65,7 +65,6 @@ void main_task(void* argument) { UNUSED(argument); - set_RTD(); for (;;) { ECU_ENABLE_BREAKPOINT_DEBUG(); From cdf053817011322a98e0bd07440da17f7b7b9dce Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Thu, 16 Mar 2023 09:20:37 -0300 Subject: [PATCH 18/37] led final solution --- Core/Inc/leds/rgb_led_handler.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index d7ef0f2a..a219da93 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -13,15 +13,14 @@ #include "stdint.h" #include "util/global_definitions.h" -#define RGB_TIMEOUT 200 -#define RGB_BLINK_200_DELAY 200 -#define RGB_BLINK_1000_DELAY 1000 -#define ONE_COLOR_PATTERN_POS 0 -#define ONE_COLOR_PATTERN_SIZE 1 +#define RGB_TIMEOUT 200 +#define RGB_BLINK_200_DELAY 200 +#define RGB_BLINK_1000_DELAY 1000 +#define ONE_COLOR_PATTERN_POS 0 +#define ONE_COLOR_PATTERN_SIZE 1 #define SOFT_ERROR_COLORS_PATTERN_SIZE 2 #define HARD_ERROR_COLORS_PATTERN_SIZE 3 - #define RGB_BLACK \ (rgb_t) { 0, 0, 0 } #define RGB_RED \ @@ -39,7 +38,7 @@ #define RGB_WHITE \ (rgb_t) { 1, 1, 1 } -typedef enum { FIXED, BLINK200} control_rgb_led_e; +typedef enum { FIXED, BLINK200 } control_rgb_led_e; typedef struct { cores_t pattern[3]; @@ -56,5 +55,4 @@ typedef struct { osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern); - #endif /* INC_RGB_LED_H_ */ From 096330c6568fa7f0a7685a2afd1b353a7485fe87 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Thu, 16 Mar 2023 10:55:33 -0300 Subject: [PATCH 19/37] led rgb final solution --- Core/Src/leds/rgb_led_handler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index e125c471..d7251885 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -24,7 +24,7 @@ void write_rgb_color(rgb_t rgb_gpio); void write_debug_color(rgb_t rgb_gpio); void write_pattern(rgb_led_message_t message, int delay); -void messageWait(osMessageQueueId_t q_rgb_led_messageHandle); +void messageWait(osMessageQueueId_t q_id); void blink_rgb(uint32_t delay); rgb_t get_rgb_color(cores_t color); From 5071aecc388098408a2435d492a94589242d071a Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Thu, 16 Mar 2023 11:03:23 -0300 Subject: [PATCH 20/37] led rgb solution --- Core/Src/leds/rgb_led_handler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index d7251885..e0d266ea 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -28,7 +28,7 @@ void messageWait(osMessageQueueId_t q_id); void blink_rgb(uint32_t delay); rgb_t get_rgb_color(cores_t color); -osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, +osStatus_t set_rgb_led(const cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern) { rgb_led_message_t message; message.control = control; From c9b2f3e343d6941df53ae6b24f380dbb4f44389c Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Thu, 16 Mar 2023 11:06:12 -0300 Subject: [PATCH 21/37] led rgb solution --- Core/Inc/leds/rgb_led_handler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index a219da93..d2a0d7e5 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -52,7 +52,7 @@ typedef struct { GPIO_PinState blue; } rgb_t; -osStatus_t set_rgb_led(cores_t* pattern, control_rgb_led_e control, +osStatus_t set_rgb_led(const cores_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern); #endif /* INC_RGB_LED_H_ */ From b3a78410d6e2735de0ee9153767fc7b5c7e31d6d Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sun, 19 Mar 2023 11:20:14 -0300 Subject: [PATCH 22/37] led rgb solution --- Core/Inc/util/CMSIS_extra/global_variables_handler.h | 2 +- Core/Src/leds/rgb_led_handler.c | 2 +- Core/Src/util/main_task.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/Inc/util/CMSIS_extra/global_variables_handler.h b/Core/Inc/util/CMSIS_extra/global_variables_handler.h index 7ca190f1..996b673b 100644 --- a/Core/Inc/util/CMSIS_extra/global_variables_handler.h +++ b/Core/Inc/util/CMSIS_extra/global_variables_handler.h @@ -160,4 +160,4 @@ void set_global_var(global_vars_e type, void* message); type##_var; \ }) -#endif /* INC_CMSIS_EXTRA_GLOBAL_VARIABLES_HANDLER_H_ */ +#endif /* INC_CMSIS_EXTRA_GLOBAL_VARIABLES_HANDLER_H_ */ \ No newline at end of file diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index e0d266ea..bd278ec5 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -45,7 +45,7 @@ void rgb_led(void* argument) { rgb_led_message_t message; for (;;) { - // ECU_ENABLE_BREAKPOINT_DEBUG(); + ECU_ENABLE_BREAKPOINT_DEBUG(); // espera RTD ser setado ou timeout estourar switch (osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, RGB_TIMEOUT)) { diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index ad360989..61390cf5 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -109,8 +109,8 @@ void main_task(void* argument) { // If the event flag contains the error flag the car leaves RTD mode. isErrorPresent = event_flags & most_significant_error_flag; if (isErrorPresent) { - led_color_response(most_significant_error_flag); exit_RTD(); + led_color_response(most_significant_error_flag); } else { // Clear the thread flag osThreadFlagsClear(most_significant_error_flag); From 3968d882a357ffafafbd6ac90b817adeae96e23b Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sun, 19 Mar 2023 11:21:56 -0300 Subject: [PATCH 23/37] led rgb solution --- Core/Src/util/CMSIS_extra/global_variables_handler.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Core/Src/util/CMSIS_extra/global_variables_handler.c b/Core/Src/util/CMSIS_extra/global_variables_handler.c index 8a01bcdf..529c0d95 100644 --- a/Core/Src/util/CMSIS_extra/global_variables_handler.c +++ b/Core/Src/util/CMSIS_extra/global_variables_handler.c @@ -17,7 +17,6 @@ typedef struct { // create local storage of queue infos static global_variable_message_queue_data_t queues_info[_global_vars_quan]; - /* * This macro creates a Message Queue of size 1, based on the name provided by * var_name parameter. The Message Queue Id is then stored in the array @@ -33,7 +32,6 @@ static global_variable_message_queue_data_t queues_info[_global_vars_quan]; * (THROTTLE_PERCENT_t)THROTTLE_PERCENT_DEFAULT_VALUE; * osMessageQueuePut(THROTTLE_PERCENT_info->id, &THROTTLE_PERCENT_msg, 0, 0); */ - #define INSTANTIATE_GLOBAL_VAR_QUEUE(var_name) \ /* get a pointer to the queue_data struct intance at position var_name*/ \ global_variable_message_queue_data_t* var_name##_info = queues_info + (var_name); \ @@ -71,4 +69,4 @@ void get_global_var(global_vars_e type, void* message) { void set_global_var(global_vars_e type, void* message) { osMessageQueuePutOverwrite(queues_info[type].id, message, 0); -} +} \ No newline at end of file From 2f99c7d503d207a8f9bb12a6d20e732c8eabb196 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Mon, 3 Apr 2023 17:54:12 -0300 Subject: [PATCH 24/37] rgb_led_handler.c improvement --- Core/Inc/util/global_definitions.h | 2 +- Core/Src/leds/debug_leds_handler.c | 12 ++--- Core/Src/leds/rgb_led_handler.c | 86 ++++++++++++------------------ Core/Src/util/initializers.c | 10 ++-- Core/Src/util/main_task.c | 14 ++--- 5 files changed, 54 insertions(+), 70 deletions(-) diff --git a/Core/Inc/util/global_definitions.h b/Core/Inc/util/global_definitions.h index 2386598e..2a77fd81 100644 --- a/Core/Inc/util/global_definitions.h +++ b/Core/Inc/util/global_definitions.h @@ -18,7 +18,7 @@ typedef enum { FRONT_RIGHT = 0, FRONT_LEFT, REAR_RIGHT, REAR_LEFT } speed_pin_e; // cores do LED da ECU -typedef enum { PRETO = 0, VERMELHO, VERDE, AZUL, AMARELO, ROXO, CIANO, BRANCO } cores_t; +typedef enum { BLACK = 0, RED, GREEN, BLUE, YELLOW, PURPLE, CYAN, WHITE } cores_t; typedef enum modos_desempenho { ERRO = 0, diff --git a/Core/Src/leds/debug_leds_handler.c b/Core/Src/leds/debug_leds_handler.c index fbd62b8e..8aaddeca 100644 --- a/Core/Src/leds/debug_leds_handler.c +++ b/Core/Src/leds/debug_leds_handler.c @@ -27,24 +27,24 @@ void debug_leds(void* argument) { for (;;) { ECU_ENABLE_BREAKPOINT_DEBUG(); - // espera ate alguma mensagem chegar + // wait until some message arrives osMessageQueueGet(q_debug_leds_messageHandle, &message, NULL, osWaitForever); switch (message.control) { case ON: - // acende o led escolhido + // lights up the chosen led HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_RESET); break; case OFF: - // apaga o led escolhido + // turn off the chosen led HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_SET); break; case TOGGLE: - // toggle o led escolhido + // toggle the chosen led HAL_GPIO_TogglePin(GPIOE, message.lednumber); break; case BLINK: - // pisca o led escolhido, pelo valor de vezes escolhido - // delays garante que eh possivel contar quantas vezes piscou + // blink the chosen led, by the chosen value of times + // delays ensures that it is possible to count how many times it blinked for (uint8_t i = 0; i < message.amount; i++) { HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_RESET); osDelay(300); diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index bd278ec5..2954a116 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -1,16 +1,4 @@ /* - * leds.c - * Cores: - * Preto: - - * Vermelho: Erro - * Verde: Enduro - * Azul: Autox - * Amarelo: Erro leve (APPS ou BSE Plausability) - * Roxo: Aceleracao - * Ciano: Skidpad - * Branco: Aviso (REGEN ou Controle dinamicos) - * - * * Created on: May 12, 2021 * Author: Felipe Telles */ @@ -21,11 +9,11 @@ #include "util/global_variables.h" #include "util/util.h" -void write_rgb_color(rgb_t rgb_gpio); -void write_debug_color(rgb_t rgb_gpio); -void write_pattern(rgb_led_message_t message, int delay); -void messageWait(osMessageQueueId_t q_id); -void blink_rgb(uint32_t delay); +static void write_rgb_color(rgb_t rgb_gpio); +// static void write_debug_color(rgb_t rgb_gpio); +static void write_pattern(rgb_led_message_t message, int delay); +static int is_zero_messages_available(osMessageQueueId_t q_id); +static void blink_rgb(uint32_t delay); rgb_t get_rgb_color(cores_t color); osStatus_t set_rgb_led(const cores_t* pattern, control_rgb_led_e control, @@ -47,30 +35,30 @@ void rgb_led(void* argument) { for (;;) { ECU_ENABLE_BREAKPOINT_DEBUG(); - // espera RTD ser setado ou timeout estourar + // wait until the RTD is set or to timeout overflow + switch (osMessageQueueGet(q_rgb_led_messageHandle, &message, NULL, RGB_TIMEOUT)) { - // caso timeout estore vai piscar o led, indicando que ta fora do RTD + // if the timeout overflows the led will blink to show the car its not in RTD case osErrorTimeout: write_pattern(message, RGB_BLINK_200_DELAY); break; default: - switch (message.control) { - case FIXED: - if (message.sizeOfPattern > 1) { - for (;;) { - write_pattern(message, RGB_BLINK_1000_DELAY); - if (osMessageQueueGetCount(q_rgb_led_messageHandle) > 0) { - break; - } - } - break; + if (message.control == FIXED) { + if (message.sizeOfPattern > 1) { + while (!is_zero_messages_available(q_rgb_led_messageHandle)) { + write_pattern(message, RGB_BLINK_1000_DELAY); } - write_rgb_color( - get_rgb_color(message.pattern[ONE_COLOR_PATTERN_POS])); - messageWait(q_rgb_led_messageHandle); break; + } + write_rgb_color( + get_rgb_color(message.pattern[ONE_COLOR_PATTERN_POS])); + while (!is_zero_messages_available(q_rgb_led_messageHandle)) { + osDelay(RGB_BLINK_200_DELAY); + } + } - default: write_pattern(message, RGB_BLINK_200_DELAY); break; + else { + write_pattern(message, RGB_BLINK_200_DELAY); } break; } @@ -79,7 +67,7 @@ void rgb_led(void* argument) { void blink_rgb(uint32_t delay) { osDelay(delay); - write_rgb_color(get_rgb_color(PRETO)); + write_rgb_color(get_rgb_color(BLACK)); } void write_pattern(rgb_led_message_t message, int delay) { @@ -89,37 +77,33 @@ void write_pattern(rgb_led_message_t message, int delay) { } } -void messageWait(osMessageQueueId_t q_id) { - for (;;) { - if (osMessageQueueGetCount(q_id) > 0) { - break; - } - } +int is_zero_messages_available(osMessageQueueId_t q_id) { + return osMessageQueueGetCount(q_rgb_led_messageHandle); } void write_rgb_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_RED_GPIO_Port, C_LED_RED_Pin, rgb_gpio.red); HAL_GPIO_WritePin(C_LED_GREEN_GPIO_Port, C_LED_GREEN_Pin, rgb_gpio.green); HAL_GPIO_WritePin(C_LED_BLUE_GPIO_Port, C_LED_BLUE_Pin, rgb_gpio.blue); - // write_debug_color(rgb_gpio); //apenas para debug + // write_debug_color(rgb_gpio); //only for debug } - +/* void write_debug_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_DEBUG1_GPIO_Port, C_LED_DEBUG1_Pin, !rgb_gpio.red); HAL_GPIO_WritePin(C_LED_DEBUG2_GPIO_Port, C_LED_DEBUG2_Pin, !rgb_gpio.green); HAL_GPIO_WritePin(C_LED_DEBUG3_GPIO_Port, C_LED_DEBUG3_Pin, !rgb_gpio.blue); -} +}*/ rgb_t get_rgb_color(cores_t color) { switch (color) { - case PRETO: return RGB_BLACK; - case VERMELHO: return RGB_RED; - case VERDE: return RGB_GREEN; - case AZUL: return RGB_BLUE; - case AMARELO: return RGB_YELLOW; - case ROXO: return RGB_PURBLE; - case CIANO: return RGB_CYAN; - case BRANCO: + case BLACK: return RGB_BLACK; + case RED: return RGB_RED; + case GREEN: return RGB_GREEN; + case BLUE: return RGB_BLUE; + case YELLOW: return RGB_YELLOW; + case PURPLE: return RGB_PURBLE; + case CYAN: return RGB_CYAN; + case WHITE: default: return RGB_WHITE; } } diff --git a/Core/Src/util/initializers.c b/Core/Src/util/initializers.c index 7b67d09b..9e639b25 100644 --- a/Core/Src/util/initializers.c +++ b/Core/Src/util/initializers.c @@ -65,7 +65,7 @@ void init_modes() { enduro.bat_safe = 1; enduro.torq_gain = 10; // ERA 15 enduro.mode = ENDURO; - enduro.cor[0] = VERDE; + enduro.cor[0] = GREEN; aceleracao.tor_max = 1500; aceleracao.vel_max = vel_max_rpm; @@ -75,7 +75,7 @@ void init_modes() { aceleracao.bat_safe = 0; aceleracao.torq_gain = 15; aceleracao.mode = ACELERACAO; - aceleracao.cor[0] = ROXO; + aceleracao.cor[0] = PURPLE; skidpad.tor_max = 2000; skidpad.vel_max = vel_max_rpm; @@ -85,7 +85,7 @@ void init_modes() { skidpad.bat_safe = 0; skidpad.torq_gain = 20; skidpad.mode = SKIDPAD; - skidpad.cor[0] = CIANO; + skidpad.cor[0] = CYAN; autox.tor_max = 2500; autox.vel_max = vel_max_rpm; @@ -95,7 +95,7 @@ void init_modes() { autox.bat_safe = 0; autox.torq_gain = 25; autox.mode = AUTOX; - autox.cor[0] = AZUL; + autox.cor[0] = BLUE; erro.tor_max = 0; erro.vel_max = 0; @@ -105,7 +105,7 @@ void init_modes() { erro.bat_safe = 0; erro.torq_gain = 0; erro.mode = ERRO; - erro.cor[0] = VERMELHO; + erro.cor[0] = RED; set_global_var_value(SELECTED_MODE, enduro); // inicializa no modo enduro } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 61390cf5..d2e7214b 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -23,38 +23,38 @@ void led_color_response(uint32_t flag) { switch (flag) { // Soft error case BSE_ERROR_FLAG: { - cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, ROXO}; + cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, PURPLE}; set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } case APPS_ERROR_FLAG: { - cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {AMARELO, AZUL}; + cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, BLUE}; set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } // Hard error case INVERTER_CAN_TRANSMIT_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, AMARELO}; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, YELLOW}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case SU_F_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, BRANCO, PRETO}; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, WHITE, BLACK}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case INVERTER_BUS_OFF_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, VERDE}; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, GREEN}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case LEFT_INVERTER_COMM_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, ROXO}; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, PURPLE}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case RIGHT_INVERTER_COMM_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {VERMELHO, AZUL, CIANO}; + cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, CYAN}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } From 62a02c8beeafa3e8b96b8914a3b9c2626a62ee6d Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 5 Apr 2023 09:39:55 -0300 Subject: [PATCH 25/37] are_messages_available --- Core/Src/leds/rgb_led_handler.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 2954a116..417ceede 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -12,7 +12,7 @@ static void write_rgb_color(rgb_t rgb_gpio); // static void write_debug_color(rgb_t rgb_gpio); static void write_pattern(rgb_led_message_t message, int delay); -static int is_zero_messages_available(osMessageQueueId_t q_id); +static int are_messages_available(osMessageQueueId_t q_id); static void blink_rgb(uint32_t delay); rgb_t get_rgb_color(cores_t color); @@ -45,14 +45,14 @@ void rgb_led(void* argument) { default: if (message.control == FIXED) { if (message.sizeOfPattern > 1) { - while (!is_zero_messages_available(q_rgb_led_messageHandle)) { + while (!are_messages_available(q_rgb_led_messageHandle)) { write_pattern(message, RGB_BLINK_1000_DELAY); } break; } write_rgb_color( get_rgb_color(message.pattern[ONE_COLOR_PATTERN_POS])); - while (!is_zero_messages_available(q_rgb_led_messageHandle)) { + while (!are_messages_available(q_rgb_led_messageHandle)) { osDelay(RGB_BLINK_200_DELAY); } } @@ -77,7 +77,7 @@ void write_pattern(rgb_led_message_t message, int delay) { } } -int is_zero_messages_available(osMessageQueueId_t q_id) { +int are_messages_available(osMessageQueueId_t q_id) { return osMessageQueueGetCount(q_rgb_led_messageHandle); } From ee00b1d35ef92978ae51d65de78fd24d20ad787a Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 5 Apr 2023 10:03:07 -0300 Subject: [PATCH 26/37] solved requested changes --- Core/Inc/leds/rgb_led_handler.h | 4 ++-- Core/Inc/util/global_definitions.h | 4 ++-- Core/Src/driver_settings/RTD.c | 4 ++-- Core/Src/driver_settings/modo.c | 2 +- Core/Src/leds/rgb_led_handler.c | 8 ++++---- Core/Src/util/initializers.c | 12 ++++++------ Core/Src/util/main_task.c | 16 ++++++++-------- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index d2a0d7e5..3dd466d8 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -41,7 +41,7 @@ typedef enum { FIXED, BLINK200 } control_rgb_led_e; typedef struct { - cores_t pattern[3]; + colors_t pattern[3]; control_rgb_led_e control; uint8_t sizeOfPattern; } rgb_led_message_t; @@ -52,7 +52,7 @@ typedef struct { GPIO_PinState blue; } rgb_t; -osStatus_t set_rgb_led(const cores_t* pattern, control_rgb_led_e control, +osStatus_t set_rgb_led(const colors_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern); #endif /* INC_RGB_LED_H_ */ diff --git a/Core/Inc/util/global_definitions.h b/Core/Inc/util/global_definitions.h index 2a77fd81..a525a627 100644 --- a/Core/Inc/util/global_definitions.h +++ b/Core/Inc/util/global_definitions.h @@ -18,7 +18,7 @@ typedef enum { FRONT_RIGHT = 0, FRONT_LEFT, REAR_RIGHT, REAR_LEFT } speed_pin_e; // cores do LED da ECU -typedef enum { BLACK = 0, RED, GREEN, BLUE, YELLOW, PURPLE, CYAN, WHITE } cores_t; +typedef enum { BLACK = 0, RED, GREEN, BLUE, YELLOW, PURPLE, CYAN, WHITE } colors_t; typedef enum modos_desempenho { ERRO = 0, @@ -43,7 +43,7 @@ typedef struct // struct de modo int torq_gain; // ganho de torque, aconselhavel q seja proporcional ao torque maximo ( // de 0 a 40) race_mode_t mode; // 1 enduro, 2 aceleracao, 3 skidpad, 4 autox - cores_t cor[1]; + colors_t rgbColor[1]; } modos; #define R_MOTOR 0 diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 567a978f..e01ad93c 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -24,7 +24,7 @@ void RTD(void* argument) { UNUSED(argument); // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, + set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, BLINK200, ONE_COLOR_PATTERN_SIZE); for (;;) { @@ -101,7 +101,7 @@ bool can_RTD_be_enabled() { void set_RTD() { // Seta flag de RTD osEventFlagsSet(e_ECU_control_flagsHandle, RTD_THREAD_FLAG); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, FIXED, ONE_COLOR_PATTERN_SIZE); + set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, FIXED, ONE_COLOR_PATTERN_SIZE); aciona_sirene(); } diff --git a/Core/Src/driver_settings/modo.c b/Core/Src/driver_settings/modo.c index b22cd78c..9caaf23e 100644 --- a/Core/Src/driver_settings/modo.c +++ b/Core/Src/driver_settings/modo.c @@ -37,7 +37,7 @@ void seleciona_modo(void* argument) { case AUTOX: set_global_var_value(SELECTED_MODE, autox); break; default: set_global_var_value(SELECTED_MODE, erro); break; } - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, + set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, BLINK200, ONE_COLOR_PATTERN_SIZE); osEventFlagsClear(e_ECU_control_flagsHandle, DYNAMIC_CONTROL_THREAD_FLAG); } diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 417ceede..797851e5 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -14,9 +14,9 @@ static void write_rgb_color(rgb_t rgb_gpio); static void write_pattern(rgb_led_message_t message, int delay); static int are_messages_available(osMessageQueueId_t q_id); static void blink_rgb(uint32_t delay); -rgb_t get_rgb_color(cores_t color); +rgb_t get_rgb_color(colors_t color); -osStatus_t set_rgb_led(const cores_t* pattern, control_rgb_led_e control, +osStatus_t set_rgb_led(const colors_t* pattern, control_rgb_led_e control, uint8_t sizeOfPattern) { rgb_led_message_t message; message.control = control; @@ -57,7 +57,7 @@ void rgb_led(void* argument) { } } - else { + else if (message.control == BLINK200) { write_pattern(message, RGB_BLINK_200_DELAY); } break; @@ -94,7 +94,7 @@ void write_debug_color(rgb_t rgb_gpio) { HAL_GPIO_WritePin(C_LED_DEBUG3_GPIO_Port, C_LED_DEBUG3_Pin, !rgb_gpio.blue); }*/ -rgb_t get_rgb_color(cores_t color) { +rgb_t get_rgb_color(colors_t color) { switch (color) { case BLACK: return RGB_BLACK; case RED: return RGB_RED; diff --git a/Core/Src/util/initializers.c b/Core/Src/util/initializers.c index 9e639b25..c89fc44b 100644 --- a/Core/Src/util/initializers.c +++ b/Core/Src/util/initializers.c @@ -34,7 +34,7 @@ void init_ADC_DMA(ADC_HandleTypeDef* hadc) { } extern uint8_t error_count; -cores_t led_conf; +colors_t led_conf; uint8_t error_count = 0; // conta erros, quantas vezes o programa caiu no error handler uint16_t debug_milis = 0, debug_milis_ant = 0; @@ -65,7 +65,7 @@ void init_modes() { enduro.bat_safe = 1; enduro.torq_gain = 10; // ERA 15 enduro.mode = ENDURO; - enduro.cor[0] = GREEN; + enduro.rgbColor[0] = GREEN; aceleracao.tor_max = 1500; aceleracao.vel_max = vel_max_rpm; @@ -75,7 +75,7 @@ void init_modes() { aceleracao.bat_safe = 0; aceleracao.torq_gain = 15; aceleracao.mode = ACELERACAO; - aceleracao.cor[0] = PURPLE; + aceleracao.rgbColor[0] = PURPLE; skidpad.tor_max = 2000; skidpad.vel_max = vel_max_rpm; @@ -85,7 +85,7 @@ void init_modes() { skidpad.bat_safe = 0; skidpad.torq_gain = 20; skidpad.mode = SKIDPAD; - skidpad.cor[0] = CYAN; + skidpad.rgbColor[0] = CYAN; autox.tor_max = 2500; autox.vel_max = vel_max_rpm; @@ -95,7 +95,7 @@ void init_modes() { autox.bat_safe = 0; autox.torq_gain = 25; autox.mode = AUTOX; - autox.cor[0] = BLUE; + autox.rgbColor[0] = BLUE; erro.tor_max = 0; erro.vel_max = 0; @@ -105,7 +105,7 @@ void init_modes() { erro.bat_safe = 0; erro.torq_gain = 0; erro.mode = ERRO; - erro.cor[0] = RED; + erro.rgbColor[0] = RED; set_global_var_value(SELECTED_MODE, enduro); // inicializa no modo enduro } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index d2e7214b..9a18a92e 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -23,38 +23,38 @@ void led_color_response(uint32_t flag) { switch (flag) { // Soft error case BSE_ERROR_FLAG: { - cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, PURPLE}; + colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, PURPLE}; set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } case APPS_ERROR_FLAG: { - cores_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, BLUE}; + colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, BLUE}; set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } // Hard error case INVERTER_CAN_TRANSMIT_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, YELLOW}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, YELLOW}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case SU_F_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, WHITE, BLACK}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, WHITE, BLACK}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case INVERTER_BUS_OFF_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, GREEN}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, GREEN}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case LEFT_INVERTER_COMM_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, PURPLE}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, PURPLE}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case RIGHT_INVERTER_COMM_ERROR_FLAG: { - cores_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, CYAN}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, CYAN}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } @@ -128,7 +128,7 @@ void main_task(void* argument) { } else { // Clear the thread flag and set ECU led to normal osThreadFlagsClear(most_significant_error_flag); - set_rgb_led(get_global_var_value(SELECTED_MODE).cor, BLINK200, + set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, BLINK200, ONE_COLOR_PATTERN_SIZE); } break; From 372c96117bc355c313cf509be0aa354da8276365 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 12 Apr 2023 12:19:18 -0300 Subject: [PATCH 27/37] some fixes --- Core/Src/driver_settings/RTD.c | 7 ++++--- Core/Src/leds/rgb_led_handler.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index e01ad93c..b0b8428b 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -18,7 +18,7 @@ void aciona_sirene(); bool can_RTD_be_enabled(); -void set_RTD(); +static void set_RTD(); void RTD(void* argument) { UNUSED(argument); @@ -98,10 +98,11 @@ bool can_RTD_be_enabled() { return false; } -void set_RTD() { +static void set_RTD() { // Seta flag de RTD osEventFlagsSet(e_ECU_control_flagsHandle, RTD_THREAD_FLAG); - set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, FIXED, ONE_COLOR_PATTERN_SIZE); + set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, FIXED, + ONE_COLOR_PATTERN_SIZE); aciona_sirene(); } diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 797851e5..0804d560 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -78,7 +78,7 @@ void write_pattern(rgb_led_message_t message, int delay) { } int are_messages_available(osMessageQueueId_t q_id) { - return osMessageQueueGetCount(q_rgb_led_messageHandle); + return osMessageQueueGetCount(q_id); } void write_rgb_color(rgb_t rgb_gpio) { From 81a5b130e0242195e36251e345a818708d8d5303 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 12 Apr 2023 12:33:56 -0300 Subject: [PATCH 28/37] format fixes --- Core/Src/util/initializers.c | 10 +++++----- Core/Src/util/main_task.c | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Core/Src/util/initializers.c b/Core/Src/util/initializers.c index c89fc44b..ef9ab3bb 100644 --- a/Core/Src/util/initializers.c +++ b/Core/Src/util/initializers.c @@ -65,7 +65,7 @@ void init_modes() { enduro.bat_safe = 1; enduro.torq_gain = 10; // ERA 15 enduro.mode = ENDURO; - enduro.rgbColor[0] = GREEN; + enduro.rgbColor[0] = GREEN; aceleracao.tor_max = 1500; aceleracao.vel_max = vel_max_rpm; @@ -75,7 +75,7 @@ void init_modes() { aceleracao.bat_safe = 0; aceleracao.torq_gain = 15; aceleracao.mode = ACELERACAO; - aceleracao.rgbColor[0] = PURPLE; + aceleracao.rgbColor[0] = PURPLE; skidpad.tor_max = 2000; skidpad.vel_max = vel_max_rpm; @@ -85,7 +85,7 @@ void init_modes() { skidpad.bat_safe = 0; skidpad.torq_gain = 20; skidpad.mode = SKIDPAD; - skidpad.rgbColor[0] = CYAN; + skidpad.rgbColor[0] = CYAN; autox.tor_max = 2500; autox.vel_max = vel_max_rpm; @@ -95,7 +95,7 @@ void init_modes() { autox.bat_safe = 0; autox.torq_gain = 25; autox.mode = AUTOX; - autox.rgbColor[0] = BLUE; + autox.rgbColor[0] = BLUE; erro.tor_max = 0; erro.vel_max = 0; @@ -105,7 +105,7 @@ void init_modes() { erro.bat_safe = 0; erro.torq_gain = 0; erro.mode = ERRO; - erro.rgbColor[0] = RED; + erro.rgbColor[0] = RED; set_global_var_value(SELECTED_MODE, enduro); // inicializa no modo enduro } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 9a18a92e..4ac77350 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -23,38 +23,38 @@ void led_color_response(uint32_t flag) { switch (flag) { // Soft error case BSE_ERROR_FLAG: { - colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, PURPLE}; + colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, PURPLE}; set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } case APPS_ERROR_FLAG: { - colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, BLUE}; + colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, BLUE}; set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); break; } // Hard error case INVERTER_CAN_TRANSMIT_ERROR_FLAG: { - colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, YELLOW}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, YELLOW}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case SU_F_ERROR_FLAG: { - colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, WHITE, BLACK}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, WHITE, BLACK}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case INVERTER_BUS_OFF_ERROR_FLAG: { - colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, GREEN}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, GREEN}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case LEFT_INVERTER_COMM_ERROR_FLAG: { - colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, PURPLE}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, PURPLE}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } case RIGHT_INVERTER_COMM_ERROR_FLAG: { - colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, CYAN}; + colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, CYAN}; set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); break; } From 438855b7305afbe329508a1b29b32034ef6e98a5 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 12 Apr 2023 12:42:41 -0300 Subject: [PATCH 29/37] correcting type of function 'are_messages_available' --- Core/Src/leds/rgb_led_handler.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 0804d560..d7ca30c5 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -12,7 +12,7 @@ static void write_rgb_color(rgb_t rgb_gpio); // static void write_debug_color(rgb_t rgb_gpio); static void write_pattern(rgb_led_message_t message, int delay); -static int are_messages_available(osMessageQueueId_t q_id); +static uint32_t are_messages_available(osMessageQueueId_t q_id); static void blink_rgb(uint32_t delay); rgb_t get_rgb_color(colors_t color); @@ -77,7 +77,7 @@ void write_pattern(rgb_led_message_t message, int delay) { } } -int are_messages_available(osMessageQueueId_t q_id) { +uint32_t are_messages_available(osMessageQueueId_t q_id) { return osMessageQueueGetCount(q_id); } From 2c1e39743388e6771a8c0ee0be215cef9b737a67 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sat, 6 May 2023 14:05:39 -0300 Subject: [PATCH 30/37] resolved requests --- Core/Inc/leds/debug_leds_handler.h | 2 +- Core/Inc/leds/rgb_led_handler.h | 6 +++--- Core/Inc/util/global_definitions.h | 2 +- Core/Src/driver_settings/RTD.c | 17 ++++++++--------- Core/Src/driver_settings/modo.c | 4 ++-- Core/Src/leds/debug_leds_handler.c | 19 +++++++++++-------- Core/Src/leds/rgb_led_handler.c | 18 +++++++++--------- Core/Src/util/initializers.c | 10 +++++----- Core/Src/util/main_task.c | 16 ++++++++-------- 9 files changed, 48 insertions(+), 46 deletions(-) diff --git a/Core/Inc/leds/debug_leds_handler.h b/Core/Inc/leds/debug_leds_handler.h index ced92b49..d322034b 100644 --- a/Core/Inc/leds/debug_leds_handler.h +++ b/Core/Inc/leds/debug_leds_handler.h @@ -19,7 +19,7 @@ typedef enum { ON, OFF, TOGGLE, BLINK, FASTBLINK } ControlDebugLED_e; typedef struct { - uint16_t lednumber; + uint16_t led_number; ControlDebugLED_e control; uint8_t amount; } debug_led_message_t; diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index 3dd466d8..e77970ff 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -43,7 +43,7 @@ typedef enum { FIXED, BLINK200 } control_rgb_led_e; typedef struct { colors_t pattern[3]; control_rgb_led_e control; - uint8_t sizeOfPattern; + uint8_t size_of_pattern; } rgb_led_message_t; typedef struct { @@ -52,7 +52,7 @@ typedef struct { GPIO_PinState blue; } rgb_t; -osStatus_t set_rgb_led(const colors_t* pattern, control_rgb_led_e control, - uint8_t sizeOfPattern); +osStatus_t set_rgb_led(const colors_t* pattern, uint8_t sizeOfPattern, + control_rgb_led_e control); #endif /* INC_RGB_LED_H_ */ diff --git a/Core/Inc/util/global_definitions.h b/Core/Inc/util/global_definitions.h index 3beaf0ce..549c9f92 100644 --- a/Core/Inc/util/global_definitions.h +++ b/Core/Inc/util/global_definitions.h @@ -43,7 +43,7 @@ typedef struct // struct de modo int torq_gain; // ganho de torque, aconselhavel q seja proporcional ao torque maximo ( // de 0 a 40) race_mode_t mode; // 1 enduro, 2 aceleracao, 3 skidpad, 4 autox - colors_t rgbColor[1]; + colors_t rgb_colors[1]; } modos; #define R_MOTOR 0 diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 943613f7..43188f21 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -23,20 +23,20 @@ static void set_RTD(); void RTD(void* argument) { UNUSED(argument); - // seta o led rgb na primeira execucao do codigo --- se n tiver erros acontecendo - set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, BLINK200, - ONE_COLOR_PATTERN_SIZE); + // set the rgb led on the first execution of the code + set_rgb_led(get_global_var_value(SELECTED_MODE).rgb_colors, ONE_COLOR_PATTERN_SIZE, + FIXED); for (;;) { - // espera receber flag q o botao de RTD foi pressionado + // waits to receive flag that the RTD button was pressed osThreadFlagsWait(RTD_BTN_PRESSED_THREAD_FLAG, osFlagsWaitAny, osWaitForever); if (!is_RTD_active()) { if (can_RTD_be_enabled()) { set_RTD(); } else { - // envia uma mensagem de alerta caso n seja possivel acionar RTD + // sends an alert message if it is not possible to trigger RTD set_debugleds(DEBUGLED1, BLINK, 2); } } @@ -44,10 +44,9 @@ void RTD(void* argument) { } void exit_RTD() { - // seta modo_selecionado como erro set_global_var_value(SELECTED_MODE, erro); set_global_var_value(RACE_MODE, ERRO); - // limpa flag de RTD + // clear RTD flag osEventFlagsClear(e_ECU_control_flagsHandle, RTD_FLAG); osThreadFlagsSet(t_odometer_saveHandle, ODOMETER_SAVE_THREAD_FLAG); } @@ -81,7 +80,7 @@ void exit_RTD() { * TODO: Allow RTD activation from the status check of the AIRs. */ static bool can_RTD_be_enabled() { - // obtem todas as flags e filtra apenas flags de erros severos, ignorando as outras + // get all flags and filter only severe error flags, ignoring others uint32_t error_flags = osEventFlagsGet(e_ECU_control_flagsHandle); error_flags &= ALL_SEVERE_ERROR_FLAG; BRAKE_STATUS_t is_brake_active = get_global_var_value(BRAKE_STATUS); @@ -100,7 +99,7 @@ static bool can_RTD_be_enabled() { static void set_RTD() { osEventFlagsSet(e_ECU_control_flagsHandle, RTD_FLAG); - set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, FIXED, + set_rgb_led(get_global_var_value(SELECTED_MODE).rgb_colors, FIXED, ONE_COLOR_PATTERN_SIZE); activate_RTDS(); } diff --git a/Core/Src/driver_settings/modo.c b/Core/Src/driver_settings/modo.c index 336e7107..0f5201cc 100644 --- a/Core/Src/driver_settings/modo.c +++ b/Core/Src/driver_settings/modo.c @@ -37,8 +37,8 @@ void seleciona_modo(void* argument) { case AUTOX: set_global_var_value(SELECTED_MODE, autox); break; default: set_global_var_value(SELECTED_MODE, erro); break; } - set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, BLINK200, - ONE_COLOR_PATTERN_SIZE); + set_rgb_led(get_global_var_value(SELECTED_MODE).rgb_colors, + ONE_COLOR_PATTERN_SIZE, BLINK200); osEventFlagsClear(e_ECU_control_flagsHandle, DYNAMIC_CONTROL_FLAG); } // todo: dataloggar modos diff --git a/Core/Src/leds/debug_leds_handler.c b/Core/Src/leds/debug_leds_handler.c index 8aaddeca..5ce49151 100644 --- a/Core/Src/leds/debug_leds_handler.c +++ b/Core/Src/leds/debug_leds_handler.c @@ -11,12 +11,15 @@ #include "util/global_definitions.h" #include "util/global_variables.h" #include "util/util.h" +#include "util/CMSIS_extra/cmsis_extra.h" +#include "util/CMSIS_extra/global_variables_handler.h" + extern osMessageQueueId_t q_debug_leds_messageHandle; osStatus_t set_debugleds(uint16_t lednumber, ControlDebugLED_e control, uint8_t amount) { debug_led_message_t message = {lednumber, control, amount}; - return osMessageQueuePut(q_debug_leds_messageHandle, &message, 0, 0U); + return osMessageQueuePutOverwrite(q_debug_leds_messageHandle, &message, 0); } void debug_leds(void* argument) { @@ -32,31 +35,31 @@ void debug_leds(void* argument) { switch (message.control) { case ON: // lights up the chosen led - HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, message.led_number, GPIO_PIN_RESET); break; case OFF: // turn off the chosen led - HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOE, message.led_number, GPIO_PIN_SET); break; case TOGGLE: // toggle the chosen led - HAL_GPIO_TogglePin(GPIOE, message.lednumber); + HAL_GPIO_TogglePin(GPIOE, message.led_number); break; case BLINK: // blink the chosen led, by the chosen value of times // delays ensures that it is possible to count how many times it blinked for (uint8_t i = 0; i < message.amount; i++) { - HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, message.led_number, GPIO_PIN_RESET); osDelay(300); - HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOE, message.led_number, GPIO_PIN_SET); osDelay(300); } osDelay(500); break; case FASTBLINK: - HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, message.led_number, GPIO_PIN_RESET); osDelay(message.amount); - HAL_GPIO_WritePin(GPIOE, message.lednumber, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOE, message.led_number, GPIO_PIN_SET); osDelay(message.amount / 2); break; } diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index d7ca30c5..303c63a9 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -16,14 +16,14 @@ static uint32_t are_messages_available(osMessageQueueId_t q_id); static void blink_rgb(uint32_t delay); rgb_t get_rgb_color(colors_t color); -osStatus_t set_rgb_led(const colors_t* pattern, control_rgb_led_e control, - uint8_t sizeOfPattern) { +osStatus_t set_rgb_led(const colors_t* pattern, uint8_t size_of_pattern, + control_rgb_led_e control) { rgb_led_message_t message; - message.control = control; - message.sizeOfPattern = sizeOfPattern; - message.pattern[0] = pattern[0]; - message.pattern[1] = sizeOfPattern > 1 ? pattern[1] : 0; - message.pattern[2] = sizeOfPattern > 2 ? pattern[2] : 0; + message.control = control; + message.size_of_pattern = size_of_pattern; + message.pattern[0] = pattern[0]; + message.pattern[1] = size_of_pattern > 1 ? pattern[1] : 0; + message.pattern[2] = size_of_pattern > 2 ? pattern[2] : 0; return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); } @@ -44,7 +44,7 @@ void rgb_led(void* argument) { default: if (message.control == FIXED) { - if (message.sizeOfPattern > 1) { + if (message.size_of_pattern > 1) { while (!are_messages_available(q_rgb_led_messageHandle)) { write_pattern(message, RGB_BLINK_1000_DELAY); } @@ -71,7 +71,7 @@ void blink_rgb(uint32_t delay) { } void write_pattern(rgb_led_message_t message, int delay) { - for (int i = 0; i < message.sizeOfPattern; ++i) { + for (int i = 0; i < message.size_of_pattern; ++i) { write_rgb_color(get_rgb_color(message.pattern[i])); blink_rgb(delay); } diff --git a/Core/Src/util/initializers.c b/Core/Src/util/initializers.c index ef9ab3bb..891bd013 100644 --- a/Core/Src/util/initializers.c +++ b/Core/Src/util/initializers.c @@ -65,7 +65,7 @@ void init_modes() { enduro.bat_safe = 1; enduro.torq_gain = 10; // ERA 15 enduro.mode = ENDURO; - enduro.rgbColor[0] = GREEN; + enduro.rgb_colors[0] = GREEN; aceleracao.tor_max = 1500; aceleracao.vel_max = vel_max_rpm; @@ -75,7 +75,7 @@ void init_modes() { aceleracao.bat_safe = 0; aceleracao.torq_gain = 15; aceleracao.mode = ACELERACAO; - aceleracao.rgbColor[0] = PURPLE; + aceleracao.rgb_colors[0] = PURPLE; skidpad.tor_max = 2000; skidpad.vel_max = vel_max_rpm; @@ -85,7 +85,7 @@ void init_modes() { skidpad.bat_safe = 0; skidpad.torq_gain = 20; skidpad.mode = SKIDPAD; - skidpad.rgbColor[0] = CYAN; + skidpad.rgb_colors[0] = CYAN; autox.tor_max = 2500; autox.vel_max = vel_max_rpm; @@ -95,7 +95,7 @@ void init_modes() { autox.bat_safe = 0; autox.torq_gain = 25; autox.mode = AUTOX; - autox.rgbColor[0] = BLUE; + autox.rgb_colors[0] = BLUE; erro.tor_max = 0; erro.vel_max = 0; @@ -105,7 +105,7 @@ void init_modes() { erro.bat_safe = 0; erro.torq_gain = 0; erro.mode = ERRO; - erro.rgbColor[0] = RED; + erro.rgb_colors[0] = RED; set_global_var_value(SELECTED_MODE, enduro); // inicializa no modo enduro } diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 4ac77350..0e197425 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -24,38 +24,38 @@ void led_color_response(uint32_t flag) { // Soft error case BSE_ERROR_FLAG: { colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, PURPLE}; - set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, SOFT_ERROR_COLORS_PATTERN_SIZE, BLINK200); break; } case APPS_ERROR_FLAG: { colors_t pattern[SOFT_ERROR_COLORS_PATTERN_SIZE] = {YELLOW, BLUE}; - set_rgb_led(pattern, BLINK200, SOFT_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, SOFT_ERROR_COLORS_PATTERN_SIZE, BLINK200); break; } // Hard error case INVERTER_CAN_TRANSMIT_ERROR_FLAG: { colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, YELLOW}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, HARD_ERROR_COLORS_PATTERN_SIZE, FIXED); break; } case SU_F_ERROR_FLAG: { colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, WHITE, BLACK}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, HARD_ERROR_COLORS_PATTERN_SIZE, FIXED); break; } case INVERTER_BUS_OFF_ERROR_FLAG: { colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, GREEN}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, HARD_ERROR_COLORS_PATTERN_SIZE, FIXED); break; } case LEFT_INVERTER_COMM_ERROR_FLAG: { colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, PURPLE}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, HARD_ERROR_COLORS_PATTERN_SIZE, FIXED); break; } case RIGHT_INVERTER_COMM_ERROR_FLAG: { colors_t pattern[HARD_ERROR_COLORS_PATTERN_SIZE] = {RED, BLUE, CYAN}; - set_rgb_led(pattern, FIXED, HARD_ERROR_COLORS_PATTERN_SIZE); + set_rgb_led(pattern, HARD_ERROR_COLORS_PATTERN_SIZE, FIXED); break; } } @@ -128,7 +128,7 @@ void main_task(void* argument) { } else { // Clear the thread flag and set ECU led to normal osThreadFlagsClear(most_significant_error_flag); - set_rgb_led(get_global_var_value(SELECTED_MODE).rgbColor, BLINK200, + set_rgb_led(get_global_var_value(SELECTED_MODE).rgb_colors, BLINK200, ONE_COLOR_PATTERN_SIZE); } break; From 673f50adaf30f28957262b3a284994fa734ff35e Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sat, 6 May 2023 14:13:48 -0300 Subject: [PATCH 31/37] resolved requests -- formatting fix --- Core/Src/leds/debug_leds_handler.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Core/Src/leds/debug_leds_handler.c b/Core/Src/leds/debug_leds_handler.c index 5ce49151..2b46e479 100644 --- a/Core/Src/leds/debug_leds_handler.c +++ b/Core/Src/leds/debug_leds_handler.c @@ -8,12 +8,11 @@ #include "leds/debug_leds_handler.h" #include "cmsis_os.h" +#include "util/CMSIS_extra/cmsis_extra.h" +#include "util/CMSIS_extra/global_variables_handler.h" #include "util/global_definitions.h" #include "util/global_variables.h" #include "util/util.h" -#include "util/CMSIS_extra/cmsis_extra.h" -#include "util/CMSIS_extra/global_variables_handler.h" - extern osMessageQueueId_t q_debug_leds_messageHandle; From 7d36a3647d4b0a5914f340549679f0e1773c2d32 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sat, 6 May 2023 14:20:44 -0300 Subject: [PATCH 32/37] resolved requests -- clang-tidy fix --- Core/Inc/leds/rgb_led_handler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index e77970ff..b38f99c8 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -52,7 +52,7 @@ typedef struct { GPIO_PinState blue; } rgb_t; -osStatus_t set_rgb_led(const colors_t* pattern, uint8_t sizeOfPattern, +osStatus_t set_rgb_led(const colors_t* pattern, uint8_t size_of_pattern, control_rgb_led_e control); #endif /* INC_RGB_LED_H_ */ From 04315a9105a27820a83b86d095bb3a6aa42a992a Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sun, 21 May 2023 19:01:47 -0300 Subject: [PATCH 33/37] RTD.c requests --- Core/Inc/leds/debug_leds_handler.h | 4 ++-- Core/Inc/leds/rgb_led_handler.h | 36 +++++++++++++++++++++--------- Core/Src/driver_settings/RTD.c | 3 ++- Core/Src/leds/debug_leds_handler.c | 4 ++-- Core/Src/leds/rgb_led_handler.c | 4 ++-- 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/Core/Inc/leds/debug_leds_handler.h b/Core/Inc/leds/debug_leds_handler.h index d322034b..1c54111f 100644 --- a/Core/Inc/leds/debug_leds_handler.h +++ b/Core/Inc/leds/debug_leds_handler.h @@ -1,8 +1,8 @@ /* * leds.h * - * Created on: May 13, 2021 - * Author: Felipe Telles + * Created on: May 21, 2023 + * Author: Samuel Dantas */ #ifndef INC_DEBUGLEDS_H_ diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index b38f99c8..e9c91409 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -1,8 +1,8 @@ /* * leds.h * - * Created on: May 13, 2021 - * Author: Felipe Telles + * Created on: May 21, 2023 + * Author: Samuel Dantas */ #ifndef INC_RGB_LED_H_ @@ -22,21 +22,37 @@ #define HARD_ERROR_COLORS_PATTERN_SIZE 3 #define RGB_BLACK \ - (rgb_t) { 0, 0, 0 } + (rgb_t) { \ + 0, 0, 0 \ + } #define RGB_RED \ - (rgb_t) { 1, 0, 0 } + (rgb_t) { \ + 1, 0, 0 \ + } #define RGB_GREEN \ - (rgb_t) { 0, 1, 0 } + (rgb_t) { \ + 0, 1, 0 \ + } #define RGB_BLUE \ - (rgb_t) { 0, 0, 1 } + (rgb_t) { \ + 0, 0, 1 \ + } #define RGB_YELLOW \ - (rgb_t) { 1, 1, 0 } + (rgb_t) { \ + 1, 1, 0 \ + } #define RGB_PURBLE \ - (rgb_t) { 1, 0, 1 } + (rgb_t) { \ + 1, 0, 1 \ + } #define RGB_CYAN \ - (rgb_t) { 0, 1, 1 } + (rgb_t) { \ + 0, 1, 1 \ + } #define RGB_WHITE \ - (rgb_t) { 1, 1, 1 } + (rgb_t) { \ + 1, 1, 1 \ + } typedef enum { FIXED, BLINK200 } control_rgb_led_e; diff --git a/Core/Src/driver_settings/RTD.c b/Core/Src/driver_settings/RTD.c index 43188f21..8daa9857 100644 --- a/Core/Src/driver_settings/RTD.c +++ b/Core/Src/driver_settings/RTD.c @@ -25,7 +25,7 @@ void RTD(void* argument) { // set the rgb led on the first execution of the code set_rgb_led(get_global_var_value(SELECTED_MODE).rgb_colors, ONE_COLOR_PATTERN_SIZE, - FIXED); + BLINK200); for (;;) { @@ -44,6 +44,7 @@ void RTD(void* argument) { } void exit_RTD() { + // set the mode_selected as error set_global_var_value(SELECTED_MODE, erro); set_global_var_value(RACE_MODE, ERRO); // clear RTD flag diff --git a/Core/Src/leds/debug_leds_handler.c b/Core/Src/leds/debug_leds_handler.c index 2b46e479..71ce20f4 100644 --- a/Core/Src/leds/debug_leds_handler.c +++ b/Core/Src/leds/debug_leds_handler.c @@ -1,8 +1,8 @@ /* * leds.c * - * Created on: May 12, 2021 - * Author: Felipe Telles + * Created on: May 21, 2023 + * Author: Samuel Dantas */ #include "leds/debug_leds_handler.h" diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 303c63a9..53f52587 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -1,6 +1,6 @@ /* - * Created on: May 12, 2021 - * Author: Felipe Telles + * Created on: May 21, 2023 + * Author: Samuel Dantas */ #include "leds/rgb_led_handler.h" From 8db24a20ed7ea1f164362648c75fb8b212cb1ad7 Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Wed, 31 May 2023 12:16:49 -0300 Subject: [PATCH 34/37] clang-format fixes --- Core/Inc/leds/rgb_led_handler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Inc/leds/rgb_led_handler.h b/Core/Inc/leds/rgb_led_handler.h index e9c91409..e44175b1 100644 --- a/Core/Inc/leds/rgb_led_handler.h +++ b/Core/Inc/leds/rgb_led_handler.h @@ -2,7 +2,7 @@ * leds.h * * Created on: May 21, 2023 - * Author: Samuel Dantas + * Author: Felipe Telles */ #ifndef INC_RGB_LED_H_ From cef562b01304bf742aed71fb3358cd3b0c410115 Mon Sep 17 00:00:00 2001 From: dmrohrs Date: Thu, 1 Jun 2023 09:58:08 -0300 Subject: [PATCH 35/37] updating .yml clang-format version --- .github/workflows/clang-format-check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml index 3b4f9733..459e1d47 100644 --- a/.github/workflows/clang-format-check.yml +++ b/.github/workflows/clang-format-check.yml @@ -26,7 +26,7 @@ jobs: - name: Run clang-format style check. uses: jidicula/clang-format-action@v4.10.2 with: - clang-format-version: '15' + clang-format-version: '16' check-path: 'Core' # In the following line all files exceptions should be defined exclude-regex: '(freertos|main.c|main.h|stm32h7xx|syscalls.c|sysmem.c|FreeRTOSConfig.h)' \ No newline at end of file From aa1c8797192d127fec70990a54c5c92c853fbfc0 Mon Sep 17 00:00:00 2001 From: dmrohrs Date: Thu, 1 Jun 2023 10:02:37 -0300 Subject: [PATCH 36/37] formatting global_definitions.h --- Core/Inc/util/global_definitions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Inc/util/global_definitions.h b/Core/Inc/util/global_definitions.h index 549c9f92..b5d7df42 100644 --- a/Core/Inc/util/global_definitions.h +++ b/Core/Inc/util/global_definitions.h @@ -28,7 +28,7 @@ typedef enum modos_desempenho { AUTOX } race_mode_t; -typedef struct // struct de modo +typedef struct // struct de modo { int tor_max; // torque maximo (de 0 a 4000) int vel_max; // velocidade maxima (de 0 a 9000) From c0f60389ae62f26acc0d826366496a07ce8ba66f Mon Sep 17 00:00:00 2001 From: Samel Dantas Date: Sun, 11 Jun 2023 13:31:47 -0300 Subject: [PATCH 37/37] test function --- Core/Src/leds/rgb_led_handler.c | 2 +- Core/Src/util/main_task.c | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Core/Src/leds/rgb_led_handler.c b/Core/Src/leds/rgb_led_handler.c index 53f52587..0123388d 100644 --- a/Core/Src/leds/rgb_led_handler.c +++ b/Core/Src/leds/rgb_led_handler.c @@ -24,7 +24,7 @@ osStatus_t set_rgb_led(const colors_t* pattern, uint8_t size_of_pattern, message.pattern[0] = pattern[0]; message.pattern[1] = size_of_pattern > 1 ? pattern[1] : 0; message.pattern[2] = size_of_pattern > 2 ? pattern[2] : 0; - return osMessageQueuePut(q_rgb_led_messageHandle, &message, 0, 0U); + return osMessageQueuePutOverwrite(q_rgb_led_messageHandle, &message, 0); } void rgb_led(void* argument) { diff --git a/Core/Src/util/main_task.c b/Core/Src/util/main_task.c index 0e197425..ca399e82 100644 --- a/Core/Src/util/main_task.c +++ b/Core/Src/util/main_task.c @@ -60,6 +60,19 @@ void led_color_response(uint32_t flag) { } } } +int test_aux = 500; +uint32_t oldValue; + +uint32_t test(int test_aux, uint32_t* oldValue) { + uint32_t error_vec[3] = {BSE_ERROR_FLAG, INVERTER_CAN_TRANSMIT_ERROR_FLAG, + RIGHT_INVERTER_COMM_ERROR_FLAG}; + if (test_aux % 500 == 0 && test_aux < 1501) { + *oldValue = error_vec[(test_aux / 500) - 1]; + return error_vec[(test_aux / 500) - 1]; + } else { + return *oldValue; + } +} void main_task(void* argument) { @@ -67,18 +80,20 @@ void main_task(void* argument) { for (;;) { - ECU_ENABLE_BREAKPOINT_DEBUG(); + // ECU_ENABLE_BREAKPOINT_DEBUG(); - wait_for_rtd(); + // wait_for_rtd(); // Wait for any error osThreadFlagsWait(ALL_ERRORS_FLAG, osFlagsWaitAny | osFlagsNoClear, osWaitForever); // Get the most significant thread flag - uint32_t most_significant_error_flag = get_most_significant_thread_flag(); + uint32_t most_significant_error_flag = + test(test_aux, &oldValue); // get_most_significant_thread_flag(); // Get the event flag - uint32_t event_flags = osEventFlagsGet(e_ECU_control_flagsHandle); - + uint32_t event_flags = + test(test_aux, &oldValue); // osEventFlagsGet(e_ECU_control_flagsHandle); + test_aux++; bool isErrorPresent; switch (most_significant_error_flag) {