浏览代码

DK-62 implement device ID support for cmake

Bence Balint 2 年之前
父节点
当前提交
4f3d132926

+ 2 - 1
.gitignore

@@ -6,4 +6,5 @@ GTAGS
 \#*\#
 sdkconfig.old
 *~
-.apikey
+.api_key
+device_id

+ 6 - 1
CMakeLists.txt

@@ -4,7 +4,12 @@
 # CMakeLists in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
-#add_compile_definitions(PRESET_PAIRING_ID="a63c3222-14b8-4f6a-909c-3af14091dafe")
+execute_process(COMMAND cat ../device_id OUTPUT_VARIABLE DEVICE_ID)
+if (NOT DEFINED DEVICE_ID OR "${DEVICE_ID}" STREQUAL "")
+    message(FATAL_ERROR "no device ID found, please run ./scripts/get_next_id.sh")
+endif()
+message("using device ID \"${DEVICE_ID}\"")
+add_compile_definitions(DK_DEVICE_ID="${DEVICE_ID}")
 
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(EXTRA_COMPONENT_DIRS "components/kbf/lib/esp-idf-lib/components/")

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

@@ -34,7 +34,7 @@ http::Response PairController::post(const http::Request &request) {
 
     auto client = http::Client(CONFIG_DK_HTTP_CLIENT_TIMEOUT);
     nlohmann::json data = { // TODO get ID from efuse or nvs
-        { "device_uuid", "5efe1f65-0e42-4071-aef9-4a1da46ea12a" },
+        { "device_uuid", DK_DEVICE_ID },
         { "firebase_token", firebaseToken }
     };
     auto response = client.post(CONFIG_DK_SERVER_API_URL "/register/pairing", data);

+ 1 - 1
components/dk/src/pairing_service/verify_controller.cpp

@@ -34,7 +34,7 @@ http::Response VerifyController::post(const http::Request &request) {
 
     auto client = http::Client(CONFIG_DK_HTTP_CLIENT_TIMEOUT);
     nlohmann::json data = { // TODO get ID from efuse or nvs
-        { "device_uuid", "5efe1f65-0e42-4071-aef9-4a1da46ea12a" },
+        { "device_uuid", DK_DEVICE_ID },
         { "pairing_id", pairingId }
     };
     auto response = client.post(CONFIG_DK_SERVER_API_URL "/register/verify", data);

+ 11 - 11
scripts/get_next_id.sh

@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 
-API_KEY_FILE=../.apikey
+API_KEY_FILE=.api_key
+DEVICE_ID_FILE=device_id
 
 if [ "${1}" = "-v" ]; then
   curl_opts="-v"
@@ -8,32 +9,31 @@ else
   curl_opts="-sS"
 fi
 
-echo_err() { echo "$@" 1>&2; }
-
-server_url=$(sed -E 's/^CONFIG_DK_SERVER_API_URL="(.*)"/\1/g;t;d' ../sdkconfig)
+server_url=$(sed -E 's/^CONFIG_DK_SERVER_API_URL="(.*)"/\1/g;t;d' sdkconfig)
 
 if [ -z "${server_url}" ]; then
-  echo_err "CONFIG_DK_SERVER_API_URL not found, please run 'idf.py menuconfig'"
+  echo "CONFIG_DK_SERVER_API_URL not found, please run 'idf.py menuconfig'"
   exit 1
 else
-  echo_err "using server ${server_url}"
+  echo "using server ${server_url}"
 fi
 
 if [ ! -f "${API_KEY_FILE}" ]; then
-  echo_err "no .apikey file found in project root"
+  echo "${API_KEY_FILE} not found"
   read -r -p "enter API key: " api_key
   echo "${api_key}" > "${API_KEY_FILE}"
   chmod 600 "${API_KEY_FILE}"
+  echo "saved to ${API_KEY_FILE}"
 fi
 
 api_key=$(cat ${API_KEY_FILE})
-echo_err "using API key \"${api_key}\""
+echo "using API key \"${api_key}\""
 
 device_id=$(curl "${server_url}/register/device" -d '{"api_key": "'"${api_key}"'"}' "${curl_opts}" | jq '.uuid' -r)
 if [ -z "${device_id}" ]; then
-  echo_err "request failed; try \"-v\" for details"
+  echo "request failed; try \"-v\" for details"
   exit 2
 fi
 
-echo_err "generated device ID \"${device_id}\""
-echo "${device_id}"
+echo "generated device ID \"${device_id}\""
+echo -n "${device_id}" > "${DEVICE_ID_FILE}"