diff --git a/Core/Inc/top_board/oled/OLED_driver.h b/Core/Inc/top_board/oled/OLED_driver.h index 99938930..8e8b13fe 100644 --- a/Core/Inc/top_board/oled/OLED_driver.h +++ b/Core/Inc/top_board/oled/OLED_driver.h @@ -7,9 +7,7 @@ #include #define MAX_CHILDEREN 9 -#define MAX_VAR_NAME_LENGTH 9 #define MAX_MENU_NAME_LENGTH 15 -#define MAX_SUBMENU_NAME_LENGTH 23 #define MAX_STRING_LENGTH 23 typedef struct page_struct page_struct; @@ -62,5 +60,8 @@ void end_of_test(); enum test_type OLED_get_current_page_test_type(); void end_of_boot_screen(bool MCP_OK); void display_text(); +void pageNameTooLongException(char* name); +void textTooLongException(char* page_name, int line, int length); +void unknownLineNumber(char* page_name, int line); #endif /* INC_OLED_H_ */ \ No newline at end of file diff --git a/Core/Inc/top_board/oled/menus/info_menu.h b/Core/Inc/top_board/oled/menus/info_menu.h index 2883bc23..fcb33607 100644 --- a/Core/Inc/top_board/oled/menus/info_menu.h +++ b/Core/Inc/top_board/oled/menus/info_menu.h @@ -2,7 +2,6 @@ #define INC_INFO_MENU_H_ #include "OLED_driver.h" -#include "general_info.h" #include "encoder_page.h" #include "mcp_page.h" #include "time_page.h" diff --git a/Core/Inc/top_board/oled/pages.h b/Core/Inc/top_board/oled/pages.h index 08857000..651efdd9 100644 --- a/Core/Inc/top_board/oled/pages.h +++ b/Core/Inc/top_board/oled/pages.h @@ -13,6 +13,7 @@ void pages_init(page_struct *p); void pages_set_default_values(page_struct *page, page_struct *parent); void add_child_to_parent(page_struct *current); - +void page_set_page_name(char* name, page_struct *page); +void page_put_text_in_line(page_struct *page, char* text, int lineNum); #endif /* INC_PAGES_H_ */ \ No newline at end of file diff --git a/Core/Inc/top_board/oled/variable_pages/general_info.h b/Core/Inc/top_board/oled/variable_pages/general_info.h deleted file mode 100644 index c71d1fd9..00000000 --- a/Core/Inc/top_board/oled/variable_pages/general_info.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef INC_GEN_INFO_H_ -#define INC_GEN_INFO_H_ - -#include "pages.h" -#include "robot.h" - -void general_info_init(page_struct *parent); - -#endif /* INC_GEN_INFO_H_ */ \ No newline at end of file diff --git a/Core/Src/top_board/Control/stateControl.c b/Core/Src/top_board/Control/stateControl.c index 570c4efe..dc4fe045 100644 --- a/Core/Src/top_board/Control/stateControl.c +++ b/Core/Src/top_board/Control/stateControl.c @@ -262,7 +262,7 @@ void wheels_Update() { } float feed_back_voltage = wheelFBOn*24.0f*(0.001367311 * (PID(angular_velocity_error, &wheelsK[motor]))); - float max_fb_voltage = 12.5f; + float max_fb_voltage = 3.0f; if (feed_back_voltage > max_fb_voltage) { feed_back_voltage = max_fb_voltage; } @@ -272,7 +272,7 @@ void wheels_Update() { // Set motor PWM fraction/voltage - float max_voltage = 12.5; + float max_voltage = 5.5; // Add PID to commanded speed and convert to PWM (range between -1 and 1) float wheel_voltage_to_be_applied = feed_forward[motor] + feed_back_voltage; if (wheel_voltage_to_be_applied > max_voltage) { diff --git a/Core/Src/top_board/oled/OLED_driver.c b/Core/Src/top_board/oled/OLED_driver.c index 929ae9aa..596471dd 100644 --- a/Core/Src/top_board/oled/OLED_driver.c +++ b/Core/Src/top_board/oled/OLED_driver.c @@ -21,11 +21,13 @@ static bool oled_initialized = false; static page_struct *current_page; struct page_struct not_in_test_mode; struct page_struct error_menu_has_no_children; +struct page_struct error_non_specified; struct page_struct root_page; static int item_selector; static int id_self_test_menu; bool flag_error_too_many_children = false; bool flag_error_too_many_children_page_init = false; +bool flag_error_page_name_too_long = false; char* page_name_error_too_many_children; bool test_is_finished = false; static char *robotNames[] = {"404", "WALL-E", "Bob", "Pumba", "Ted", "Eve", "Susie", "James", "Lizzy", "McQueen", "Kevin", "Brum", "Van Robogh", "Wout", "Jenny", "Hermann"}; @@ -36,24 +38,31 @@ static char *robotNames[] = {"404", "WALL-E", "Bob", "Pumba", "Ted", "Eve", "Sus * @brief initialize the OLED screen */ void OLED_Init() { + // ERROR & EXCEPTION PAGES pages_set_default_values(&error_menu_has_no_children, NULL); error_menu_has_no_children.id = 50; strcpy(error_menu_has_no_children.page_name, "Error"); + pages_set_default_values(&error_non_specified, NULL); + error_non_specified.id = 60; + strcpy(error_non_specified.page_name, "Error"); + + initNotInTestMode(); + id_self_test_menu = getSelfTestMenuID(); + //ROOT pages_set_default_values(&root_page, NULL); root_page.id = 0; strcpy(root_page.page_name, "Root"); - pages_init(&root_page); - initNotInTestMode(); - clear_screen(); current_page = &root_page; item_selector = 0; - oled_initialized = true; - id_self_test_menu = getSelfTestMenuID(); + boot_screen(); + + pages_init(&root_page); + oled_initialized = true; } /** @@ -72,12 +81,16 @@ void OLED_Update(button_id_t button, bool test_mode) { return; } - /* show error if a menu has too many children; afterwards return */ + /* error handling */ if (flag_error_too_many_children) { if (!flag_error_too_many_children_page_init) menuHasTooManyChildrenException(); return; } + if (current_page->id == error_non_specified.id) { + return; + } + /* if no button is pressed return; update variables displayed on page if needed beforehand */ if (button == BUTTON_NONE) { if (current_page->is_test != NOT_A_TEST) { @@ -124,8 +137,9 @@ void OLED_Update(button_id_t button, bool test_mode) { * @display useful information after boot such as ID, team color, MCP alive, and test mode */ void end_of_boot_screen(bool MCP_OK) { + if (current_page->id == error_non_specified.id) return; clear_screen(); - strcpy(current_page->page_name, robotNames[robot_get_ID()]); + page_set_page_name(robotNames[robot_get_ID()], current_page); putPageName(); char temp[MAX_STRING_LENGTH]; //ID + TEAM COLOR @@ -134,10 +148,10 @@ void end_of_boot_screen(bool MCP_OK) { } else { sprintf(temp, "ID: %d YELLOW", robot_get_ID()); } - strcpy(current_page->line0, temp); + page_put_text_in_line(current_page, temp, 0); //POWER sprintf(temp, "%.2fV REM: %d", powerAlive.voltagePowerBoard, REM_LOCAL_VERSION); - strcpy(current_page->line1, temp); + page_put_text_in_line(current_page, temp, 1); //MCP ALIVE if (MCP_OK) { strcpy(current_page->line2, "MCP: OK"); @@ -195,7 +209,6 @@ void end_of_test() { strcpy(current_page->line1, "Test done!"); strcpy(current_page->line2, "press \"OK\" to"); strcpy(current_page->line3, "continue"); - strcpy(current_page->line3, ""); display_text(); SSD1306_UpdateScreen(); } @@ -221,6 +234,63 @@ void display_text() { SSD1306_Puts(current_page->line3, &Font_7x10, 1); } +void pageNameTooLongException(char* name) { + current_page = &error_non_specified; + clear_screen(); + SSD1306_GotoXY (5,0); + SSD1306_Puts("ERROR", &Font_11x18, 1); + SSD1306_GotoXY (5,20); + char tempstr[20]; + SSD1306_Puts("Page name:", &Font_7x10, 1); + SSD1306_GotoXY (5,31); + sprintf(tempstr, "%s", name); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_GotoXY (5,42); + SSD1306_Puts("is too long!", &Font_7x10, 1); + SSD1306_GotoXY (5,53); + sprintf(tempstr, "length %d > %d", strlen(name), MAX_MENU_NAME_LENGTH); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_UpdateScreen(); +} + +void textTooLongException(char* page_name, int line, int length) { + current_page = &error_non_specified; + clear_screen(); + SSD1306_GotoXY (5,0); + SSD1306_Puts("ERROR", &Font_11x18, 1); + SSD1306_GotoXY (5,20); + char tempstr[20]; + sprintf(tempstr, "page %s", page_name); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_GotoXY (5,31); + sprintf(tempstr, "line %d ", line); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_GotoXY (5,42); + SSD1306_Puts("is too long.", &Font_7x10, 1); + SSD1306_GotoXY (5,53); + sprintf(tempstr, "length %d > %d", length, MAX_STRING_LENGTH); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_UpdateScreen(); +} + +void unknownLineNumber(char* page_name, int line) { + current_page = &error_non_specified; + clear_screen(); + SSD1306_GotoXY (5,0); + SSD1306_Puts("ERROR", &Font_11x18, 1); + SSD1306_GotoXY (5,20); + char tempstr[20]; + sprintf(tempstr, "page %s", page_name); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_GotoXY (5,31); + sprintf(tempstr, "line %d ", line); + SSD1306_Puts(tempstr, &Font_7x10, 1); + SSD1306_GotoXY (5,42); + SSD1306_Puts("does not exist", &Font_7x10, 1); + SSD1306_GotoXY (5,53); + SSD1306_UpdateScreen(); +} + ///////////////////////////////////////////////////// PRIVATE FUNCTION IMPLEMENTATIONS /** * @brief actions after button press for menu page diff --git a/Core/Src/top_board/oled/menus/info_menu.c b/Core/Src/top_board/oled/menus/info_menu.c index 2491a834..8aa9ecc3 100644 --- a/Core/Src/top_board/oled/menus/info_menu.c +++ b/Core/Src/top_board/oled/menus/info_menu.c @@ -8,11 +8,10 @@ struct page_struct sensor_menu; * @note constraint for children of info menu: 20 < id < 30 */ void info_menu_initChildren(page_struct *parent) { - general_info_init(parent); pages_set_default_values(&communication_menu, parent); communication_menu.id = 22; - strcpy(communication_menu.page_name, "Communication"); + page_set_page_name("Communication", &communication_menu); communication_menu.is_menu = true; add_child_to_parent(&communication_menu); time_page_init(&communication_menu); @@ -21,7 +20,7 @@ void info_menu_initChildren(page_struct *parent) { pages_set_default_values(&sensor_menu, parent); sensor_menu.id = 23; - strcpy(sensor_menu.page_name, "Sensors etc."); + page_set_page_name("Sensors etc.", &sensor_menu); sensor_menu.is_menu = true; add_child_to_parent(&sensor_menu); encoder_page_init(&sensor_menu); diff --git a/Core/Src/top_board/oled/menus/kicker_self_test_menu.c b/Core/Src/top_board/oled/menus/kicker_self_test_menu.c index 78574cbb..f2b5d80f 100644 --- a/Core/Src/top_board/oled/menus/kicker_self_test_menu.c +++ b/Core/Src/top_board/oled/menus/kicker_self_test_menu.c @@ -11,27 +11,27 @@ struct page_struct no_charge; void kicker_self_test_menu_initChildren(page_struct *parent) { pages_set_default_values(&kick_menu, parent); kick_menu.id = 131; - strcpy(kick_menu.page_name, "Test Kick"); + page_set_page_name("Test Kick", &kick_menu); kick_menu.is_menu = true; add_child_to_parent(&kick_menu); kicker_test_initChildren(&kick_menu); pages_set_default_values(&chip_menu, parent); chip_menu.id = 132; - strcpy(chip_menu.page_name, "Test Chip"); + page_set_page_name("Test Chip", &chip_menu); chip_menu.is_menu = true; add_child_to_parent(&chip_menu); chip_test_initChildren(&chip_menu); pages_set_default_values(&no_charge, parent); no_charge.id = 133; - strcpy(no_charge.page_name, "No Charging!"); + page_set_page_name("No Charging!", &no_charge); no_charge.is_test = BLOCKING_TEST; add_child_to_parent(&no_charge); pages_set_default_values(&charge, parent); charge.id = 134; - strcpy(charge.page_name, "Charging!"); + page_set_page_name("Charging!", &charge); charge.is_test = BLOCKING_TEST; add_child_to_parent(&charge); } diff --git a/Core/Src/top_board/oled/menus/main_menu.c b/Core/Src/top_board/oled/menus/main_menu.c index 107dbce9..86a88993 100644 --- a/Core/Src/top_board/oled/menus/main_menu.c +++ b/Core/Src/top_board/oled/menus/main_menu.c @@ -11,21 +11,21 @@ struct page_struct drain_battery_menu; void main_menu_initChildren(page_struct *parent) { pages_set_default_values(&self_test_menu, parent); self_test_menu.id = 1; - strcpy(self_test_menu.page_name, "Self Tests"); + page_set_page_name("Self Tests", &self_test_menu); self_test_menu.is_menu = true; add_child_to_parent(&self_test_menu); self_test_menu_initChildren(&self_test_menu); pages_set_default_values(&info_menu, parent); info_menu.id = 2; - strcpy(info_menu.page_name, "Info Menu"); + page_set_page_name("Info Menu", &info_menu); info_menu.is_menu = true; add_child_to_parent(&info_menu); info_menu_initChildren(&info_menu); pages_set_default_values(&drain_battery_menu, parent); drain_battery_menu.id = 3; - strcpy(drain_battery_menu.page_name, "Drain battery"); + page_set_page_name("Drain Battery", &drain_battery_menu); drain_battery_menu.is_menu = true; add_child_to_parent(&drain_battery_menu); drain_battery_initChildren(&drain_battery_menu); diff --git a/Core/Src/top_board/oled/menus/self_test_menu.c b/Core/Src/top_board/oled/menus/self_test_menu.c index 77a158fa..8f1ccbb8 100644 --- a/Core/Src/top_board/oled/menus/self_test_menu.c +++ b/Core/Src/top_board/oled/menus/self_test_menu.c @@ -13,7 +13,7 @@ struct page_struct self_test_system_menu; void self_test_menu_initChildren(page_struct *parent) { pages_set_default_values(&self_test_system_menu, parent); self_test_system_menu.id = 15; - strcpy(self_test_system_menu.page_name, "System tests"); + page_set_page_name("System tests", &self_test_system_menu); self_test_system_menu.is_menu = true; add_child_to_parent(&self_test_system_menu); system_test_init(&self_test_system_menu); @@ -21,7 +21,7 @@ void self_test_menu_initChildren(page_struct *parent) { pages_set_default_values(&self_test_top_menu, parent); self_test_top_menu.id = 11; - strcpy(self_test_top_menu.page_name, "Top board"); + page_set_page_name("Top board", &self_test_top_menu); self_test_top_menu.is_menu = true; add_child_to_parent(&self_test_top_menu); buzzer_test_init(&self_test_top_menu); @@ -32,13 +32,13 @@ void self_test_menu_initChildren(page_struct *parent) { pages_set_default_values(&self_test_power_menu, parent); self_test_power_menu.id = 12; - strcpy(self_test_power_menu.page_name, "Power board"); + page_set_page_name("Power board", &self_test_power_menu); self_test_power_menu.is_menu = true; add_child_to_parent(&self_test_power_menu); pages_set_default_values(&self_test_kicker_menu, parent); self_test_kicker_menu.id = 13; - strcpy(self_test_kicker_menu.page_name, "Kicker board"); + page_set_page_name("Kicker board", &self_test_kicker_menu); self_test_kicker_menu.is_menu = true; add_child_to_parent(&self_test_kicker_menu); kicker_self_test_menu_initChildren(&self_test_kicker_menu); @@ -46,7 +46,7 @@ void self_test_menu_initChildren(page_struct *parent) { pages_set_default_values(&self_test_dribbler_menu, parent); self_test_dribbler_menu.id = 14; - strcpy(self_test_dribbler_menu.page_name, "Dribler board"); + page_set_page_name("Dribbler board", &self_test_dribbler_menu); self_test_dribbler_menu.is_menu = true; add_child_to_parent(&self_test_dribbler_menu); dribbler_test_InitChildren(&self_test_dribbler_menu); diff --git a/Core/Src/top_board/oled/pages.c b/Core/Src/top_board/oled/pages.c index dfa7e498..ac8927d9 100644 --- a/Core/Src/top_board/oled/pages.c +++ b/Core/Src/top_board/oled/pages.c @@ -23,6 +23,38 @@ void pages_set_default_values(page_struct *page, page_struct *parent) { page -> parent = parent; } +void page_set_page_name(char* name, page_struct *page) { + if (strlen(name) > MAX_MENU_NAME_LENGTH) { + pageNameTooLongException(name); + } else { + strcpy(page->page_name, name); + } +} + +void page_put_text_in_line(page_struct *page, char* text, int lineNum) { + if (strlen(text) > MAX_STRING_LENGTH) { + textTooLongException(page->page_name, lineNum, strlen(text)); + } else { + switch (lineNum) { + case 0: + strcpy(page->line0, text); + break; + case 1: + strcpy(page->line1, text); + break; + case 2: + strcpy(page->line2, text); + break; + case 3: + strcpy(page->line3, text); + break; + default: + unknownLineNumber(page->page_name, lineNum); + break; + } + } +} + /** * @brief add page as child to it's parent */ diff --git a/Core/Src/top_board/oled/self_tests/buzzer_test.c b/Core/Src/top_board/oled/self_tests/buzzer_test.c index ed73decd..92b5435d 100644 --- a/Core/Src/top_board/oled/self_tests/buzzer_test.c +++ b/Core/Src/top_board/oled/self_tests/buzzer_test.c @@ -7,10 +7,10 @@ struct page_struct buzzer_test; void buzzer_test_init(page_struct *parent) { pages_set_default_values(&buzzer_test, parent); buzzer_test.id = 111; - strcpy(buzzer_test.page_name, "Buzzer test"); + page_set_page_name("Buzzer test", &buzzer_test); buzzer_test.is_test = BLOCKING_TEST; - strcpy(buzzer_test.line0, "Robot is"); - strcpy(buzzer_test.line1, "Rick Rolling you"); + page_put_text_in_line(&buzzer_test, "Robot is", 0); + page_put_text_in_line(&buzzer_test, "Rick Rolling you", 1); add_child_to_parent(&buzzer_test); } diff --git a/Core/Src/top_board/oled/self_tests/chip_test.c b/Core/Src/top_board/oled/self_tests/chip_test.c index e4dd5b9b..2cafedfa 100644 --- a/Core/Src/top_board/oled/self_tests/chip_test.c +++ b/Core/Src/top_board/oled/self_tests/chip_test.c @@ -15,31 +15,31 @@ static bool start_ready; void chip_test_initChildren(page_struct *parent) { pages_set_default_values(&chip_two_ms, parent); chip_two_ms.id = 1321; - strcpy(chip_two_ms.page_name, "2.0 m/s"); + page_set_page_name("2.0 m/s", &chip_two_ms); chip_two_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&chip_two_ms); pages_set_default_values(&chip_three_five_ms, parent); chip_three_five_ms.id = 1322; - strcpy(chip_three_five_ms.page_name, "3.5 m/s"); + page_set_page_name("3.5 m/s", &chip_three_five_ms); chip_three_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&chip_three_five_ms); pages_set_default_values(&chip_four_five_ms, parent); chip_four_five_ms.id = 1323; - strcpy(chip_four_five_ms.page_name, "4.5 m/s"); + page_set_page_name("4.5 m/s", &chip_four_five_ms); chip_four_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&chip_four_five_ms); pages_set_default_values(&chip_five_five_ms, parent); chip_five_five_ms.id = 1324; - strcpy(chip_five_five_ms.page_name, "5.5 m/s"); + page_set_page_name("5.5 m/s", &chip_five_five_ms); chip_five_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&chip_five_five_ms); pages_set_default_values(&chip_six_five_ms, parent); chip_six_five_ms.id = 1325; - strcpy(chip_six_five_ms.page_name, "6.5 m/s"); + page_set_page_name("6.5 m/s", &chip_six_five_ms); chip_six_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&chip_six_five_ms); } @@ -73,23 +73,23 @@ void chip_shoot_run(float speed, page_struct *page){ /* Display what happend according to robot */ if (start_ready && !after_ready) { - strcpy(page->line0, "CHIP SUCCES!"); + page_put_text_in_line(page, "CHIP SUCCES!", 0); } else { - strcpy(page->line0, "CHIP FAILED:"); + page_put_text_in_line(page, "CHIP FAILED:", 0); //reasoning why it failed if (start_on && !start_ready) { - strcpy(page->line1, "CHARGING"); + page_put_text_in_line(page, "CHARGING", 1); } else if (!start_on) { - strcpy(page->line1, "SHOOT_OFF"); + page_put_text_in_line(page, "SHOOT_OFF", 1); } else if (start_ready && after_ready) { - strcpy(page->line1, "MCP DOWN?"); + page_put_text_in_line(&page, "MCP DOWN?", 1); } else { - strcpy(page->line1, "REASON UNKNOWN"); + page_put_text_in_line(page, "REASON UNKNOWN", 1); } } if (kickerStatus.kickerFault) { - strcpy(page->line3, "FAULT!!"); + page_put_text_in_line(page, "FAULT!!", 3); } display_text(); SSD1306_UpdateScreen(); // update screen diff --git a/Core/Src/top_board/oled/self_tests/drain_battery.c b/Core/Src/top_board/oled/self_tests/drain_battery.c index 8361aa46..40ae10a0 100644 --- a/Core/Src/top_board/oled/self_tests/drain_battery.c +++ b/Core/Src/top_board/oled/self_tests/drain_battery.c @@ -5,6 +5,7 @@ struct page_struct drain_battery_23_0; struct page_struct drain_battery_23_5; struct page_struct drain_battery_24_0; struct page_struct drain_battery_24_5; +struct page_struct drain_battery_storage; bool DRAIN_BATTERY = false; @@ -14,35 +15,42 @@ bool DRAIN_BATTERY = false; void drain_battery_initChildren(page_struct *parent) { pages_set_default_values(&drain_battery_lowest, parent); drain_battery_lowest.id = 31; - strcpy(drain_battery_lowest.page_name, "Lowest doable"); + page_set_page_name("Lowest doable", &drain_battery_lowest); drain_battery_lowest.is_test = NON_BLOCKING_TEST; drain_battery_lowest.has_variables = true; add_child_to_parent(&drain_battery_lowest); + pages_set_default_values(&drain_battery_storage, parent); + drain_battery_storage.id = 36; + page_set_page_name("22.2V (storage)", &drain_battery_storage); + drain_battery_storage.is_test = NON_BLOCKING_TEST; + drain_battery_storage.has_variables = true; + add_child_to_parent(&drain_battery_storage); + pages_set_default_values(&drain_battery_23_0, parent); drain_battery_23_0.id = 32; - strcpy(drain_battery_23_0.page_name, "23.0V"); + page_set_page_name("23.0V", &drain_battery_23_0); drain_battery_23_0.is_test = NON_BLOCKING_TEST; drain_battery_23_0.has_variables = true; add_child_to_parent(&drain_battery_23_0); pages_set_default_values(&drain_battery_23_5, parent); drain_battery_23_5.id = 33; - strcpy(drain_battery_23_5.page_name, "23.5V"); + page_set_page_name("23.5V", &drain_battery_23_5); drain_battery_23_5.is_test = NON_BLOCKING_TEST; drain_battery_23_5.has_variables = true; add_child_to_parent(&drain_battery_23_5); pages_set_default_values(&drain_battery_24_0, parent); drain_battery_24_0.id = 34; - strcpy(drain_battery_24_0.page_name, "24.0V"); + page_set_page_name("24.0V", &drain_battery_24_0); drain_battery_24_0.is_test = NON_BLOCKING_TEST; drain_battery_24_0.has_variables = true; add_child_to_parent(&drain_battery_24_0); pages_set_default_values(&drain_battery_24_5, parent); drain_battery_24_5.id = 35; - strcpy(drain_battery_24_5.page_name, "24.5V"); + page_set_page_name("24.5V", &drain_battery_24_5); drain_battery_24_5.is_test = NON_BLOCKING_TEST; drain_battery_24_5.has_variables = true; add_child_to_parent(&drain_battery_24_5); @@ -73,9 +81,9 @@ void drain_battery_run(float target) { void drain_battery_update_screen(page_struct *p) { if (DRAIN_BATTERY) { - strcpy(p->line0, "Current voltage"); + page_put_text_in_line(p, "Current voltage", 0); char temp[MAX_STRING_LENGTH]; sprintf(temp, "%fV", powerVoltage.voltagePowerBoard); - strcpy(p->line1, temp); + page_put_text_in_line(p, temp, 1); } } \ No newline at end of file diff --git a/Core/Src/top_board/oled/self_tests/dribbler_test.c b/Core/Src/top_board/oled/self_tests/dribbler_test.c index 40f3bb78..a1f06a14 100644 --- a/Core/Src/top_board/oled/self_tests/dribbler_test.c +++ b/Core/Src/top_board/oled/self_tests/dribbler_test.c @@ -7,14 +7,14 @@ void dribbler_test_InitChildren(page_struct *parent){ pages_set_default_values(&drib_on, parent); drib_on.id = 1411; - strcpy(drib_on.page_name, "Drib on"); + page_set_page_name("Drib on", &drib_on); drib_on.is_test = BLOCKING_TEST; drib_on.has_variables = false; add_child_to_parent(&drib_on); pages_set_default_values(&drib_off, parent); drib_off.id = 1412; - strcpy(drib_off.page_name, "Drib off"); + page_set_page_name("Drib off", &drib_off); drib_off.is_test = BLOCKING_TEST; drib_off.has_variables = false; add_child_to_parent(&drib_off); diff --git a/Core/Src/top_board/oled/self_tests/kicker_test.c b/Core/Src/top_board/oled/self_tests/kicker_test.c index bd655e90..94007994 100644 --- a/Core/Src/top_board/oled/self_tests/kicker_test.c +++ b/Core/Src/top_board/oled/self_tests/kicker_test.c @@ -14,31 +14,31 @@ static bool start_ready; void kicker_test_initChildren(page_struct *parent) { pages_set_default_values(&kick_two_ms, parent); kick_two_ms.id = 1311; - strcpy(kick_two_ms.page_name, "2.0 m/s"); + page_set_page_name("2.0 m/s", &kick_two_ms); kick_two_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&kick_two_ms); pages_set_default_values(&kick_three_five_ms, parent); kick_three_five_ms.id = 1312; - strcpy(kick_three_five_ms.page_name, "3.5 m/s"); + page_set_page_name("3.5 m/s", &kick_three_five_ms); kick_three_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&kick_three_five_ms); pages_set_default_values(&kick_four_five_ms, parent); kick_four_five_ms.id = 1313; - strcpy(kick_four_five_ms.page_name, "4.5 m/s"); + page_set_page_name("4.5 m/s", &kick_four_five_ms); kick_four_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&kick_four_five_ms); pages_set_default_values(&kick_five_five_ms, parent); kick_five_five_ms.id = 1314; - strcpy(kick_five_five_ms.page_name, "5.5 m/s"); + page_set_page_name("5.5 m/s", &kick_five_five_ms); kick_five_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&kick_five_five_ms); pages_set_default_values(&kick_six_five_ms, parent); kick_six_five_ms.id = 1315; - strcpy(kick_six_five_ms.page_name, "6.5 m/s"); + page_set_page_name("6.5 m/s", &kick_six_five_ms); kick_six_five_ms.is_test = NON_BLOCKING_TEST; add_child_to_parent(&kick_six_five_ms); } @@ -72,23 +72,23 @@ void kicker_shoot_run(float speed, page_struct *page){ /* Display what happend according to robot */ if (start_ready && !after_ready) { - strcpy(page->line0, "KICK SUCCES!"); + page_put_text_in_line(page, "KICK SUCCES!", 0); } else { - strcpy(page->line0, "KICK FAILED:"); + page_put_text_in_line(page, "KICK FAILED:", 0); //reasoning why it failed if (start_on && !start_ready) { - strcpy(page->line1, "CHARGING"); + page_put_text_in_line(page, "CHARGING", 1); } else if (!start_on) { - strcpy(page->line1, "SHOOT_OFF"); + page_put_text_in_line(page, "SHOOT_OFF", 1); } else if (start_ready && after_ready) { - strcpy(page->line1, "MCP DOWN?"); + page_put_text_in_line(page, "MCP DOWN?", 1); } else { - strcpy(page->line1, "REASON UNKNOWN"); + page_put_text_in_line(page, "REASON UNKNOWN", 1); } } if (kickerStatus.kickerFault) { - strcpy(page->line3, "FAULT!!"); + page_put_text_in_line(page, "FAULT!!", 3); } display_text(); SSD1306_UpdateScreen(); // update screen diff --git a/Core/Src/top_board/oled/self_tests/motor_test.c b/Core/Src/top_board/oled/self_tests/motor_test.c index 7b068da6..edf3ee88 100644 --- a/Core/Src/top_board/oled/self_tests/motor_test.c +++ b/Core/Src/top_board/oled/self_tests/motor_test.c @@ -14,7 +14,7 @@ void motor_test_init(page_struct *parent){ pages_set_default_values(&motor_page, parent); motor_page.id = 1111; - strcpy(motor_page.page_name, "Motor Tests!"); + page_set_page_name("Motor Tests!", &motor_page); motor_page.is_menu = true; add_child_to_parent(&motor_page); motor_test_initChildren(&motor_page); @@ -24,37 +24,37 @@ void motor_test_initChildren(page_struct *parent){ pages_set_default_values(&step_one, parent); step_one.id = 1112; - strcpy(step_one.page_name, "0.0"); + page_set_page_name("0%", &step_one); step_one.is_test = BLOCKING_TEST; add_child_to_parent(&step_one); pages_set_default_values(&step_two, parent); step_two.id = 1113; - strcpy(step_two.page_name, "0.2"); + page_set_page_name("20%", &step_two); step_two.is_test = BLOCKING_TEST; add_child_to_parent(&step_two); pages_set_default_values(&step_three, parent); step_three.id = 1114; - strcpy(step_three.page_name, "0.4"); + page_set_page_name("40%", &step_three); step_three.is_test = BLOCKING_TEST; add_child_to_parent(&step_three); pages_set_default_values(&step_four, parent); step_four.id = 1115; - strcpy(step_four.page_name, "0.6"); + page_set_page_name("60%", &step_four); step_four.is_test = BLOCKING_TEST; add_child_to_parent(&step_four); pages_set_default_values(&step_five, parent); step_five.id = 1116; - strcpy(step_five.page_name, "0.8"); + page_set_page_name("80%", &step_five); step_five.is_test = BLOCKING_TEST; add_child_to_parent(&step_five); pages_set_default_values(&step_six, parent); step_six.id = 1117; - strcpy(step_six.page_name, "1.0"); + page_set_page_name("100%", &step_six); step_six.is_test = BLOCKING_TEST; add_child_to_parent(&step_six); diff --git a/Core/Src/top_board/oled/self_tests/send_feedback.c b/Core/Src/top_board/oled/self_tests/send_feedback.c index ff2afaf8..8fbeaee6 100644 --- a/Core/Src/top_board/oled/self_tests/send_feedback.c +++ b/Core/Src/top_board/oled/self_tests/send_feedback.c @@ -10,19 +10,19 @@ struct page_struct send_feedback_off; void init_sendFeedback(page_struct *parent) { pages_set_default_values(&send_feedback_menu, parent); - strcpy(send_feedback_menu.page_name, "Send Feedback"); + page_set_page_name("Send Feedback", &send_feedback_menu); send_feedback_menu.id = 141; send_feedback_menu.is_menu = true; add_child_to_parent(&send_feedback_menu); pages_set_default_values(&send_feedback_on, &send_feedback_menu); - strcpy(send_feedback_on.page_name, "ON"); + page_set_page_name("On", &send_feedback_on); send_feedback_on.id = 142; send_feedback_on.is_test = BLOCKING_TEST; add_child_to_parent(&send_feedback_on); pages_set_default_values(&send_feedback_off, &send_feedback_menu); - strcpy(send_feedback_off.page_name, "OFF"); + page_set_page_name("Off", &send_feedback_off); send_feedback_off.id = 143; send_feedback_off.is_test = BLOCKING_TEST; add_child_to_parent(&send_feedback_off); diff --git a/Core/Src/top_board/oled/self_tests/system_test.c b/Core/Src/top_board/oled/self_tests/system_test.c index 79271e0a..c5e21f3a 100644 --- a/Core/Src/top_board/oled/self_tests/system_test.c +++ b/Core/Src/top_board/oled/self_tests/system_test.c @@ -7,10 +7,7 @@ struct page_struct system_test_running_page; void system_test_init(page_struct *parent) { pages_set_default_values(&system_test_running_page, parent); system_test_running_page.id = 1511; - strcpy(system_test_running_page.page_name, "System test"); - strcpy(system_test_running_page.line0,"Robot is off"); - strcpy(system_test_running_page.line1,"the ground"); - strcpy(system_test_running_page.line3,"Kicker!!"); + page_set_page_name("System test", &system_test_running_page); system_test_running_page.is_test = NON_BLOCKING_TEST; add_child_to_parent(&system_test_running_page); } diff --git a/Core/Src/top_board/oled/self_tests/wheel_twitch.c b/Core/Src/top_board/oled/self_tests/wheel_twitch.c index ed9be663..47751601 100644 --- a/Core/Src/top_board/oled/self_tests/wheel_twitch.c +++ b/Core/Src/top_board/oled/self_tests/wheel_twitch.c @@ -14,24 +14,24 @@ void wheel_twitch_init(page_struct *parent) { //Display warning pages_set_default_values(&wheel_twitch_warning, parent); wheel_twitch_warning.id = 1121; - strcpy(wheel_twitch_warning.page_name, "Wheel twitch"); + page_set_page_name("Wheel twitch", &wheel_twitch_warning); wheel_twitch_warning.is_test = BLOCKING_TEST; - strcpy(wheel_twitch_warning.line0, "Make sure that"); - strcpy(wheel_twitch_warning.line1, "the wheels are"); - strcpy(wheel_twitch_warning.line2, "off the ground!"); - strcpy(wheel_twitch_warning.line3, "OK to continue"); + page_put_text_in_line(&wheel_twitch_running, "Make sure that", 0); + page_put_text_in_line(&wheel_twitch_running, "the wheels are", 1); + page_put_text_in_line(&wheel_twitch_running, "off the ground!", 2); + page_put_text_in_line(&wheel_twitch_running, "OK to continue", 3); add_child_to_parent(&wheel_twitch_warning); //running test pages_set_default_values(&wheel_twitch_running, &wheel_twitch_warning); wheel_twitch_running.id = 1122; - strcpy(wheel_twitch_running.page_name, "Wheel twitch"); + page_set_page_name("Wheel twitch", &wheel_twitch_running); wheel_twitch_running.is_test = BLOCKING_TEST; add_child_to_parent(&wheel_twitch_running); //results pages_set_default_values(&wheel_twitch_result, &wheel_twitch_running); wheel_twitch_result.id = 1123; - strcpy(wheel_twitch_result.page_name, "Wheel twitch"); + page_set_page_name("Wheel twitch", &wheel_twitch_result); wheel_twitch_result.is_test = BLOCKING_TEST; add_child_to_parent(&wheel_twitch_result); } @@ -83,13 +83,16 @@ void wheel_twitch_run() { //Prepping results to be displayed char temp[MAX_STRING_LENGTH]; sprintf(temp, "RF: %s", number_to_status(working[0])); - strcpy(wheel_twitch_result.line0, temp); + page_put_text_in_line(&wheel_twitch_result, temp, 0); + sprintf(temp, "LF: %s", number_to_status(working[1])); - strcpy(wheel_twitch_result.line1, temp); + page_put_text_in_line(&wheel_twitch_result, temp, 1); + sprintf(temp, "LB: %s", number_to_status(working[2])); - strcpy(wheel_twitch_result.line2, temp); + page_put_text_in_line(&wheel_twitch_result, temp, 2); + sprintf(temp, "RB: %s", number_to_status(working[3])); - strcpy(wheel_twitch_result.line3, temp); + page_put_text_in_line(&wheel_twitch_result, temp, 3); } /** diff --git a/Core/Src/top_board/oled/selftest_selector.c b/Core/Src/top_board/oled/selftest_selector.c index 9d5cd8e8..c51dda65 100644 --- a/Core/Src/top_board/oled/selftest_selector.c +++ b/Core/Src/top_board/oled/selftest_selector.c @@ -96,6 +96,9 @@ void run_test(page_struct *page) { case 35: drain_battery_run(24.5f); break; + case 36: + drain_battery_run(22.2f); + break; default: break; } diff --git a/Core/Src/top_board/oled/variable_page_selector.c b/Core/Src/top_board/oled/variable_page_selector.c index 328621e1..6aaa1375 100644 --- a/Core/Src/top_board/oled/variable_page_selector.c +++ b/Core/Src/top_board/oled/variable_page_selector.c @@ -35,6 +35,9 @@ void update_variables(page_struct *page) { case 35: drain_battery_update_screen(page); break; + case 36: + drain_battery_update_screen(page); + break; default: break; } diff --git a/Core/Src/top_board/oled/variable_pages/encoder_page.c b/Core/Src/top_board/oled/variable_pages/encoder_page.c index e1f92feb..410e4fcb 100644 --- a/Core/Src/top_board/oled/variable_pages/encoder_page.c +++ b/Core/Src/top_board/oled/variable_pages/encoder_page.c @@ -5,11 +5,11 @@ struct page_struct encoder_values; void encoder_page_init(page_struct *parent) { pages_set_default_values(&encoder_values, parent); encoder_values.id = 232; - strcpy(encoder_values.page_name, "Encoder"); - strcpy(encoder_values.line0, "LF:0"); - strcpy(encoder_values.line1, "RF:0"); - strcpy(encoder_values.line2, "LB:0"); - strcpy(encoder_values.line3, "RB:0"); + page_set_page_name("Wheel Encoders", &encoder_values); + page_put_text_in_line(&encoder_values, "LF: 0", 0); + page_put_text_in_line(&encoder_values, "RF: 0", 1); + page_put_text_in_line(&encoder_values, "LB: 0", 2); + page_put_text_in_line(&encoder_values, "RB: 0", 3); encoder_values.has_variables = true; add_child_to_parent(&encoder_values); } @@ -18,12 +18,14 @@ void encoder_page_update(page_struct *page){ char temp[MAX_STRING_LENGTH]; sprintf(temp, "LF:%d", encoder_GetCounter(LF)); - strcpy(page->line0, temp); + page_put_text_in_line(&encoder_values, temp, 0); + sprintf(temp, "RF:%d", encoder_GetCounter(RF)); - strcpy(page->line1, temp); + page_put_text_in_line(&encoder_values, temp, 1); + sprintf(temp, "LB:%d", encoder_GetCounter(LB)); - strcpy(page->line2, temp); + page_put_text_in_line(&encoder_values, temp, 2); + sprintf(temp, "RB:%d", encoder_GetCounter(RB)); - strcpy(page->line3, temp); - + page_put_text_in_line(&encoder_values, temp, 3); } \ No newline at end of file diff --git a/Core/Src/top_board/oled/variable_pages/general_info.c b/Core/Src/top_board/oled/variable_pages/general_info.c deleted file mode 100644 index bb5cdca8..00000000 --- a/Core/Src/top_board/oled/variable_pages/general_info.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "general_info.h" - -struct page_struct general_info; - -void general_info_init(page_struct *parent) { - pages_set_default_values(&general_info, parent); - general_info.id = 21; - strcpy(general_info.page_name, "General"); - add_child_to_parent(&general_info); - - char temp[MAX_STRING_LENGTH]; - sprintf(temp, "ID: %d", robot_get_ID()); - strcpy(general_info.line0, temp); - if (robot_get_Channel()) { - strcpy(general_info.line1, "Team: Blue"); - } else { - strcpy(general_info.line1, "Team: Yellow"); - } - sprintf(temp, "REM version: %d", REM_LOCAL_VERSION); - strcpy(general_info.line2, temp); -} \ No newline at end of file diff --git a/Core/Src/top_board/oled/variable_pages/kicker_status.c b/Core/Src/top_board/oled/variable_pages/kicker_status.c index dad93e45..1906fdd5 100644 --- a/Core/Src/top_board/oled/variable_pages/kicker_status.c +++ b/Core/Src/top_board/oled/variable_pages/kicker_status.c @@ -5,27 +5,27 @@ struct page_struct kicker_status_page; void kicker_status_Init(page_struct *parent) { pages_set_default_values(&kicker_status_page, parent); kicker_status_page.id = 24; - strcpy(kicker_status_page.page_name, "Kicker status"); + page_set_page_name("Kicker status", &kicker_status_page); kicker_status_page.has_variables = true; add_child_to_parent(&kicker_status_page); } void kicker_status_Update(page_struct *page) { if (kickerStatus.kickerOn) { - strcpy(page->line0, "On/Off: On"); + page_put_text_in_line(page, "On/Off: On", 0); } else { - strcpy(page->line0, "On/Off: Off"); + page_put_text_in_line(page, "On/Off: Off", 0); } if (kickerStatus.kickerReady) { - strcpy(page->line1, "Ready: Yes"); + page_put_text_in_line(page, "Ready: Yes", 1); } else { - strcpy(page->line1, "Ready: No"); + page_put_text_in_line(page, "Ready: No", 1); } if (kickerStatus.kickerFault) { - strcpy(page->line2, "Fault: Yes"); + page_put_text_in_line(page, "Fault: Yes", 2); } else { - strcpy(page->line2, "Fault: No"); + page_put_text_in_line(page, "Fault: No", 2); } } diff --git a/Core/Src/top_board/oled/variable_pages/mcp_page.c b/Core/Src/top_board/oled/variable_pages/mcp_page.c index ce65c826..352629dc 100644 --- a/Core/Src/top_board/oled/variable_pages/mcp_page.c +++ b/Core/Src/top_board/oled/variable_pages/mcp_page.c @@ -9,33 +9,33 @@ int mcp_state = 0; void mcp_page_init(page_struct *parent) { pages_set_default_values(&mcp_page, parent); mcp_page.id = 222; - strcpy(mcp_page.page_name, "MCP Alive"); + page_set_page_name("MCP Alive", &mcp_page); mcp_page.has_variables = true; add_child_to_parent(&mcp_page); } void mcp_page_update(page_struct *page) { if (n_not_alive == 0){ - strcpy(page->line0, "All boards"); - strcpy(page->line1, "are alive"); - strcpy(page->line2, "and functioning"); + page_put_text_in_line(page, "All boards", 0); + page_put_text_in_line(page, "are alive", 1); + page_put_text_in_line(page, "and functioning", 2); } else { uint32_t current_time = HAL_GetTick(); - strcpy(page->line0, "No signal from"); - strcpy(page->line1, "these board(s): "); + page_put_text_in_line(page, "No signal from", 0); + page_put_text_in_line(page, "these board(s): ", 1); if (n_not_alive == 1) { - strcpy(page->line2, board_names[0]); + page_put_text_in_line(page, board_names[0], 2); } else if (n_not_alive == 2) { - strcpy(page->line2, board_names[0]); - strcpy(page->line3, board_names[1]); + page_put_text_in_line(page, board_names[0], 2); + page_put_text_in_line(page, board_names[1], 3); } else { //change what 2 boards are displayed every second if (current_time > time_last_change + 1000) { time_last_change = current_time; mcp_state++; } - strcpy(page->line2, board_names[mcp_state % n_not_alive]); - strcpy(page->line3, board_names[(mcp_state + 1) % n_not_alive]); + page_put_text_in_line(page, board_names[mcp_state % n_not_alive], 2); + page_put_text_in_line(page, board_names[(mcp_state + 1) % n_not_alive], 3); } } diff --git a/Core/Src/top_board/oled/variable_pages/rem_page.c b/Core/Src/top_board/oled/variable_pages/rem_page.c index 1333cc84..f97e9c0a 100644 --- a/Core/Src/top_board/oled/variable_pages/rem_page.c +++ b/Core/Src/top_board/oled/variable_pages/rem_page.c @@ -18,17 +18,17 @@ void rem_page_remove_timestamps(); void rem_page_init(page_struct *parent) { pages_set_default_values(&rem_page, parent); rem_page.id = 223; - strcpy(rem_page.page_name, "REM info"); + page_set_page_name("REM info", &rem_page); rem_page.has_variables = true; add_child_to_parent(&rem_page); } void rem_page_update(page_struct *page) { rem_page_remove_timestamps(); - strcpy(page->line0, "Incoming"); + page_put_text_in_line(page, "Incoming", 0); char temp[MAX_STRING_LENGTH]; sprintf(temp, "REM_Commands: %d", rem_node_size); - strcpy(page->line1, temp); + page_put_text_in_line(page, temp, 1); } void rem_page_add_timestamp(uint64_t recieved_time) { diff --git a/Core/Src/top_board/oled/variable_pages/time_page.c b/Core/Src/top_board/oled/variable_pages/time_page.c index 59d86b1b..bfdf7f36 100644 --- a/Core/Src/top_board/oled/variable_pages/time_page.c +++ b/Core/Src/top_board/oled/variable_pages/time_page.c @@ -6,38 +6,38 @@ struct page_struct time_page; void time_page_init(page_struct* parent) { pages_set_default_values(&time_page, parent); time_page.id = 221; - strcpy(time_page.page_name, "Robot time"); + page_set_page_name("Robot time", &time_page); time_page.has_variables = true; add_child_to_parent(&time_page); } void time_page_update(page_struct *page) { if (TEST_MODE) { - strcpy(page->line0, "Time not avail-"); - strcpy(page->line1, "able in test-mode."); - strcpy(page->line2, "Flip switch 7"); - strcpy(page->line3, "and reboot"); + page_put_text_in_line(page, "Time not avail-", 0); + page_put_text_in_line(page, "able in test-mode.", 1); + page_put_text_in_line(page, "Flip switch 7", 2); + page_put_text_in_line(page, "and reboot", 3); return; } char temp[MAX_STRING_LENGTH]; struct tm *tmp; uint64_t time_adjusted = unix_timestamp / 1000; - tmp = localtime(&time_adjusted); + tmp = localtime(time_adjusted); char clock[6]; //Day strftime(clock, sizeof(clock), "%d/%m", tmp); sprintf(temp, "Date-> %s", clock); - strcpy(page->line0, temp); + page_put_text_in_line(page, temp, 0); //Hour:Minute strftime(clock, sizeof(clock), "%R", tmp); sprintf(temp, "H:M -> %s UTC", clock); - strcpy(page->line1, temp); + page_put_text_in_line(page, temp, 1); //Seconds strftime(clock, sizeof(clock), "%S", tmp); sprintf(temp, "Sec -> %s", clock); - strcpy(page->line2, temp); + page_put_text_in_line(page, temp, 2); //Millisecond sprintf(temp, "ms -> %d", unix_timestamp - (time_adjusted * 1000)); - strcpy(page->line3, temp); + page_put_text_in_line(page, temp, 3); } \ No newline at end of file diff --git a/Core/Src/top_board/oled/variable_pages/voltage_reading.c b/Core/Src/top_board/oled/variable_pages/voltage_reading.c index f30e8bab..762d7304 100644 --- a/Core/Src/top_board/oled/variable_pages/voltage_reading.c +++ b/Core/Src/top_board/oled/variable_pages/voltage_reading.c @@ -5,17 +5,20 @@ struct page_struct voltage_meter; void voltage_reading_init(page_struct *parent) { pages_set_default_values(&voltage_meter, parent); voltage_meter.id = 231; - strcpy(voltage_meter.page_name, "Voltages"); + page_set_page_name("Voltages", &voltage_meter); voltage_meter.has_variables = true; add_child_to_parent(&voltage_meter); } void voltage_update_page(page_struct *page){ char temp[MAX_STRING_LENGTH]; - strcpy(voltage_meter.line0,"Power board"); + page_put_text_in_line(page, "Power board", 0); + sprintf(temp, "Reading: %f", powerVoltage.voltagePowerBoard); - strcpy(page->line1, temp); - strcpy(voltage_meter.line2,"Kicker Capacitor"); + page_put_text_in_line(page, temp, 1); + + page_put_text_in_line(page, "Kicker Capacitor", 2); + sprintf(temp, "Reading: %u", kickerCapacitorVoltage.voltage); - strcpy(page->line3, temp); + page_put_text_in_line(page, temp, 3); } \ No newline at end of file diff --git a/Core/Src/top_board/robot.c b/Core/Src/top_board/robot.c index 57f938b1..f7b06332 100644 --- a/Core/Src/top_board/robot.c +++ b/Core/Src/top_board/robot.c @@ -733,10 +733,10 @@ void check_otherboards(CAN_TxHeaderTypeDef board_header, bool *board_state, MCP_ void loop(void){ uint32_t current_time = HAL_GetTick(); counter_loop++; - // Only update only in test mode, else random reboots starts happening - if (TEST_MODE) { - OLED_Update(getRecentlyPressedButton(), TEST_MODE); - } + // if random reboots happen, enable if-statement + // if (TEST_MODE) { + OLED_Update(getRecentlyPressedButton(), TEST_MODE); + // } /* Send anything in the log buffer over UART */ LOG_send(); @@ -1120,6 +1120,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { uint32_t current_time = HAL_GetTick(); //Control loop if(htim->Instance == TIM_CONTROL->Instance) { + // if(!ROBOT_INITIALIZED || (TEST_MODE && OLED_get_current_page_test_type() == BLOCKING_TEST)) return; if(!ROBOT_INITIALIZED || (TEST_MODE && OLED_get_current_page_test_type() == BLOCKING_TEST)) return; flag_useStateInfo = activeRobotCommand.sendStateInfo; @@ -1187,7 +1188,6 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { } } stateControl_Update(); - // wheels_Update(); } /* == Fill robotFeedback packet == */ {