Kaynağa Gözat

DK-12 upgrade to latest KBF

Bence Balint 2 yıl önce
ebeveyn
işleme
2f050d0d30

+ 8 - 13
components/dk/src/dk.cpp

@@ -28,7 +28,7 @@ using std::vector;
 using std::atomic;
 
 namespace dk {
-    void handleConnect(wifi::AP::STA &sta);
+    void handleConnect(wifi::STA &sta);
 
     void setupPairingMode();
 
@@ -36,8 +36,6 @@ namespace dk {
 
     void testNotification();
 
-    void startMdns();
-
     rtos::EventGroup       eventGroup;
     struct Events {
         static const constexpr unsigned int SET_PAIRING_MODE = 0;
@@ -79,17 +77,17 @@ namespace dk {
         armedService.middleware<PairingIdMiddleware>();
 
         if (paired()) {
-            wifi::start();
             auto wifiConfig = SettingsManager::instance()->wifiConfig();
-            wifi::getSTA()->onIp = ([]() {
+            wifi::sta::onIp = ([]() {
                 setupArmedMode();
             });
-            wifi::getSTA()->onDisconnect = ([]() {
+            wifi::sta::onDisconnect = ([]() {
                 lcd.println("disconnected", 1);
                 // TODO try to reconnect, or fire event?
             });
             lcd.println("connecting...", 1);
-            wifi::getSTA()->connect(wifiConfig.ssid, wifiConfig.password);
+            wifi::sta::start();
+            wifi::sta::connect(wifiConfig.ssid, wifiConfig.password);
         } else {
             setupPairingMode();
         }
@@ -112,7 +110,7 @@ namespace dk {
         lcd.println("", 1);
     }
 
-    void handleConnect(wifi::AP::STA &sta) {
+    void handleConnect(wifi::STA &sta) {
         lcd.clear();
         kbf::sleep(50);
         lcd.print("waiting for");
@@ -129,11 +127,8 @@ namespace dk {
         pairingService.stop();
         wifi::stop();
 
-        auto sta = wifi::STA::create();
-        auto ap  = wifi::AP::create("doorkeeper", "initinit");
-        ap->onConnect = handleConnect;
-
-        wifi::start(ap, sta);
+        wifi::ap::onConnect = handleConnect;
+        wifi::dual::start("doorkeeper", "initinit");
         pairingService.start();
     }
 

+ 3 - 3
components/dk/src/pairing_service/pair_controller.cpp

@@ -16,10 +16,10 @@ PairController::PairController() : Controller("/pair") {}
 
 static bool validate(const nlohmann::json &json) {
     if (json == nullptr) {
-        ESP_LOGW(PairController::TAG, "json is null");
+        ESP_LOGE(PairController::TAG, "json is null");
         return false;
     } else if (json.find("firebaseToken") == json.end()) {
-        ESP_LOGW(PairController::TAG, "invalid json: missing firebaseToken");
+        ESP_LOGE(PairController::TAG, "invalid json: missing firebaseToken");
         return false;
     }
 
@@ -59,7 +59,7 @@ void stopAP(void *) {
     ESP_LOGI(TAG, "stopAP()");
 
     pairingService.stop();
-    wifi::stopAP();
+    wifi::ap::stop();
     pairingService.start();
 
     startMdns();

+ 2 - 2
components/dk/src/pairing_service/scan_controller.cpp

@@ -13,8 +13,8 @@ ScanController::ScanController() : Controller("/scan") {}
 http::Response ScanController::get(const http::Request &request) {
     if (!scanning && lastScanResults.empty()) {
         scanning = true;
-        wifi::getSTA()->onScanDone = &handleScanDone;
-        wifi::getSTA()->startScan((void *) this);
+        wifi::sta::onScanDone = &handleScanDone;
+        wifi::sta::startScan((void *) this);
     }
 
     if (scanning) {

+ 6 - 6
components/dk/src/pairing_service/settings_controller.cpp

@@ -15,13 +15,13 @@ SettingsController::SettingsController() : Controller("/settings") {}
 
 static bool validate(const nlohmann::json &json) {
     if (json == nullptr) {
-        ESP_LOGW(SettingsController::TAG, "json is null");
+        ESP_LOGE(SettingsController::TAG, "json is null");
         return false;
     } else if (json.find("ssid") == json.end()) {
-        ESP_LOGW(SettingsController::TAG, "no SSID");
+        ESP_LOGE(SettingsController::TAG, "no SSID");
         return false;
     } else if (json.find("password") == json.end()) {
-        ESP_LOGW(SettingsController::TAG, "no password");
+        ESP_LOGE(SettingsController::TAG, "no password");
         return false;
     }
 
@@ -40,9 +40,9 @@ static bool connect(const string &ssid, const string &password) {
     ESP_LOGD(TAG, "credentials: %s; %s", ssid.c_str(), password.c_str());
 
     eventGroup.clear();
-    wifi::getSTA()->onDisconnect = {[]() { eventGroup.setBit(DISCONNECTED); }};
-    wifi::getSTA()->onIp         = {[]() { eventGroup.setBit(GOT_IP); }};
-    wifi::getSTA()->connect(ssid, password, 2);
+    wifi::sta::onDisconnect = {[]() { eventGroup.setBit(DISCONNECTED); }};
+    wifi::sta::onIp         = {[]() { eventGroup.setBit(GOT_IP); }};
+    wifi::sta::connect(ssid, password, true, 2);
 
     const int timeoutMillis = 10000; // TODO use Kconfig and / or a proper timer
     eventGroup.waitForAny({DISCONNECTED, GOT_IP}, timeoutMillis);

+ 1 - 1
components/dk/test/test_calibrate_controller.cpp

@@ -17,7 +17,7 @@ TEST_CASE("CalibrateController", "[controller]") {
     SettingsManager::CalibrationConfig config = {0, 0};
     sm->setCalibration(config);
 
-    wifi::start();
+    wifi::sta::start();
 
     auto webService = WebService();
     webService.controller<CalibrateController>();

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

@@ -24,7 +24,7 @@ protected:
 };
 
 TEST_CASE("PairingIdMiddleware", "[middleware]") {
-    wifi::start();
+    wifi::sta::start();
     SettingsManager::instance()->setPairingId(testPairingId);
 
     WebService webService;

+ 4 - 7
components/dk/test/test_scan_controller.cpp

@@ -20,15 +20,15 @@ using namespace std;
 rtos::EventGroup eventGroup;
 
 void scanControllerMaster() {
-    wifi::start(wifi::AP::create(DK_TEST_SSID, DK_TEST_PASS));
-    wifi::getAP()->onDisconnect = {[](wifi::AP::STA &) { eventGroup.setBit(0); }};
+    wifi::ap::onDisconnect = {[](wifi::STA &) { eventGroup.setBit(0); }};
+    wifi::ap::start(DK_TEST_SSID, DK_TEST_PASS);
 
     eventGroup.waitForBit(0);
     wifi::stop();
 }
 
 void scanControllerSlave() {
-    wifi::start();
+    wifi::sta::start();
 
     auto webService = WebService();
     webService.controller<ScanController>();
@@ -55,11 +55,8 @@ void scanControllerSlave() {
         kbf::sleep(200);
     }
 
-    auto sta = wifi::getSTA();
-    sta->onConnect = {[]() { eventGroup.setBit(0); }};
-    sta->connect(DK_TEST_SSID, DK_TEST_PASS);
+    TEST_ASSERT_TRUE(wifi::sta::connect(DK_TEST_SSID, DK_TEST_PASS));
 
-    eventGroup.waitForBit(0);
     webService.stop();
     wifi::stop();
 }

+ 6 - 12
components/dk/test/test_settings_controller.cpp

@@ -24,10 +24,8 @@ static rtos::EventGroup eventGroup;
 void testSettingsControllerMaster() {
     nvs::erase();
 
-    auto ap = wifi::AP::create(masterSSID, testPassword);
-    ap->onDisconnect = {[](wifi::AP::STA &) { eventGroup.setBit(0); }};
-    auto sta         = wifi::STA::create();
-    wifi::start(ap, sta);
+    wifi::ap::onDisconnect = {[](wifi::STA &) { eventGroup.setBit(0); }};
+    wifi::dual::start(masterSSID, testPassword);
 
     auto webService = WebService();
     webService.controller<SettingsController>();
@@ -42,17 +40,13 @@ void testSettingsControllerMaster() {
 static atomic<bool> masterConnected;
 
 void testSettingsControllerSlave() {
-    masterConnected = false;
-    auto ap = wifi::AP::create(slaveSSID, testPassword, net::IP("192.168.1.1"));
-    ap->onConnect = {[](wifi::AP::STA &) { masterConnected = true; }};
+    masterConnected     = false;
+    wifi::ap::onConnect = {[](wifi::STA &) { masterConnected = true; }};
 
-    auto sta = wifi::STA::create();
-    sta->onIp = {[]() { eventGroup.setBit(1); }};
+    wifi::dual::start(slaveSSID, testPassword, net::IP("192.168.1.1"));
+    if (!wifi::sta::connect(masterSSID, testPassword)) TEST_FAIL();
 
-    wifi::start(ap, sta);
-    sta->connect(masterSSID, testPassword);
 
-    eventGroup.waitForBit(1);
     auto client = http::Client(13000);
 
     auto responseJson = client.get(url)->json();

+ 4 - 10
components/dk/test/test_unpair_controller.cpp

@@ -24,11 +24,8 @@ void unpairControllerMaster() {
     nvs::erase();
     SettingsManager::instance()->setPairingId(testPairingId);
 
-    auto ap = wifi::AP::create(ssid, testPassword);
-    ap->onDisconnect = {[](wifi::AP::STA &) { eventGroup.setBit(0); }};
-
-    auto sta = wifi::STA::create();
-    wifi::start(ap, sta);
+    wifi::ap::onDisconnect = {[](wifi::STA &) { eventGroup.setBit(0); }};
+    wifi::ap::start(ssid, testPassword);
 
     auto webService = WebService();
     webService.controller<UnpairController>();
@@ -44,11 +41,8 @@ void unpairControllerMaster() {
 }
 
 void unpairControllerSlave() {
-    auto sta = wifi::STA::create();
-    sta->onIp = {[](){ eventGroup.setBit(0); }};
-    wifi::start(sta);
-    sta->connect(ssid, testPassword);
-    eventGroup.waitForBit(0);
+    wifi::sta::start();
+    TEST_ASSERT_TRUE(wifi::sta::connect(ssid, testPassword));
 
     auto client   = http::Client();
     auto response = client.get(url);

+ 4 - 2
components/dk/test_app/sdkconfig

@@ -135,7 +135,8 @@ CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
 CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
 # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set
 # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set
-# CONFIG_COMPILER_CXX_EXCEPTIONS is not set
+CONFIG_COMPILER_CXX_EXCEPTIONS=y
+CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE=0
 # CONFIG_COMPILER_CXX_RTTI is not set
 CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
 # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set
@@ -1199,7 +1200,8 @@ CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
 CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
 # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
 # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
-# CONFIG_CXX_EXCEPTIONS is not set
+CONFIG_CXX_EXCEPTIONS=y
+CONFIG_CXX_EXCEPTIONS_EMG_POOL_SIZE=0
 CONFIG_STACK_CHECK_NONE=y
 # CONFIG_STACK_CHECK_NORM is not set
 # CONFIG_STACK_CHECK_STRONG is not set

+ 1 - 1
components/kbf

@@ -1 +1 @@
-Subproject commit 758397c664c23cf9bbf753e4d96993665b8ab00d
+Subproject commit bd61533f669b6bda151ba781e7305fd6c53b6401