From 458d0de3c3b96b1f3e8df9071539b6697737be07 Mon Sep 17 00:00:00 2001 From: ion098 <146852218+ion098@users.noreply.github.com> Date: Thu, 2 Jan 2025 14:40:43 -0800 Subject: [PATCH] refactor: :goal_net: Change error handling in screen code to use errno --- src/gamepad/screens/alertScreen.cpp | 12 ++++++++---- src/gamepad/screens/defaultScreen.cpp | 16 +++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/gamepad/screens/alertScreen.cpp b/src/gamepad/screens/alertScreen.cpp index 4d23d45..f8f590d 100644 --- a/src/gamepad/screens/alertScreen.cpp +++ b/src/gamepad/screens/alertScreen.cpp @@ -33,11 +33,15 @@ void AlertScreen::update(uint32_t delta_time) { } void AlertScreen::addAlerts(uint8_t line, std::string str, uint32_t duration, std::string rumble) { - TODO("change handling for off screen lines") - if (line > 2) std::exit(1); + if (line > 2) { + TODO("add error logging") + errno = EINVAL; + return; + } - TODO("warn instead of throw error if there are too many lines") - if (std::ranges::count(str, '\n') > 2) std::exit(1); + if (std::ranges::count(str, '\n') > 2) { + TODO("add warn logging") + } std::vector strs(3, ""); std::stringstream ss(str); diff --git a/src/gamepad/screens/defaultScreen.cpp b/src/gamepad/screens/defaultScreen.cpp index 6fa23d4..998abfe 100644 --- a/src/gamepad/screens/defaultScreen.cpp +++ b/src/gamepad/screens/defaultScreen.cpp @@ -22,13 +22,17 @@ ScreenBuffer DefaultScreen::getScreen(std::set visible_lines) { void DefaultScreen::printLine(uint8_t line, std::string str) { TODO("change handling for off screen lines") - if (line > 2) std::exit(1); + if (line > 2) { + errno = EINVAL; + return; + } const std::lock_guard guard(m_mutex); if (str.find('\n') != std::string::npos) { - TODO("warn instead of throw error if there are too many lines") - if (std::ranges::count(str, '\n') > 2) std::exit(1); + if (std::ranges::count(str, '\n') > 2) { + TODO("add warn logging for too many lines") + } std::vector strs(3); std::stringstream ss(str); @@ -47,8 +51,10 @@ void DefaultScreen::printLine(uint8_t line, std::string str) { } void DefaultScreen::rumble(std::string rumble_pattern) { - TODO("change handling for too long rumble patterns") - if (rumble_pattern.size() > 8) std::exit(1); + if (rumble_pattern.size() > 8) { + TODO("add warn logging") + rumble_pattern.resize(8); + } std::lock_guard guard(m_mutex); m_current_buffer[3] = std::move(rumble_pattern);