diff --git a/selfdrive/camerad/cameras/camera_common.cc b/selfdrive/camerad/cameras/camera_common.cc index 4c19d1d819..4cc8b8fcae 100644 --- a/selfdrive/camerad/cameras/camera_common.cc +++ b/selfdrive/camerad/cameras/camera_common.cc @@ -193,11 +193,11 @@ void fill_frame_data(cereal::FrameData::Builder &framed, const FrameMetadata &fr } kj::Array get_frame_image(const CameraBuf *b) { - static const int x_min = getenv("XMIN") ? atoi(getenv("XMIN")) : 0; - static const int y_min = getenv("YMIN") ? atoi(getenv("YMIN")) : 0; - static const int env_xmax = getenv("XMAX") ? atoi(getenv("XMAX")) : -1; - static const int env_ymax = getenv("YMAX") ? atoi(getenv("YMAX")) : -1; - static const int scale = getenv("SCALE") ? atoi(getenv("SCALE")) : 1; + static const int x_min = util::getenv("XMIN", 0); + static const int y_min = util::getenv("YMIN", 0); + static const int env_xmax = util::getenv("XMAX", -1); + static const int env_ymax = util::getenv("YMAX", -1); + static const int scale = util::getenv("SCALE", 1); assert(b->cur_rgb_buf); diff --git a/selfdrive/camerad/cameras/camera_webcam.cc b/selfdrive/camerad/cameras/camera_webcam.cc index 377359d4de..ff63257bd3 100644 --- a/selfdrive/camerad/cameras/camera_webcam.cc +++ b/selfdrive/camerad/cameras/camera_webcam.cc @@ -19,8 +19,8 @@ #include "selfdrive/common/util.h" // id of the video capturing device -const int ROAD_CAMERA_ID = getenv("ROADCAM_ID") ? atoi(getenv("ROADCAM_ID")) : 1; -const int DRIVER_CAMERA_ID = getenv("DRIVERCAM_ID") ? atoi(getenv("DRIVERCAM_ID")) : 2; +const int ROAD_CAMERA_ID = util::getenv("ROADCAM_ID", 1); +const int DRIVER_CAMERA_ID = util::getenv("DRIVERCAM_ID", 2); #define FRAME_WIDTH 1164 #define FRAME_HEIGHT 874 diff --git a/selfdrive/common/params.cc b/selfdrive/common/params.cc index dfb2b3c1bd..e5cdd1ac4b 100644 --- a/selfdrive/common/params.cc +++ b/selfdrive/common/params.cc @@ -33,10 +33,6 @@ namespace { -const std::string default_params_path = Hardware::PC() ? util::getenv_default("HOME", "/.comma/params", "/data/params") - : "/data/params"; -const std::string persistent_params_path = Hardware::PC() ? default_params_path : "/persist/comma/params"; - volatile sig_atomic_t params_do_exit = 0; void params_sig_handler(int signal) { params_do_exit = 1; @@ -231,11 +227,11 @@ std::unordered_map keys = { } // namespace -Params::Params(bool persistent_param) : Params(persistent_param ? persistent_params_path : default_params_path) {} +Params::Params(bool persistent_param) : Params(persistent_param ? Path::persistent_params() : Path::params()) {} std::once_flag default_params_path_ensured; Params::Params(const std::string &path) : params_path(path) { - if (path == default_params_path) { + if (path == Path::params()) { std::call_once(default_params_path_ensured, ensure_params_path, path); } else { ensure_params_path(path); diff --git a/selfdrive/common/util.cc b/selfdrive/common/util.cc index aa5474ce2b..2771d76668 100644 --- a/selfdrive/common/util.cc +++ b/selfdrive/common/util.cc @@ -117,13 +117,19 @@ bool file_exists(const std::string& fn) { return f.good(); } -std::string getenv_default(const char* env_var, const char * suffix, const char* default_val) { - const char* env_val = getenv(env_var); - if (env_val != NULL) { - return std::string(env_val) + std::string(suffix); - } else { - return std::string(default_val); - } +std::string getenv(const char* key, const char* default_val) { + const char* val = ::getenv(key); + return val ? val : default_val; +} + +int getenv(const char* key, int default_val) { + const char* val = ::getenv(key); + return val ? atoi(val) : default_val; +} + +float getenv(const char* key, float default_val) { + const char* val = ::getenv(key); + return val ? atof(val) : default_val; } std::string tohex(const uint8_t *buf, size_t buf_size) { diff --git a/selfdrive/common/util.h b/selfdrive/common/util.h index 03e6064471..39479bf080 100644 --- a/selfdrive/common/util.h +++ b/selfdrive/common/util.h @@ -53,7 +53,10 @@ std::string string_format(const std::string& format, Args... args) { return std::string(buf.get(), buf.get() + size - 1); } -std::string getenv_default(const char* env_var, const char* suffix, const char* default_val); +std::string getenv(const char* key, const char* default_val = ""); +int getenv(const char* key, int default_val); +float getenv(const char* key, float default_val); + std::string tohex(const uint8_t* buf, size_t buf_size); std::string hexdump(const std::string& in); std::string base_name(std::string const& path); diff --git a/selfdrive/hardware/hw.h b/selfdrive/hardware/hw.h index 8112ba1c68..b88882d708 100644 --- a/selfdrive/hardware/hw.h +++ b/selfdrive/hardware/hw.h @@ -1,6 +1,7 @@ #pragma once #include "selfdrive/hardware/base.h" +#include "selfdrive/common/util.h" #ifdef QCOM #include "selfdrive/hardware/eon/hardware.h" @@ -16,3 +17,22 @@ public: }; #define Hardware HardwarePC #endif + +namespace Path { +inline static std::string HOME = util::getenv("HOME"); +inline std::string log_root() { + if (const char *env = getenv("LOG_ROOT")) { + return env; + } + return Hardware::PC() ? HOME + "/.comma/media/0/realdata" : "/data/media/0/realdata"; +} +inline std::string params() { + return Hardware::PC() ? HOME + "/.comma/params" : "/data/params"; +} +inline std::string persistent_params() { + return Hardware::PC() ? HOME + "/.comma/params" : "/persist/comma/params"; +} +inline std::string rsa_file() { + return Hardware::PC() ? HOME + "/.comma/persist/comma/id_rsa" : "/persist/comma/id_rsa"; +} +} // namespace Path diff --git a/selfdrive/loggerd/logger.h b/selfdrive/loggerd/logger.h index 9d456680a7..f5db320394 100644 --- a/selfdrive/loggerd/logger.h +++ b/selfdrive/loggerd/logger.h @@ -15,11 +15,7 @@ #include "selfdrive/common/swaglog.h" #include "selfdrive/hardware/hw.h" -const std::string DEFAULT_LOG_ROOT = - Hardware::PC() ? util::getenv_default("HOME", "/.comma/media/0/realdata", "/data/media/0/realdata") - : "/data/media/0/realdata"; - -const std::string LOG_ROOT = util::getenv_default("LOG_ROOT", "", DEFAULT_LOG_ROOT.c_str()); +const std::string LOG_ROOT = Path::log_root(); #define LOGGER_MAX_HANDLES 16 diff --git a/selfdrive/ui/qt/api.cc b/selfdrive/ui/qt/api.cc index 4d42ab3c54..90ba5fd539 100644 --- a/selfdrive/ui/qt/api.cc +++ b/selfdrive/ui/qt/api.cc @@ -18,12 +18,8 @@ namespace CommaApi { -const std::string private_key_path = - Hardware::PC() ? util::getenv_default("HOME", "/.comma/persist/comma/id_rsa", "/persist/comma/id_rsa") - : "/persist/comma/id_rsa"; - QByteArray rsa_sign(const QByteArray &data) { - auto file = QFile(private_key_path.c_str()); + auto file = QFile(Path::rsa_file().c_str()); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "No RSA private key found, please run manager.py or registration.py"; return QByteArray(); @@ -89,7 +85,7 @@ void HttpRequest::sendRequest(const QString &requestURL, const HttpRequest::Meth if(create_jwt) { token = CommaApi::create_jwt(); } else { - QString token_json = QString::fromStdString(util::read_file(util::getenv_default("HOME", "/.comma/auth.json", "/.comma/auth.json"))); + QString token_json = QString::fromStdString(util::read_file(util::getenv("HOME") + "/.comma/auth.json")); QJsonDocument json_d = QJsonDocument::fromJson(token_json.toUtf8()); token = json_d["access_token"].toString(); } diff --git a/selfdrive/ui/qt/qt_window.h b/selfdrive/ui/qt/qt_window.h index d17b01462d..1b7ae0a618 100644 --- a/selfdrive/ui/qt/qt_window.h +++ b/selfdrive/ui/qt/qt_window.h @@ -23,7 +23,7 @@ const int vwp_w = (Hardware::TICI() || (getenv("WIDE_UI") != NULL)) ? 2160 : 192 const int vwp_h = 1080; inline void setMainWindow(QWidget *w) { - const float scale = getenv("SCALE") != NULL ? std::stof(getenv("SCALE")) : 1.0; + const float scale = util::getenv("SCALE", 1.0f); w->setFixedSize(vwp_w*scale, vwp_h*scale); w->show();