Procházet zdrojové kódy

DK-46 refactor SettingsManager --> dk::settings

Bence Balint před 2 roky
rodič
revize
1461197ea1

+ 1 - 1
components/dk/CMakeLists.txt

@@ -3,7 +3,7 @@ set(CMAKE_CXX_STANDARD 17)
 idf_component_register(
         SRCS
         "src/dk.cpp"
-        "src/settings_manager.cpp"
+        "src/settings.cpp"
 
         "src/api/calibrate_controller.cpp"
         "src/api/pairing_id_middleware.cpp"

+ 1 - 1
components/dk/include/pairing_service/settings_controller.h

@@ -4,7 +4,7 @@
 
 #include <kbf/web_service.h>
 
-#include "settings_manager.h"
+#include "settings.h"
 
 class SettingsController : public kbf::WebService::Controller {
 public:

+ 35 - 0
components/dk/include/settings.h

@@ -0,0 +1,35 @@
+#ifndef DOORKEEPER_DEV_SETTINGS_H
+#define DOORKEEPER_DEV_SETTINGS_H
+
+#include <string>
+#include <map>
+
+#include <kbf/nvs.h>
+
+namespace dk::settings {
+    void init();
+
+    struct Wifi {
+        std::string ssid;
+        std::string password;
+    };
+
+    [[nodiscard]] Wifi wifi();
+
+    void setWifi(Wifi &);
+
+    [[nodiscard]] std::string pairingId();
+
+    void setPairingId(std::string pairingId);
+
+    struct Calibration {
+        int high;
+        int low;
+    };
+
+    [[nodiscard]]  Calibration calibration();
+
+    void setCalibration(Calibration &);
+}
+
+#endif //DOORKEEPER_DEV_SETTINGS_H

+ 0 - 63
components/dk/include/settings_manager.h

@@ -1,63 +0,0 @@
-#ifndef DOORKEEPER_DEV_SETTINGS_MANAGER_H
-#define DOORKEEPER_DEV_SETTINGS_MANAGER_H
-
-#include <string>
-#include <map>
-
-#include <kbf/nvs.h>
-
-class SettingsManager {
-public:
-    SettingsManager(SettingsManager &) = delete;
-
-    void operator=(const SettingsManager &) = delete;
-
-    static SettingsManager *instance();
-
-    struct WifiConfig {
-        std::string ssid;
-        std::string password;
-    };
-
-    [[nodiscard]] WifiConfig wifiConfig();
-
-    void setWifiConfig(WifiConfig &);
-
-    [[nodiscard]] std::string pairingId();
-
-    void setPairingId(std::string pairingId);
-
-    struct CalibrationConfig {
-        int high;
-        int low;
-    };
-
-    [[nodiscard]]  CalibrationConfig calibration();
-
-    void setCalibration(CalibrationConfig &);
-
-private:
-    SettingsManager();
-
-    static const std::map<std::string, uint64_t>    defaultValuesInt;
-    static const std::map<std::string, std::string> defaultValuesStr;
-
-    typedef const char *const Key_t;
-
-    struct Key {
-        static constexpr Key_t NETWORK_SSID     = "networkSSID";
-        static constexpr Key_t NETWORK_PASSWORD = "networkPassword";
-
-        static constexpr Key_t PAIRING_ID = "pairingId";
-
-        static constexpr Key_t CALIBRATION_HIGH = "calibHigh";
-        static constexpr Key_t CALIBRATION_LOW  = "calibLow";
-    };
-
-    template<class T>
-    T read(const Key_t &key);
-
-    kbf::nvs::NVS nvs;
-};
-
-#endif //DOORKEEPER_DEV_SETTINGS_MANAGER_H

+ 1 - 1
components/dk/include/tasks/ultrasonic.h

@@ -1,7 +1,7 @@
 #ifndef DOORKEEPER_DEV_ULTRASONIC_H
 #define DOORKEEPER_DEV_ULTRASONIC_H
 
-#include <settings_manager.h>
+#include <settings.h>
 
 #include <memory>
 

+ 9 - 9
components/dk/src/api/calibrate_controller.cpp

@@ -6,7 +6,7 @@
 #include <kbf/driver/ultrasonic.h>
 #include <kbf.h>
 
-#include "settings_manager.h"
+#include "settings.h"
 #include "tasks/display_manager.h"
 #include "tasks/ultrasonic.h"
 
@@ -17,7 +17,7 @@ using http::Response;
 Response CalibrateController::get(const Request &request) {
     ESP_LOGD(TAG, "%s()", __func__);
 
-    auto config = SettingsManager::instance()->calibration();
+    auto config = dk::settings::calibration();
     return Response({{"high", config.high},
                      {"low",  config.low}});
 }
@@ -53,21 +53,21 @@ Response CalibrateController::post(const Request &request) {
 
     ESP_LOGI(TAG, "%s: min = %d, max = %d", __func__, min, max);
 
-    SettingsManager::CalibrationConfig config = {.high = max, .low = min};
+    dk::settings::Calibration calib = {.high = max, .low = min};
     if (error) {
         DisplayManager::setMessage("cal. error", DisplayManager::defaultTimeout);
         DisplayManager::setDoorState(DisplayManager::DoorState::NOT_CALIBRATED);
-        config = {.high = 0, .low = 0};
-        SettingsManager::instance()->setCalibration(config);
+        calib = {.high = 0, .low = 0};
+        dk::settings::setCalibration(calib);
     } else {
-        DisplayManager::setMessage("cal: " + std::to_string(config.low) + " - " + std::to_string(config.high),
+        DisplayManager::setMessage("cal: " + std::to_string(calib.low) + " - " + std::to_string(calib.high),
                                    DisplayManager::defaultTimeout);
-        SettingsManager::instance()->setCalibration(config);
+        dk::settings::setCalibration(calib);
         Ultrasonic::enable();
     }
 
     return Response({
-                            {"high", config.high},
-                            {"low",  config.low}
+                            {"high", calib.high},
+                            {"low",  calib.low}
                     }, error ? 500 : 200);
 }

+ 2 - 2
components/dk/src/api/pairing_id_middleware.cpp

@@ -1,6 +1,6 @@
 #include "api/pairing_id_middleware.h"
 
-#include "settings_manager.h"
+#include "settings.h"
 
 using std::string;
 
@@ -11,7 +11,7 @@ using http::Response;
 Response PairingIdMiddleware::run(const Request &request, WebService &webService) {
     ESP_LOGD(TAG, "%s()", __func__);
 
-    string expected = SettingsManager::instance()->pairingId();
+    string expected = dk::settings::pairingId();
     string actual = request.readHeader(HEADER);
 
     if (actual.empty() || actual != expected) {

+ 5 - 5
components/dk/src/dk.cpp

@@ -7,7 +7,7 @@
 #include <kbf/wifi.h>
 #include <kbf/http/client.h>
 
-#include "settings_manager.h"
+#include "settings.h"
 #include "tasks/display_manager.h"
 #include "tasks/event_manager.h"
 #include "tasks/ultrasonic.h"
@@ -28,7 +28,7 @@ namespace dk {
 
     void setPairing(const string &pairingId) {
         ESP_LOGI(TAG, "%s(%s)", __func__, pairingId.c_str());
-        SettingsManager::instance()->setPairingId(pairingId);
+        dk::settings::setPairingId(pairingId);
         EventManager::start();
         Ultrasonic::enable();
         mainEventGroup->setBit(MainEvents::SET_ONLINE_MODE);
@@ -37,14 +37,14 @@ namespace dk {
     void clearPairing() {
         ESP_LOGI(TAG, "%s", __func__);
         Ultrasonic::disable();
-        SettingsManager::instance()->setPairingId("");
+        dk::settings::setPairingId("");
         wifi::stop();
         mainEventGroup->setBit(MainEvents::SET_PAIRING_MODE);
         EventManager::stop();
     }
 
     bool paired() {
-        return !SettingsManager::instance()->pairingId().empty();
+        return !dk::settings::pairingId().empty();
     }
 
     // old stuff starts here
@@ -58,7 +58,7 @@ namespace dk {
             return;
         }
 
-        auto pairingId = SettingsManager::instance()->pairingId();
+        auto pairingId = dk::settings::pairingId();
         ESP_LOGI(TAG, "  pairingId = %s", pairingId.c_str());
         auto client   = http::Client(CONFIG_DK_HTTP_CLIENT_TIMEOUT);
         auto response = client.get(CONFIG_DK_SERVER_API_URL "/dev/test_notification",

+ 3 - 4
components/dk/src/pairing_service/settings_controller.cpp

@@ -5,7 +5,6 @@
 #include <kbf/rtos.h>
 #include <kbf/wifi.h>
 
-#include "dk.h"
 #include "tasks/display_manager.h"
 
 using namespace kbf;
@@ -59,7 +58,7 @@ static bool connect(const string &ssid, const string &password) {
 }
 
 http::Response SettingsController::get(const kbf::http::Request &request) {
-    auto wifiConfig = SettingsManager::instance()->wifiConfig();
+    auto wifiConfig = dk::settings::wifi();
     auto response   = nlohmann::json({
         {"ssid",     wifiConfig.ssid},
         {"password", wifiConfig.password}
@@ -84,11 +83,11 @@ http::Response SettingsController::post(const kbf::http::Request &request) {
         return http::Response(nlohmann::json({{"success", false}}));
     }
 
-    SettingsManager::WifiConfig wifiConfig = {
+    dk::settings::Wifi wifiConfig = {
             .ssid     = ssid,
             .password = password,
     };
-    SettingsManager::instance()->setWifiConfig(wifiConfig);
+    dk::settings::setWifi(wifiConfig);
 
     DisplayManager::setMessage("connected");
     return http::Response(nlohmann::json({{"success", true}}));

+ 101 - 0
components/dk/src/settings.cpp

@@ -0,0 +1,101 @@
+#include "settings.h"
+
+using std::string;
+using std::map;
+
+namespace {
+    typedef const char *const Key_t;
+
+    template<class T>
+    T read(const Key_t &key);
+
+    struct Key {
+        static constexpr Key_t NETWORK_SSID     = "networkSSID";
+        static constexpr Key_t NETWORK_PASSWORD = "networkPassword";
+
+        static constexpr Key_t PAIRING_ID = "pairingId";
+
+        static constexpr Key_t CALIBRATION_HIGH = "calibHigh";
+        static constexpr Key_t CALIBRATION_LOW  = "calibLow";
+    };
+
+    const map<string, uint64_t> defaultValuesInt = {
+            {Key::CALIBRATION_LOW,  0},
+            {Key::CALIBRATION_HIGH, 0}
+    };
+
+    const map<string, string> defaultValuesStr = {
+            {Key::NETWORK_SSID,     ""},
+            {Key::NETWORK_PASSWORD, ""},
+            {Key::PAIRING_ID,       ""},
+    };
+
+    kbf::nvs::NVS *nvs;
+
+    template<>
+    bool read<bool>(Key_t const &key) {
+        uint8_t value;
+        if (!nvs->read(key, value)) {
+            value = defaultValuesInt.at(key);
+        }
+        return value;
+    }
+
+    template<>
+    int read<int>(Key_t const &key) {
+        int value;
+        if (!nvs->read(key, value)) {
+            value = static_cast<bool>(defaultValuesInt.at(key));
+        }
+        return value;
+    }
+
+    template<>
+    string read<string>(Key_t const &key) {
+        string value;
+        if (!nvs->read(key, value)) {
+            value = defaultValuesStr.at(key);
+        }
+        return value;
+    }
+}
+
+namespace dk::settings {
+    void init() {
+        delete nvs;
+        nvs = new kbf::nvs::NVS("dk_settings");
+    }
+
+
+    Wifi wifi() {
+        if (!nvs) init();
+        return (Wifi) {.ssid = read<string>(Key::NETWORK_SSID), .password = read<string>(Key::NETWORK_PASSWORD)};
+    }
+
+    void setWifi(Wifi &value) {
+        if (!nvs) init();
+        nvs->write(Key::NETWORK_SSID, value.ssid);
+        nvs->write(Key::NETWORK_PASSWORD, value.password);
+    }
+
+    string pairingId() {
+        if (!nvs) init();
+        return read<string>(Key::PAIRING_ID);
+    }
+
+    void setPairingId(string pairingId) {
+        if (!nvs) init();
+        nvs->write(Key::PAIRING_ID, pairingId);
+    }
+
+    Calibration calibration() {
+        if (!nvs) init();
+        return (Calibration) {.high = read<int>(Key::CALIBRATION_HIGH), .low = read<int>(Key::CALIBRATION_LOW)};
+    }
+
+    void setCalibration(Calibration &config) {
+        if (!nvs) init();
+        nvs->write(Key::CALIBRATION_HIGH, config.high);
+        nvs->write(Key::CALIBRATION_LOW, config.low);
+    }
+}

+ 0 - 77
components/dk/src/settings_manager.cpp

@@ -1,77 +0,0 @@
-#include "settings_manager.h"
-
-using namespace kbf;
-using std::string;
-using std::map;
-
-const map<string, uint64_t> SettingsManager::defaultValuesInt = {
-        {Key::SOFT_AP_ENABLED,  true},
-        {Key::CALIBRATION_LOW,  0},
-        {Key::CALIBRATION_HIGH, 0}
-};
-
-const map<string, string> SettingsManager::defaultValuesStr = {
-        {Key::NETWORK_SSID,     ""},
-        {Key::NETWORK_PASSWORD, ""},
-        {Key::PAIRING_ID,       ""},
-};
-
-SettingsManager::SettingsManager() : nvs(nvs::NVS()) {}
-
-SettingsManager *SettingsManager::instance() {
-    static SettingsManager instance;
-    return &instance;
-}
-
-template<>
-bool SettingsManager::read<bool>(SettingsManager::Key_t const &key) {
-    uint8_t value;
-    if (!nvs.read(key, value)) {
-        value = defaultValuesInt.at(key);
-    }
-    return value;
-}
-
-template<>
-int SettingsManager::read<int>(SettingsManager::Key_t const &key) {
-    int value;
-    if (!nvs.read(key, value)) {
-        value = defaultValuesInt.at(key);
-    }
-    return value;
-}
-
-template<>
-string SettingsManager::read<string>(SettingsManager::Key_t const &key) {
-    string value;
-    if (!nvs.read(key, value)) {
-        value = defaultValuesStr.at(key);
-    }
-    return value;
-}
-
-SettingsManager::WifiConfig SettingsManager::wifiConfig() {
-    return (WifiConfig) {.ssid = read<string>(Key::NETWORK_SSID), .password = read<string>(Key::NETWORK_PASSWORD)};
-}
-
-void SettingsManager::setWifiConfig(SettingsManager::WifiConfig &value) {
-    nvs.write(Key::NETWORK_SSID, value.ssid);
-    nvs.write(Key::NETWORK_PASSWORD, value.password);
-}
-
-string SettingsManager::pairingId() {
-    return read<string>(Key::PAIRING_ID);
-}
-
-void SettingsManager::setPairingId(string pairingId) {
-    nvs.write(Key::PAIRING_ID, pairingId);
-}
-
-SettingsManager::CalibrationConfig SettingsManager::calibration() {
-    return (CalibrationConfig) {.high = read<int>(Key::CALIBRATION_HIGH), .low = read<int>(Key::CALIBRATION_LOW)};
-}
-
-void SettingsManager::setCalibration(SettingsManager::CalibrationConfig &config) {
-    nvs.write(Key::CALIBRATION_HIGH, config.high);
-    nvs.write(Key::CALIBRATION_LOW, config.low);
-}

+ 9 - 2
components/dk/src/tasks/boot.cpp

@@ -34,7 +34,7 @@ void Boot::run(void *arg) {
 
 #ifdef CONFIG_DK_PRESET_PAIRING_ID_ENABLED
     ESP_LOGW(TAG, "using preset pairing ID \"%s\"", CONFIG_DK_PRESET_PAIRING_ID);
-    SettingsManager::instance()->setPairingId(CONFIG_DK_PRESET_PAIRING_ID);
+    dk::settings::setPairingId(CONFIG_DK_PRESET_PAIRING_ID);
 #endif
 
     ESP_LOGI(TAG, "starting DisplayManager");
@@ -57,7 +57,6 @@ void Boot::run(void *arg) {
     }};
 
     ESP_LOGI(TAG, "starting networking");
-    auto wifiConfig = SettingsManager::instance()->wifiConfig();
     wifi::sta::onIp         = ([]() { mainEventGroup->setBit(MainEvents::SET_ONLINE_MODE); });
     wifi::sta::onDisconnect = ([]() { mainEventGroup->setBit(MainEvents::SET_OFFLINE_MODE); });
     wifi::sta::start();
@@ -87,6 +86,14 @@ void Boot::run(void *arg) {
 
     ESP_LOGI(TAG, "setting mode");
     if (paired()) {
+        auto wifiConfig = dk::settings::wifi();
+
+        if (wifiConfig.ssid.empty() || wifiConfig.password.empty()) {
+            ESP_LOGE(TAG, "paired without wifi config, erasing NVS and restarting");
+            kbf::nvs::erase();
+            esp_restart();
+        }
+
         DisplayManager::setWifiState(DisplayManager::WifiState::CONNECTING);
         DisplayManager::setMessage("connecting...");
         wifi::sta::connect(wifiConfig.ssid, wifiConfig.password);

+ 3 - 3
components/dk/src/tasks/event_manager.cpp

@@ -8,7 +8,7 @@
 #include <kbf/http/exception.h>
 
 #include "dk.h"
-#include "settings_manager.h"
+#include "settings.h"
 #include "tasks/display_manager.h"
 
 using namespace kbf;
@@ -23,7 +23,7 @@ static shared_ptr<Task> instance;
 [[noreturn]] void EventManager::run(void *arg) {
     ESP_LOGI(TAG, "%s()", __func__);
 
-    pairingId = SettingsManager::instance()->pairingId();
+    pairingId = dk::settings::pairingId();
     ESP_LOGI(TAG, "pairingId = \"%s\"", pairingId.c_str());
 
     while (true) {
@@ -105,7 +105,7 @@ void EventManager::start() {
         return;
     }
 
-    if (SettingsManager::instance()->pairingId().empty()) {
+    if (dk::settings::pairingId().empty()) {
         ESP_LOGW(TAG, "%s: no pairing ID, aborting", __func__);
         return;
     }

+ 3 - 5
components/dk/src/tasks/ultrasonic.cpp

@@ -7,7 +7,7 @@
 #include <kbf.h>
 #include <kbf/driver/ultrasonic.h>
 
-#include "settings_manager.h"
+#include "settings.h"
 #include "tasks/event_manager.h"
 
 using namespace kbf;
@@ -77,15 +77,13 @@ void Ultrasonic::start() {
 bool Ultrasonic::enable() {
     ESP_LOGI(TAG, "%s", __func__);
 
-    static auto sm = SettingsManager::instance();
-
-    auto calibration = sm->calibration();
+    auto calibration = dk::settings::calibration();
     if (!calibration.low || !calibration.high) {
         ESP_LOGW(TAG, "not calibrated");
         return false;
     }
 
-    if (sm->pairingId().empty()) {
+    if (dk::settings::pairingId().empty()) {
         ESP_LOGW(TAG, "not paired");
         return false;
     }

+ 11 - 6
components/dk/test/test_calibrate_controller.cpp

@@ -1,9 +1,12 @@
 #include <kbf/wifi.h>
 #include <kbf/web_service.h>
-#include <api/calibrate_controller.h>
-#include <settings_manager.h>
 #include <kbf/http/client.h>
 
+#include "settings.h"
+#include "api/calibrate_controller.h"
+#include "tasks/display_manager.h"
+#include "tasks/ultrasonic.h"
+
 #include <unity.h>
 #include <kbf.h>
 
@@ -12,10 +15,12 @@ using namespace kbf;
 #define TEST_URL "http://localhost/calibrate"
 
 TEST_CASE("CalibrateController", "[controller]") {
-    auto sm = SettingsManager::instance();
+    // TODO mock these maybe so the test passes without a real device (e.g. test dev)
+    DisplayManager::start();
+    Ultrasonic::start();
 
-    SettingsManager::CalibrationConfig config = {0, 0};
-    sm->setCalibration(config);
+    dk::settings::Calibration config = {0, 0};
+    dk::settings::setCalibration(config);
 
     wifi::sta::start();
 
@@ -39,7 +44,7 @@ TEST_CASE("CalibrateController", "[controller]") {
     TEST_ASSERT_NOT_EQUAL(0, high);
     TEST_ASSERT_NOT_EQUAL(0, low);
 
-    config = sm->calibration();
+    config = dk::settings::calibration();
     TEST_ASSERT_EQUAL(high, config.high);
     TEST_ASSERT_EQUAL(low, config.low);
 

+ 2 - 2
components/dk/test/test_pairing_id_middleware.cpp

@@ -3,7 +3,7 @@
 #include <kbf/web_service.h>
 
 #include <unity.h>
-#include <settings_manager.h>
+#include <settings.h>
 #include <api/pairing_id_middleware.h>
 
 using namespace kbf;
@@ -25,7 +25,7 @@ protected:
 
 TEST_CASE("PairingIdMiddleware", "[middleware]") {
     wifi::sta::start();
-    SettingsManager::instance()->setPairingId(testPairingId);
+    dk::settings::setPairingId(testPairingId);
 
     WebService webService;
     webService.controller<MiddlewareTestController>();

+ 11 - 13
components/dk/test/test_settings_manager.cpp

@@ -6,7 +6,7 @@
 #include <kbf/nvs.h>
 #include <esp_system.h>
 
-#include "settings_manager.h"
+#include "settings.h"
 
 using namespace kbf;
 using namespace std;
@@ -21,23 +21,23 @@ void stage1() {
     nvs::init();
     nvs::erase();
 
-    auto sm = SettingsManager::instance();
+    dk::settings::init();
 
-    auto wifiConfig = sm->wifiConfig();
+    auto wifiConfig = dk::settings::wifi();
     TEST_ASSERT_EQUAL_STRING("", wifiConfig.ssid.c_str());
     TEST_ASSERT_EQUAL_STRING("", wifiConfig.password.c_str());
     wifiConfig = {TEST_SSID, TEST_PASSWORD};
-    sm->setWifiConfig(wifiConfig);
+    dk::settings::setWifi(wifiConfig);
 
-    auto pairingId = sm->pairingId();
+    auto pairingId = dk::settings::pairingId();
     TEST_ASSERT_EQUAL_STRING("", pairingId.c_str());
-    sm->setPairingId(TEST_PAIRING_ID);
+    dk::settings::setPairingId(TEST_PAIRING_ID);
 
-    auto calibration = sm->calibration();
+    auto calibration = dk::settings::calibration();
     TEST_ASSERT_EQUAL(0, calibration.high);
     TEST_ASSERT_EQUAL(0, calibration.low);
     calibration = {TEST_CALIB_HIGH, TEST_CALIB_LOW};
-    sm->setCalibration(calibration);
+    dk::settings::setCalibration(calibration);
 
     cout << "restarting in 1..." << endl;
     kbf::sleep(1000);
@@ -45,16 +45,14 @@ void stage1() {
 }
 
 void stage2() {
-    auto sm = SettingsManager::instance();
-
-    auto wifiConfig = sm->wifiConfig();
+    auto wifiConfig = dk::settings::wifi();
     TEST_ASSERT_EQUAL_STRING(TEST_SSID, wifiConfig.ssid.c_str());
     TEST_ASSERT_EQUAL_STRING(TEST_PASSWORD, wifiConfig.password.c_str());
 
-    auto pairingId = sm->pairingId();
+    auto pairingId = dk::settings::pairingId();
     TEST_ASSERT_EQUAL_STRING(TEST_PAIRING_ID, pairingId.c_str());
 
-    auto calibration = sm->calibration();
+    auto calibration = dk::settings::calibration();
     TEST_ASSERT_EQUAL(TEST_CALIB_HIGH, calibration.high);
     TEST_ASSERT_EQUAL(TEST_CALIB_LOW, calibration.low);
 

+ 3 - 3
components/dk/test/test_unpair_controller.cpp

@@ -6,7 +6,7 @@
 #include <kbf/web_service.h>
 
 #include "api/unpair_controller.h"
-#include "settings_manager.h"
+#include "settings.h"
 
 #include <unity.h>
 
@@ -22,7 +22,7 @@ static rtos::EventGroup eventGroup;
 
 void unpairControllerMaster() {
     nvs::erase();
-    SettingsManager::instance()->setPairingId(testPairingId);
+    dk::settings::setPairingId(testPairingId);
 
     wifi::ap::onDisconnect = {[](wifi::STA &) { eventGroup.setBit(0); }};
     wifi::ap::start(ssid, testPassword);
@@ -33,7 +33,7 @@ void unpairControllerMaster() {
 
     eventGroup.waitForBit(0);
 
-    TEST_ASSERT_EQUAL_STRING("", SettingsManager::instance()->pairingId().c_str());
+    TEST_ASSERT_EQUAL_STRING("", dk::settings::pairingId().c_str());
 
     kbf::sleep(500);
     webService.stop();

+ 2 - 0
components/dk/test_app/CMakeLists.txt

@@ -14,6 +14,8 @@ set(EXTRA_COMPONENT_DIRS "../.." "../../kbf/lib/esp-idf-lib/components")
 #
 set(TEST_COMPONENTS "dk" CACHE STRING "List of components to test")
 
+add_compile_definitions(DK_DEVICE_ID="676cef66-d849-4e1d-829f-2180cc6aae0e")
+
 # hax to avoid circular dependency with CLion + still build nicely with idf.py
 # set in root CMakeLists.txt: set(SKIP_IDF 1)
 if (SKIP_IDF)

+ 1 - 0
components/dk/test_app/main/Kconfig.projbuild

@@ -0,0 +1 @@
+../../../../main/Kconfig.projbuild

+ 67 - 5
components/dk/test_app/sdkconfig

@@ -125,11 +125,74 @@ CONFIG_PARTITION_TABLE_OFFSET=0x8000
 CONFIG_PARTITION_TABLE_MD5=y
 # end of Partition Table
 
+#
+# Doorkeeper Configuration
+#
+
+#
+# Ultrasonic sensor
+#
+CONFIG_DK_ULTRASONIC_CALIB_SAMPLE_SIZE=32
+CONFIG_DK_ULTRASONIC_CALIB_SLEEP=100
+CONFIG_DK_ULTRASONIC_CLOSED_CONFIDENCE=5
+CONFIG_DK_ULTRASONIC_OPEN_CONFIDENCE=3
+CONFIG_DK_ULTRASONIC_READING_INTERVAL=200
+CONFIG_DK_ULTRASONIC_TRIGGER=25
+CONFIG_DK_ULTRASONIC_ECHO=32
+# end of Ultrasonic sensor
+
+#
+# DisplayManager
+#
+CONFIG_DK_DEFAULT_MESSAGE_TIMEOUT=1000
+CONFIG_DK_LCD_RS=17
+CONFIG_DK_LCD_E=16
+CONFIG_DK_LCD_D4=18
+CONFIG_DK_LCD_D5=19
+CONFIG_DK_LCD_D6=21
+CONFIG_DK_LCD_D7=22
+# end of DisplayManager
+
+#
+# Buttons
+#
+CONFIG_DK_BUTTON1=13
+CONFIG_DK_BUTTON2=27
+# end of Buttons
+
+#
+# Networking
+#
+CONFIG_DK_SERVER_API_URL="http://dev.api.doorkeeper.kraxor.net"
+CONFIG_DK_HTTP_CLIENT_TIMEOUT=3000
+CONFIG_DK_PAIRING_WIFI_TIMEOUT=10000
+CONFIG_DK_PAIRING_WIFI_MAX_RETRY=2
+# end of Networking
+
+#
+# EventManager
+#
+CONFIG_DK_EVENT_HTTP_RETRY_INTERVAL=2000
+CONFIG_DK_DEFAULT_NOOP_INTERVAL=10000
+CONFIG_DK_EVENT_QUEUE_SIZE=10
+# end of EventManager
+
+#
+# hax
+#
+# CONFIG_DK_HACKS_ENABLED is not set
+
+#
+# hacks disabled
+#
+# end of hax
+# end of Doorkeeper Configuration
+
 #
 # Compiler options
 #
-CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
-# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
+# CONFIG_COMPILER_OPTIMIZATION_DEFAULT is not set
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
 # CONFIG_COMPILER_OPTIMIZATION_PERF is not set
 # CONFIG_COMPILER_OPTIMIZATION_NONE is not set
 CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
@@ -616,7 +679,6 @@ CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
 CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
 # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
 # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
-CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
 CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
 # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
 # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
@@ -1207,8 +1269,8 @@ CONFIG_MONITOR_BAUD_115200B=y
 # CONFIG_MONITOR_BAUD_OTHER is not set
 CONFIG_MONITOR_BAUD_OTHER_VAL=115200
 CONFIG_MONITOR_BAUD=115200
-CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
-# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
+# CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG is not set
+CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
 CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
 # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
 # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set

+ 4 - 5
sdkconfig

@@ -191,8 +191,8 @@ CONFIG_DK_EVENT_QUEUE_SIZE=10
 #
 # Compiler options
 #
-CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
-# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
+# CONFIG_COMPILER_OPTIMIZATION_DEFAULT is not set
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
 # CONFIG_COMPILER_OPTIMIZATION_PERF is not set
 # CONFIG_COMPILER_OPTIMIZATION_NONE is not set
 CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
@@ -683,7 +683,6 @@ CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
 CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
 # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
 # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
-CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
 CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
 # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
 # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
@@ -1274,8 +1273,8 @@ CONFIG_MONITOR_BAUD_115200B=y
 # CONFIG_MONITOR_BAUD_OTHER is not set
 CONFIG_MONITOR_BAUD_OTHER_VAL=115200
 CONFIG_MONITOR_BAUD=115200
-CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
-# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
+# CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG is not set
+CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y
 CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
 # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
 # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set