瀏覽代碼

DK-9 start webservice

Bence Balint 3 年之前
父節點
當前提交
b6b56a48ff

+ 1 - 0
.idea/vcs.xml

@@ -3,5 +3,6 @@
   <component name="VcsDirectoryMappings">
     <mapping directory="$PROJECT_DIR$" vcs="Git" />
     <mapping directory="$PROJECT_DIR$/components/kbf" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/components/kbf/lib/esp-idf-lib" vcs="Git" />
   </component>
 </project>

+ 2 - 0
CMakeLists.txt

@@ -5,7 +5,9 @@
 cmake_minimum_required(VERSION 3.5)
 
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
+set(EXTRA_COMPONENT_DIRS "components/kbf/lib/esp-idf-lib/components/")
 project(doorkeeper_dev)
 
+
 set(SKIP_IDF 1) # avoid circular dependency in CLion
 add_subdirectory(components/dk/test_app)

+ 2 - 0
components/dk/CMakeLists.txt

@@ -1,3 +1,5 @@
+set(CMAKE_CXX_STANDARD 17)
+
 idf_component_register(
         SRCS
         "src/dk.cpp"

+ 16 - 1
components/dk/include/dk.h

@@ -1 +1,16 @@
-void func(void);
+#ifndef DK_H
+#define DK_H
+
+#include <kbf/web_service.h>
+#include <kbf/driver/lcd.h>
+
+namespace dk {
+    static const constexpr char *const TAG = "dk";
+
+    static kbf::WebService webService = kbf::WebService();
+    static kbf::driver::LCD lcd = kbf::driver::LCD(32, 33, 25, 26, 27, 13);
+
+    void main(void *);
+}
+
+#endif //DK_H

+ 12 - 1
components/dk/src/controllers/settings_controller.cpp

@@ -6,6 +6,8 @@
 #include <kbf.h>
 #include <kbf/wifi.h>
 
+#include "dk.h"
+
 using namespace kbf;
 using std::atomic;
 
@@ -32,7 +34,7 @@ bool connect(const string &ssid, const string &password) {
     const char *TAG = "SettingsController::connect";
     ESP_LOGI(TAG, "starting");
 
-    status = -1;
+    status = -1;  // TODO use kbf::rtos::EventGroup
     wifi::getSTA()->onDisconnect = {[]() { status = 0; }};
     wifi::getSTA()->onConnect    = {[]() { status = 1; }};
     wifi::getSTA()->connect(ssid, password, 1);
@@ -68,8 +70,15 @@ http::Response SettingsController::post(const kbf::http::Request &request) {
     auto ssid     = json.find("ssid")->get<string>();
     auto password = json.find("password")->get<string>();
 
+    dk::lcd.clear();
+    dk::lcd.print("SSID: " + ssid);
+    dk::lcd.move(0, 1);
+    dk::lcd.print("connecting...");
+
     if (!connect(ssid, password)) {
         ESP_LOGW(TAG, "unable to connect to SSID: %s", ssid.c_str());
+        dk::lcd.move(0, 1);
+        dk::lcd.print("failed");
         return http::Response(nlohmann::json({{"success", false}}));
     }
 
@@ -79,6 +88,8 @@ http::Response SettingsController::post(const kbf::http::Request &request) {
     };
     SettingsManager::instance()->setWifiConfig(wifiConfig);
 
+    dk::lcd.move(0, 1);
+    dk::lcd.print("connected");
     ESP_LOGI(TAG, "new SSID: %s", ssid.c_str());
     return http::Response(nlohmann::json({{"success", true}}));
 }

+ 47 - 3
components/dk/src/dk.cpp

@@ -1,7 +1,51 @@
-#include <stdio.h>
 #include "dk.h"
 
-void func(void)
-{
+#include <freertos/FreeRTOS.h>
+#include <freertos/task.h>
+#include <kbf.h>
+#include <kbf/wifi.h>
 
+#include "settings_manager.h"
+#include "controllers/settings_controller.h"
+
+
+using namespace kbf;
+
+namespace dk {
+    void handleConnect(wifi::AP::STA &sta) {
+        lcd.clear();
+        kbf::sleep(50);
+        lcd.print("waiting for");
+        lcd.move(0, 1);
+        lcd.print("credentials");
+    }
+
+    void main(void *) {
+        ESP_LOGI(TAG, "starting");
+
+        if (SettingsManager::instance()->softAPEnabled()) {
+            auto sta = wifi::STA::create();
+            auto ap = wifi::AP::create("doorkeeper", "initinit");
+            ap->onConnect = handleConnect;
+            wifi::start(ap, sta);
+
+            dk::lcd.clear();
+            kbf::sleep(50);
+            dk::lcd.print("pairing mode");
+            dk::lcd.move(0, 1);
+            dk::lcd.print("setting up");
+        } else {
+            wifi::start();
+            dk::lcd.print("idle");
+        }
+
+        webService.attach<SettingsController>();
+        webService.start();
+
+        dk::lcd.move(0, 1);
+        dk::lcd.print("waiting for app");
+
+        vTaskDelete(nullptr);
+    }
 }
+

+ 1 - 1
components/kbf

@@ -1 +1 @@
-Subproject commit e6ee6b91d0b805185e76940dbaa2c5507c1f2732
+Subproject commit de674ad63704a9cd54b65efe61ed05cef049a533

+ 2 - 0
main/CMakeLists.txt

@@ -1,3 +1,5 @@
+set(CMAKE_CXX_STANDARD 17)
+
 idf_component_register(
         SRCS
         "doorkeeper_dev.cpp"

+ 9 - 10
main/doorkeeper_dev.cpp

@@ -1,7 +1,8 @@
 #include <esp_log.h>
+#include <freertos/FreeRTOS.h>
+#include <freertos/task.h>
 
-#include <kbf/wifi.h>
-#include <settings_manager.h>
+#include "dk.h"
 
 extern "C" void app_main();
 
@@ -10,13 +11,11 @@ static constexpr const char *TAG = "app_main";
 using namespace kbf;
 
 void app_main() {
-    ESP_LOGI(TAG, "starting");
+    ESP_LOGI("app_main", "starting");
 
-    if (SettingsManager::instance()->softAPEnabled()) {
-        auto sta = wifi::STA::create();
-        auto ap = wifi::AP::create("doorkeeper", "initinit");
-        wifi::start(ap, sta);
-    } else {
-        wifi::start();
-    }
+    dk::lcd.print("DoorKeeper v0.1");
+    dk::lcd.move(0, 1);
+    dk::lcd.print("loading...");
+
+    xTaskCreate(dk::main, "dk_main", 8192, nullptr, 5, nullptr);
 }

+ 98 - 19
sdkconfig

@@ -59,6 +59,8 @@ CONFIG_BOOTLOADER_WDT_ENABLE=y
 CONFIG_BOOTLOADER_WDT_TIME_MS=9000
 # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
 # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
+# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
+# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
 CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
 # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
 # end of Bootloader config
@@ -174,6 +176,25 @@ CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
 CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
 CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
 CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1
+CONFIG_BT_CTRL_MODE_EFF=1
+CONFIG_BT_CTRL_BLE_MAX_ACT=10
+CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10
+CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0
+CONFIG_BT_CTRL_PINNED_TO_CORE=0
+CONFIG_BT_CTRL_HCI_TL=1
+CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30
+CONFIG_BT_CTRL_HW_CCA_EFF=0
+CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0
+CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
+CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
+CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
+CONFIG_BT_CTRL_BLE_SCAN_DUPL=y
+CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0
+CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100
+CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0
+CONFIG_BT_CTRL_SLEEP_MODE_EFF=0
+CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0
+CONFIG_BT_CTRL_HCI_TL_EFF=1
 CONFIG_BT_RESERVE_DRAM=0
 # end of Bluetooth
 
@@ -223,6 +244,12 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
 #
 # CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set
 # end of RTCIO configuration
+
+#
+# GPIO Configuration
+#
+# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set
+# end of GPIO Configuration
 # end of Driver configurations
 
 #
@@ -243,6 +270,7 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
 # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set
 # CONFIG_ESP_TLS_SERVER is not set
 # CONFIG_ESP_TLS_PSK_VERIFICATION is not set
+# CONFIG_ESP_TLS_INSECURE is not set
 # end of ESP-TLS
 
 #
@@ -402,25 +430,6 @@ CONFIG_HTTPD_PURGE_BUF_LEN=32
 # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set
 # end of ESP HTTPS server
 
-#
-# LittleFS
-#
-CONFIG_LITTLEFS_MAX_PARTITIONS=3
-CONFIG_LITTLEFS_PAGE_SIZE=256
-CONFIG_LITTLEFS_OBJ_NAME_LEN=64
-CONFIG_LITTLEFS_READ_SIZE=128
-CONFIG_LITTLEFS_WRITE_SIZE=128
-CONFIG_LITTLEFS_LOOKAHEAD_SIZE=128
-CONFIG_LITTLEFS_CACHE_SIZE=512
-CONFIG_LITTLEFS_BLOCK_CYCLES=512
-CONFIG_LITTLEFS_USE_MTIME=y
-# CONFIG_LITTLEFS_USE_ONLY_HASH is not set
-# CONFIG_LITTLEFS_HUMAN_READABLE is not set
-CONFIG_LITTLEFS_MTIME_USE_SECONDS=y
-# CONFIG_LITTLEFS_MTIME_USE_NONCE is not set
-# CONFIG_LITTLEFS_SPIFFS_COMPAT is not set
-# end of LittleFS
-
 #
 # ESP NETIF Adapter
 #
@@ -443,6 +452,12 @@ CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y
 CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
 # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
 # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
+CONFIG_ESP_SYSTEM_PD_FLASH=y
+
+#
+# Memory protection
+#
+# end of Memory protection
 # end of ESP System Settings
 
 #
@@ -773,6 +788,7 @@ CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
 # CONFIG_LWIP_SOCKETS_DEBUG is not set
 # CONFIG_LWIP_IP_DEBUG is not set
 # CONFIG_LWIP_ICMP_DEBUG is not set
+# CONFIG_LWIP_DHCP_STATE_DEBUG is not set
 # CONFIG_LWIP_DHCP_DEBUG is not set
 # CONFIG_LWIP_IP6_DEBUG is not set
 # CONFIG_LWIP_ICMP6_DEBUG is not set
@@ -891,6 +907,7 @@ CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
 # CONFIG_MBEDTLS_CHACHA20_C is not set
 # CONFIG_MBEDTLS_HKDF_C is not set
 # CONFIG_MBEDTLS_THREADING_C is not set
+# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
 # CONFIG_MBEDTLS_SECURITY_RISKS is not set
 # end of mbedTLS
 
@@ -915,6 +932,9 @@ CONFIG_MQTT_PROTOCOL_311=y
 CONFIG_MQTT_TRANSPORT_SSL=y
 CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
 CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y
+# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set
+# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set
+# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set
 # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set
 # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set
 # CONFIG_MQTT_CUSTOM_OUTBOX is not set
@@ -986,6 +1006,8 @@ CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
 CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
 CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
 # end of Auto-detect flash chips
+
+CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
 # end of SPI Flash driver
 
 #
@@ -1082,11 +1104,68 @@ CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
 # Supplicant
 #
 CONFIG_WPA_MBEDTLS_CRYPTO=y
+# CONFIG_WPA_WAPI_PSK is not set
 # CONFIG_WPA_DEBUG_PRINT is not set
 # CONFIG_WPA_TESTING_OPTIONS is not set
 # CONFIG_WPA_WPS_WARS is not set
 # CONFIG_WPA_11KV_SUPPORT is not set
 # end of Supplicant
+
+#
+# Rotary encoders
+#
+CONFIG_RE_MAX=1
+CONFIG_RE_INTERVAL_US=1000
+CONFIG_RE_BTN_DEAD_TIME_US=10000
+CONFIG_RE_BTN_PRESSED_LEVEL_0=y
+# CONFIG_RE_BTN_PRESSED_LEVEL_1 is not set
+CONFIG_RE_BTN_LONG_PRESS_TIME_US=500000
+# end of Rotary encoders
+
+#
+# HMC5883L
+#
+CONFIG_HMC5883L_MEAS_TIMEOUT=6000
+# end of HMC5883L
+
+#
+# I2C
+#
+CONFIG_I2CDEV_TIMEOUT=1000
+# end of I2C
+
+#
+# LED effect
+#
+CONFIG_LED_EFFECT_COLOR_USING_RGB=y
+# CONFIG_LED_EFFECT_COLOR_USING_RGBW is not set
+# end of LED effect
+
+#
+# LED strip
+#
+CONFIG_LED_STRIP_FLUSH_TIMEOUT=1000
+# end of LED strip
+
+#
+# LED strip SPI
+#
+CONFIG_LED_STRIP_SPI_USING_SK9822=y
+CONFIG_LED_STRIP_SPI_MUTEX_TIMEOUT_MS=1
+# end of LED strip SPI
+
+#
+# MCP23x17
+#
+CONFIG_MCP23X17_IFACE_I2C=y
+# CONFIG_MCP23X17_IFACE_SPI is not set
+# end of MCP23x17
+
+#
+# OneWire
+#
+CONFIG_ONEWIRE_CRC8_TABLE=y
+# end of OneWire
 # end of Component config
 
 #