{"id":24785,"date":"2026-06-02T03:40:02","date_gmt":"2026-06-02T03:40:02","guid":{"rendered":"https:\/\/umang.pk\/2026\/06\/02\/zephyr-os-%da%a9%db%92-%d8%b3%d8%a7%d8%aa%da%be-%d8%a8%d9%84%d9%88%d9%b9%d9%88%d8%aa%da%be-%d8%a7%db%8c%d9%be%d9%84%db%8c-%da%a9%db%8c%d8%b4%d9%86%d8%b2-%da%a9%db%8c%d8%b3%db%92-%d8%a8%d9%86%d8%a7\/"},"modified":"2026-06-02T03:40:02","modified_gmt":"2026-06-02T03:40:02","slug":"zephyr-os-%da%a9%db%92-%d8%b3%d8%a7%d8%aa%da%be-%d8%a8%d9%84%d9%88%d9%b9%d9%88%d8%aa%da%be-%d8%a7%db%8c%d9%be%d9%84%db%8c-%da%a9%db%8c%d8%b4%d9%86%d8%b2-%da%a9%db%8c%d8%b3%db%92-%d8%a8%d9%86%d8%a7","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/06\/02\/zephyr-os-%da%a9%db%92-%d8%b3%d8%a7%d8%aa%da%be-%d8%a8%d9%84%d9%88%d9%b9%d9%88%d8%aa%da%be-%d8%a7%db%8c%d9%be%d9%84%db%8c-%da%a9%db%8c%d8%b4%d9%86%d8%b2-%da%a9%db%8c%d8%b3%db%92-%d8%a8%d9%86%d8%a7\/","title":{"rendered":"Zephyr OS \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc\u06ba: \u0627\u06cc\u06a9 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06cc \u06c1\u06cc\u0646\u0688 \u0628\u06a9"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0627\u06cc\u0626\u0631\u0628\u0688\u0632 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u0627\u06cc\u06a9 \u0641\u0648\u0646\u060c \u0627\u06cc\u06a9 \u0627\u0633\u0645\u0627\u0631\u0679 \u0648\u0627\u0686 \u0646\u06d2 \u0635\u062d\u062a \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u06cc\u067e \u0633\u06d2 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u06a9\u06cc\u0627\u060c \u0627\u0648\u0631 \u0639\u0645\u0627\u0631\u062a \u0645\u06cc\u06ba \u06a9\u06c1\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0627\u06cc\u06a9 \u0633\u06cc\u0646\u0633\u0631 \u0646\u06d2 \u06af\u06cc\u0679 \u0648\u06d2 \u06a9\u0648 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u06d4 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0644\u0648 \u0627\u0646\u0631\u062c\u06cc (BLE) \u067e\u0631 \u06c1\u0648\u0626\u06d2\u06d4 \u0627\u0648\u0631 \u062a\u06cc\u0632\u06cc \u0633\u06d2\u060c \u0627\u0646 \u0622\u0644\u0627\u062a \u06a9\u0627 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 Zephyr OS \u067e\u0631 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u06c1\u06cc\u0646\u0688 \u0628\u06a9 \u0622\u067e \u06a9\u0648 \u0633\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0634\u0631\u0648\u0639 \u0633\u06d2 Zephyr \u067e\u0631 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u06c1\u0645 BLE \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0628\u0627\u062a\u0648\u06ba \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 (GAP\u060c GATT\u060c \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0627 \u0627\u0635\u0644 \u0645\u0637\u0644\u0628 \u06a9\u06cc\u0627 \u06c1\u06d2) \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0635\u0644 Zephyr \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0637\u0631\u0641 \u0628\u0691\u06be\u06cc\u06ba \u06af\u06d2\u060c \u0628\u0634\u0645\u0648\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06cc \u062a\u0634\u06c1\u06cc\u0631\u060c \u06a9\u0633\u0679\u0645 \u0633\u0631\u0648\u0633\u0632 \u0628\u0646\u0627\u0646\u0627\u060c \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627\u060c BLE \u067e\u0631 \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0679\u0627 \u067e\u0691\u06be\u0646\u0627\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 BLE \u067e\u06cc\u0631\u06cc\u0641\u06cc\u0631\u0644 \u0628\u0646\u0627\u0646\u0627 \u062c\u0648 \u0641\u0648\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u06c1\u0631 \u062a\u0635\u0648\u0631 \u0648\u0631\u06a9\u0646\u06af \u06a9\u0648\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06c1\u0631 \u06a9\u0648\u0688 \u0628\u0644\u0627\u06a9 \u0627\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u06cc\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06cc\u0648\u06ba \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0637\u0648\u06cc\u0644 \u0627\u0648\u0631 \u062a\u0641\u0635\u06cc\u0644\u06cc \u06af\u0627\u0626\u06cc\u0688 \u06c1\u06d2\u06d4 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0633\u0627\u0631\u06d2 \u0645\u062a\u062d\u0631\u06a9 \u062d\u0635\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644\u0632 \u0627\u0646 \u067e\u0631\u0632\u0648\u06ba \u067e\u0631 \u0686\u0645\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0644\u0648\u06af\u0648\u06ba \u06a9\u0648 \u062d\u0642\u06cc\u0642\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u0645\u06cc\u06ba \u0627\u0644\u062c\u06be\u0627 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u0633\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062a\u0631\u062a\u06cc\u0628 \u0648\u0627\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0648\u0688 \u0628\u0646\u0627\u0646\u06d2 \u0633\u06d2\u060c \u0622\u067e \u0628\u0627\u0644\u0622\u062e\u0631 \u0648\u06c1 \u0639\u0644\u0645 \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0644\u06cc\u06ba \u06af\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u0648 Zephyr \u067e\u0631 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 BLE \u0688\u06cc\u0648\u0627\u0626\u0633 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 C \u06a9\u0648\u0688 \u067e\u0691\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u0627\u06c1\u0631 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u067e\u0648\u0627\u0626\u0646\u0679\u0631\u0632\u060c \u0688\u06be\u0627\u0646\u0686\u06d2\u060c \u0641\u0646\u06a9\u0634\u0646 \u067e\u0648\u0627\u0626\u0646\u0679\u0631\u0632\u060c \u0627\u0648\u0631 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u0628\u06cc\u0631\u0648\u0646\u06cc \u062a\u0635\u0648\u0631\u0627\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u0648 C \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u0627\u0648\u0631 \u06a9\u0645\u0627\u0646\u0688 \u0644\u0627\u0626\u0646 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u0636\u0645\u0648\u0646 \u0634\u0631\u0648\u0639 \u0633\u06d2 BLE \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c Nordic Semiconductor nRF52840 DK \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u062b\u0627\u0644\u06cc \u0628\u0648\u0631\u0688 \u06c1\u06d2\u06d4 \u0646\u0648\u0631\u0688\u06a9 \u06a9\u06cc \u0686\u067e \u0645\u06cc\u06ba Zephyr \u0645\u06cc\u06ba \u0628\u06c1\u062a\u0631\u06cc\u0646 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u06c1\u06d2\u060c \u0627\u0648\u0631 nRF52840 DK \u0633\u0633\u062a\u0627 \u06c1\u06d2 (\u062a\u0642\u0631\u06cc\u0628\u0627\u064b $40)\u060c \u0648\u0633\u06cc\u0639 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0622\u0646 \u0628\u0648\u0631\u0688 \u0688\u06cc\u0628\u06af\u0631 \u0628\u06be\u06cc \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0628\u06be\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u06d2 \u06af\u0627 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0628\u0644\u0648\u0679\u0648\u062a\u06be (nRF52832 DK\u060c nRF5340 DK\u060c \u06cc\u0627 BLE- \u0641\u0639\u0627\u0644 \u0631\u06cc\u0688\u06cc\u0648 \u0648\u0627\u0644\u0627 \u0628\u0648\u0631\u0688) \u0648\u0627\u0644\u0627 \u062f\u0648\u0633\u0631\u0627 Zephyr- \u0642\u0627\u0628\u0644 \u0628\u0648\u0631\u0688 \u06c1\u06d2\u06d4<\/p>\n<p>BLE \u0633\u0627\u0626\u06cc\u0688 \u06a9\u0648 \u062c\u0627\u0646\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 BLE \u0633\u06a9\u06cc\u0646\u0631 \u0627\u06cc\u067e \u0648\u0627\u0644\u06d2 \u0641\u0648\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc (\u0645\u0648\u0628\u0627\u0626\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 nRF \u06a9\u0646\u06cc\u06a9\u0679 iOS \u0627\u0648\u0631 Android \u062f\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0627\u0648\u0631 \u0645\u0641\u062a \u06c1\u06d2)\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0644\u06cc\u0646\u06a9\u0633 (Ubuntu 22.04 \u06cc\u0627 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u06d2)\u060c macOS\u060c \u06cc\u0627 WSL2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0648\u0646\u0688\u0648\u0632 \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u06a9\u06cc \u0628\u06be\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4<\/p>\n<h2 id=\"heading-what-is-zephyr-os-and-why-use-it-for-bluetooth\">Zephyr OS \u06a9\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u06cc\u06ba \u0627\u0633\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06cc\u0648\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0648\u06ba \u06af\u0627\u061f<\/h2>\n<p>Zephyr OS \u0627\u06cc\u06a9 \u06a9\u0645\u067e\u06cc\u06a9\u0679\u060c \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633\u060c \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0633\u0633\u0679\u0645 \u06c1\u06d2 \u062c\u0648 \u0648\u0633\u0627\u0626\u0644 \u0633\u06d2 \u0645\u062d\u062f\u0648\u062f \u0627\u06cc\u0645\u0628\u06cc\u0688\u0688 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0644\u06cc\u0646\u06a9\u0633 \u0641\u0627\u0624\u0646\u0688\u06cc\u0634\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0627\u067e\u0627\u0686\u06cc 2.0 \u0644\u0627\u0626\u0633\u0646\u0633 \u06cc\u0627\u0641\u062a\u06c1 \u06c1\u06d2\u060c \u0627\u0648\u0631 8KB RAM \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 ARM\u060c RISC-V\u060c x86\u060c Xtensa\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0645\u06cc\u06ba 600 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0628\u0648\u0631\u0688\u0632 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0686\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0645\u0636\u0645\u0648\u0646 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06cc\u06c1\u0627\u06ba Zephyr \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 BLE \u06a9\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u06a9\u06cc\u0648\u06ba \u06c1\u06d2:<\/p>\n<p>Zephyr \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG \u0645\u0635\u062f\u0642\u06c1 BLE \u0627\u0633\u0679\u06cc\u06a9 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633\u0679\u06cc\u06a9 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u0631\u0679\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0639\u0645\u0644 \u0633\u06d2 \u06af\u0632\u0631 \u0686\u06a9\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u0636\u0627\u062d\u062a\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0634\u0648\u0642 \u06a9\u06d2 \u0646\u0641\u0627\u0630 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06c1\u0645 \u0627\u06cc\u06a9 \u0627\u0633\u0679\u06cc\u06a9 \u067e\u0631 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u0646\u06d2 \u06a9\u0646\u0641\u0627\u0631\u0645\u0646\u0633 \u0679\u06cc\u0633\u0679 \u067e\u0627\u0633 \u06a9\u0631 \u0644\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u0679\u06cc\u06a9 \u0645\u06cc\u06ba \u062f\u0648\u0646\u0648\u06ba \u0645\u06cc\u0632\u0628\u0627\u0646 (GAP, GATT, SMP, L2CAP, ATT) \u0627\u0648\u0631 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632 (Link Layer, HCI) \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u0645\u0639\u0627\u0648\u0646 \u0631\u06cc\u0688\u06cc\u0648\u0632 (\u0628\u0646\u06cc\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0646\u0648\u0631\u0688\u06a9 \u0627\u06cc\u0646 \u0622\u0631 \u0627\u06cc\u0641 \u0633\u06cc\u0631\u06cc\u0632) \u06a9\u06d2 \u0644\u06cc\u06d2\u060c Zephyr \u0627\u067e\u0646\u0627 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0646\u0641\u0627\u0630 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u067e\u0648\u0631\u0627 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9\u060c \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648\u0688 \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u0631\u06cc\u0688\u06cc\u0648 \u0631\u062c\u0633\u0679\u0631 \u062a\u06a9\u060c \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u0627\u0626\u0646\u0631\u06cc \u0628\u0644\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u0646\u062f \u0633\u0648\u0631\u0633 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0627\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06c1\u0631 \u0644\u0627\u0626\u0646 \u06a9\u0648 \u067e\u0691\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0688\u06cc\u0628\u06af \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0646\u0648\u0631\u0688\u06a9 \u0633\u06cc\u0645\u06cc \u06a9\u0646\u0688\u06a9\u0679\u0631\u060c \u062c\u0633 \u06a9\u06cc \u0686\u067e\u0633 BLE \u0645\u0627\u0631\u06a9\u06cc\u0679 \u067e\u0631 \u062d\u0627\u0648\u06cc \u06c1\u06d2\u060c \u0646\u06d2 Zephyr \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u067e\u0646\u0627 nRF Connect SDK \u0628\u0646\u0627\u06cc\u0627\u06d4 \u0646\u0648\u0631\u0688\u06a9 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 BLE \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0644\u06a9\u06be\u062a\u06d2 \u0648\u0642\u062a Zephyr \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0645\u0636\u0628\u0648\u0637 \u062d\u0645\u0627\u06cc\u062a \u06c1\u06d2\u06d4<\/p>\n<p>Zephyr \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u0628\u0644\u0648\u0679\u0648\u062a\u06be 5.x \u062e\u0635\u0648\u0635\u06cc\u0627\u062a (2M PHY\u060c \u0637\u0648\u06cc\u0644 \u0631\u06cc\u0646\u062c \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0688\u0688 PHY\u060c \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a)\u060c \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u0634 (\u0631\u06cc\u0644\u06d2\u060c \u067e\u0631\u0627\u06a9\u0633\u06cc\u060c \u0628\u0688\u06cc\u060c \u0627\u0648\u0631 \u06a9\u0645 \u067e\u0627\u0648\u0631 \u0646\u0648\u0688)\u060c LE \u0622\u0688\u06cc\u0648 (\u0627\u06cc\u0644 \u0633\u06cc 3 \u06a9\u0648\u0688\u06cc\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u062f\u06cc\u062f \u062a\u0631\u06cc\u0646 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0622\u0688\u06cc\u0648 \u0627\u0633\u0679\u06cc\u0646\u0688\u0631\u0688\u060c \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679\u060c \u0627\u0648\u0631 \u06c1\u06cc\u0626\u0631\u0646\u06af \u0627\u06cc\u0688\u0644 \u0633\u067e\u0648\u0631\u0679 \u06a9\u06cc \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2)\u06d4 \u0627\u0646\u0688\u0648\u0631 \u067e\u0648\u0632\u06cc\u0634\u0646\u0646\u06af)\u060c \u0627\u0648\u0631 \u067e\u0631\u0648\u0688\u06a9\u0679 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u062a\u0645\u0627\u0645 \u0645\u0639\u06cc\u0627\u0631\u06cc BLE \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u0627\u0648\u0631 \u062e\u062f\u0645\u0627\u062a\u06d4<\/p>\n<p>\u0633\u06cc\u062f\u06be\u06d2 \u0627\u0644\u0641\u0627\u0638 \u0645\u06cc\u06ba\u060c \u0627\u06af\u0631 \u0622\u067e \u0627\u0646 \u062f\u0646\u0648\u06ba BLE \u067e\u0631\u0648\u0688\u06a9\u0679 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c Zephyr \u0648\u06c1\u0627\u06ba \u06a9\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645\u0632 \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2\u06d4 Google \u0627\u0633\u06d2 \u0627\u067e\u0646\u06cc Chromebooks \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c Nordic \u0627\u0633\u06d2 \u0627\u067e\u0646\u06d2 \u067e\u0648\u0631\u06d2 SDK \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0633\u06cc\u0646\u06a9\u0691\u0648\u06ba \u06a9\u0645\u067e\u0646\u06cc\u0627\u06ba \u0627\u0633 \u06a9\u06d2 \u0627\u0648\u067e\u0631 \u0628\u0646\u06d2 \u06c1\u0648\u0626\u06d2 \u067e\u0631\u0648\u0688\u06a9\u0679\u0633 \u0628\u06be\u06cc\u062c\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-bluetooth-low-energy-fundamentals\">\u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u0645 \u062a\u0648\u0627\u0646\u0627\u0626\u06cc \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0628\u0627\u062a\u06cc\u06ba<\/h2>\n<p>\u06a9\u0648\u0688 \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0627\u06cc\u06a9 \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 BLE \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e BLE \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0648\u0627\u0642\u0641 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u0633 \u0633\u06cc\u06a9\u0634\u0646 \u06a9\u0648 \u0686\u06be\u0648\u0691 \u062f\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0646\u06c1\u06cc\u06ba \u062a\u0648 \u063a\u0648\u0631 \u0633\u06d2 \u067e\u0691\u06be\u06cc\u06ba\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06c1\u0631 \u0686\u06cc\u0632 \u0627\u0646 \u062a\u0635\u0648\u0631\u0627\u062a \u067e\u0631 \u0645\u0628\u0646\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>BLE &quot;\u06a9\u0644\u0627\u0633\u06a9&#8221; \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u062c\u06cc\u0633\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 (\u0627\u06cc\u0644 \u0627\u06cc \u0622\u0688\u06cc\u0648 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0633\u067e\u06cc\u06a9\u0631 \u067e\u0631 \u0622\u0688\u06cc\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0642\u0633\u0645)\u06d4 \u06a9\u0644\u0627\u0633\u06a9 \u0628\u0644\u0648\u0679\u0648\u062a\u06be (BR\/EDR) \u06a9\u0648 \u0645\u0633\u0644\u0633\u0644\u060c \u06c1\u0627\u0626\u06cc \u062a\u06be\u0631\u0648 \u067e\u0679 \u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0631\u06cc\u0645\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 BLE \u0648\u0642\u0641\u06d2 \u0648\u0642\u0641\u06d2 \u0633\u06d2\u060c \u06a9\u0645 \u0637\u0627\u0642\u062a \u0648\u0627\u0644\u06d2 \u0645\u0648\u0627\u0635\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 BLE \u0633\u06cc\u0646\u0633\u0631 \u0641\u06cc \u0645\u0646\u0679 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0627\u06af \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c 20 \u0628\u0627\u0626\u0679\u0633 \u0688\u06cc\u0679\u0627 \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 \u0648\u0627\u067e\u0633 \u0633\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0648\u0627\u0679 \u062a\u0648\u0627\u0646\u0627\u0626\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06cc\u0632\u0627\u0626\u0646 \u0641\u0631\u0642 BLE \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u0648 \u06a9\u0648\u0627\u0626\u0646 \u0633\u06cc\u0644 \u0628\u06cc\u0679\u0631\u06cc\u0648\u06ba \u067e\u0631 \u0628\u0631\u0633\u0648\u06ba \u062a\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>BLE \u06a9\u0645\u06cc\u0648\u0646\u06cc\u06a9\u06cc\u0634\u0646 \u062f\u0648 \u0627\u06c1\u0645 \u067e\u0631\u062a\u0648\u06ba \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06c1\u0645 \u0628\u0637\u0648\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: GAP \u0627\u0648\u0631 GATT\u06d4<\/p>\n<p><strong>\u0639\u0627\u0645 \u0631\u0633\u0627\u0626\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 (GAP)<\/strong> \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u0644\u0627\u062a \u06a9\u0633 \u0637\u0631\u062d \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 GAP \u06a9\u0648 &quot;\u067e\u0627\u0631\u0679\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0644\u0648\u06af\u0648\u06ba \u0633\u06d2 \u0645\u0644\u0646\u06d2&#8221; \u06a9\u06cc \u067e\u0631\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0648\u0686\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0622\u0644\u06c1 \u06a9\u0626\u06cc GAP \u06a9\u0631\u062f\u0627\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u0641\u0631\u06cc\u0645<\/strong> (\u062c\u0633\u06d2 \u0645\u0634\u062a\u06c1\u0631\u06cc\u0646 \u0628\u06be\u06cc \u06a9\u06c1\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) \u0648\u0642\u062a\u0627\u064b \u0641\u0648\u0642\u062a\u0627\u064b \u0627\u0639\u062f\u0627\u062f \u0648 \u0634\u0645\u0627\u0631 \u06a9\u06d2 \u0686\u06be\u0648\u0679\u06d2 \u067e\u06cc\u06a9\u0679 \u0627\u067e\u0646\u06cc \u0645\u0648\u062c\u0648\u062f\u06af\u06cc \u0627\u0648\u0631 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0634\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u06c1\u06cc\u0688\u06a9\u0648\u0627\u0631\u0679\u0631<\/strong> (\u0627\u0633\u06d2 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u0628\u06be\u06cc \u06a9\u06c1\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) \u0627\u0646 \u0646\u0634\u0631\u06cc\u0627\u062a \u06a9\u0648 \u0633\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u0627 \u0641\u0648\u0646 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0633\u06cc\u0646\u0633\u0631\u060c \u0627\u06cc\u0626\u0631\u0628\u0688\u0632\u060c \u0627\u0648\u0631 \u0633\u0645\u0627\u0631\u0679 \u0648\u0627\u0686\u0632 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>GATT (\u0639\u0627\u0645 \u0648\u0635\u0641 \u067e\u0631\u0648\u0641\u0627\u0626\u0644)<\/strong> \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0648 \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u062a\u0628\u0627\u062f\u0644\u06c1 \u06a9\u06cc\u0633\u06d2 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 GATT \u06a9\u0648 &quot;\u0628\u0627\u062a \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc&#8221; \u067e\u0631\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0648\u0686\u06cc\u06ba\u06d4<\/p>\n<p>GATT \u0627\u06cc\u06a9 \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06d2 \u0627\u0639\u062f\u0627\u062f \u0648 \u0634\u0645\u0627\u0631 \u06a9\u06d2 \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0639\u0644\u06cc \u062a\u0631\u06cc\u0646 \u0633\u0637\u062d \u067e\u0631\u060c \u0627\u06cc\u06a9 \u0622\u0644\u06c1 \u0627\u06cc\u06a9 \u06cc\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <strong>\u0633\u0631\u0648\u0633<\/strong>. \u0633\u0631\u0648\u0633\u0632 \u06af\u0631\u0648\u067e \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0688\u06cc\u0679\u0627 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u0645\u0627\u0646\u06cc\u0679\u0631 \u0645\u06cc\u06ba \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u062e\u062f\u0645\u062a \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u06c1\u0631 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0627\u06cc\u06a9 \u06cc\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u062e\u062f\u0645\u0627\u062a \u06c1\u06cc\u06ba\u06d4 <strong>\u062e\u0635\u0648\u0635\u06cc\u0627\u062a<\/strong>. \u0627\u06cc\u06a9 \u062e\u0635\u0648\u0635\u06cc\u062a \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f \u0688\u06cc\u0679\u0627 \u067e\u0648\u0627\u0626\u0646\u0679 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0642\u062f\u0631 \u0627\u0648\u0631 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u062e\u062f\u0645\u062a \u0645\u06cc\u06ba \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a (\u062d\u0642\u06cc\u0642\u06cc \u0628\u06cc \u067e\u06cc \u0627\u06cc\u0645 \u0642\u062f\u0631) \u0627\u0648\u0631 \u062c\u0633\u0645 \u06a9\u06d2 \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06d2 \u0645\u0642\u0627\u0645 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a (\u062c\u06c1\u0627\u06ba \u0633\u06cc\u0646\u0633\u0631 \u067e\u06c1\u0646\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 <strong>\u0648\u0635\u0641<\/strong> \u06cc\u06c1 \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u062e\u0635\u0648\u0635\u06cc\u062a \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 (\u0627\u06cc\u06a9 \u0642\u062f\u0631 \u0645\u0631\u06a9\u0632 \u0633\u06d2 \u0637\u0644\u0628 \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06d2)\u060c \u0642\u0627\u0628\u0644 \u062a\u062d\u0631\u06cc\u0631 (\u0627\u06cc\u06a9 \u0642\u062f\u0631 \u0645\u0631\u06a9\u0632 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0633\u06cc\u0679 \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06d2)\u060c \u0642\u0627\u0628\u0644 \u0627\u0637\u0644\u0627\u0639 (\u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u0627\u0633 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0648 \u0645\u0631\u06a9\u0632 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba)\u060c \u06cc\u0627 \u0645\u0631\u0626\u06cc (\u06cc\u0639\u0646\u06cc\u060c \u0627\u06cc\u06a9 \u0627\u0637\u0644\u0627\u0639 \u06a9\u06cc \u0637\u0631\u062d\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0639\u062a\u0631\u0627\u0641 \u06a9\u06d2 \u0633\u0627\u062a\u06be)\u06d4 \u0627\u06cc\u06a9 \u062e\u0627\u0635\u06cc\u062a \u0645\u06cc\u06ba \u0645\u062a\u0639\u062f\u062f \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06c1\u0648\u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0645\u0627\u0645 \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a <strong>UUID<\/strong>. \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG \u0639\u0627\u0645 \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a (\u062f\u0644 \u06a9\u06cc \u062f\u06be\u0691\u06a9\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 0x180D\u060c \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u062e\u062f\u0645\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 0x180F\u060c \u0648\u063a\u06cc\u0631\u06c1) \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0639\u06cc\u0627\u0631\u06cc 16 \u0628\u0679 UUIDs \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u067e\u0646\u06d2 128 \u0628\u0679 UUID \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0679\u06be\u0648\u0633 \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644 \u06c1\u06d2\u06d4 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Device: \"My Temp Sensor\"\n  |\n  +-- Environmental Sensing Service (UUID: 0x181A)\n  |     |\n  |     +-- Temperature characteristic (UUID: 0x2A6E)\n  |     |     Properties: Read, Notify\n  |     |     Value: 23.5 (degrees C)\n  |     |\n  |     +-- Humidity characteristic (UUID: 0x2A6F)\n  |           Properties: Read, Notify\n  |           Value: 65.2 (percent)\n  |\n  +-- Battery Service (UUID: 0x180F)\n        |\n        +-- Battery Level characteristic (UUID: 0x2A19)\n              Properties: Read, Notify\n              Value: 87 (percent)\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u062e\u0627\u06a9\u06c1 \u0627\u06cc\u06a9 \u0622\u0644\u06c1 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u062f\u0648 \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062a\u06cc\u0646 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06c1\u06cc\u06ba\u06d4 \u0645\u0646\u0633\u0644\u06a9 \u0641\u0648\u0646 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u06a9\u0648 \u067e\u0691\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0646\u0645\u06cc \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0648 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u0633\u0637\u062d \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a BLE \u0622\u0644\u0627\u062a \u06a9\u06d2 APIs \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u0646\u0627 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u0627 REST API \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u0646\u06d2 \u062c\u06cc\u0633\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0648\u0686\u06cc\u06ba \u06a9\u06c1 \u0622\u0644\u06c1 \u06a9\u0633 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0633\u06d2 \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u0648\u0631 \u062a\u0635\u0648\u0631: <strong>\u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627<\/strong>. \u062c\u0628 \u06a9\u0648\u0626\u06cc \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0627\u0634\u062a\u06c1\u0627\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0686\u06be\u0648\u0679\u06d2 \u067e\u06cc\u06a9\u0679 \u0646\u0634\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0631\u0648\u0627\u06cc\u062a\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 31 \u0628\u0627\u0626\u0679\u0633 \u062a\u06a9\u060c \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0691\u06d2)\u06d4 \u0627\u0646 \u067e\u06cc\u06a9\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0633\u0679\u0631\u06a9\u0686\u0631\u0688 \u0688\u06cc\u0679\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u06cc\u0633\u06d2 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0646\u0627\u0645\u060c \u0645\u0639\u0627\u0648\u0646 \u062e\u062f\u0645\u0627\u062a\u060c \u0645\u06cc\u0646\u0648\u0641\u06cc\u06a9\u0686\u0631\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0688\u06cc\u0679\u0627\u060c \u0627\u0648\u0631 \u062c\u06be\u0646\u0688\u06d2\u06d4 \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af \u0688\u06cc\u0679\u0627 \u0648\u06c1 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u06a9\u0646\u06cc\u06a9\u0679 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062f\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u06d2 \u0622\u0644\u06d2 \u06a9\u0627 &quot;\u0628\u0632\u0646\u0633 \u06a9\u0627\u0631\u0688&#8221; \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-gap-layer-advertising-and-connections\">GAP \u0679\u0627\u0626\u0631: \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af \u0627\u0648\u0631 \u06a9\u0646\u06cc\u06a9\u0679\u06cc\u0648\u06cc\u0679\u06cc<\/h2>\n<p>GAP \u0648\u06c1 \u067e\u06c1\u0644\u06cc \u067e\u0631\u062a \u06c1\u06d2 \u062c\u0633 \u0633\u06d2 \u0622\u067e BLE \u0688\u06cc\u0648\u0627\u0626\u0633 \u0628\u0646\u0627\u062a\u06d2 \u0648\u0642\u062a \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u0648 \u06a9\u0686\u06be \u0627\u0648\u0631 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u06cc\u06a9 \u067e\u0631\u062f\u06cc\u06cc \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06af\u06cc \u06a9\u0648 \u0645\u0639\u0644\u0648\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u0627\u0633 \u0637\u0631\u062d \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u06a9\u0627 \u0631\u06cc\u0688\u06cc\u0648 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0648\u0642\u0641\u0648\u06ba (&quot;\u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0648\u0642\u0641\u06d2&#8221;) \u067e\u0631 \u062c\u0627\u06af\u062a\u0627 \u06c1\u06d2\u060c \u062a\u06cc\u0646 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0686\u06cc\u0646\u0644\u0632 (\u0686\u06cc\u0646\u0644\u0632 37\u060c 38\u060c \u0627\u0648\u0631 39) \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u067e\u0631 \u0645\u062e\u062a\u0635\u0631 \u067e\u06cc\u06a9\u0679 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 \u0648\u0627\u067e\u0633 \u0633\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0686\u06cc\u0646\u0644 \u06a9\u0648 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u06cc\u06c1 \u067e\u06cc\u06a9\u0679 \u0627\u0679\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0634\u062a\u06be\u0627\u0631\u0627\u062a\u06cc \u0648\u0642\u0641\u06c1 \u06a9\u0627\u0631\u06cc \u0627\u06cc\u06a9 \u062a\u062c\u0627\u0631\u062a \u06c1\u06d2\u06d4 \u0645\u062e\u062a\u0635\u0631 \u0648\u0642\u0641\u06d2 (\u0645\u062b\u0644\u0627\u064b 20 ms) \u0622\u0644\u0627\u062a \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u0637\u0627\u0642\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u0645\u0628\u06d2 \u0648\u0642\u0641\u06d2 (\u0645\u062b\u0644\u0627\u064b 1000 ms) \u0628\u062c\u0644\u06cc \u0628\u0686\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0644\u06cc\u06a9\u0646 \u062a\u0644\u0627\u0634 \u06a9\u06cc \u0631\u0641\u062a\u0627\u0631 \u06a9\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c 100 \u0633\u06d2 500 ms \u0627\u06cc\u06a9 \u0645\u0639\u0642\u0648\u0644 \u062d\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af \u067e\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0633\u0679\u0631\u06a9\u0686\u0631\u0688 \u0641\u06cc\u0644\u0688\u0632 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af \u0688\u06cc\u0679\u0627 (AD) \u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 AD \u0688\u06be\u0627\u0646\u0686\u06d2 \u0645\u06cc\u06ba \u0644\u0645\u0628\u0627\u0626\u06cc \u0628\u0627\u0626\u0679\u060c \u0627\u06cc\u06a9 \u0642\u0633\u0645 \u0628\u0627\u0626\u0679\u060c \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u0627\u0626\u0679 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0639\u0627\u0645 \u0627\u0642\u0633\u0627\u0645 \u0645\u06cc\u06ba \u062c\u06be\u0646\u0688\u06d2 (\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0648\u0631 BR\/EDR \u0633\u067e\u0648\u0631\u0679 \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2)\u060c \u0645\u06a9\u0645\u0644 \u06cc\u0627 \u0645\u062e\u062a\u0635\u0631 \u0645\u0642\u0627\u0645\u06cc \u0646\u0627\u0645\u060c \u0633\u0631\u0648\u0633 UUIDs \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a\u060c TX \u067e\u0627\u0648\u0631 \u0644\u06cc\u0648\u0644\u0632\u060c \u0627\u0648\u0631 \u0645\u06cc\u0646\u0648\u0641\u06cc\u06a9\u0686\u0631\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0688\u06cc\u0679\u0627 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0644\u06cc\u06af\u06cc\u0633\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a (\u0628\u0644\u0648\u0679\u0648\u062a\u06be 4.x) \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06a9\u0644 \u067e\u06d2 \u0644\u0648\u0688 31 \u0628\u0627\u0626\u0679\u0633 \u062a\u06a9 \u0645\u062d\u062f\u0648\u062f \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0622\u067e \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u06d2\u06d4 \u0627\u06a9\u062b\u0631 \u0622\u067e \u06a9\u0648 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0646\u0627\u0645 \u0627\u0648\u0631 \u0633\u0631\u0648\u0633 UUID \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u062f\u0648\u0646\u0648\u06ba \u0645\u0646\u0627\u0633\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u06d2\u06d4<\/p>\n<p>\u0628\u0644\u0648\u0679\u0648\u062a\u06be 5.0 \u0646\u06d2 \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0626\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0648 254 \u0628\u0627\u0626\u0679\u0633 \u062a\u06a9 \u06a9\u06d2 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u067e\u06d2 \u0644\u0648\u0688\u0632 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 (\u062c\u0648 \u0628\u0691\u06d2 \u067e\u06d2 \u0644\u0648\u0688\u0632 \u0645\u06cc\u06ba \u062c\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba)\u060c \u062a\u0645\u0627\u0645 40 BLE \u0686\u06cc\u0646\u0644\u0632 (\u0635\u0631\u0641 \u062a\u06cc\u0646 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0686\u06cc\u0646\u0644\u0632 \u0646\u06c1\u06cc\u06ba)\u060c \u0627\u0648\u0631 \u0645\u062a\u0639\u062f\u062f \u0628\u06cc\u06a9 \u0648\u0642\u062a \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0633\u06cc\u0679\u0648\u06ba \u067e\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a\u06d4 Zephyr \u062a\u0648\u0633\u06cc\u0639 \u0634\u062f\u06c1 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u0627\u0648\u0631 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0627\u0633 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u062c\u0691\u0646\u06d2 \u06a9\u0627 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u067e\u0631\u062f\u06cc\u06cc \u0622\u0644\u0627\u062a \u06a9\u0648 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0648\u0646\u0648\u06ba \u0622\u0644\u0627\u062a \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u067e\u0631 \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <strong>\u06a9\u0646\u06a9\u0634\u0646 \u0648\u0642\u0641\u06c1<\/strong> (\u0645\u0648\u0627\u0635\u0644\u0627\u062a \u06a9\u06cc \u0641\u0631\u06cc\u06a9\u0648\u0626\u0646\u0633\u06cc\u060c \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 7.5 \u0627\u06cc\u0645 \u0627\u06cc\u0633 \u0633\u06d2 4 \u0633\u06cc\u06a9\u0646\u0688) <strong>\u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0627\u0646\u06a9\u06cc\u0648\u0628\u06cc\u0634\u0646 \u06a9\u0627 \u062f\u0648\u0631\u0627\u0646\u06cc\u06c1<\/strong> (\u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u062c\u0648 \u067e\u0631\u062f\u06cc\u06cc \u0628\u062c\u0644\u06cc \u0628\u0686\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u06be\u0648\u0691 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba) <strong>\u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u0627 \u0648\u0642\u062a \u062e\u062a\u0645<\/strong> (\u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06be\u0648 \u062c\u0627\u0646\u06d2 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u062a\u0646\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u0646\u0627 \u06c1\u06d2)<\/p>\n<p>\u06cc\u06c1 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u0688\u06cc\u0679\u0627 \u062a\u06be\u0631\u0648 \u067e\u0679 \u0627\u0648\u0631 \u0628\u062c\u0644\u06cc \u06a9\u06cc \u06a9\u06be\u067e\u062a \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0645\u062a\u0627\u062b\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u062e\u062a\u0635\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0648\u0642\u0641\u06d2 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u0628\u062c\u0644\u06cc \u062e\u0631\u0686 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06c1\u0627\u0626\u06cc \u067e\u0631\u0641\u06cc\u0631\u0644 \u0644\u06cc\u0679\u06cc\u0646\u0633\u06cc \u067e\u0627\u0648\u0631 \u0628\u0686\u0627\u062a\u06cc \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u0688\u06cc\u0679\u0627 \u0627\u06cc\u06a9\u0633\u0686\u06cc\u0646\u062c \u0645\u06cc\u06ba \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-gatt-layer-services-and-characteristics\">GATT \u067e\u0631\u062a\u06cc\u06ba: \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a<\/h2>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06c1\u0648 \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c GATT \u0627\u067e\u0646\u06cc \u0630\u0645\u06c1 \u062f\u0627\u0631\u06cc \u0633\u0646\u0628\u06be\u0627\u0644 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a \u067e\u06c1\u0644\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0633\u0631\u0648\u0633\/\u0634\u062e\u0635\u06cc\u062a \u06a9\u06cc \u067e\u0631\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u062a\u0628\u0627\u062f\u0644\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 GATT \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0633\u0627\u0645\u0646\u06d2 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a\u06d4 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0631\u0641 \u0633\u0631\u0648\u0633 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc\u060c \u06cc\u06c1 \u062f\u0633\u062a\u06cc\u0627\u0628 \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0642\u0631\u06cc\u0628\u06cc \u0622\u0644\u0627\u062a \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>GATT \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u06c1\u0631 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u06a9\u0626\u06cc \u0627\u062c\u0632\u0627\u0621 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <strong>\u0642\u062f\u0631<\/strong> \u06cc\u06c1 \u0627\u0635\u0644 \u0688\u06cc\u0679\u0627 \u06c1\u06d2 (\u0628\u0627\u0626\u0679\u0633 \u06a9\u06cc \u0635\u0641)\u06d4 \u06a9\u06c1 <strong>\u0648\u0635\u0641<\/strong> \u0627\u062c\u0627\u0632\u062a \u06cc\u0627\u0641\u062a\u06c1 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641\u06cc\u06ba: \u067e\u0691\u06be\u06cc\u06ba (0x02)\u060c \u062c\u0648\u0627\u0628 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0644\u06a9\u06be\u06cc\u06ba (0x04)\u060c \u0644\u06a9\u06be\u06cc\u06ba (0x08)\u060c \u0645\u0637\u0644\u0639 \u06a9\u0631\u06cc\u06ba (0x10)\u060c \u0627\u0648\u0631 \u0688\u0633\u067e\u0644\u06d2 (0x20) \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <strong>\u0627\u062a\u06be\u0627\u0631\u0679\u06cc<\/strong> \u062d\u0641\u0627\u0638\u062a\u06cc \u062a\u0642\u0627\u0636\u0648\u06ba \u0645\u06cc\u06ba \u06cc\u06c1 \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u0691\u06be\u0646\u06d2\/\u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0641\u06cc\u06c1 \u06a9\u0627\u0631\u06cc\u060c \u062a\u0635\u062f\u06cc\u0642\u060c \u06cc\u0627 \u0627\u062c\u0627\u0632\u062a \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0648\u0631 \u0627\u0634\u0627\u0631\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 <strong>\u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u0631\u06cc\u06a9\u0679\u0631\u0633\u0679\u06a9 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0688\u0633\u06a9\u0631\u067e\u0679\u0631 (CCCD)<\/strong>. \u06cc\u06c1 \u0627\u06cc\u06a9 \u062e\u0627\u0635 2 \u0628\u0627\u0626\u0679 \u0648\u06cc\u0644\u06cc\u0648 \u06c1\u06d2 \u062c\u0633\u06d2 \u0645\u0631\u06a9\u0632\u06cc \u0688\u06cc\u0648\u0627\u0626\u0633 \u0646\u06d2 \u0646\u0648\u0679\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646\/\u0627\u0634\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06cc\u0627 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06a9\u06be\u0627 \u06c1\u06d2\u06d4 \u0627\u0637\u0644\u0627\u0639 \u0627\u0633 \u0648\u0642\u062a \u0686\u0627\u0644\u0648 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 CCCD \u067e\u0631 0x0001 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 0x0000 \u0644\u06a9\u06be\u0646\u0627 \u0627\u0633\u06d2 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 Zephyr \u062e\u0648\u062f \u0628\u062e\u0648\u062f CCCD \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u0627\u0637\u0644\u0627\u0639 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0628\u06cc\u0627\u0646 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>GATT \u06a9\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2: \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0627\u06cc\u06a9 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062c\u0648\u0627\u0628 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062a\u062d\u0631\u06cc\u0631\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2: \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u0642\u062f\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u062d\u0631\u06cc\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u060c \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0642\u062f\u0631 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062c\u0648\u0627\u0628 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2: \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u0645\u0631\u06a9\u0632 \u0633\u06d2 \u067e\u0648\u0686\u06be\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u0631\u06a9\u0632 \u06a9\u0648 \u0627\u0642\u062f\u0627\u0631 \u0628\u06be\u06cc\u062c\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0627\u0633 \u0648\u0635\u0641 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0641\u0639\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u062c\u0648\u0627\u0628 \u06a9\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 BLE \u0627\u0633\u0679\u0631\u06cc\u0645\u0646\u06af \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u067e\u06cc\u063a\u0627\u0645 \u067e\u0627\u0633 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0645\u0633\u0644\u0633\u0644 \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062a\u0648\u060c \u0645\u0642\u0631\u0631\u06c1 \u0648\u0642\u0641\u0648\u06ba \u067e\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0648 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u06d2 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc\u0632 \u067e\u0631 \u0644\u06a9\u06be\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u0627\u067e\u0646\u06cc BLE \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u06a9\u0633 \u0637\u0631\u062d \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-setting-up-your-zephyr-development-environment\">Zephyr \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u0642\u0627\u0626\u0645 \u06a9\u0631\u0646\u0627<\/h2>\n<p>\u06cc\u06c1 \u0633\u06cc\u06a9\u0634\u0646 \u067e\u0648\u0631\u06d2 \u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0645\u06cc\u06ba \u0622\u067e \u06a9\u06cc \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc Zephyr \u0645\u0627\u062d\u0648\u0644 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06af\u0644\u06d2 \u062d\u0635\u06d2 \u067e\u0631 \u062c\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u0633\u0679\u0645 \u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba (\u0627\u0648\u0628\u0646\u0679\u0648):<\/p>\n<pre><code class=\"language-shell\">sudo apt update\nsudo apt install --no-install-recommends git cmake ninja-build gperf \\\n  ccache dfu-util device-tree-compiler wget python3-dev python3-pip \\\n  python3-setuptools python3-tk python3-wheel xz-utils file \\\n  make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u067e\u06cc\u06a9\u06cc\u062c\u0632 \u06a9\u0645\u067e\u0627\u0626\u0644\u0631 \u0679\u0648\u0644 \u0686\u06cc\u0646\u060c \u0628\u0644\u0688 \u0633\u0633\u0679\u0645\u060c \u0627\u0648\u0631 Zephyr \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0639\u0645\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u0627\u0641\u0627\u062f\u06cc\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0688\u06cc\u0648\u0627\u0626\u0633 \u0679\u0631\u06cc \u06a9\u0645\u067e\u0627\u0626\u0644\u0631 (<code>device-tree-compiler<\/code>) \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 Zephyr \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u06cc \u0641\u0627\u0626\u0644 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0628\u0648\u0631\u0688 \u06a9\u06d2 \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u0627\u0648\u0631 \u067e\u0646 \u0627\u0633\u0627\u0626\u0646\u0645\u0646\u0679\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0648\u06cc\u0633\u0679 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u060c Zephyr \u06a9\u0645\u0627\u0646\u0688 \u0644\u0627\u0626\u0646 \u0679\u0648\u0644\u06d4<\/p>\n<pre><code class=\"language-shell\">pip3 install west\n<\/code><\/pre>\n<p>\u0648\u06cc\u0633\u0679 Zephyr \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0645\u0644\u0679\u06cc \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u06a9\u0648 \u0628\u0646\u0627\u0646\u06d2\u060c \u0686\u0645\u06a9\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0628\u06af \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0645\u0627\u0646\u0688 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0648\u0627\u062d\u062f \u0679\u0648\u0644 \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u067e \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u067e\u0646\u06d2 \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u0627\u0648\u0631 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">west init ~\/zephyrproject\ncd ~\/zephyrproject\nwest update\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>west init<\/code> \u06a9\u0645\u0627\u0646\u0688 \u0627\u06cc\u06a9 \u0648\u0631\u06a9 \u0627\u0633\u067e\u06cc\u0633 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 Zephyr \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0648 \u06a9\u0644\u0648\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>west update<\/code> \u06a9\u0645\u0627\u0646\u0688 \u067e\u06be\u0631 \u062a\u0645\u0627\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0627\u0646\u062d\u0635\u0627\u0631 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0628\u0634\u0645\u0648\u0644 \u0648\u06cc\u0646\u0688\u0631 \u0644\u0648 \u0644\u06cc\u0648\u0644 \u0686\u067e \u0633\u067e\u0648\u0631\u0679 \u067e\u06cc\u06a9\u062c\u0632 (HALs)\u060c \u06a9\u0631\u067e\u0679\u0648\u06af\u0631\u0627\u0641\u06a9 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0627\u06ba\u060c \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u06a9\u0648\u0688\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0627\u062c\u0632\u0627\u0621\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0648\u0642\u062a \u0644\u06af\u06d2 \u06af\u0627 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u06a9\u0626\u06cc \u06af\u06cc\u06af\u0627 \u0628\u0627\u0626\u0679\u0633 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0627\u0632\u06af\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">pip3 install -r ~\/zephyrproject\/zephyr\/scripts\/requirements.txt\n<\/code><\/pre>\n<p>\u06cc\u06c1 Python \u067e\u06cc\u06a9\u062c\u0632 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0646 \u067e\u0631 Zephyr \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0627\u0633\u06a9\u0631\u067e\u0679\u0633 \u0627\u0648\u0631 \u0648\u06cc\u0633\u0679 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646\u0632 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0679\u0631\u06cc \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u0679\u0648\u0644\u060c Kconfig \u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688\u060c \u0627\u0648\u0631 \u0645\u062e\u062a\u0644\u0641 \u06a9\u0648\u0688 \u062c\u0646\u0631\u06cc\u0634\u0646 \u06cc\u0648\u0679\u06cc\u0644\u06cc\u0679\u06cc\u0632\u06d4 \u062a\u0642\u0627\u0636\u06d2 \u0641\u0627\u0626\u0644\u06cc\u06ba \u0645\u062e\u0635\u0648\u0635 \u0648\u0631\u0698\u0646\u0648\u06ba \u06a9\u0648 \u067e\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u062a\u0648\u0644\u06cc\u062f\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>Zephyr SDK \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba (\u062a\u0645\u0627\u0645 \u0645\u0639\u0627\u0648\u0646 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0631\u0627\u0633 \u06a9\u0645\u067e\u0627\u0626\u0644\u06cc\u0634\u0646 \u0679\u0648\u0644 \u0686\u06cc\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2)\u06d4<\/p>\n<pre><code class=\"language-shell\">cd ~\nwget https:\/\/github.com\/zephyrproject-rtos\/sdk-ng\/releases\/download\/v0.16.8\/zephyr-sdk-0.16.8_linux-x86_64.tar.xz\ntar xvf zephyr-sdk-0.16.8_linux-x86_64.tar.xz\ncd zephyr-sdk-0.16.8\n.\/setup.sh\n<\/code><\/pre>\n<p>SDK \u0645\u06cc\u06ba ARM\u060c RISC-V\u060c x86\u060c Xtensa\u060c \u0627\u0648\u0631 \u0645\u0632\u06cc\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 GCC \u067e\u0631 \u0645\u0628\u0646\u06cc \u0679\u0648\u0644 \u0686\u06cc\u0646\u0632 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>setup.sh<\/code> \u0627\u0633\u06a9\u0631\u067e\u0679 \u0627\u0633\u06d2 CMake \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 SDK \u0648\u0631\u0698\u0646 \u0646\u0645\u0628\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 Zephyr \u0631\u06cc\u0644\u06cc\u0632 \u06a9\u0627 \u0635\u0641\u062d\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06a9\u062a\u0627\u0628\u0686\u06c1 \u0644\u06a9\u06be\u06d2 \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0633\u06d2 \u0627\u067e \u0688\u06cc\u0679 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 (\u06cc\u06c1 <code>~\/.bashrc<\/code> \u06cc\u0627 <code>~\/.zshrc<\/code>):<\/p>\n<pre><code class=\"language-shell\">export ZEPHYR_BASE=~\/zephyrproject\/zephyr\nsource ~\/zephyrproject\/zephyr\/zephyr-env.sh\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>ZEPHYR_BASE<\/code> \u0645\u062a\u063a\u06cc\u0631 \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 Zephyr \u0633\u0648\u0631\u0633 \u0679\u0631\u06cc \u06a9\u06c1\u0627\u06ba \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>zephyr-env.sh<\/code> \u0627\u0633\u06a9\u0631\u067e\u0679 \u0627\u0636\u0627\u0641\u06cc \u0631\u0627\u0633\u062a\u06d2 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u0627 \u0622\u067e \u06a9\u0648 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0633\u06d2 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0645\u0639\u0627\u0648\u0646 \u0628\u0648\u0631\u0688 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-your-first-ble-application-a-simple-beacon\">\u067e\u06c1\u0644\u06cc BLE \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646: \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u0628\u06cc\u06a9\u0646<\/h2>\n<p>\u0622\u0626\u06cc\u06d2 \u0633\u0628 \u0633\u06d2 \u0622\u0633\u0627\u0646 BLE \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06cc\u0633\u0627 \u0622\u0644\u06c1 \u062c\u0648 \u0635\u0631\u0641 \u062a\u0634\u06c1\u06cc\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627\u06d4 \u06a9\u0648\u0626\u06cc \u06a9\u0646\u06a9\u0634\u0646\u060c \u06a9\u0648\u0626\u06cc \u0633\u0631\u0648\u0633\u060c \u06a9\u0648\u0626\u06cc \u0688\u06cc\u0679\u0627 \u0627\u06cc\u06a9\u0633\u0686\u06cc\u0646\u062c \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0627\u0634\u0627\u0631\u06c1 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06af\u06cc \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">mkdir -p ~\/my_ble_apps\/beacon\/src\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631\u06cc Zephyr \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0644\u06d2 \u0622\u0624\u0679 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0645\u0627\u0645 Zephyr \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0627\u0646 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba: <code>src\/<\/code> \u0633\u06cc \u0633\u0648\u0631\u0633 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0628 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc\u06d4 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0631\u0648\u0679 \u0645\u06cc\u06ba \u0628\u0644\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0641\u0627\u0626\u0644\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/beacon\/CMakeLists.txt<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">cmake_minimum_required(VERSION 3.20.0)\nfind_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})\nproject(ble_beacon)\ntarget_sources(app PRIVATE src\/main.c)\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>find_package(Zephyr)<\/code> \u0644\u0627\u0626\u0646 \u067e\u0648\u0631\u06d2 Zephyr \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>target_sources<\/code> \u0644\u0627\u0626\u0646 \u0633\u0648\u0631\u0633 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0646\u0627\u0645\u0632\u062f \u0628\u0644\u0688 \u0679\u0627\u0631\u06af\u0679 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>app<\/code>\u06cc\u06c1 Zephyr \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0639\u06cc\u0627\u0631\u06cc \u06c1\u062f\u0641 \u06a9\u0627 \u0646\u0627\u0645 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/beacon\/prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_BROADCASTER=y\n<\/code><\/pre>\n<p>\u062f\u0648 \u062a\u0631\u062a\u06cc\u0628 \u0644\u0627\u0626\u0646\u06cc\u06ba: <code>CONFIG_BT=y<\/code> \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u0628 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u06c1\u0648\u0633\u0679 \u0627\u0633\u0679\u06cc\u06a9\u060c HCI \u067e\u0631\u062a\u060c \u0627\u0648\u0631 (\u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0628\u0648\u0631\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2) \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_BT_BROADCASTER=y<\/code> \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679\u0631 \u06a9\u06d2 \u06a9\u0631\u062f\u0627\u0631 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0627\u0646 \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u06a9\u0631\u062f\u0627\u0631 \u06c1\u06d2 \u062c\u0648 \u0635\u0631\u0641 \u062a\u0634\u06c1\u06cc\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0628\u06cc\u06a9\u0646 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0642\u0628\u0648\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0627\u0628\u06be\u06cc \u062a\u06a9 \u06a9\u0633\u06cc \u067e\u0631\u062f\u06cc\u06cc \u06a9\u0631\u062f\u0627\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/beacon\/src\/main.c<\/code>:<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n#include <zephyr>\n\nstatic const struct bt_data ad[] = {\n    BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),\n    BT_DATA_BYTES(BT_DATA_NAME_COMPLETE,\n                  'M', 'y', 'B', 'e', 'a', 'c', 'o', 'n'),\n};\n\nint main(void)\n{\n    int err;\n\n    printk(\"Starting BLE Beacon\\n\");\n\n    err = bt_enable(NULL);\n    if (err) {\n        printk(\"Bluetooth init failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Bluetooth initialized\\n\");\n\n    err = bt_le_adv_start(BT_LE_ADV_NCONN, ad, ARRAY_SIZE(ad), NULL, 0);\n    if (err) {\n        printk(\"Advertising failed to start (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Beacon is advertising\\n\");\n\n    return 0;\n}\n<\/zephyr><\/zephyr><\/code><\/pre>\n<p>\u0622\u0626\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u06cc\u06a9 \u06a9\u0631\u06a9\u06d2 \u0627\u0633 \u06a9\u0648\u0688 \u067e\u0631 \u0627\u06cc\u06a9 \u0646\u0638\u0631 \u0688\u0627\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <code>ad<\/code> \u0635\u0641 \u0627\u0634\u062a\u06c1\u0627\u0631 \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062f\u0648 AD \u0688\u06be\u0627\u0646\u0686\u06d2 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u0627 \u0641\u0644\u06cc\u06af \u0641\u06cc\u0644\u0688 \u06c1\u06d2\u060c \u062c\u0648 BLE \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af \u0645\u06cc\u06ba \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4 <code>BT_LE_AD_GENERAL<\/code> \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u0644\u06c1 \u0639\u0627\u0645 \u0642\u0627\u0628\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0648\u0688 \u0645\u06cc\u06ba \u06c1\u06d2 (\u062a\u0645\u0627\u0645 \u0633\u06a9\u06cc\u0646\u0631\u0632 \u06a9\u0648 \u0646\u0638\u0631 \u0622\u062a\u0627 \u06c1\u06d2)\u06d4 <code>BT_LE_AD_NO_BREDR<\/code> \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u0644\u06c1 \u06a9\u0644\u0627\u0633\u06a9 \u0628\u0644\u0648\u0679\u0648\u062a\u06be (BR\/EDR) \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627\u060c \u0628\u0644\u06a9\u06c1 \u0635\u0631\u0641 BLE \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0648\u0633\u0631\u0627 AD \u0688\u06be\u0627\u0646\u0686\u06c1 \u0645\u06a9\u0645\u0644 \u0645\u0642\u0627\u0645\u06cc \u0646\u0627\u0645 \u06c1\u06d2 \u062c\u0648 \u062d\u0631\u0641 \u0628\u06c1 \u062d\u0631\u0641 \u0644\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>BT_DATA_BYTES<\/code> \u0645\u06cc\u06a9\u0631\u0648 \u0627\u0633\u06d2 \u0635\u062d\u06cc\u062d AD \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u0634\u06a9\u0644 \u0645\u06cc\u06ba \u06a9\u0645\u067e\u0631\u06cc\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>bt_enable(NULL)<\/code> \u06a9\u0627\u0644 \u067e\u0648\u0631\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u0628 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 HCI \u0679\u0631\u0627\u0646\u0633\u067e\u0648\u0631\u0679 \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0627\u06af\u0631 \u062c\u06c1\u0627\u0632 \u067e\u0631 \u0631\u06cc\u0688\u06cc\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u0648)\u060c \u0627\u0648\u0631 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0627\u0633\u0679\u06cc\u06a9 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>NULL<\/code> arguments \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u06a9 \u06c1\u0645 \u0648\u0642\u062a \u0633\u0627\u0632 \u06a9\u0627\u0644 \u06c1\u06d2\u06d4 \u0627\u0628\u062a\u062f\u0627\u0621 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u062a\u06a9 \u06cc\u06c1 \u0628\u0644\u0627\u06a9 \u0631\u06c1\u06d2 \u06af\u0627\u06d4 \u0622\u067e \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u067e\u0627\u0633 \u06a9\u0631\u06a9\u06d2 \u0627\u0633\u06d2 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <code>bt_le_adv_start<\/code> \u06a9\u0627\u0644 \u06a9\u0627 \u0627\u0634\u062a\u06c1\u0627\u0631 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u06c1\u0644\u0627 \u062f\u0639\u0648\u06cc\u0670 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 <code>BT_LE_ADV_NCONN<\/code>\u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0646 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u062a\u06a9 \u0646\u06c1\u06cc\u06ba \u067e\u06c1\u0646\u0686 \u0633\u06a9\u062a\u0627\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0633\u06a9\u06cc\u0646\u0631 \u0628\u06cc\u06a9\u0646 \u06a9\u0648 \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0633 \u0633\u06d2 \u0631\u0627\u0628\u0637\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u0627\u06d4 \u06a9\u06c1 <code>ad<\/code> \u062a\u0631\u062a\u06cc\u0628 \u0627\u0648\u0631 \u0633\u0627\u0626\u0632 (<code>ARRAY_SIZE(ad)<\/code>) \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u062e\u0631\u06cc \u062f\u0648 \u062f\u0644\u0627\u0626\u0644 (<code>NULL, 0<\/code>) \u0627\u0633\u06a9\u06cc\u0646 \u062c\u0648\u0627\u0628\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u0627\u0636\u0627\u0641\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06be\u06cc\u062c\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u0641\u0639\u0627\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u0648 (\u0627\u0633\u06a9\u06cc\u0646 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u0646\u0627)\u06d4 \u06cc\u06c1 \u0633\u0627\u062f\u06c1 \u0645\u062b\u0627\u0644 \u0627\u0633\u06a9\u06cc\u0646 \u062c\u0648\u0627\u0628\u06cc \u0688\u06cc\u0679\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0639\u062f \u0645\u06cc\u06ba <code>main()<\/code> \u0648\u0627\u067e\u0633 \u0622\u0646\u06d2 \u067e\u0631\u060c Zephyr \u0645\u06cc\u0646 \u062a\u06be\u0631\u06cc\u0688 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0633\u0633\u0679\u0645 \u0686\u0644\u062a\u0627 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u0628 \u0633\u0633\u0679\u0645 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0627\u0648\u0631 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06c1\u0648\u0633\u0679 \u062a\u06be\u0631\u06cc\u0688\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0686\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u0633 \u0645\u0646\u0638\u0631 \u0645\u06cc\u06ba \u062a\u0634\u06c1\u06cc\u0631 \u06a9\u0631\u0646\u0627 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0639\u0645\u06cc\u0631 \u0627\u0648\u0631 \u0641\u0644\u06cc\u0634:<\/p>\n<pre><code class=\"language-shell\">cd ~\/zephyrproject\nwest build -b nrf52840dk\/nrf52840 ~\/my_ble_apps\/beacon\nwest flash\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>west build<\/code> \u06a9\u0645\u0627\u0646\u0688 nRF52840 DK \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062c\u06af\u06c1\u0648\u06ba \u067e\u0631 \u0627\u06cc\u06a9 ELF \u0628\u0627\u0626\u0646\u0631\u06cc \u0627\u0648\u0631 HEX \u0641\u0627\u0626\u0644 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>build\/<\/code> \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679\u0631\u06cc \u06a9\u06c1 <code>west flash<\/code> \u0622\u0646 \u0628\u0648\u0631\u0688 J-Link \u0688\u06cc\u0628\u06af\u0631 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0645\u0646\u0633\u0644\u06a9 \u0628\u0648\u0631\u0688\u0632 \u06a9\u0627 \u067e\u062a\u06c1 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0648\u0631\u0688 \u0645\u06cc\u06ba \u0628\u0627\u0626\u0646\u0631\u06cc\u0632 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0645\u0627\u0646\u0688 \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062f\u0631\u0633\u062a \u067e\u0631\u0648\u06af\u0631\u0627\u0645\u0646\u06af \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u067e\u0646\u06d2 \u0641\u0648\u0646 \u067e\u0631 nRF Connect \u0627\u06cc\u067e \u06a9\u06be\u0648\u0644\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u06c1 \u0622\u0644\u0627\u062a \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0645\u06cc\u06ba &quot;MyBeacon&#8221; \u0646\u0638\u0631 \u0622\u0626\u06d2 \u06af\u0627\u06d4 \u06cc\u06c1 \u0648\u06c1 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u06c1\u06d2 \u062c\u0648 \u0628\u0648\u0631\u0688 \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u062a\u0634\u06c1\u06cc\u0631 BLE \u067e\u0631 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-building-a-ble-peripheral-with-a-custom-service\">\u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u062e\u062f\u0645\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be BLE \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u0628\u0646\u0627\u0646\u0627<\/h2>\n<p>\u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679\u0646\u06af \u0628\u06cc\u06a9\u0646\u0632 \u06a9\u0686\u06be \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 (iBeacon\u060c Eddystone\u060c asset tracking) \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 BLE \u0622\u0644\u0627\u062a \u06a9\u0648 GATT \u0633\u0631\u0648\u0633\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062c\u0648\u0691\u0646\u06d2 \u0627\u0648\u0631 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u0628 \u0622\u0626\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u06a9\u0633\u0679\u0645 \u0633\u0631\u0648\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0628\u0646\u0627\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 &quot;\u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u0633\u0631\u0648\u0633&#8221; \u0628\u0646\u0627\u0626\u06cc\u06ba \u062c\u0648 \u0641\u0648\u0646 \u06a9\u0648 \u0628\u0648\u0631\u0688 \u067e\u0631 \u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0628\u0679\u0646 \u06a9\u06cc \u062d\u0627\u0644\u062a\u0648\u06ba \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u06a9\u0644\u0627\u0633\u06a9 BLE \u0688\u06cc\u0645\u0648 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u0648 \u06a9\u0633\u06cc \u0628\u06be\u06cc BLE \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u06d2 \u0633\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0628\u0646\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-shell\">mkdir -p ~\/my_ble_apps\/led_service\/src\n<\/code><\/pre>\n<p>\u0628\u06cc\u06a9\u0646 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u06c1\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0644\u06d2 \u0622\u0624\u0679: \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0631\u0648\u0679 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0627\u0648\u0631 <code>src\/<\/code> \u0633\u0648\u0631\u0633 \u06a9\u0648\u0688 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc\u06d4 \u06cc\u06c1 \u0639\u0644\u06cc\u062d\u062f\u06af\u06cc \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0646\u0645\u0648\u0646\u06d2 \u0645\u0627\u062e\u0630 \u0641\u0627\u0626\u0644\u0648\u06ba \u0633\u06d2 \u0627\u0644\u06af \u062a\u06be\u0644\u06af \u0631\u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/led_service\/prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_PERIPHERAL=y\nCONFIG_BT_DEVICE_NAME=\"Zephyr LED\"\nCONFIG_BT_DEVICE_APPEARANCE=0\nCONFIG_GPIO=y\nCONFIG_BT_GATT_DYNAMIC_DB=y\n<\/code><\/pre>\n<p><code>CONFIG_BT_PERIPHERAL=y<\/code>    \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679\u0631 \u0631\u0648\u0644 \u0627\u0648\u0631 \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0631\u0648\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0645\u06cc\u06ba \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0628\u0648\u0644\u06cc\u062a \u06a9\u0627 \u0641\u0646\u06a9\u0634\u0646 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 <code>CONFIG_BT_DEVICE_NAME<\/code> \u0688\u06cc\u0641\u0627\u0644\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0646\u0627\u0645 \u0627\u0648\u0631 GAP \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06d2 \u0627\u0646\u062a\u0633\u0627\u0628\u0627\u062a \u062c\u0648 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>CONFIG_GPIO=y<\/code> GPIO \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u0648 LEDs \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0628\u0679\u0646 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0645\u0644\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/led_service\/CMakeLists.txt<\/code>:<\/p>\n<pre><code class=\"language-cmake\">cmake_minimum_required(VERSION 3.20.0)\nfind_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})\nproject(ble_led_service)\ntarget_sources(app PRIVATE src\/main.c)\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u06cc\u06a9\u0646 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0648\u06c1\u06cc \u0633\u06cc \u0645\u06cc\u06a9 \u0628\u0648\u0627\u0626\u0644\u0631 \u067e\u0644\u06cc\u0679 \u06c1\u06d2\u06d4 \u0635\u0631\u0641 \u062a\u0628\u062f\u06cc\u0644\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0627 \u0646\u0627\u0645 \u06c1\u06d2 (<code>ble_led_service<\/code>)\u06d4 \u06a9\u06c1 <code>find_package(Zephyr)<\/code> \u06a9\u0627\u0644 \u067e\u0648\u0631\u06d2 Zephyr \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>target_sources<\/code> \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0645\u0627\u062e\u0630 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/led_service\/src\/main.c<\/code>:<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n\n\/* Custom service UUID: 00001234-0000-1000-8000-00805f9b34fb *\/\n#define BT_UUID_LED_SERVICE_VAL \\\n    BT_UUID_128_ENCODE(0x00001234, 0x0000, 0x1000, 0x8000, 0x00805f9b34fb)\n#define BT_UUID_LED_SERVICE BT_UUID_DECLARE_128(BT_UUID_LED_SERVICE_VAL)\n\n\/* LED characteristic UUID *\/\n#define BT_UUID_LED_CHAR_VAL \\\n    BT_UUID_128_ENCODE(0x00001235, 0x0000, 0x1000, 0x8000, 0x00805f9b34fb)\n#define BT_UUID_LED_CHAR BT_UUID_DECLARE_128(BT_UUID_LED_CHAR_VAL)\n\n\/* Button characteristic UUID *\/\n#define BT_UUID_BUTTON_CHAR_VAL \\\n    BT_UUID_128_ENCODE(0x00001236, 0x0000, 0x1000, 0x8000, 0x00805f9b34fb)\n#define BT_UUID_BUTTON_CHAR BT_UUID_DECLARE_128(BT_UUID_BUTTON_CHAR_VAL)\n\n#define LED0_NODE DT_ALIAS(led0)\n#define SW0_NODE  DT_ALIAS(sw0)\n\nstatic const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);\nstatic const struct gpio_dt_spec button = GPIO_DT_SPEC_GET(SW0_NODE, gpios);\n\nstatic uint8_t led_state;\nstatic uint8_t button_state;\n\nstatic ssize_t read_led(struct bt_conn *conn,\n                        const struct bt_gatt_attr *attr,\n                        void *buf, uint16_t len, uint16_t offset)\n{\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &led_state, sizeof(led_state));\n}\n\nstatic ssize_t write_led(struct bt_conn *conn,\n                         const struct bt_gatt_attr *attr,\n                         const void *buf, uint16_t len,\n                         uint16_t offset, uint8_t flags)\n{\n    if (len != 1) {\n        return BT_GATT_ERR(BT_ATT_ERR_INVALID_ATTRIBUTE_LEN);\n    }\n\n    led_state = *((const uint8_t *)buf);\n    gpio_pin_set_dt(&led, led_state ? 1 : 0);\n\n    printk(\"LED %s\\n\", led_state ? \"ON\" : \"OFF\");\n\n    return len;\n}\n\nstatic ssize_t read_button(struct bt_conn *conn,\n                           const struct bt_gatt_attr *attr,\n                           void *buf, uint16_t len, uint16_t offset)\n{\n    button_state = gpio_pin_get_dt(&button);\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &button_state, sizeof(button_state));\n}\n\nBT_GATT_SERVICE_DEFINE(led_service,\n    BT_GATT_PRIMARY_SERVICE(BT_UUID_LED_SERVICE),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_LED_CHAR,\n        BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE,\n        BT_GATT_PERM_READ | BT_GATT_PERM_WRITE,\n        read_led, write_led, NULL),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_BUTTON_CHAR,\n        BT_GATT_CHRC_READ,\n        BT_GATT_PERM_READ,\n        read_button, NULL, NULL),\n);\n\nstatic const struct bt_data ad[] = {\n    BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),\n    BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME,\n            sizeof(CONFIG_BT_DEVICE_NAME) - 1),\n};\n\nstatic const struct bt_data sd[] = {\n    BT_DATA_BYTES(BT_DATA_UUID128_ALL, BT_UUID_LED_SERVICE_VAL),\n};\n\nint main(void)\n{\n    int err;\n\n    if (!gpio_is_ready_dt(&led) || !gpio_is_ready_dt(&button)) {\n        printk(\"GPIO devices not ready\\n\");\n        return 0;\n    }\n\n    gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);\n    gpio_pin_configure_dt(&button, GPIO_INPUT);\n\n    err = bt_enable(NULL);\n    if (err) {\n        printk(\"Bluetooth init failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Bluetooth initialized\\n\");\n\n    err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad),\n                          sd, ARRAY_SIZE(sd));\n    if (err) {\n        printk(\"Advertising failed to start (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Advertising as '%s'\\n\", CONFIG_BT_DEVICE_NAME);\n\n    return 0;\n}\n<\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u06c1\u062a \u062a\u06be\u0648\u0691\u0627 \u0633\u0627 \u06a9\u0648\u0688 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u0626\u06cc\u06d2 \u0627\u0633 \u06a9\u0648 \u0633\u06cc\u06a9\u0634\u0646 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u062f\u06cc\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0648\u067e\u0631 \u062f\u06cc \u06af\u0626\u06cc UUID \u062a\u0639\u0631\u06cc\u0641 \u0633\u0631\u0648\u0633 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u062f\u0648 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a 128 \u0628\u0679 UUID \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 BLE \u0688\u06cc\u0648\u0627\u0626\u0633 \u0628\u0646\u0627\u062a\u06d2 \u0648\u0642\u062a\u060c \u0645\u0639\u06cc\u0627\u0631\u06cc \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG UUID \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u067e\u0646\u0627 UUID \u0628\u0646\u0627\u0626\u06cc\u06ba (\u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e \u0627\u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u062c\u06cc\u0633\u06d2 \u062f\u0644 \u06a9\u06cc \u062f\u06be\u0691\u06a9\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u0646\u06c1 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba)\u06d4<\/p>\n<p>\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 128 \u0628\u0679 UUIDs \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0679\u0648\u0644\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: <code>uuidgen<\/code>. \u06cc\u06c1\u0627\u06ba UUID \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>BT_UUID_128_ENCODE<\/code> \u0645\u06cc\u06a9\u0631\u0648 UUID \u06a9\u0648 \u0628\u0627\u0626\u0679 \u0622\u0631\u0688\u0631 \u0645\u06cc\u06ba \u0641\u0627\u0631\u0645\u06cc\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06c1\u06d2\u06d4 <code>BT_UUID_DECLARE_128<\/code> \u0646\u0633\u0644 <code>struct bt_uuid_128<\/code> \u0627\u0646\u06a9\u0648\u0688 \u0634\u062f\u06c1 \u0642\u062f\u0631 \u0633\u06d2<\/p>\n<p>\u06a9\u06c1 <code>led<\/code> \u0627\u0648\u0631 <code>button<\/code> GPIO \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0688\u06cc\u0648\u0627\u0626\u0633 \u0679\u0631\u06cc \u0639\u0631\u0641\u06cc \u0646\u0627\u0645\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 <code>led0<\/code> \u0627\u0648\u0631 <code>sw0<\/code>\u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0632\u06cc\u0641\u06cc\u0631 \u0628\u0648\u0631\u0688\u0632 \u06cc\u06c1\u06cc \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>GPIO_DT_SPEC_GET<\/code> \u0622\u067e \u06a9\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u062a\u0645\u0627\u0645 \u0628\u0648\u0631\u0688\u0632 \u067e\u0631 \u067e\u0648\u0631\u0679\u06cc\u0628\u0644 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u0645\u06cc\u06a9\u0631\u0648\u0633 \u0622\u0644\u06c1 \u06a9\u06d2 \u062f\u0631\u062e\u062a \u0633\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u067e\u0646 \u0646\u0645\u0628\u0631\u0632\u060c GPIO \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632\u060c \u0627\u0648\u0631 \u062c\u06be\u0646\u0688\u06d2 \u06a9\u06be\u06cc\u0646\u0686\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <code>read_led<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u0633 \u0648\u0642\u062a \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0645\u0646\u0633\u0644\u06a9 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 LED \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 <code>bt_gatt_attr_read<\/code>\u0622\u0641\u0633\u06cc\u0679 \u0627\u0648\u0631 \u0644\u0645\u0628\u0627\u0626\u06cc \u06a9\u0648 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062f\u062f\u06af\u0627\u0631 \u0641\u0646\u06a9\u0634\u0646 (\u0627\u06af\u0631 \u0642\u062f\u0631 MTU \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06d2 \u062a\u0648 GATT \u0631\u06cc\u0688\u0632 \u062c\u0632\u0648\u06cc \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba)\u06d4 \u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u0645\u0648\u062c\u0648\u062f\u06c1 LED \u062d\u0627\u0644\u062a \u06a9\u0648 \u0627\u06cc\u06a9 \u0628\u0627\u0626\u0679 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>write_led<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u0633 \u0648\u0642\u062a \u06a9\u06c1\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u0641\u06cc\u0686\u0631 \u067e\u0631 \u0644\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0628\u0627\u0644\u06a9\u0644 1 \u0628\u0627\u0626\u0679 \u0644\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4 <code>led_state<\/code> \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0648\u0631 \u06a9\u0627\u0644\u0632 <code>gpio_pin_set_dt<\/code> \u062c\u0633\u0645\u0627\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u06a9\u0648 \u0633\u0648\u0626\u0686 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0634\u062f\u06c1 \u0628\u0627\u0626\u0679\u0633 \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2 (<code>len<\/code>) \u06cc\u0627 \u0627\u06af\u0631 \u0644\u0645\u0628\u0627\u0626\u06cc \u063a\u0644\u0637 \u06c1\u06d2 \u062a\u0648 \u0622\u067e \u06a9\u0648 GATT \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u0645\u0644\u06d2 \u06af\u06cc\u06d4 \u06a9\u06c1 <code>BT_GATT_ERR<\/code> \u0645\u06cc\u06a9\u0631\u0648 ATT \u0627\u06cc\u0631\u0631 \u06a9\u0648\u0688 \u06a9\u0648 \u0627\u0633\u0679\u06cc\u06a9 \u0633\u06d2 \u0645\u062a\u0648\u0642\u0639 \u0648\u0627\u067e\u0633\u06cc \u06a9\u06cc \u0642\u06cc\u0645\u062a \u0645\u06cc\u06ba \u0644\u067e\u06cc\u0679 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>read_button<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0648\u0642\u062a \u0645\u0648\u062c\u0648\u062f\u06c1 \u0641\u0632\u06cc\u06a9\u0644 \u0628\u0679\u0646 \u06a9\u06cc \u062d\u0627\u0644\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 <code>gpio_pin_get_dt<\/code> \u067e\u0646 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u06d2\u060c \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0648\u0627\u067e\u0633\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>BT_GATT_SERVICE_DEFINE<\/code> \u0645\u06cc\u06a9\u0631\u0648 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u06a9\u0645\u067e\u0627\u0626\u0644 \u06a9\u06d2 \u0648\u0642\u062a GATT \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u06c1\u0644\u06cc \u062f\u0644\u06cc\u0644 \u0633\u0631\u0648\u0633 \u0645\u062a\u063a\u06cc\u0631 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>BT_GATT_PRIMARY_SERVICE<\/code> \u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 UUID \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0688\u06cc\u0641\u0627\u0644\u0679 \u0633\u0631\u0648\u0633 \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06a9\u0631\u06cc\u06ba\u06d4 \u06c1\u0631 \u0627\u06cc\u06a9 <code>BT_GATT_CHARACTERISTIC<\/code> \u0627\u0639\u0644\u0627\u0645\u06cc\u06c1 \u0645\u06cc\u06ba \u0627\u0648\u0635\u0627\u0641 UUID\u060c \u062e\u0635\u0648\u0635\u06cc\u0627\u062a (LEDs \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0691\u06be\u0646\u0627 + \u0644\u06a9\u06be\u0646\u0627\u060c \u0628\u0679\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0631\u0641 \u067e\u0691\u06be\u0646\u06d2)\u060c \u0627\u062c\u0627\u0632\u062a (\u062c\u0648 \u067e\u0691\u06be\/\u0644\u06a9\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2)\u060c \u0631\u06cc\u0688 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u060c \u0631\u0627\u0626\u0679 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u060c \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0637\u0631\u0641 \u0627\u0634\u0627\u0631\u06c1 (\u06cc\u06c1\u0627\u06ba \u062f\u0648\u0646\u0648\u06ba \u0635\u0648\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba NULL) \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <code>ad<\/code> \u0635\u0641 \u0645\u06cc\u06ba \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627 (\u062c\u06be\u0646\u0688\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0646\u0627\u0645) \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>sd<\/code> \u0635\u0641 \u0645\u06cc\u06ba 128 \u0628\u0679 \u0633\u0631\u0648\u0633 UUID \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u0627\u0633\u06a9\u06cc\u0646 \u062c\u0648\u0627\u0628\u06cc \u0688\u06cc\u0679\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u062e\u062a 31 \u0628\u0627\u0626\u0679 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u067e\u06cc\u06a9\u0679 \u06a9\u06cc \u062d\u062f \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2\u060c \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u0627\u0648\u0631 \u0627\u0633\u06a9\u06cc\u0646 \u062c\u0648\u0627\u0628\u0627\u062a \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u0646\u0627 \u0639\u0627\u0645 \u06c1\u06d2\u06d4 \u0686\u0648\u0646\u06a9\u06c1 \u0633\u0631\u0648\u0633 UUID \u0627\u06a9\u06cc\u0644\u06d2 16 \u0628\u0627\u0626\u0679\u0633 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0645\u0631\u06a9\u0632\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631 \u06a9\u06d2 \u067e\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u062f\u06cc\u06af\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u06a9\u0645 \u06af\u0646\u062c\u0627\u0626\u0634 \u0628\u0627\u0642\u06cc \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u06d2 \u062c\u0648\u0627\u0628 \u0645\u06cc\u06ba UUID \u0688\u0627\u0644\u0646\u06d2 \u0633\u06d2 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u067e\u06cc\u06a9\u0679 \u0686\u06be\u0648\u0679\u0627 \u0631\u06c1\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 UUID \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0627\u0633\u06a9\u06cc\u0646\u0631 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>bt_le_adv_start<\/code> \u06a9\u0631\u0646\u0633\u06cc \u06a9\u0627 \u0645\u0642\u0635\u062f <code>BT_LE_ADV_CONN<\/code> \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 <code>BT_LE_ADV_NCONN<\/code>. \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u0648 \u0644\u0646\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06d2 \u06af\u0627\u06d4 \u0633\u06a9\u06cc\u0646\u0631 \u0627\u0628 \u0622\u067e \u06a9\u06d2 \u0622\u0644\u06d2 \u0633\u06d2 \u062c\u0691 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>sd<\/code> \u0627\u0648\u0631 <code>ARRAY_SIZE(sd)<\/code> \u062f\u0644\u06cc\u0644 \u0627\u0633\u06a9\u06cc\u0646 \u062c\u0648\u0627\u0628\u06cc \u0688\u06cc\u0679\u0627 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u0628\u06cc\u06a9\u0646 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba NULL \u062a\u06be\u0627\u06d4<\/p>\n<p>\u062a\u0639\u0645\u06cc\u0631\u060c \u0641\u0644\u06cc\u0634 \u0627\u0648\u0631 \u0679\u06cc\u0633\u0679:<\/p>\n<pre><code class=\"language-bash\">cd ~\/zephyrproject\nwest build -b nrf52840dk\/nrf52840 ~\/my_ble_apps\/led_service\nwest flash\n<\/code><\/pre>\n<p>\u0628\u0644\u0688 \u06a9\u0645\u0627\u0646\u0688 \u067e\u0648\u0631\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9\u060c GPIO \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u060c \u0627\u0648\u0631 GATT \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0628\u0627\u0626\u0646\u0631\u06cc \u0645\u06cc\u06ba \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u06a9\u06d2 \u0627\u06cc\u06a9 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0641\u0644\u06cc\u0634 \u06a9\u0645\u0627\u0646\u0688 \u0627\u0633\u06d2 \u0628\u0648\u0631\u0688 \u0645\u06cc\u06ba \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 <code>CONFIG_BT_PERIPHERAL<\/code> \u0686\u0627\u0644\u0648 \u06c1\u0648\u0646\u06d2 \u067e\u0631\u060c \u0628\u0627\u0626\u0646\u0631\u06cc \u0627\u06cc\u06a9 \u0628\u06cc\u06a9\u0646 \u0633\u06d2 \u0628\u06c1\u062a \u0628\u0691\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2 (\u0627\u0633 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a\u060c GATT \u0633\u0631\u0648\u0631\u0632\u060c \u0627\u0648\u0631 ATT \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u06cc \u067e\u0631\u062a\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba)\u06d4<\/p>\n<p>\u0627\u067e\u0646\u06d2 \u0641\u0648\u0646 \u067e\u0631 nRF \u06a9\u0646\u06cc\u06a9\u0679 \u06a9\u06be\u0648\u0644\u06cc\u06ba \u0627\u0648\u0631 &quot;Zepyr LED&#8221; \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u06cc\u06ba\u06d4 \u062c\u0691\u06cc\u06ba \u067e\u0631 \u0679\u06cc\u067e \u06a9\u0631\u06cc\u06ba\u06d4 \u062c\u0628 \u0622\u067e \u062c\u0691\u06cc\u06ba \u06af\u06d2\u060c \u0622\u067e \u06a9\u0648 GATT \u0633\u0631\u0648\u0633\u0632 \u0646\u0638\u0631 \u0622\u0626\u06cc\u06ba \u06af\u06cc\u06d4 \u0627\u067e\u0646\u06cc \u06a9\u0633\u0679\u0645 \u0633\u0631\u0648\u0633 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba (00001234 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u0627 UUID)\u06d4 \u062f\u0648 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062f\u06cc\u06a9\u06be\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0628\u0679\u0646 \u06a9\u06cc \u062d\u0627\u0644\u062a \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0628\u0679\u0646 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0691\u06be\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e LED \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u0645\u06cc\u06ba 0x01 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 LED \u0622\u0646 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u06af\u0631 \u0622\u067e 0x00 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u06cc\u06c1 \u0628\u0646\u062f \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u06cc\u06ba \u0646\u06d2 \u0627\u0628\u06be\u06cc \u0627\u067e\u0646\u06d2 \u0641\u0648\u0646 \u0633\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06cc\u0627\u06d4<\/p>\n<h2 id=\"heading-handling-connections-and-connection-callbacks\">\u06a9\u0646\u06a9\u0634\u0646 \u0627\u0648\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627<\/h2>\n<p>\u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba\u060c \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06c1 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u0628 \u0645\u0646\u0633\u0644\u06a9 \u0627\u0648\u0631 \u0645\u0646\u0642\u0637\u0639 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0622\u0644\u06c1 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 (\u0628\u062c\u0644\u06cc \u0628\u0686\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2)\u060c \u0645\u0646\u0642\u0637\u0639 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba (\u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2)\u060c \u06cc\u0627 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u062d\u06cc\u062b\u06cc\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u0679\u06cc\u0679\u0633 LED \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>Zephyr \u0631\u062c\u0633\u0679\u0631\u06cc\u0634\u0646 \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n\nstatic void connected(struct bt_conn *conn, uint8_t err)\n{\n    if (err) {\n        printk(\"Connection failed (err %u)\\n\", err);\n        return;\n    }\n\n    char addr[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));\n    printk(\"Connected: %s\\n\", addr);\n}\n\nstatic void disconnected(struct bt_conn *conn, uint8_t reason)\n{\n    char addr[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));\n    printk(\"Disconnected: %s (reason %u)\\n\", addr, reason);\n\n    \/* Restart advertising after disconnect *\/\n    bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad),\n                    sd, ARRAY_SIZE(sd));\n}\n\nBT_CONN_CB_DEFINE(conn_callbacks) = {\n    .connected = connected,\n    .disconnected = disconnected,\n};\n<\/zephyr><\/code><\/pre>\n<p>\u06a9\u06c1 <code>BT_CONN_CB_DEFINE<\/code> \u0645\u06cc\u06a9\u0631\u0648 \u0645\u0633\u062a\u062d\u06a9\u0645 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u06a9\u06cc \u0627\u06cc\u06a9 \u0633\u06cc\u0631\u06cc\u0632 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>.connected<\/code> \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06c1\u0648\u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u0648 \u0639\u0645\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>err<\/code> \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u062a\u06be\u0627 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4 0 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc\u06d4 \u06a9\u06c1 <code>.disconnected<\/code> \u06a9\u0646\u06a9\u0634\u0646 \u0628\u0646\u062f \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>reason<\/code> \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 HCI \u0645\u0646\u0642\u0637\u0639 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0648\u062c\u06c1 \u06a9\u0648\u0688 \u06c1\u06d2 (0x13 &quot;\u0631\u06cc\u0645\u0648\u0679 \u06cc\u0648\u0632\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u062e\u062a\u0645&#8221; \u06c1\u06d2\u060c \u06cc\u0639\u0646\u06cc \u0639\u0627\u0645 \u0645\u0646\u0642\u0637\u0639 \u06c1\u0648\u0646\u0627)\u06d4<\/p>\n<p>\u067e\u0631 <code>connected<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0645\u06cc\u06ba\u060c \u06a9\u0648\u0688 \u0631\u06cc\u0645\u0648\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u06cc\u0688\u0631\u06cc\u0633 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>bt_conn_get_dst<\/code> \u0627\u0648\u0631 \u0627\u0633\u06d2 \u067e\u0631\u0646\u0679 \u0627\u06cc\u0628\u0644 \u0633\u0679\u0631\u0646\u06af \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0644\u0627\u06af\u0646\u06af \u0627\u0648\u0631 \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u0631 <code>disconnected<\/code> \u062c\u0628 \u0622\u067e \u0648\u0627\u067e\u0633 \u06a9\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u062a\u0648 \u0622\u067e \u06a9\u0627 \u06a9\u0648\u0688 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0634\u06c1\u06cc\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0637\u0648\u0631 \u067e\u0631\u060c \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f Zephyr \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 (\u0686\u0648\u0646\u06a9\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u0627\u0628 \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2)\u06d4 \u0627\u06af\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06be\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06d2 \u06af\u0627 \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u0622\u0644\u06c1 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>bt_conn<\/code> \u0627\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u0633\u06d2 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u0646\u06d2\u060c \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u0627\u067e \u0688\u06cc\u0679\u0633 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u0646\u06d2\u060c \u0627\u0648\u0631 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u06d2 \u06cc\u0627 \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0645\u0646\u0642\u0637\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u0631\u06a9\u06be\u06cc\u06ba (\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>bt_conn_ref<\/code>) \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u0633\u06d2 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u0628\u0627\u06c1\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u0631\u06cc \u06a9\u0631\u06cc\u06ba (\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>bt_conn_unref<\/code>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0645\u06a9\u0645\u0644<\/p>\n<h2 id=\"heading-adding-write-support-receiving-data-from-a-phone\">\u062a\u062d\u0631\u06cc\u0631\u06cc \u0645\u0639\u0627\u0648\u0646\u062a \u0634\u0627\u0645\u0644 \u06a9\u06cc \u06af\u0626\u06cc: \u0641\u0648\u0646 \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u0648\u0635\u0648\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u0633\u0631\u0648\u0633 \u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u062a\u062d\u0631\u06cc\u0631\u06cc \u0648\u0635\u0641 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0622\u0626\u06cc\u06d2 \u0631\u0627\u0626\u0679 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u067e\u06cc\u0679\u0631\u0646 \u0627\u0648\u0631 \u06cc\u06c1 \u0645\u0632\u06cc\u062f \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0633 \u067e\u0631 \u06af\u06c1\u0631\u06cc \u0646\u0638\u0631 \u0688\u0627\u0644\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06d2 \u0645\u0646\u0638\u0631 \u0646\u0627\u0645\u06d2 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0641\u0648\u0646 \u06a9\u0633\u06cc \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0648 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">struct device_config {\n    uint8_t mode;\n    uint16_t interval_ms;\n    uint8_t threshold;\n} __packed;\n\nstatic struct device_config current_config = {\n    .mode = 0,\n    .interval_ms = 1000,\n    .threshold = 50,\n};\n\nstatic ssize_t write_config(struct bt_conn *conn,\n                            const struct bt_gatt_attr *attr,\n                            const void *buf, uint16_t len,\n                            uint16_t offset, uint8_t flags)\n{\n    if (offset != 0) {\n        return BT_GATT_ERR(BT_ATT_ERR_INVALID_OFFSET);\n    }\n\n    if (len != sizeof(struct device_config)) {\n        return BT_GATT_ERR(BT_ATT_ERR_INVALID_ATTRIBUTE_LEN);\n    }\n\n    memcpy(&current_config, buf, len);\n\n    printk(\"Config updated: mode=%u, interval=%u ms, threshold=%u\\n\",\n           current_config.mode,\n           current_config.interval_ms,\n           current_config.threshold);\n\n    return len;\n}\n\nstatic ssize_t read_config(struct bt_conn *conn,\n                           const struct bt_gatt_attr *attr,\n                           void *buf, uint16_t len, uint16_t offset)\n{\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &current_config, sizeof(current_config));\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>__packed<\/code> \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u06cc \u06c1\u06cc\u06ba \u06a9\u06c1 \u0641\u06cc\u0644\u0688\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u06a9\u0648\u0626\u06cc \u067e\u06cc\u0688\u0646\u06af \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0628\u0627\u0626\u0679 \u0644\u06d2 \u0622\u0624\u0679 \u0627\u0633 \u0633\u06d2 \u0645\u06cc\u0644 \u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0641\u0648\u0646 \u0628\u06be\u06cc\u062c \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0628\u063a\u06cc\u0631 <code>__packed<\/code>\u06a9\u0645\u067e\u0627\u0626\u0644\u0631 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u06cc\u06ba \u067e\u06cc\u0688\u0646\u06af \u0628\u0627\u0626\u0679\u0633 \u0688\u0627\u0644 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 <code>mode<\/code> \u0627\u0648\u0631 <code>interval_ms<\/code> \u0686\u06be\u0627\u0646\u0679\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0679\u0627 \u0645\u0645\u0627\u062b\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0631\u0627\u0626\u0679 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u062f\u0648 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: \u067e\u06c1\u0644\u06d2 \u06c1\u0645 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0622\u0641\u0633\u06cc\u0679 0 \u06c1\u06d2 (\u0627\u0633 \u0633\u0627\u062f\u06c1 \u06a9\u06cc\u0633 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u062c\u0632\u0648\u06cc \u062a\u062d\u0631\u06cc\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2)\u06d4 \u062f\u0648\u0633\u0631\u0627\u060c \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0644\u0645\u0628\u0627\u0626\u06cc \u0645\u062a\u0648\u0642\u0639 \u0633\u0627\u062e\u062a \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u0633\u06d2 \u0645\u0644\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06cc\u0627 \u062a\u0648 \u0686\u06cc\u06a9 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u0627\u06cc\u06a9 GATT \u0627\u06cc\u0631\u0631 \u06a9\u0648\u0688 \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0627\u0633\u06d2 \u062a\u062d\u0631\u06cc\u0631\u06cc \u062c\u0648\u0627\u0628 \u06a9\u06cc \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>BLE \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0627\u0646 \u067e\u0679 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u0628\u06c1\u062a \u0627\u06c1\u0645 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0645\u0631\u06a9\u0632\u06cc \u0688\u06cc\u0648\u0627\u0626\u0633 \u062e\u0627\u0645 \u0628\u0627\u0626\u0679\u0633 \u06a9\u0648 \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062e\u0631\u0627\u0628 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631 \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u060c \u0622\u0646\u06a9\u06be \u0628\u0646\u062f \u06a9\u0631 \u06a9\u06d2 \u0642\u0628\u0648\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>memcpy<\/code> \u062a\u0635\u062f\u06cc\u0642 \u0634\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0688\u06be\u0627\u0646\u0686\u06d2 \u0645\u06cc\u06ba \u06a9\u0627\u067e\u06cc \u06a9\u0631\u06cc\u06ba\u06d4 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba\u060c \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u0627\u0645\u06a9\u0627\u0646 \u06c1\u06d2 \u06a9\u06c1 \u0646\u0626\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u06ba \u06af\u06cc (\u0633\u06cc\u0646\u0633\u0631 \u067e\u0648\u0644\u0646\u06af \u06a9\u06d2 \u0648\u0642\u0641\u0648\u06ba \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627\u060c \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627\u060c \u0648\u063a\u06cc\u0631\u06c1)\u06d4<\/p>\n<p>\u06a9\u06c1 <code>flags<\/code> \u0631\u0627\u0626\u0679 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u06cc\u06c1 \u062c\u0648\u0627\u0628 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u062d\u0631\u06cc\u0631 \u06c1\u06d2 (\u0645\u0631\u06a9\u0632\u06cc \u0627\u0639\u062a\u0631\u0627\u0641 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06c1\u06d2) \u06cc\u0627 \u062c\u0648\u0627\u0628 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u062a\u062d\u0631\u06cc\u0631 \u06c1\u06d2 (\u0641\u0627\u0626\u0631 \u0627\u06cc\u0646\u0688 \u0641\u0631\u062c\u0679)\u06d4 \u0622\u067e \u0686\u06cc\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>flags & BT_GATT_WRITE_FLAG_CMD<\/code> \u062f\u0648\u0646\u0648\u06ba \u0645\u06cc\u06ba \u0641\u0631\u0642 \u06a9\u0631\u0646\u0627\u06d4 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06d2 \u062c\u0648\u0627\u0628 \u0645\u06cc\u06ba \u0644\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0622\u067e \u062c\u0627\u0646 \u0633\u06a9\u06cc\u06ba \u06a9\u06c1 \u062a\u062d\u0631\u06cc\u0631 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u062a\u06be\u06cc\u06d4<\/p>\n<h2 id=\"heading-notifications-pushing-data-to-a-connected-device\">\u0646\u0648\u0679\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646\u0632: \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a \u067e\u0631 \u062f\u06be\u06a9\u06cc\u0644\u06cc\u06ba\u06d4<\/h2>\n<p>\u0688\u06cc\u0645\u0627\u0646\u0688 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u0648 \u067e\u0691\u06be\u06cc\u06ba \u0627\u0648\u0631 \u0644\u06a9\u06be\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0628\u06c1\u062a \u0633\u06d2 BLE \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0631\u06a9\u0632 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u0645\u0627\u0646\u06cc\u0679\u0631 \u0622\u067e \u06a9\u06d2 \u0641\u0648\u0646 \u06a9\u0627 \u06c1\u0631 \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0622\u067e \u06a9\u06d2 \u062f\u0644 \u06a9\u06cc \u062f\u06be\u0691\u06a9\u0646 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0633\u06cc \u062e\u0627\u0635\u06cc\u062a \u0645\u06cc\u06ba \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u0633\u067e\u0648\u0631\u0679 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06cc\u06c1\u0627\u06ba \u06c1\u06d2:<\/p>\n<pre><code class=\"language-c\">static uint8_t sensor_value;\nstatic bool notifications_enabled;\n\nstatic void sensor_ccc_changed(const struct bt_gatt_attr *attr, uint16_t value)\n{\n    notifications_enabled = (value == BT_GATT_CCC_NOTIFY);\n    printk(\"Notifications %s\\n\", notifications_enabled ? \"enabled\" : \"disabled\");\n}\n\nstatic ssize_t read_sensor(struct bt_conn *conn,\n                           const struct bt_gatt_attr *attr,\n                           void *buf, uint16_t len, uint16_t offset)\n{\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &sensor_value, sizeof(sensor_value));\n}\n\nBT_GATT_SERVICE_DEFINE(sensor_service,\n    BT_GATT_PRIMARY_SERVICE(BT_UUID_LED_SERVICE),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_LED_CHAR,\n        BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY,\n        BT_GATT_PERM_READ,\n        read_sensor, NULL, &sensor_value),\n\n    BT_GATT_CCC(sensor_ccc_changed, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),\n);\n<\/code><\/pre>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u06c1\u06d2 <code>BT_GATT_CHRC_NOTIFY<\/code> \u0627\u06cc\u06a9 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u062c\u0648 \u0645\u0646\u0633\u0644\u06a9 \u0645\u0631\u06a9\u0632\u06cc \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>BT_GATT_CCC<\/code> \u0645\u06cc\u06a9\u0631\u0648 \u0627\u06cc\u06a9 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0646\u062a\u0633\u0627\u0628 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0688\u0633\u06a9\u0631\u067e\u0679\u0631 (CCCD) \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>sensor_ccc_changed<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u0633 \u0648\u0642\u062a \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 CCCD \u06a9\u0648 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u06a9\u06be \u06a9\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0637\u0644\u0627\u0639 \u0641\u0639\u0627\u0644 \u06cc\u0627 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631 \u062f\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>value<\/code> \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06c1\u06cc\u06ba\u06d4 <code>BT_GATT_CCC_NOTIFY<\/code> \u06cc\u06c1 (0x0001) \u06c1\u06d2 \u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u060c \u06cc\u0627 0 \u0627\u06af\u0631 \u06cc\u06c1 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0635\u0644 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0627\u0637\u0644\u0627\u0639 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-c\">void send_sensor_notification(void)\n{\n    if (!notifications_enabled) {\n        return;\n    }\n\n    sensor_value = read_actual_sensor();\n\n    int err = bt_gatt_notify(NULL, &sensor_service.attrs[1],\n                             &sensor_value, sizeof(sensor_value));\n    if (err) {\n        printk(\"Notify failed (err %d)\\n\", err);\n    }\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>bt_gatt_notify<\/code> \u06cc\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u0627\u0646 \u062a\u0645\u0627\u0645 \u0645\u0646\u0633\u0644\u06a9 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u0627\u062a \u06a9\u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06be\u06cc\u062c\u062a\u06cc \u06c1\u06d2 \u062c\u0646\u06c1\u0648\u06ba \u0646\u06d2 \u0627\u0633 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u06cc \u062f\u0644\u06cc\u0644 \u06cc\u06c1 \u06c1\u06d2\u06d4 <code>NULL<\/code> \u062a\u0645\u0627\u0645 \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u0645\u0637\u0644\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 (\u0645\u062e\u0635\u0648\u0635 <code>bt_conn<\/code> \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u06a9\u06cc \u0637\u0631\u0641 \u0627\u0634\u0627\u0631\u06c1)\u06d4 \u062f\u0648\u0633\u0631\u06cc \u062f\u0644\u06cc\u0644 GATT \u0679\u06cc\u0628\u0644 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06cc \u0637\u0631\u0641 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>&sensor_service.attrs[1]<\/code> \u067e\u06c1\u0644\u06cc \u0627\u0646\u062a\u0633\u0627\u0628 \u0648\u06cc\u0644\u06cc\u0648 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u06a9\u06cc \u0637\u0631\u0641 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0627\u0646\u0688\u06cc\u06a9\u0633 0 \u0633\u0631\u0648\u0633 \u0688\u06cc\u06a9\u0644\u0631\u06cc\u0634\u0646 \u06c1\u06d2\u060c \u0627\u0646\u0688\u06cc\u06a9\u0633 1 \u0627\u0646\u062a\u0633\u0627\u0628 \u06a9\u0627 \u0627\u0639\u0644\u0627\u0646 \u06c1\u06d2\u060c \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0648\u06cc\u0644\u06cc\u0648)\u06d4 \u062a\u06cc\u0633\u0631\u06d2 \u0627\u0648\u0631 \u0686\u0648\u062a\u06be\u06d2 \u062f\u0644\u0627\u0626\u0644 \u0688\u06cc\u0679\u0627 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u0644\u0645\u0628\u0627\u0626\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0646\u0645\u0648\u0646\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0679\u0627\u0626\u0645\u0631 \u06cc\u0627 \u0679\u0627\u0633\u06a9 \u06a9\u06cc\u0648 \u0633\u06d2 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0648\u0642\u0641\u0648\u06ba \u067e\u0631 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">void sensor_work_handler(struct k_work *work)\n{\n    send_sensor_notification();\n}\n\nK_WORK_DELAYABLE_DEFINE(sensor_work, sensor_work_handler);\n\n\/* In main(), after Bluetooth is initialized and advertising: *\/\nk_work_schedule(&sensor_work, K_SECONDS(1));\n\n\/* In the work handler, reschedule for periodic execution: *\/\nvoid sensor_work_handler(struct k_work *work)\n{\n    send_sensor_notification();\n    k_work_schedule(&sensor_work, K_SECONDS(1));\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0645\u0648\u062e\u0631 \u06a9\u0627\u0645 \u06a9\u06cc \u0627\u0634\u06cc\u0627\u0621 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06c1\u0631 \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u0628\u0627\u0631 \u062c\u0628 \u06cc\u06c1 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u06c1 \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0627\u0637\u0644\u0627\u0639 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2 (\u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0639\u0627\u0644 \u06c1\u06cc\u06ba)\u06d4 \u06a9\u0627\u0645 \u06a9\u06d2 \u0622\u0626\u0679\u0645\u0632 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u06c1 \u06a9\u0633\u06cc \u0631\u06a9\u0627\u0648\u0679 \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0633\u0633\u0679\u0645 \u0648\u0631\u06a9 \u06a9\u06cc\u0648 \u062a\u06be\u0631\u06cc\u0688 \u067e\u0631 \u0686\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>bt_gatt_notify<\/code> \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0628\u0644\u0648\u0679\u0648\u062a\u06be APIs\u06d4<\/p>\n<h2 id=\"heading-building-a-complete-ble-sensor-node\">\u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 BLE \u0633\u06cc\u0646\u0633\u0631 \u0646\u0648\u0688 \u0628\u0646\u0627\u0646\u0627<\/h2>\n<p>\u0627\u0628 \u0622\u0626\u06cc\u06d2 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0628\u0646\u0688\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 BLE \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0633\u06cc\u0646\u0633\u0631 \u06c1\u06d2 \u062c\u0648 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a (\u0646\u0642\u0644\u06cc) \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u067e\u0691\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a GATT \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0646\u06cc\u06a9\u0679 \u0627\u0648\u0631 \u0645\u0646\u0642\u0637\u0639 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>~\/my_ble_apps\/sensor_node\/src\/main.c<\/code>:<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n\n\/* UUIDs *\/\n#define BT_UUID_ENV_SERVICE_VAL \\\n    BT_UUID_128_ENCODE(0xaabbccdd, 0x0000, 0x1000, 0x8000, 0x00805f9b34fb)\n#define BT_UUID_ENV_SERVICE BT_UUID_DECLARE_128(BT_UUID_ENV_SERVICE_VAL)\n\n#define BT_UUID_TEMP_CHAR_VAL \\\n    BT_UUID_128_ENCODE(0xaabbccdd, 0x0001, 0x1000, 0x8000, 0x00805f9b34fb)\n#define BT_UUID_TEMP_CHAR BT_UUID_DECLARE_128(BT_UUID_TEMP_CHAR_VAL)\n\n#define BT_UUID_INTERVAL_CHAR_VAL \\\n    BT_UUID_128_ENCODE(0xaabbccdd, 0x0002, 0x1000, 0x8000, 0x00805f9b34fb)\n#define BT_UUID_INTERVAL_CHAR BT_UUID_DECLARE_128(BT_UUID_INTERVAL_CHAR_VAL)\n\n\/* LED for connection status *\/\n#define LED0_NODE DT_ALIAS(led0)\nstatic const struct gpio_dt_spec status_led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);\n\n\/* Sensor state *\/\nstatic int16_t temperature_value = 2250;\nstatic uint16_t notify_interval_ms = 1000;\nstatic bool temp_notifications_enabled;\nstatic struct bt_conn *current_conn;\n\n\/* Forward declaration *\/\nstatic void sensor_work_handler(struct k_work *work);\nK_WORK_DELAYABLE_DEFINE(sensor_work, sensor_work_handler);\n\nstatic int16_t simulate_temperature(void)\n{\n    static int16_t base = 2250;\n    base += (k_uptime_get_32() % 11) - 5;\n    if (base > 3500) base = 3500;\n    if (base < 1000) base = 1000;\n    return base;\n}\n\n\/* GATT callbacks *\/\nstatic ssize_t read_temperature(struct bt_conn *conn,\n                                const struct bt_gatt_attr *attr,\n                                void *buf, uint16_t len, uint16_t offset)\n{\n    temperature_value = simulate_temperature();\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &#038;temperature_value, sizeof(temperature_value));\n}\n\nstatic void temp_ccc_changed(const struct bt_gatt_attr *attr, uint16_t value)\n{\n    temp_notifications_enabled = (value == BT_GATT_CCC_NOTIFY);\n    printk(\"Temperature notifications %s\\n\",\n           temp_notifications_enabled ? \"enabled\" : \"disabled\");\n\n    if (temp_notifications_enabled) {\n        k_work_schedule(&#038;sensor_work, K_MSEC(notify_interval_ms));\n    } else {\n        k_work_cancel_delayable(&#038;sensor_work);\n    }\n}\n\nstatic ssize_t read_interval(struct bt_conn *conn,\n                             const struct bt_gatt_attr *attr,\n                             void *buf, uint16_t len, uint16_t offset)\n{\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &#038;notify_interval_ms, sizeof(notify_interval_ms));\n}\n\nstatic ssize_t write_interval(struct bt_conn *conn,\n                              const struct bt_gatt_attr *attr,\n                              const void *buf, uint16_t len,\n                              uint16_t offset, uint8_t flags)\n{\n    if (len != sizeof(uint16_t)) {\n        return BT_GATT_ERR(BT_ATT_ERR_INVALID_ATTRIBUTE_LEN);\n    }\n\n    uint16_t new_interval = *((const uint16_t *)buf);\n\n    if (new_interval < 100 || new_interval > 60000) {\n        return BT_GATT_ERR(BT_ATT_ERR_VALUE_NOT_ALLOWED);\n    }\n\n    notify_interval_ms = new_interval;\n    printk(\"Notification interval changed to %u ms\\n\", notify_interval_ms);\n\n    if (temp_notifications_enabled) {\n        k_work_cancel_delayable(&sensor_work);\n        k_work_schedule(&sensor_work, K_MSEC(notify_interval_ms));\n    }\n\n    return len;\n}\n\n\/* GATT service definition *\/\nBT_GATT_SERVICE_DEFINE(env_service,\n    BT_GATT_PRIMARY_SERVICE(BT_UUID_ENV_SERVICE),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_TEMP_CHAR,\n        BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY,\n        BT_GATT_PERM_READ,\n        read_temperature, NULL, NULL),\n    BT_GATT_CCC(temp_ccc_changed,\n        BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_INTERVAL_CHAR,\n        BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE,\n        BT_GATT_PERM_READ | BT_GATT_PERM_WRITE,\n        read_interval, write_interval, NULL),\n);\n\n\/* Notification sender *\/\nstatic void sensor_work_handler(struct k_work *work)\n{\n    temperature_value = simulate_temperature();\n\n    if (temp_notifications_enabled) {\n        int err = bt_gatt_notify(NULL, &env_service.attrs[2],\n                                 &temperature_value,\n                                 sizeof(temperature_value));\n        if (err && err != -ENOTCONN) {\n            printk(\"Notify error: %d\\n\", err);\n        }\n\n        k_work_schedule(&sensor_work, K_MSEC(notify_interval_ms));\n    }\n}\n\n\/* Advertising data *\/\nstatic const struct bt_data ad[] = {\n    BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),\n    BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME,\n            sizeof(CONFIG_BT_DEVICE_NAME) - 1),\n};\n\nstatic const struct bt_data sd[] = {\n    BT_DATA_BYTES(BT_DATA_UUID128_ALL, BT_UUID_ENV_SERVICE_VAL),\n};\n\n\/* Connection callbacks *\/\nstatic void connected(struct bt_conn *conn, uint8_t err)\n{\n    if (err) {\n        printk(\"Connection failed (err %u)\\n\", err);\n        return;\n    }\n\n    current_conn = bt_conn_ref(conn);\n    gpio_pin_set_dt(&status_led, 1);\n\n    char addr[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));\n    printk(\"Connected: %s\\n\", addr);\n}\n\nstatic void disconnected(struct bt_conn *conn, uint8_t reason)\n{\n    char addr[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));\n    printk(\"Disconnected: %s (reason %u)\\n\", addr, reason);\n\n    if (current_conn) {\n        bt_conn_unref(current_conn);\n        current_conn = NULL;\n    }\n\n    temp_notifications_enabled = false;\n    k_work_cancel_delayable(&sensor_work);\n    gpio_pin_set_dt(&status_led, 0);\n\n    bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));\n}\n\nBT_CONN_CB_DEFINE(conn_callbacks) = {\n    .connected = connected,\n    .disconnected = disconnected,\n};\n\nint main(void)\n{\n    int err;\n\n    if (!gpio_is_ready_dt(&status_led)) {\n        printk(\"LED not ready\\n\");\n        return 0;\n    }\n    gpio_pin_configure_dt(&status_led, GPIO_OUTPUT_INACTIVE);\n\n    err = bt_enable(NULL);\n    if (err) {\n        printk(\"Bluetooth init failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Bluetooth initialized\\n\");\n\n    err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad),\n                          sd, ARRAY_SIZE(sd));\n    if (err) {\n        printk(\"Advertising failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Environmental sensor ready. Advertising as '%s'\\n\",\n           CONFIG_BT_DEVICE_NAME);\n\n    return 0;\n}\n<\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/code><\/pre>\n<p>\u06a9\u06c1 <code>prj.conf<\/code> \u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_PERIPHERAL=y\nCONFIG_BT_DEVICE_NAME=\"Zephyr Sensor\"\nCONFIG_BT_GATT_DYNAMIC_DB=y\nCONFIG_GPIO=y\nCONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 BLE \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u062f\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0627 \u0628\u063a\u0648\u0631 \u0645\u0637\u0627\u0644\u0639\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0633\u0631\u0648\u0633 \u062f\u0648 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2: \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u067e\u0691\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u0639\u0627\u0648\u0646\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u0627\u0633\u06d2 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633\u06d2 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u0646\u0642\u0644\u06cc \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u0645\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u0622\u067e \u0633\u0646\u0679\u0631\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 \u067e\u0631 \u0646\u0648\u0679\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0642\u0627\u0628\u0644 \u062a\u0631\u062a\u06cc\u0628 \u0648\u0642\u0641\u0648\u06ba \u067e\u0631 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u06a9\u06cc \u0627\u067e \u0688\u06cc\u0679\u0633 \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u062f\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u0648\u0642\u0641\u06c1 \u06a9\u0627 \u0648\u0635\u0641 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 100ms \u0627\u0648\u0631 60000ms \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0648\u0642\u0641\u0648\u06ba \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0635\u062f\u06cc\u0642 \u06c1\u06d2\u06d4 <code>write_interval<\/code> \u0627\u0633 \u062d\u062f \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u06cc \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>BT_ATT_ERR_VALUE_NOT_ALLOWED<\/code>\u0645\u0631\u06a9\u0632\u06cc \u0633\u0631\u0648\u0631 \u0627\u0633\u06d2 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u062c\u0648\u0627\u0628 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u06a9\u06cc \u0642\u062f\u0631\u06cc\u06ba \u062f\u0631\u062c \u0630\u06cc\u0644 \u06c1\u06cc\u06ba: <code>int16_t<\/code> \u0688\u06af\u0631\u06cc \u0633\u06cc\u0644\u0633\u06cc\u0633 \u06a9\u0627 \u0633\u0648\u0648\u0627\u06ba \u062d\u0635\u06c1 (2250 = 22.50C)\u06d4 \u06cc\u06c1 \u0641\u06a9\u0633\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc FPU \u06a9\u06d2 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632 \u0645\u06cc\u06ba \u0645\u06c1\u0646\u06af\u06d2 \u0641\u0644\u0648\u0679\u0646\u06af \u067e\u0648\u0627\u0626\u0646\u0679 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u0648 \u0628\u0627\u0626\u0679 \u0648\u06cc\u0644\u06cc\u0648\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be 0.01 \u0688\u06af\u0631\u06cc \u0631\u06cc\u0632\u0648\u0644\u0648\u0634\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u067e\u0648\u0631\u06d2 \u06a9\u0646\u06a9\u0634\u0646 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0627 \u0646\u0638\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u0646\u06d2 \u067e\u0631\u060c \u06a9\u0648\u0688 \u06a9\u0646\u06a9\u0634\u0646 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u067e\u0631 \u0648\u0627\u067e\u0633 \u0622\u062c\u0627\u062a\u0627 \u06c1\u06d2 (<code>bt_conn_ref<\/code>) \u0633\u0679\u06cc\u0679\u0633 \u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u0631\u0648\u0634\u0646 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u062a\u0648 \u062f\u06cc\u06a9\u06be\u06cc\u06ba (<code>bt_conn_unref<\/code>) \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0632\u06cc\u0631 \u0627\u0644\u062a\u0648\u0627\u0621 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u06cc\u06ba\u060c \u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u062d\u0648\u0627\u0644\u06c1 \u0634\u0645\u0627\u0631 \u06a9\u06cc\u0648\u06ba \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 <code>bt_conn<\/code> \u0627\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679\u0631 \u0635\u0631\u0641 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u062f\u0631\u0633\u062a \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u0633 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u06c1\u0648\u06d4 \u0688\u06cc\u0631\u06cc\u0641\u0631\u0646\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u063a\u06cc\u0631 \u0645\u062a\u0639\u06cc\u0646\u06c1 \u0633\u0644\u0648\u06a9 \u06a9\u0627 \u0646\u062a\u06cc\u062c\u06c1 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<p>\u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u0648\u0631\u06a9 \u0622\u0626\u0679\u0645\u0632 \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u0634\u062f\u06c1 \u0648\u0642\u0641\u0648\u06ba \u067e\u0631 \u0631\u06cc \u0634\u06cc\u0688\u0648\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u06cc\u06a9 \u0645\u062a\u0648\u0627\u062a\u0631 \u0644\u0648\u067e \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0637\u0644\u0627\u0639 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u06d2 (\u06cc\u0627 \u062a\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0645\u0631\u06a9\u0632\u06cc \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u06cc\u0627 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0645\u0646\u0642\u0637\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2)\u060c \u0622\u067e\u0631\u06cc\u0634\u0646 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u06cc \u067e\u06cc \u06cc\u0648 \u0633\u0627\u0626\u06cc\u06a9\u0644 (\u0627\u0648\u0631 \u0628\u06cc\u0679\u0631\u06cc) \u06a9\u0648 \u0636\u0627\u0626\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u0627\u0626\u06d2 \u06af\u0627 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u0633\u0646 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-pairing-and-security\">\u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u0627 \u0627\u0648\u0631 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc<\/h2>\n<p>\u067e\u0631\u0648\u0688\u06a9\u0634\u0646 BLE \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u0648 \u062a\u0642\u0631\u06cc\u0628\u0627 \u06c1\u0645\u06cc\u0634\u06c1 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0631\u06cc\u0646\u062c \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0688\u06cc\u0648\u0627\u0626\u0633 GATT \u0633\u0631\u0648\u0633 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u0627 \u0627\u06cc\u06a9 \u0627\u0646\u06a9\u0631\u067e\u0679\u0688 \u0644\u0646\u06a9 \u0642\u0627\u0626\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0622\u0644\u0627\u062a \u06a9\u0648 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u0633\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>BLE \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u06a9\u0626\u06cc \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 &quot;\u062c\u0633\u0679 \u0648\u0631\u06a9\u0633&#8221; \u0627\u0646\u06a9\u0631\u067e\u0634\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u06a9\u0648\u0626\u06cc \u062a\u0635\u062f\u06cc\u0642 \u0646\u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u0642\u06cc\u0627\u0633 \u0622\u0631\u0627\u0626\u06cc\u0648\u06ba \u0633\u06d2 \u0628\u0686\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0645\u062a\u062d\u0631\u06a9 \u062d\u0645\u0644\u0648\u06ba \u0633\u06d2 \u0646\u06c1\u06cc\u06ba\u06d4 &quot;Enter Passkey&#8221; \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 6 \u06c1\u0646\u062f\u0633\u0648\u06ba \u06a9\u0627 \u06a9\u0648\u0688 \u062f\u0631\u062c \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 &quot;\u0646\u0645\u0628\u0631\u0648\u06ba \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u06cc\u06ba&#8221; \u062f\u0648\u0646\u0648\u06ba \u0622\u0644\u0627\u062a \u067e\u0631 \u0646\u0645\u0628\u0631 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0646\u0645\u0628\u0631 \u0645\u0645\u0627\u062b\u0644 \u06c1\u06cc\u06ba\u06d4 &quot;\u0622\u0624\u0679 \u0622\u0641 \u0628\u06cc\u0646\u0688&#8221; \u062c\u0648\u0691\u06cc \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06d2 \u062a\u0628\u0627\u062f\u0644\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0686\u06cc\u0646\u0644\u0632 (\u062c\u06cc\u0633\u06d2 NFC) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u067e\u0646\u06cc \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT_SMP=y\nCONFIG_BT_SETTINGS=y\nCONFIG_FLASH=y\nCONFIG_FLASH_MAP=y\nCONFIG_NVS=y\nCONFIG_SETTINGS=y\n<\/code><\/pre>\n<p><code>CONFIG_BT_SMP=y<\/code>    \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0645\u06cc\u0646\u06cc\u062c\u0631 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0633\u06cc\u0679\u0646\u06af\u0632\u060c \u0641\u0644\u06cc\u0634\u060c \u0627\u0648\u0631 NVS \u0622\u067e\u0634\u0646\u0632 \u0645\u0633\u062a\u0642\u0644 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u0627\u0646\u0641\u0627\u0631\u0645\u06cc\u0634\u0646 (\u062c\u0648\u0691\u06cc \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06a9\u06cc\u0632 \u06a9\u0627 \u062a\u0628\u0627\u062f\u0644\u06c1) \u0631\u06cc\u0628\u0648\u0679\u0633 \u067e\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06c1\u06d2\u06d4 \u0645\u0633\u062a\u0642\u0644 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06d2 \u0628\u063a\u06cc\u0631\u060c \u0622\u0644\u0627\u062a \u06a9\u0648 \u06c1\u0631 \u0628\u0627\u0631 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u0686\u0644\u0627\u0646\u06d2 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u0627 \u067e\u0691\u06d2 \u06af\u0627\u060c \u062c\u0648 \u06a9\u06c1 \u0635\u0627\u0631\u0641 \u06a9\u0627 \u0627\u06cc\u06a9 \u062e\u0648\u0641\u0646\u0627\u06a9 \u062a\u062c\u0631\u0628\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u062a\u0633\u0627\u0628 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0641\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">BT_GATT_CHARACTERISTIC(BT_UUID_TEMP_CHAR,\n    BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY,\n    BT_GATT_PERM_READ_ENCRYPT,\n    read_temperature, NULL, NULL),\n<\/code><\/pre>\n<p><code>BT_GATT_PERM_READ_ENCRYPT<\/code>    \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc\u0632 \u06a9\u0648 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0627\u0646\u06a9\u0631\u067e\u0679\u0688 \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0631 \u067e\u0691\u06be\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u06c1 \u067e\u06c1\u0644\u06d2 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633\u0679\u06cc\u06a9 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062c\u0648\u0691\u06cc \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u0628\u06be\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba <code>BT_GATT_PERM_READ_AUTHEN<\/code> \u062a\u0635\u062f\u06cc\u0642 \u0634\u062f\u06c1 \u062c\u0648\u0691\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 (\u062e\u0641\u06cc\u06c1 \u0686\u0627\u0628\u06cc\u0627\u06ba \u06cc\u0627 \u0646\u0645\u0628\u0631\u0648\u06ba \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u0646\u0627\u060c \u0646\u06c1 \u06a9\u06c1 \u0635\u0631\u0641 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2)\u06d4<\/p>\n<p>\u062e\u0641\u06cc\u06c1 \u06a9\u0644\u06cc\u062f \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u0646\u06d2 \u06cc\u0627 \u062f\u0627\u062e\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062a\u0635\u062f\u06cc\u0642\u06cc \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey)\n{\n    char addr[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));\n    printk(\"Passkey for %s: %06u\\n\", addr, passkey);\n}\n\nstatic void auth_cancel(struct bt_conn *conn)\n{\n    char addr[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));\n    printk(\"Pairing cancelled: %s\\n\", addr);\n}\n\nstatic struct bt_conn_auth_cb auth_callbacks = {\n    .passkey_display = auth_passkey_display,\n    .cancel = auth_cancel,\n};\n\n\/* In main(), after bt_enable(): *\/\nbt_conn_auth_cb_register(&auth_callbacks);\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>passkey_display<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u0633 \u0648\u0642\u062a \u0627\u0646\u062c\u0627\u0645 \u067e\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0627\u0633\u0679\u06cc\u06a9 \u0627\u06cc\u06a9 \u067e\u0627\u0633\u06a9\u06cc \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 (\u0641\u0648\u0646 \u067e\u0631) \u062f\u0627\u062e\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4 \u0688\u0633\u067e\u0644\u06d2 \u0648\u0627\u0644\u06d2 \u0622\u0644\u0627\u062a \u067e\u0631\u060c \u067e\u0627\u0633 \u06a9\u06cc \u0633\u06a9\u0631\u06cc\u0646 \u067e\u0631 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 (\u0645\u062b\u0644\u0627\u064b \u0633\u06cc\u0646\u0633\u0631)\u060c \u0622\u067e \u0688\u06cc\u0648\u0644\u067e\u0645\u0646\u0679 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0633\u06cc\u0631\u06cc\u0644 \u06a9\u0646\u0633\u0648\u0644 \u067e\u0631 \u067e\u0631\u0646\u0679 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0645\u06cc\u06ba Just Works \u067e\u06cc\u0626\u0631\u0646\u06af \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <code>bt_conn_auth_cb_register<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0627\u0646 \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u06a9\u0648 \u0627\u0633\u0679\u06cc\u06a9 \u067e\u0631 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0648\u0642\u062a \u0645\u06cc\u06ba \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u06a9\u0627 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0633\u06cc\u0679 \u0641\u0639\u0627\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-implementing-a-standard-ble-profile-heart-rate\">\u0645\u0639\u06cc\u0627\u0631\u06cc BLE \u067e\u0631\u0648\u0641\u0627\u0626\u0644 (\u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d) \u06a9\u0627 \u0646\u0641\u0627\u0630<\/h2>\n<p>\u0627\u0628 \u062a\u06a9 \u06a9\u06cc \u0645\u062b\u0627\u0644\u0648\u06ba \u0645\u06cc\u06ba \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a 128 \u0628\u0679 UUID \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba\u060c \u0628\u06c1\u062a \u0633\u06d2 BLE \u0622\u0644\u0627\u062a \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 16 \u0628\u0679 UUID \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06cc\u06c1 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u062c\u06af\u06c1 \u06a9\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0639\u0627\u0645 \u0627\u06cc\u067e\u0633 (\u062c\u06cc\u0633\u06d2 nRF \u06a9\u0646\u06cc\u06a9\u0679) \u06a9\u0648 \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0627\u0646\u0633\u0627\u0646\u06cc \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u0627 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 Zephyr \u0645\u06cc\u06ba \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u062e\u062f\u0645\u062a (UUID 0x180D) \u0645\u06cc\u06ba \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a (UUID 0x2A37) \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u062c\u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0628\u0627\u0626\u0679 \u0641\u0627\u0631\u0645\u06cc\u0679 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u06c1\u0644\u0627 \u0628\u0627\u0626\u0679 \u0641\u0644\u06cc\u06af \u0641\u06cc\u0644\u0688 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0642\u06cc\u06c1 \u0628\u0627\u0626\u0679\u0633 \u0645\u06cc\u06ba \u06c1\u0627\u0631\u0679 \u0631\u06cc\u0679 \u0648\u06cc\u0644\u06cc\u0648 \u0627\u0648\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0641\u06cc\u0644\u0688\u0632 \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u062a\u0648\u0627\u0646\u0627\u0626\u06cc \u06a9\u06cc \u06a9\u06be\u067e\u062a \u0627\u0648\u0631 RR \u0648\u0642\u0641\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n\nstatic uint8_t heart_rate_bpm = 72;\nstatic bool hr_notifications_enabled;\n\nstatic void hr_ccc_changed(const struct bt_gatt_attr *attr, uint16_t value)\n{\n    hr_notifications_enabled = (value == BT_GATT_CCC_NOTIFY);\n}\n\nstatic ssize_t read_body_sensor_location(struct bt_conn *conn,\n                                         const struct bt_gatt_attr *attr,\n                                         void *buf, uint16_t len,\n                                         uint16_t offset)\n{\n    uint8_t location = 0x01; \/* Chest *\/\n    return bt_gatt_attr_read(conn, attr, buf, len, offset,\n                             &location, sizeof(location));\n}\n\nBT_GATT_SERVICE_DEFINE(hr_service,\n    BT_GATT_PRIMARY_SERVICE(BT_UUID_HRS),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_HRS_MEASUREMENT,\n        BT_GATT_CHRC_NOTIFY,\n        BT_GATT_PERM_NONE,\n        NULL, NULL, NULL),\n    BT_GATT_CCC(hr_ccc_changed,\n        BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),\n\n    BT_GATT_CHARACTERISTIC(BT_UUID_HRS_BODY_SENSOR,\n        BT_GATT_CHRC_READ,\n        BT_GATT_PERM_READ,\n        read_body_sensor_location, NULL, NULL),\n);\n\nstatic void send_heart_rate(void)\n{\n    if (!hr_notifications_enabled) {\n        return;\n    }\n\n    uint8_t hr_data[2];\n    hr_data[0] = 0x00; \/* Flags: uint8 format, no extra fields *\/\n    hr_data[1] = heart_rate_bpm;\n\n    bt_gatt_notify(NULL, &hr_service.attrs[1], hr_data, sizeof(hr_data));\n}\n<\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0648\u0688 Zephyr \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 UUID \u0645\u06cc\u06a9\u0631\u0648 (<code>BT_UUID_HRS<\/code>\u060c <code>BT_UUID_HRS_MEASUREMENT<\/code>\u060c <code>BT_UUID_HRS_BODY_SENSOR<\/code>) \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a 128 \u0628\u0679 UUID \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 Zephyr \u062a\u0645\u0627\u0645 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u06a9\u0631\u0648 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>zephyr\/bluetooth\/uuid.h<\/code>. \u0627\u0646 \u0645\u0639\u06cc\u0627\u0631\u06cc UUIDs \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0641\u0648\u0646 \u067e\u0631 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc BLE \u06c1\u0627\u0631\u0679 \u0631\u06cc\u0679 \u0627\u06cc\u067e \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0627\u06cc\u067e \u0688\u06cc\u0648\u0644\u067e\u0645\u0646\u0679 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0622\u067e \u06a9\u06d2 \u0622\u0644\u06d2 \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a\u060c \u06a9\u0646\u06cc\u06a9\u0679 \u0627\u0648\u0631 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba: <code>BT_GATT_PERM_NONE<\/code> \u0627\u062c\u0627\u0632\u062a \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0635\u0631\u0641 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u06d2\u06d4 \u067e\u0691\u06be\u0646\u06d2 \u06cc\u0627 \u0644\u06a9\u06be\u0646\u06d2 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0688\u06cc\u0679\u0627 \u0635\u0631\u0641 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u06c1\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u067e\u06d2 \u0644\u0648\u0688 \u06a9\u0627 \u067e\u06c1\u0644\u0627 \u0628\u0627\u0626\u0679 (<code>hr_data[0]<\/code>) \u0627\u06cc\u06a9 \u0641\u0644\u06cc\u06af \u0641\u06cc\u0644\u0688 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a SIG \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0645\u06cc\u06ba \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06d2\u06d4 0x00 \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0644 \u06a9\u06cc \u062f\u06be\u0691\u06a9\u0646 uint8 \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba \u06c1\u06d2 (\u0642\u062f\u0631\u06cc\u06ba 0 \u0633\u06d2 255 BPM) \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0633\u0644\u06cc\u06a9\u0634\u0646 \u0641\u06cc\u0644\u0688 \u06a9\u06d2\u06d4 \u0627\u06af\u0631 \u062f\u0644 \u06a9\u06cc \u062f\u06be\u0691\u06a9\u0646 255 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u062a\u0648 \u0628\u0679 0 \u0633\u06cc\u0679 \u06a9\u0631\u0646\u0627 uint16 \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06d2 \u0628\u0679 \u06a9\u0648 \u0633\u06cc\u0679 \u06a9\u0631\u0646\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0634\u062f\u06c1 \u062a\u0648\u0627\u0646\u0627\u0626\u06cc \u06cc\u0627 RR \u0648\u0642\u0641\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06af\u06cc \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0627\u0688\u06cc \u0633\u06cc\u0646\u0633\u0631 \u0644\u0648\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062a\u0633\u0627\u0628 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u0635\u0631\u0641 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u0642\u062f\u0631 \u06c1\u06d2\u06d4 \u0642\u062f\u0631 0x01 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 &quot;\u0686\u06be\u0627\u062a\u06cc&#8221;\u06d4 \u062f\u06cc\u06af\u0631 \u0645\u062a\u0639\u06cc\u0646 \u0627\u0642\u062f\u0627\u0631 \u0645\u06cc\u06ba 0x00 (\u062f\u06cc\u06af\u0631)\u060c 0x02 (\u06a9\u0644\u0627\u0626\u06cc)\u060c 0x03 (\u0627\u0646\u06af\u0644\u06cc)\u060c 0x04 (\u06c1\u0627\u062a\u06be)\u060c 0x05 (\u067e\u06cc\u0627\u0631\u0627)\u060c \u0627\u0648\u0631 0x06 (\u067e\u0627\u0624\u06ba) \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u06c1 <code>prj.conf<\/code> \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0628\u0646\u06cc\u0627\u062f\u06cc \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0633\u06cc\u0679\u0646\u06af\u0632 \u0633\u06d2 \u0622\u06af\u06d2 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_PERIPHERAL=y\nCONFIG_BT_DEVICE_NAME=\"Zephyr HR\"\n<\/code><\/pre>\n<p>\u0645\u0639\u06cc\u0627\u0631\u06cc UUIDs \u06a9\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0635\u0648\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2: <code>CONFIG_BT=y<\/code> \u06cc\u06c1 \u0645\u0642\u0631\u0631 \u06c1\u06d2. SIG \u0633\u06d2 \u0645\u062a\u0639\u06cc\u0646 \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u0627\u0646\u062a\u0633\u0627\u0628 UUIDs \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0633\u06cc \u0627\u0636\u0627\u0641\u06cc Kconfig \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u067e\u06cc\u06a9\u0679 \u0645\u06cc\u06ba 16 \u0628\u0679 \u0633\u0631\u0648\u0633 UUID \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u06d2 \u0641\u0648\u0646 \u06a9\u0648 \u0633\u0631\u0648\u0633 \u06a9\u06cc \u0642\u0633\u0645 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0648 \u0641\u0644\u0679\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">static const struct bt_data ad[] = {\n    BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),\n    BT_DATA_BYTES(BT_DATA_UUID16_ALL, BT_UUID_16_ENCODE(0x180D)),\n    BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME,\n            sizeof(CONFIG_BT_DEVICE_NAME) - 1),\n};\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>BT_DATA_UUID16_ALL<\/code> type 16-bit \u0633\u0631\u0648\u0633 UUIDs \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u0641\u06c1\u0631\u0633\u062a \u06a9\u0627 \u0627\u0634\u062a\u06c1\u0627\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>BT_UUID_16_ENCODE(0x180D)<\/code> \u0645\u06cc\u06a9\u0631\u0648 \u06c1\u0627\u0631\u0679 \u0631\u06cc\u0679 \u0633\u0631\u0648\u0633 UUID \u06a9\u0648 \u0644\u0679\u0644 \u0627\u06cc\u0646\u0688\u06cc\u0646 \u0628\u0627\u0626\u0679 \u0622\u0631\u0688\u0631 \u0645\u06cc\u06ba \u0627\u0646\u06a9\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 16-\u0628\u0679 UUID \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u067e\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0635\u0631\u0641 2 \u0628\u0627\u0626\u0679\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (128-\u0628\u0679 UUID \u06a9\u06d2 \u0644\u06cc\u06d2 16 \u0628\u0627\u0626\u0679\u0633)\u060c \u062f\u0648\u0633\u0631\u06d2 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u06af\u0646\u062c\u0627\u0626\u0634 \u0686\u06be\u0648\u0691\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0641\u0627\u0626\u062f\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-building-a-ble-central\">BLE \u0633\u06cc\u0646\u0679\u0631\u0644 \u06a9\u06cc \u0639\u0645\u0627\u0631\u062a<\/h2>\n<p>\u0627\u0628 \u062a\u06a9 \u06a9\u06cc \u062a\u0645\u0627\u0645 \u0645\u062b\u0627\u0644\u0648\u06ba \u0646\u06d2 \u0627\u06cc\u06a9 \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633 (\u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0622\u0644\u06c1 \u062c\u0648 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u062a\u0634\u06c1\u06cc\u0631 \u0627\u0648\u0631 \u0642\u0628\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2) \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2\u06d4 BLE \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u062f\u0648\u0633\u0631\u0627 \u0631\u062e \u0645\u0631\u06a9\u0632 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0622\u0644\u06c1 \u062c\u0648 \u0642\u0631\u06cc\u0628\u06cc \u0622\u0644\u0627\u062a \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0646\u06a9\u0634\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u0627\u0648\u0631 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06af\u06cc\u0679 \u0648\u06cc\u0632\u060c \u062d\u0628\u060c \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0627\u06a9\u0679\u06be\u0627 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0631\u06a9\u0632\u06cc \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>Zephyr \u067e\u0631 \u0633\u0646\u0679\u0631\u0644 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0633\u0631\u06d2 \u0628\u0648\u0631\u0688 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 BLE \u0633\u0633\u0679\u0645 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0631\u06a9\u0632\u06cc \u06a9\u0631\u062f\u0627\u0631 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>prj.conf<\/code> \u0645\u0631\u06a9\u0632\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_CENTRAL=y\nCONFIG_BT_GATT_CLIENT=y\nCONFIG_BT_SCAN=y\nCONFIG_BT_DEVICE_NAME=\"Zephyr Central\"\n<\/code><\/pre>\n<p><code>CONFIG_BT_CENTRAL=y<\/code>    \u0645\u0631\u06a9\u0632\u06cc \u06a9\u0631\u062f\u0627\u0631 \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0627\u0633\u06a9\u06cc\u0646 \u0627\u0648\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627)\u06d4 <code>CONFIG_BT_GATT_CLIENT=y<\/code> \u0633\u0631\u0648\u0633 \u06a9\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u060c \u067e\u0691\u06be\u0646\u06d2\u060c \u0644\u06a9\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 GATT \u06a9\u0644\u0627\u0626\u0646\u0679 API \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_BT_SCAN=y<\/code> \u0641\u0644\u0679\u0631\u0646\u06af \u0627\u0633\u06a9\u06cc\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0639\u0644\u06cc \u0633\u0637\u062d\u06cc \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af APIs \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>BLE \u0633\u0646\u0679\u0631\u0644 \u0642\u0631\u06cc\u0628\u06cc \u0622\u0644\u0627\u062a \u06a9\u06cc \u062a\u0644\u0627\u0634 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n#include <zephyr>\n\nstatic struct bt_conn *default_conn;\n\nstatic void device_found(const bt_addr_le_t *addr, int8_t rssi,\n                          uint8_t type, struct net_buf_simple *ad)\n{\n    char addr_str[BT_ADDR_LE_STR_LEN];\n    bt_addr_le_to_str(addr, addr_str, sizeof(addr_str));\n\n    if (rssi < -70) {\n        return; \/* Skip distant devices *\/\n    }\n\n    printk(\"Found device: %s (RSSI %d)\\n\", addr_str, rssi);\n\n    \/* Stop scanning before connecting *\/\n    bt_le_scan_stop();\n\n    int err = bt_conn_le_create(addr, BT_CONN_LE_CREATE_CONN,\n                                BT_LE_CONN_PARAM_DEFAULT,\n                                &#038;default_conn);\n    if (err) {\n        printk(\"Connection failed (err %d)\\n\", err);\n        bt_le_scan_start(BT_LE_SCAN_ACTIVE, device_found);\n    }\n}\n\nint main(void)\n{\n    int err;\n\n    err = bt_enable(NULL);\n    if (err) {\n        printk(\"Bluetooth init failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    printk(\"Starting BLE scan...\\n\");\n\n    err = bt_le_scan_start(BT_LE_SCAN_ACTIVE, device_found);\n    if (err) {\n        printk(\"Scan failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    return 0;\n}\n<\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/zephyr><\/code><\/pre>\n<p>\u06a9\u06c1 <code>bt_le_scan_start<\/code> \u0641\u0646\u06a9\u0634\u0646 BLE \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06cc \u062a\u0644\u0627\u0634 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u06c1\u0644\u0627 \u062f\u0639\u0648\u06cc\u0670 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 <code>BT_LE_SCAN_ACTIVE<\/code>\u0641\u0639\u0627\u0644 \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u0639\u0646\u06cc\u060c \u0633\u06a9\u06cc\u0646\u0631 \u062a\u0644\u0627\u0634 \u06a9\u06d2 \u062c\u0648\u0627\u0628 \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0634\u062a\u06c1\u0631 \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627 \u067e\u06cc\u06a9\u0679 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2 (\u0627\u0633\u06d2 \u0635\u0631\u0641 \u062f\u0633\u062a\u06cc \u062a\u0644\u0627\u0634\u06cc\u06ba \u0645\u0644\u062a\u06cc \u06c1\u06cc\u06ba)\u06d4 \u062f\u0648\u0633\u0631\u06cc \u062f\u0644\u06cc\u0644 \u0627\u06cc\u06a9 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u06c1\u06d2 \u062c\u0633\u06d2 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06c1\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u067e\u06cc\u06a9\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u06a9\u06c1 <code>device_found<\/code> \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0645\u0634\u062a\u06c1\u0631 \u06a9\u0627 \u067e\u062a\u06c1\u060c RSSI (dBm \u0645\u06cc\u06ba \u0633\u06af\u0646\u0644 \u06a9\u06cc \u0637\u0627\u0642\u062a)\u060c \u0627\u0634\u062a\u06c1\u0627\u0631 \u06a9\u06cc \u0642\u0633\u0645\u060c \u0627\u0648\u0631 \u062e\u0627\u0645 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627 \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba\u060c \u06a9\u0648\u0688 RSSI \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0644\u0679\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062f\u0648\u0631 \u062f\u0631\u0627\u0632 \u06a9\u06d2 \u0622\u0644\u0627\u062a \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0633\u06d2 \u0645\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u067e\u06c1\u0644\u06d2 \u0622\u0644\u06d2 \u0633\u06d2 \u062c\u0691\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>bt_le_scan_stop<\/code> \u0631\u06cc\u0688\u06cc\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u0627\u0633\u06a9\u06cc\u0646 \u0627\u0648\u0631 \u06a9\u0646\u06cc\u06a9\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u0627\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06a9\u0646\u06a9\u0634\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u06cc\u06a9 \u06a9\u0627\u0644 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>bt_conn_le_create<\/code> \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0646\u06a9\u0634\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0646\u0632\u0644 \u06a9\u0627 \u067e\u062a\u06c1\u060c \u062a\u062e\u0644\u06cc\u0642 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 (\u062c\u0648 \u06a9\u0646\u06a9\u0634\u0646 \u0633\u06cc\u0679 \u0627\u067e \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u0631\u0686 \u0628\u0627\u0631 \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba)\u060c \u06a9\u0646\u06a9\u0634\u0646 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 (\u0648\u0642\u0641\u06c1\u060c \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0627 \u0648\u0642\u062a\u060c \u0679\u0627\u0626\u0645 \u0622\u0624\u0679)\u060c \u0627\u0648\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 <code>BT_LE_CONN_PARAM_DEFAULT<\/code> \u0688\u06cc\u0641\u0627\u0644\u0679 \u06a9\u0646\u06a9\u0634\u0646 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0632\u0648\u06ba \u06c1\u0648\u06ba\u06d4<\/p>\n<p>\u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba\u060c \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u0641\u0644\u0679\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0634\u062a\u06c1\u0631 \u0633\u0631\u0648\u0633 UUID \u06cc\u0627 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0646\u0627\u0645 \u0686\u06cc\u06a9 \u06a9\u0631\u06a9\u06d2\u06d4 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06cc\u06c1 GATT \u0633\u0631\u0648\u0633 \u06a9\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06be\u0631 \u0635\u0641\u0627\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627\/\u0644\u06a9\u06be\u062a\u0627\/\u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">static uint8_t discover_func(struct bt_conn *conn,\n                              const struct bt_gatt_attr *attr,\n                              struct bt_gatt_discover_params *params)\n{\n    if (!attr) {\n        printk(\"Discovery complete\\n\");\n        return BT_GATT_ITER_STOP;\n    }\n\n    char uuid_str[BT_UUID_STR_LEN];\n    bt_uuid_to_str(params->uuid, uuid_str, sizeof(uuid_str));\n    printk(\"Discovered attribute: handle %u, UUID %s\\n\",\n           attr->handle, uuid_str);\n\n    return BT_GATT_ITER_CONTINUE;\n}\n\nstatic struct bt_gatt_discover_params discover_params;\n\nstatic void start_discovery(struct bt_conn *conn)\n{\n    discover_params.uuid = NULL; \/* Discover all services *\/\n    discover_params.func = discover_func;\n    discover_params.start_handle = BT_ATT_FIRST_ATTRIBUTE_HANDLE;\n    discover_params.end_handle = BT_ATT_LAST_ATTRIBUTE_HANDLE;\n    discover_params.type = BT_GATT_DISCOVER_PRIMARY;\n\n    int err = bt_gatt_discover(conn, &discover_params);\n    if (err) {\n        printk(\"Discovery failed (err %d)\\n\", err);\n    }\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>bt_gatt_discover<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0645\u0646\u0633\u0644\u06a9 \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u067e\u0631 GATT \u062e\u062f\u0645\u0627\u062a \u06a9\u06cc \u062a\u0644\u0627\u0634 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>discover_params<\/code> \u0633\u0627\u062e\u062a \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: \u062a\u0631\u062a\u06cc\u0628\u0627\u062a <code>uuid<\/code> NULL \u067e\u0631 \u0633\u06cc\u0679 \u06c1\u0648\u0646\u06d2 \u067e\u0631\u060c \u062a\u0645\u0627\u0645 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0633\u0631\u0648\u0633\u0632 \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0645\u0627\u062d\u0648\u0644 <code>type<\/code> \u06a9\u0648 <code>BT_GATT_DISCOVER_PRIMARY<\/code> \u06a9\u0644\u06cc\u062f\u06cc \u062e\u062f\u0645\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u06cc\u06ba\u06d4 \u0622\u067e \u0627\u0633\u06d2 \u0627\u0633 \u067e\u0631 \u0628\u06be\u06cc \u0633\u06cc\u0679 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>BT_GATT_DISCOVER_CHARACTERISTIC<\/code> \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u06cc\u06ba\u061b <code>BT_GATT_DISCOVER_DESCRIPTOR<\/code> \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0648\u0636\u0627\u062d\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba (<code>discover_func<\/code>) \u067e\u0627\u0626\u06cc \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06c1\u0631 \u062c\u0627\u0626\u06cc\u062f\u0627\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u06c1\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0645\u0632\u06cc\u062f \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631: <code>attr<\/code> \u062a\u0644\u0627\u0634 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631 NULL \u067e\u0631 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 \u0648\u0627\u067e\u0633\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0645\u06cc\u06ba <code>BT_GATT_ITER_CONTINUE<\/code> \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u062a\u0644\u0627\u0634 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u0627\u067e\u0633\u06cc \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u0645\u06cc\u06ba <code>BT_GATT_ITER_STOP<\/code> \u062a\u0644\u0627\u0634 \u062c\u0644\u062f \u0628\u0646\u062f \u06a9\u0631\u0648\u06d4<\/p>\n<p>\u0633\u0631\u0648\u0633 \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06d2 \u0628\u0639\u062f\u060c \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u067e\u0691\u06be\u06cc\u06ba: <code>bt_gatt_read<\/code> \u06cc\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0648 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631\u06cc\u06ba: <code>bt_gatt_subscribe<\/code>. \u0633\u0628\u0633\u06a9\u0631\u067e\u0634\u0646 \u0641\u0646\u06a9\u0634\u0646 \u06c1\u06d2\u06d4 <code>bt_gatt_subscribe_params<\/code> \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1 \u062c\u0648 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u06c1\u06cc\u0646\u0688\u0644\u060c \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646\u060c \u0627\u0648\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 CCC \u0648\u06cc\u0644\u06cc\u0648 (BT_GATT_CCC_NOTIFY) \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-mtu-negotiation-and-data-throughput\">MTU \u0645\u0630\u0627\u06a9\u0631\u0627\u062a \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u062a\u06be\u0631\u0648 \u067e\u0679<\/h2>\n<p>\u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 BLE ATT MTU (\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0679\u0631\u0627\u0646\u0633\u0645\u06cc\u0634\u0646 \u06cc\u0648\u0646\u0679) 23 \u0628\u0627\u0626\u0679\u0633 \u06c1\u06d2\u06d4 \u0627\u06d2 \u0679\u06cc \u0679\u06cc \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u0633\u06d2 3 \u0628\u0627\u0626\u0679\u0633 \u06a9\u0648 \u06af\u06be\u0679\u0627\u0646\u06d2 \u0633\u06d2 \u0641\u06cc GATT \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u0635\u0644 \u067e\u06d2 \u0644\u0648\u0688 \u06a9\u06d2 20 \u0628\u0627\u0626\u0679\u0633 \u0631\u06c1 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c 20 \u0628\u0627\u0626\u0679\u0633 \u06a9\u0627\u0641\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u0645\u06cc\u062c\u0632 \u06cc\u0627 \u0628\u0691\u06d2 \u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0679\u0627 \u0628\u0641\u0631\u0632 \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 20 \u0628\u0627\u0626\u0679\u0633 \u0641\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 \u0628\u06c1\u062a \u0633\u0633\u062a \u06c1\u06d2\u06d4<\/p>\n<p>MTU \u0645\u0630\u0627\u06a9\u0631\u0627\u062a \u062f\u0648 \u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a \u06a9\u0648 517 \u0628\u0627\u0626\u0679\u0633 (BLE \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1) \u06a9\u06d2 \u0628\u0691\u06d2 MTU \u067e\u0631 \u0645\u062a\u0641\u0642 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0628\u0691\u06d2 MTU \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u0641\u06cc \u067e\u06cc\u06a9\u0679 \u0632\u06cc\u0627\u062f\u06c1 \u0688\u06cc\u0679\u0627\u060c \u06a9\u0645 \u0631\u0627\u0624\u0646\u0688 \u0679\u0631\u067e\u0633\u060c \u0627\u0648\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u06be\u0631\u0648 \u067e\u0679\u06d4 2M PHY \u06a9\u06d2 \u0633\u0627\u062a\u06be nRF52840 \u067e\u0631\u060c 23-\u0628\u0627\u0626\u0679 MTU \u0627\u0648\u0631 247-byte MTU \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u062a\u06be\u0631\u0648 \u067e\u0679 \u0628\u06c1\u062a\u0631\u06cc \u0645\u06cc\u06ba 5x \u0633\u06d2 10x \u062a\u06a9 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0628\u0691\u0627 MTU \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT_L2CAP_TX_MTU=247\nCONFIG_BT_BUF_ACL_RX_SIZE=251\nCONFIG_BT_BUF_ACL_TX_SIZE=251\nCONFIG_BT_CTLR_DATA_LENGTH_MAX=251\n<\/code><\/pre>\n<p><code>CONFIG_BT_L2CAP_TX_MTU=247<\/code>    \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 ATT MTU \u0633\u06cc\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0622\u0644\u06c1 \u06af\u0641\u062a \u0648 \u0634\u0646\u06cc\u062f \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u0642\u062f\u0631 247 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u0646\u06af\u0644 \u067e\u06cc\u06a9\u0679 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0644\u0645\u0628\u0627\u0626\u06cc \u0633\u06d2 \u0645\u06cc\u0644 \u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 (\u0644\u0646\u06a9 \u0644\u06cc\u0626\u0631 \u0645\u06cc\u06ba 251 \u0628\u0627\u0626\u0679\u0633 L2CAP \u06c1\u06cc\u0688\u0631 \u0645\u06cc\u06ba \u0645\u0627\u0626\u0646\u0633 4 \u0628\u0627\u0626\u0679\u0633)\u06d4<\/p>\n<p><code>CONFIG_BT_BUF_ACL_RX_SIZE<\/code>    \u0627\u0648\u0631 <code>CONFIG_BT_BUF_ACL_TX_SIZE<\/code> \u0628\u0691\u06d2 \u067e\u06cc\u06a9\u0679\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u0688\u062c\u0633\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 ACL \u0628\u0641\u0631 \u06a9\u0627 \u0633\u0627\u0626\u0632 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>CONFIG_BT_CTLR_DATA_LENGTH_MAX<\/code> \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0644\u06cc\u0648\u0644 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u0644\u06cc\u0646\u062a\u06be \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646\u0632 (DLE) \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0644\u0646\u06a9 \u0644\u06cc\u0626\u0631 \u06a9\u0648 \u0644\u0645\u0628\u06d2 \u067e\u06cc\u06a9\u0679 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u0627\u0646\u06c1\u06cc\u06ba 27 \u0628\u0627\u0626\u0679 \u06a9\u06d2 \u0679\u06a9\u0691\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f MTU \u0628\u0627\u062a \u0686\u06cc\u062a \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u0634\u062f\u06c1 MTU \u0688\u06cc\u0641\u0627\u0644\u0679 \u0633\u06d2 \u0628\u0691\u0627 \u06c1\u06d2 \u062a\u0648 Zephyr \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0631 MTU \u06a9\u06cc \u062a\u0628\u0627\u062f\u0644\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u0633\u06d2 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0628\u06be\u06cc \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">static void exchange_func(struct bt_conn *conn, uint8_t att_err,\n                           struct bt_gatt_exchange_params *params)\n{\n    if (att_err) {\n        printk(\"MTU exchange failed (err %u)\\n\", att_err);\n        return;\n    }\n\n    uint16_t mtu = bt_gatt_get_mtu(conn);\n    printk(\"MTU exchanged: %u bytes\\n\", mtu);\n}\n\nstatic struct bt_gatt_exchange_params exchange_params = {\n    .func = exchange_func,\n};\n\nstatic void connected(struct bt_conn *conn, uint8_t err)\n{\n    if (err) {\n        return;\n    }\n\n    bt_gatt_exchange_mtu(conn, &exchange_params);\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>bt_gatt_exchange_mtu<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0631\u06cc\u0645\u0648\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633 \u067e\u0631 MTU \u0627\u06cc\u06a9\u0633\u0686\u06cc\u0646\u062c \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u0648 \u0646\u062a\u06cc\u062c\u06c1 \u0645\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u062a\u0628\u0627\u062f\u0644\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c <code>bt_gatt_get_mtu<\/code> \u0628\u0627\u062a \u0686\u06cc\u062a \u0634\u062f\u06c1 MTU \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u062f\u0648\u0646\u0648\u06ba \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 MTU \u0642\u062f\u0631 \u06c1\u06d2\u06d4 \u0645\u0624\u062b\u0631 \u067e\u06d2 \u0644\u0648\u0688 \u0641\u06cc \u0627\u0637\u0644\u0627\u0639 \u06cc\u0627 \u062a\u062d\u0631\u06cc\u0631\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 ATT \u06c1\u06cc\u0688\u0631 \u06a9\u0627 \u06af\u0641\u062a \u0648 \u0634\u0646\u06cc\u062f MTU \u0645\u0627\u0626\u0646\u0633 3 \u0628\u0627\u0626\u0679\u0633 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u0691\u06cc \u0645\u0642\u062f\u0627\u0631 \u0645\u06cc\u06ba \u0688\u06cc\u0679\u0627 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a\u060c \u0645\u0624\u062b\u0631 \u062a\u06be\u0631\u0648 \u067e\u0679 \u062a\u06cc\u0646 \u0639\u0648\u0627\u0645\u0644 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2: MTU (\u0628\u0691\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06a9\u0645 \u067e\u06cc\u06a9\u0679)\u060c \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u0648\u0642\u0641\u06c1 (\u06a9\u0645 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u062a\u0631\u0633\u06cc\u0644 \u06a9\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u0627\u0642\u0639)\u060c \u0627\u0648\u0631 PHY (2M PHY \u062e\u0627\u0645 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u0648 1M PHY \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u062f\u0648\u06af\u0646\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2)\u06d4<\/p>\n<p>247-\u0628\u0627\u0626\u0679 MTU\u060c 7.5ms \u0644\u0646\u06a9 \u0648\u0642\u0641\u06c1\u060c \u0627\u0648\u0631 2M PHY \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c 800kbps \u0633\u06d2 1400kbps \u062a\u06a9 \u06a9\u06d2 \u062a\u06be\u0631\u0648 \u067e\u0679 \u06a9\u0648 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0627\u0648\u0631 \u0631\u06cc\u0688\u06cc\u0648 \u062d\u0627\u0644\u0627\u062a \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0639\u0645\u0644\u06cc \u063a\u0648\u0631: iOS \u0627\u0648\u0631 Android MTU \u0645\u0630\u0627\u06a9\u0631\u0627\u062a \u06a9\u0648 \u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u06a9\u06c1 \u0627\u06cc\u0646\u0688\u0631\u0627\u0626\u06cc\u0688 \u0622\u067e \u06a9\u0648 \u0627\u06cc\u067e \u0644\u06cc\u0626\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 MTU \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c iOS \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 MTU (\u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 185 \u0628\u0627\u0626\u0679\u0633 \u06cc\u0627 251 \u0628\u0627\u0626\u0679\u0633 iOS \u0648\u0631\u0698\u0646 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2) \u0627\u06cc\u067e \u06a9\u06cc \u0645\u062f\u0627\u062e\u0644\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u06a9\u0648 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u0642\u062f\u0631 \u06a9\u0648 \u0645\u0627\u0646\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06c1\u0645\u06cc\u0634\u06c1 \u062a\u0645\u0627\u0645 \u06af\u0641\u062a \u0648 \u0634\u0646\u06cc\u062f \u0648\u0627\u0644\u06d2 MTUs \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h2 id=\"heading-phy-selection-for-range-and-speed\">\u0631\u06cc\u0646\u062c \u0627\u0648\u0631 \u0631\u0641\u062a\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 PHY \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628<\/h2>\n<p>\u0628\u0644\u0648\u0679\u0648\u062a\u06be 5.0 \u0627\u0635\u0644 1M PHY \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1 \u062f\u0648 \u0646\u0626\u06cc \u0641\u0632\u06cc\u06a9\u0644 \u0644\u06cc\u0626\u0631 (PHY) \u0622\u067e\u0634\u0646\u0632 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u06cc\u0627 \u06c1\u06d2\u06d4 \u0635\u062d\u06cc\u062d PHY \u0628\u06cc\u0644\u0646\u0633 \u0631\u06cc\u0646\u062c\u060c \u062a\u06be\u0631\u0648 \u067e\u0679\u060c \u0627\u0648\u0631 \u0628\u062c\u0644\u06cc \u06a9\u06cc \u06a9\u06be\u067e\u062a \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<p><strong>1M PHY<\/strong> \u06cc\u06c1 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0627\u0648\u0631 \u0648\u0627\u062d\u062f PHY \u06c1\u06d2 \u062c\u0648 \u0628\u0644\u0648\u0679\u0648\u062a\u06be 4.x \u0645\u06cc\u06ba \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2\u06d4 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0631\u06cc\u0646\u062c \u0645\u06cc\u06ba 1 \u0645\u06cc\u06af\u0627 \u0628\u0679 \u0641\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u067e\u0631 \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0645\u0627\u0645 BLE \u0622\u0644\u0627\u062a 1M PHY \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>2M PHY<\/strong> \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0631\u0641\u062a\u0627\u0631 \u06a9\u0648 2 \u0645\u06cc\u06af\u0627 \u0628\u0679\u0633 \u0641\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u062a\u06a9 \u062f\u06af\u0646\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 \u067e\u06cc\u06a9\u0679 \u06a9\u06cc \u062a\u0631\u0633\u06cc\u0644 \u0645\u06cc\u06ba \u0622\u062f\u06be\u0627 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u0639\u0646\u06cc \u0631\u06cc\u0688\u06cc\u0648 \u06a9\u0645 \u0648\u0642\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0639\u0627\u0644 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u06be\u0631\u0648 \u067e\u0679 (\u0641\u06cc \u06cc\u0648\u0646\u0679 \u0648\u0642\u062a \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0688\u06cc\u0679\u0627) \u0627\u0648\u0631 \u0628\u062c\u0644\u06cc \u06a9\u06cc \u06a9\u06be\u067e\u062a (\u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0627 \u06a9\u0645 \u0648\u0642\u062a) \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 1M PHY \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u0631\u06cc\u0646\u062c \u0645\u06cc\u06ba \u0645\u0639\u0645\u0648\u0644\u06cc \u06a9\u0645\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u0635\u0648\u0644 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0648 \u06c1\u0631 \u0627\u06cc\u06a9 \u0628\u0679 \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u06a9\u0645 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4 2M PHY \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0628 \u0645\u0631\u06a9\u0632\u06cc \u0627\u0648\u0631 \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u06c1\u0648\u06ba (\u0686\u0646\u062f \u0645\u06cc\u0679\u0631 \u06a9\u06d2 \u0627\u0646\u062f\u0631) \u0627\u0648\u0631 \u062a\u06be\u0631\u0648 \u067e\u0679 \u0627\u06c1\u0645 \u06c1\u0648\u06d4<\/p>\n<p><strong>\u06a9\u0648\u0688 \u0634\u062f\u06c1 PHY<\/strong> 1M PHY \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 2x \u0633\u06d2 4x\u060c \u062d\u062f \u06a9\u0648 \u0646\u0645\u0627\u06cc\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0627\u0631\u0648\u0631\u0688 \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0627\u0635\u0644\u0627\u062d \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0628\u06d2 \u06a9\u0627\u0631 \u06a9\u0648\u0688\u0646\u06af (S=2 2x \u0631\u06cc\u0646\u062c \u06a9\u06d2 \u0644\u06cc\u06d2\u060c S=8 4x \u0631\u06cc\u0646\u062c \u06a9\u06d2 \u0644\u06cc\u06d2) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u0631 \u0628\u0679 \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u06a9\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u0627\u06af\u062a \u062a\u06be\u0631\u0648 \u067e\u0679 \u06a9\u0645 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0648\u0688\u0688 PHY S=8 \u0645\u06cc\u06ba 125 kbps \u06a9\u06cc \u0645\u0624\u062b\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0634\u0631\u062d \u06c1\u06d2\u060c \u062c\u0648 1M PHY \u0633\u06d2 8 \u06af\u0646\u0627 \u06a9\u0645 \u06c1\u06d2\u06d4 \u0627\u06cc\u0633\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0688 \u0634\u062f\u06c1 PHYs \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0645\u0628\u06cc \u062f\u0648\u0631\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 (\u0628\u06cc\u0631\u0648\u0646\u06cc \u0627\u062b\u0627\u062b\u06c1 \u062c\u0627\u062a \u0633\u06d2 \u0628\u0627\u062e\u0628\u0631 \u0631\u06c1\u0646\u0627\u060c \u0628\u0644\u0688\u0646\u06af \u0648\u0627\u0626\u0688 \u0633\u06cc\u0646\u0633\u0631 \u0646\u06cc\u0679 \u0648\u0631\u06a9) \u0627\u0648\u0631 \u06a9\u0645 \u0688\u06cc\u0679\u0627 \u0631\u06cc\u0679 \u0628\u0631\u062f\u0627\u0634\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>PHY \u0633\u067e\u0648\u0631\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT_USER_PHY_UPDATE=y\nCONFIG_BT_CTLR_PHY_2M=y\nCONFIG_BT_CTLR_PHY_CODED=y\n<\/code><\/pre>\n<p><code>CONFIG_BT_USER_PHY_UPDATE=y<\/code>    \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 PHY \u0627\u067e \u0688\u06cc\u0679\u0633 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_BT_CTLR_PHY_2M<\/code> \u0627\u0648\u0631 <code>CONFIG_BT_CTLR_PHY_CODED<\/code> \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0645\u06cc\u06ba \u06c1\u0631 PHY \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06cc\u06c1 PHY \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-c\">static void connected(struct bt_conn *conn, uint8_t err)\n{\n    if (err) {\n        return;\n    }\n\n    \/* Request 2M PHY for higher throughput *\/\n    struct bt_conn_le_phy_param phy_param = {\n        .options = BT_CONN_LE_PHY_OPT_NONE,\n        .pref_tx_phy = BT_GAP_LE_PHY_2M,\n        .pref_rx_phy = BT_GAP_LE_PHY_2M,\n    };\n\n    int phy_err = bt_conn_le_phy_update(conn, &phy_param);\n    if (phy_err) {\n        printk(\"PHY update request failed (err %d)\\n\", phy_err);\n    }\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>bt_conn_le_phy_update<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0631\u06cc\u0645\u0648\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0648 PHY \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>pref_tx_phy<\/code> \u0627\u0648\u0631 <code>pref_rx_phy<\/code> \u0641\u06cc\u0644\u0688\u0632 \u0628\u0627\u0644\u062a\u0631\u062a\u06cc\u0628 \u0688\u06cc\u0679\u0627 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0648\u0635\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0631\u062c\u06cc\u062d\u06cc PHY \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0631\u06cc\u0645\u0648\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0645\u062a\u0628\u0627\u062f\u0644 \u06a9\u0648 \u0642\u0628\u0648\u0644 \u06cc\u0627 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06d2 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062f\u0648\u0646\u0648\u06ba \u0622\u0644\u0627\u062a \u06a9\u0648 \u0645\u0637\u0644\u0648\u0628\u06c1 PHY \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>PHY \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">static void phy_updated(struct bt_conn *conn,\n                         struct bt_conn_le_phy_info *param)\n{\n    printk(\"PHY updated: TX PHY %u, RX PHY %u\\n\",\n           param->tx_phy, param->rx_phy);\n}\n\nBT_CONN_CB_DEFINE(conn_callbacks) = {\n    .connected = connected,\n    .disconnected = disconnected,\n    .le_phy_updated = phy_updated,\n};\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>le_phy_updated<\/code> \u062c\u0628 \u0628\u06be\u06cc \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0631 PHY \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0639\u0645\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>tx_phy<\/code> \u0627\u0648\u0631 <code>rx_phy<\/code> \u0641\u06cc\u0644\u0688 \u06c1\u0631 \u0633\u0645\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0639\u0627\u0644 PHY \u06a9\u06cc \u0631\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 1 \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 1M PHY\u060c 2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 2M PHY\u060c \u0627\u0648\u0631 4 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u0648\u0688\u0688 PHY\u06d4 TX \u0627\u0648\u0631 RX PHY \u0645\u062e\u062a\u0644\u0641 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba (\u063a\u06cc\u0631 \u0645\u062a\u0646\u0627\u0633\u0628 PHY)\u060c \u0644\u06cc\u06a9\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u062f\u0648\u0646\u0648\u06ba \u0633\u0645\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u06c1\u06cc PHY \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>S=8 \u0627\u0646\u06a9\u0648\u0688\u0646\u06af (\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u06cc\u0646\u062c) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0648\u0688 \u0634\u062f\u06c1 PHY \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u06a9\u0627 \u0641\u06cc\u0644\u0688 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">struct bt_conn_le_phy_param phy_param = {\n    .options = BT_CONN_LE_PHY_OPT_CODED_S8,\n    .pref_tx_phy = BT_GAP_LE_PHY_CODED,\n    .pref_rx_phy = BT_GAP_LE_PHY_CODED,\n};\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>BT_CONN_LE_PHY_OPT_CODED_S8<\/code> \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba S=8 \u06a9\u0648\u0688\u0646\u06af\u06d4 \u06cc\u06c1 \u0633\u0628 \u0633\u06d2 \u06a9\u0645 \u062a\u06be\u0631\u0648 \u067e\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u06cc\u0646\u062c \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0648 \u0686\u06be\u0648\u0691 \u062f\u06cc\u06ba \u06cc\u0627 <code>BT_CONN_LE_PHY_OPT_CODED_S2<\/code>) S=2 \u06a9\u0648\u0688\u0646\u06af \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0628\u06c1\u062a\u0631 \u062a\u06be\u0631\u0648 \u067e\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062f\u0631\u0645\u06cc\u0627\u0646\u06cc \u0631\u06cc\u0646\u062c \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-firmware-updates-over-ble\">BLE \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u067e \u0688\u06cc\u0679<\/h2>\n<p>\u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 BLE \u067e\u0631\u0648\u0688\u06a9\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u06cc\u0644\u0688 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0622\u0644\u0627\u062a \u0645\u06cc\u06ba \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u067e \u0688\u06cc\u0679\u0633 \u06a9\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u06a9\u0627\u0645 \u06c1\u06d2\u06d4 \u0628\u06af \u0641\u06a9\u0633\u0632 \u0627\u0648\u0631 \u0646\u0626\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 USB \u06a9\u06cc\u0628\u0644 \u0644\u06af\u0627\u0646\u06d2 \u06cc\u0627 \u0633\u0631\u0648\u0633 \u0633\u06cc\u0646\u0679\u0631 \u062c\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>Zephyr \u0627\u06cc\u06a9 \u0645\u062d\u0641\u0648\u0638 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0628\u0648\u0679 \u0644\u0648\u0688\u0631 MCUboot \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 BLE \u067e\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u067e \u0688\u06cc\u0679 (DFU) \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>DFU \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u062f\u0648 \u0627\u062c\u0632\u0627\u0621 \u06c1\u06cc\u06ba: MCUboot \u0627\u06cc\u06a9 \u0628\u0648\u0679 \u0644\u0648\u0688\u0631 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062f\u0648 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0633\u0644\u0627\u0679\u0633 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: \u0641\u0639\u0627\u0644 \u0633\u0644\u0627\u0679 (\u0686\u0644 \u0631\u06c1\u0627 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631) \u0627\u0648\u0631 \u0627\u067e \u06af\u0631\u06cc\u0688 \u0633\u0644\u0627\u0679 (\u0646\u0626\u06d2 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba)\u06d4 \u062c\u0628 \u0646\u06cc\u0627 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u067e \u06af\u0631\u06cc\u0688 \u0633\u0644\u0627\u0679 \u067e\u0631 \u0644\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c MCUboot \u06a9\u0631\u067e\u0679\u0648\u06af\u0631\u0627\u0641\u06a9 \u062f\u0633\u062a\u062e\u0637 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0633\u0644\u0627\u0679 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0646\u0626\u06d2 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u06a9\u0648 \u0628\u0648\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0646\u06cc\u0627 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u062e\u0648\u062f \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2 (\u062e\u0648\u062f \u06a9\u0648 \u062f\u0631\u0633\u062a \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0634\u0627\u0646 \u0632\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2)\u060c MCUboot \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u06af\u0644\u06d2 \u0631\u06cc\u0628\u0648\u0679 \u067e\u0631 \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u067e\u0631 \u0648\u0627\u067e\u0633 \u0622\u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>DFU \u06a9\u06d2 \u0644\u06cc\u06d2 BLE \u0679\u0631\u0627\u0646\u0633\u067e\u0648\u0631\u0679 GATT \u0633\u0631\u0648\u0633\u0632 \u067e\u0631 \u0633\u0627\u062f\u06c1 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 (SMP) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 mcumgr \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc SMP \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 Zephyr \u0645\u06cc\u06ba BLE SMP \u0679\u0631\u0627\u0646\u0633\u067e\u0648\u0631\u0679 \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u062c\u0648 SMP GATT \u0633\u0631\u0648\u0633 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0641\u0648\u0646 \u0627\u06cc\u067e \u062c\u06cc\u0633\u06d2 nRF Connect \u06cc\u0627 mcumgr CLI \u0627\u0633 \u0633\u0631\u0648\u0633 \u0633\u06d2 \u062c\u0691\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0646\u0626\u06cc \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u0645\u06cc\u062c\u0632 \u06a9\u0648 \u0679\u06a9\u0691\u0648\u06ba \u0645\u06cc\u06ba \u0627\u067e \u0644\u0648\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>DFU \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BOOTLOADER_MCUBOOT=y\nCONFIG_MCUMGR=y\nCONFIG_MCUMGR_TRANSPORT_BT=y\nCONFIG_MCUMGR_GRP_IMG=y\nCONFIG_MCUMGR_GRP_OS=y\nCONFIG_IMG_MANAGER=y\nCONFIG_STREAM_FLASH=y\nCONFIG_FLASH_MAP=y\nCONFIG_FLASH=y\n<\/code><\/pre>\n<p><code>CONFIG_BOOTLOADER_MCUBOOT=y<\/code>    \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0645\u0637\u0644\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 MCUboot \u06a9\u06d2 \u062a\u062d\u062a \u0686\u0644\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u0644\u0646\u06a9\u0631 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0627\u0648\u0631 \u0627\u0645\u06cc\u062c \u0641\u0627\u0631\u0645\u06cc\u0679 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <code>CONFIG_MCUMGR=y<\/code> mcumgr \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_MCUMGR_TRANSPORT_BT=y<\/code> BLE SMP \u0679\u0631\u0627\u0646\u0633\u067e\u0648\u0631\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u060c \u062c\u0648 \u0627\u06cc\u06a9 GATT \u0633\u0631\u0648\u0633 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0633\u06d2 \u0641\u0648\u0646 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u067e \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0691\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_MCUMGR_GRP_IMG=y<\/code> \u0627\u0645\u06cc\u062c \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u06d2 \u0627\u06cc\u06a9 \u06af\u0631\u0648\u067e \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0627\u067e \u0644\u0648\u0688\u060c \u062a\u0635\u062f\u06cc\u0642\u060c \u062d\u0630\u0641)\u06d4 <code>CONFIG_MCUMGR_GRP_OS=y<\/code> OS \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06af\u0631\u0648\u067e \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba (\u0631\u06cc \u0633\u06cc\u0679\u060c \u0627\u06cc\u06a9\u0648)\u06d4<\/p>\n<p>\u0627\u067e\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba BLE SMP \u0679\u0631\u0627\u0646\u0633\u0645\u06cc\u0634\u0646 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-c\">#include <zephyr>\n\nint main(void)\n{\n    int err;\n\n    err = bt_enable(NULL);\n    if (err) {\n        printk(\"Bluetooth init failed (err %d)\\n\", err);\n        return 0;\n    }\n\n    \/* Start SMP BLE transport for DFU *\/\n    smp_bt_register();\n\n    \/* Start advertising (include SMP service UUID) *\/\n    bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), NULL, 0);\n\n    printk(\"DFU-capable device ready\\n\");\n    return 0;\n}\n<\/zephyr><\/code><\/pre>\n<p>\u06a9\u06c1 <code>smp_bt_register()<\/code> \u06a9\u0627\u0644 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be SMP GATT \u0633\u0631\u0648\u0633 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0645\u0646\u0633\u0644\u06a9 BLE \u0633\u0646\u0679\u0631\u0644 SMP \u0633\u0631\u0648\u0633 \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u067e \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 mcumgr \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>MCUboot \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06a9\u06d2 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u0628\u0648\u0679 \u0644\u0648\u0688\u0631 \u06a9\u0648 \u0641\u0644\u06cc\u0634 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4 MCUboot \u0627\u0644\u06af \u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0644\u06cc\u0634 \u0645\u06cc\u06ba \u0628\u0648\u0679 \u067e\u0627\u0631\u0679\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">west build -b nrf52840dk\/nrf52840 bootloader\/mcuboot\/boot\/zephyr \\\n    -d build_mcuboot\nwest flash -d build_mcuboot\n\nwest build -b nrf52840dk\/nrf52840 my_dfu_app\nwest flash\n<\/code><\/pre>\n<p>\u067e\u06c1\u0644\u06cc \u062f\u0648 \u06a9\u0645\u0627\u0646\u0688\u0632 MCUboot \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0627\u0648\u0631 \u0641\u0644\u06cc\u0634 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062f\u0648\u0633\u0631\u06cc \u062f\u0648 \u06a9\u0645\u0627\u0646\u0688\u0632 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0628\u0646\u0627\u062a\u06cc \u0627\u0648\u0631 \u0641\u0644\u06cc\u0634 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 MCUboot \u0641\u0644\u06cc\u0634 \u06a9\u0627 \u067e\u06c1\u0644\u0627 \u062d\u0635\u06c1 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u0631\u0627\u0626\u0645\u0631\u06cc \u0633\u0644\u0627\u0679 \u0633\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0628\u0648\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>DFU \u06a9\u0648 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627 \u0646\u06cc\u0627 \u0648\u0631\u0698\u0646 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 <code>zephyr.signed.bin<\/code> \u06cc\u06c1 \u0641\u0627\u0626\u0644 \u0628\u0644\u0688 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0648\u0627\u0642\u0639 \u06c1\u06d2\u06d4 nRF Connect \u0645\u0648\u0628\u0627\u0626\u0644 \u0627\u06cc\u067e (\u0628\u0679 \u0627\u0646 DFU \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be) \u06cc\u0627 mcumgr \u06a9\u0645\u0627\u0646\u0688 \u0644\u0627\u0626\u0646 \u0679\u0648\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0622\u0644\u06d2 \u067e\u0631 \u0627\u067e \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u067e \u0644\u0648\u0688\u0632 BLE SMP \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u067e \u0644\u0648\u0688 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0688\u06cc\u0648\u0627\u0626\u0633 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 MCUboot \u0646\u0626\u06cc \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0641\u0639\u0627\u0644 \u0633\u0644\u0627\u0679 \u0633\u06d2 \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>MCUboot \u06a9\u0626\u06cc \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0627\u06c1\u0645 \u062d\u0641\u0627\u0638\u062a\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062f\u0633\u062a\u062e\u0637 \u0622\u067e \u06a9\u0648 \u0635\u0631\u0641 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u067e\u0631 \u0622\u067e \u06a9\u06cc \u0646\u062c\u06cc \u06a9\u0644\u06cc\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062f\u0633\u062a\u062e\u0637 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0635\u0648\u06cc\u0631\u06cc \u062e\u0641\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u0679\u0631\u0627\u0646\u0633\u0645\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0627\u0645\u06cc\u062c\u0632 \u06a9\u06cc \u0631\u06cc\u0648\u0631\u0633 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0646\u06cc\u0627 \u0648\u0631\u0698\u0646 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0628\u0648\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062a\u0648\u060c \u0631\u0648\u0644 \u0628\u06cc\u06a9 \u067e\u0631\u0648\u0679\u06cc\u06a9\u0634\u0646 \u067e\u0686\u06be\u0644\u06d2 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u0648\u0627\u067e\u0633 \u0622\u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0646 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0636\u0627\u0641\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u0631\u0648\u0688\u06a9\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u0627\u0648\u0648\u0631 \u062f\u06cc \u0627\u06cc\u0626\u0631 \u0627\u067e \u0688\u06cc\u0679\u0633 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-bluetooth-mesh-on-zephyr\">Zephyr&#8217;s \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u0634<\/h2>\n<p>BLE \u067e\u0648\u0627\u0626\u0646\u0679 \u0679\u0648 \u067e\u0648\u0627\u0626\u0646\u0679 \u06a9\u0646\u06a9\u0634\u0646 \u0627\u0646 \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0632\u0648\u06ba \u06c1\u06cc\u06ba \u062c\u0648 \u0641\u0648\u0646 \u06cc\u0627 \u06af\u06cc\u0679 \u0648\u06d2 \u0633\u06d2 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u06cc\u06a9\u0646 \u062c\u0628 \u0622\u067e \u06a9\u0648 \u06a9\u0633\u06cc \u0639\u0645\u0627\u0631\u062a \u0645\u06cc\u06ba \u0633\u06cc\u0646\u06a9\u0691\u0648\u06ba \u0644\u0627\u0626\u0679 \u0628\u0644\u0628 \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0648\u06c1 \u0679\u0648\u0679 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06c1\u0631 \u0627\u06cc\u06a9 \u0633\u06d2 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062c\u0691 \u0646\u06c1\u06cc\u06ba \u0633\u06a9\u062a\u06d2\u06d4 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u0634 \u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u0634 \u0646\u06cc\u0679 \u0648\u0631\u06a9\u0646\u06af \u06a9\u0627 \u0627\u06cc\u06a9 \u06a9\u0626\u06cc \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0639\u06cc\u0627\u0631 \u06c1\u06d2 \u062c\u0648 BLE \u06a9\u06d2 \u0627\u0648\u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u06cc\u0634 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0622\u0644\u0627\u062a \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0648 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0628\u06be\u06cc\u062c\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062d\u062f \u06a9\u0648 \u0627\u06cc\u06a9 BLE \u06a9\u0646\u06a9\u0634\u0646 \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0628\u0691\u06be\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u0627\u0626\u0679 \u0622\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062d\u06a9\u0645 \u0627\u06cc\u06a9 \u0688\u06cc\u0648\u0627\u0626\u0633 \u0633\u06d2 \u0646\u06a9\u0644 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0645\u062a\u0639\u062f\u062f \u0631\u06cc\u0644\u06d2 \u0646\u0648\u0688\u0633 \u0633\u06d2 \u06af\u0632\u0631 \u06a9\u0631 \u0639\u0645\u0627\u0631\u062a \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u0631 \u0644\u0627\u0626\u0679 \u0628\u0644\u0628 \u062a\u06a9 \u067e\u06c1\u0646\u0686 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>Zephyr \u0645\u06cc\u06ba \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u0634 \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u0646\u0641\u0627\u0630 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u062a\u0635\u0648\u0631\u0627\u062a\u06cc \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0627\u0633 \u0637\u0631\u062d \u06c1\u06d2:<\/p>\n<p>\u0645\u06cc\u0634 \u0622\u0644\u0627\u062a \u06a9\u0627 \u0627\u06cc\u06a9 \u06a9\u0631\u062f\u0627\u0631 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u0631\u06cc\u0644\u06d2 \u0646\u0648\u0688<\/strong> \u062f\u0648\u0633\u0631\u06d2 \u0622\u0644\u0627\u062a \u0633\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0622\u06af\u06d2 \u0628\u06be\u06cc\u062c \u06a9\u0631 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u0648\u0631\u06cc\u062c \u06a9\u0648 \u0628\u0691\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u067e\u0631\u0627\u06a9\u0633\u06cc \u0646\u0648\u0688<\/strong> \u06cc\u06c1 GATT \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a (\u0645\u0648\u0628\u0627\u0626\u0644 \u0641\u0648\u0646\u0632) \u0627\u0648\u0631 \u0645\u06cc\u0634 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u067e\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u060c \u063a\u06cc\u0631 \u0645\u06cc\u0634 \u0633\u067e\u0648\u0631\u0679\u0688 \u0641\u0648\u0646\u0632 \u06a9\u0648 \u067e\u0631\u0627\u06a9\u0633\u06cc \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u06cc\u0634 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u062f\u0648\u0633\u062a \u0646\u0648\u0688<\/strong> \u06cc\u06c1 \u0642\u0631\u06cc\u0628\u06cc \u06a9\u0645 \u0637\u0627\u0642\u062a \u0648\u0627\u0644\u06d2 \u0646\u0648\u0688\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u067e\u0646\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0648\u0642\u062a \u0633\u0648\u0646\u06d2 \u0645\u06cc\u06ba \u06af\u0632\u0627\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <strong>\u06a9\u0645 \u0637\u0627\u0642\u062a \u0646\u0648\u0688<\/strong> \u06cc\u06c1 \u0648\u0642\u062a\u0627 \u0641\u0648\u0642\u062a\u0627 \u062c\u0627\u06af\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u062f\u0648\u0633\u062a\u0648\u06ba \u0633\u06d2 \u067e\u0648\u0686\u06be\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u0627\u0646 \u06a9\u06d2 \u067e\u0627\u0633 \u0622\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0626\u06cc \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u062f\u06c1 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u06cc\u0634 \u06a9\u0645\u06cc\u0648\u0646\u06cc\u06a9\u06cc\u0634\u0646 \u067e\u0628\u0644\u0634\/\u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0622\u0644\u06c1 \u06a9\u0633\u06cc \u0627\u06cc\u0688\u0631\u06cc\u0633 \u067e\u0631 \u067e\u06cc\u063a\u0627\u0645 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u0633 \u0627\u06cc\u0688\u0631\u06cc\u0633 \u067e\u0631 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0622\u0644\u0627\u062a \u067e\u06cc\u063a\u0627\u0645 \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u0627\u0626\u0679 \u0633\u0648\u0626\u0686 \u06af\u0631\u0648\u067e \u0627\u06cc\u0688\u0631\u06cc\u0633 \u067e\u0631 &#8216;\u0622\u0646&#8217; \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06af\u0631\u0648\u067e \u0627\u06cc\u0688\u0631\u06cc\u0633 \u067e\u0631 \u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u062a\u0645\u0627\u0645 \u0644\u0627\u0626\u0679 \u0628\u0644\u0628 \u0622\u0646 \u06c1\u0648 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u0645\u06cc\u0634 \u0645\u06cc\u06ba \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2: <strong>\u0645\u0627\u0688\u0644<\/strong>. \u0627\u06cc\u06a9 \u0645\u0627\u0688\u0644 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u06a9\u06d2 \u0633\u06cc\u0679 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0622\u0644\u06c1 \u0628\u06be\u06cc\u062c \u0627\u0648\u0631 \u0648\u0635\u0648\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0644\u0648\u0679\u0648\u062a\u06be SIG \u0639\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0645\u0627\u0688\u0644\u0632 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0646\u0631\u0644 \u0622\u0646 \u0622\u0641 (\u0622\u0646\/\u0622\u0641 \u0633\u0648\u0626\u0686 \u0627\u0648\u0631 \u0644\u0627\u0626\u0679\u0646\u06af)\u060c \u062c\u0646\u0631\u0644 \u0644\u06cc\u0648\u0644 (\u062f\u06be\u06cc\u0645\u0627)\u060c \u0633\u06cc\u0646\u0633\u0631 (\u0633\u06cc\u0646\u0633\u0631 \u0688\u06cc\u0679\u0627) \u0627\u0648\u0631 \u0644\u0627\u0626\u0679\u0646\u06af (\u0631\u0646\u06af \u06a9\u0627 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a\u060c \u0686\u0645\u06a9\u060c \u0679\u0646\u0679)\u06d4 \u0622\u067e \u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0628\u06be\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0630\u06cc\u0644 \u0645\u06cc\u06ba \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0645\u06cc\u0634 \u0646\u0648\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06c1\u06d2: <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_MESH=y\nCONFIG_BT_MESH_RELAY=y\nCONFIG_BT_MESH_PB_ADV=y\nCONFIG_BT_MESH_PB_GATT=y\nCONFIG_BT_MESH_GATT_PROXY=y\nCONFIG_BT_MESH_CFG_CLI=y\nCONFIG_BT_MESH_HEALTH_SRV=y\n<\/code><\/pre>\n<p><code>CONFIG_BT_MESH=y<\/code>    \u0645\u06cc\u0634 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 <code>CONFIG_BT_MESH_RELAY=y<\/code> \u0627\u0633 \u0646\u0648\u0688 \u06a9\u0648 \u062f\u0648\u0633\u0631\u06d2 \u0646\u0648\u0688\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_BT_MESH_PB_ADV=y<\/code> \u0627\u0648\u0631 <code>CONFIG_BT_MESH_PB_GATT=y<\/code> \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u0627\u0648\u0631 GATT \u06a9\u0646\u06a9\u0634\u0646 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0631\u0627\u06c1\u0645\u06cc (\u0645\u06cc\u0634 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0645\u06cc\u06ba \u0622\u0644\u0627\u062a \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0639\u0645\u0644) \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>CONFIG_BT_MESH_GATT_PROXY=y<\/code> \u0641\u0648\u0646 \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0631\u0627\u06a9\u0633\u06cc \u0631\u0648\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0645\u06cc\u0634 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u0627 (\u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0645\u0627\u0688\u0644\u0632)\u060c \u0645\u0627\u0688\u0644 \u06c1\u06cc\u0646\u0688\u0644\u0631\u0632 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u067e\u0631\u0648\u0648\u06cc\u0698\u0646\u0646\u06af \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u0627 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u0632\u06cc\u0641\u06cc\u0631 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06cc \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc (<code>samples\/bluetooth\/mesh\/<\/code>) \u0645\u06cc\u06ba \u06a9\u0626\u06cc \u0645\u06a9\u0645\u0644 \u0645\u062b\u0627\u0644\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 \u0627\u06cc\u06a9 \u0644\u0627\u0626\u0679 \u0628\u0644\u0628\u060c \u0644\u0627\u0626\u0679 \u0633\u0648\u0626\u0686\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0633\u06cc\u0646\u0633\u0631 \u0633\u0631\u0648\u0631 \u062c\u0648 \u0645\u062c\u0645\u0648\u0639\u06cc \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-le-audio-the-next-generation-of-bluetooth-audio\">LE \u0622\u0688\u06cc\u0648: \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0622\u0688\u06cc\u0648 \u06a9\u06cc \u0627\u06af\u0644\u06cc \u0646\u0633\u0644<\/h2>\n<p>LE \u0622\u0688\u06cc\u0648 \u0633\u0627\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u0627\u0636\u0627\u0641\u06c1 \u06c1\u06d2\u06d4 \u06cc\u06c1 A2DP (\u06a9\u0644\u0627\u0633\u06a9 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0622\u0688\u06cc\u0648 \u067e\u0631\u0648\u0641\u0627\u0626\u0644) \u06a9\u0648 BLE \u067e\u0631 \u0645\u0628\u0646\u06cc \u0627\u06cc\u06a9 \u0646\u0626\u06d2 \u0633\u0633\u0679\u0645 \u0633\u06d2 \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 Zephyr \u06a9\u0627 LE \u0622\u0688\u06cc\u0648 \u0646\u0641\u0627\u0630 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0627\u0633\u0679\u06cc\u06a9 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0645\u06a9\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>LE \u0622\u0688\u06cc\u0648 \u06a9\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u062d\u0635\u06c1 LC3 (\u06a9\u0645 \u06a9\u0645\u067e\u0644\u06cc\u06a9\u0633\u0679\u06cc \u06a9\u0645\u06cc\u0648\u0646\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648\u0688\u06cc\u06a9) \u06c1\u06d2\u06d4 LC3 \u06a9\u0644\u0627\u0633\u06a9 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0622\u0688\u06cc\u0648 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 SBC \u06a9\u0648\u0688\u06cc\u06a9 \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0646\u0635\u0641 \u0628\u0679 \u0631\u06cc\u0679 \u067e\u0631 \u0628\u06c1\u062a\u0631 \u0622\u0688\u06cc\u0648 \u06a9\u0648\u0627\u0644\u0679\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u0628\u06c1\u062a\u0631 \u0622\u0648\u0627\u0632 \u06a9\u0627 \u0645\u0639\u06cc\u0627\u0631 \u0627\u0648\u0631 \u06a9\u0645 \u0628\u062c\u0644\u06cc \u06a9\u06cc \u06a9\u06be\u067e\u062a\u06d4<\/p>\n<p>LE \u0622\u0688\u06cc\u0648 \u0646\u06d2 \u062f\u0648 \u0645\u0648\u0627\u0635\u0644\u0627\u062a\u06cc \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u06cc\u0627 \u06c1\u06d2: <strong>\u0645\u062a\u0635\u0644 \u0622\u0626\u0633\u0648\u06a9\u0631\u0648\u0646\u0633 \u0633\u0679\u0631\u06cc\u0645 (CIS)<\/strong> \u0627\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679 \u0679\u0648 \u067e\u0648\u0627\u0626\u0646\u0679 \u0622\u0688\u06cc\u0648 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0644\u0627\u0633\u06a9 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0622\u0688\u06cc\u0648 \u062c\u06cc\u0633\u0627 \u0644\u06cc\u06a9\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u062b\u0631\u06d4 CIS \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0633\u06cc\u0644 \u0641\u0648\u0646 \u0633\u06d2 \u0627\u06cc\u0626\u0631\u0628\u0688 \u06a9\u0646\u06a9\u0634\u0646\u060c \u0633\u0645\u0627\u0639\u062a \u06a9\u06d2 \u0622\u0644\u0627\u062a\u060c \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06d2 \u062c\u0648\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u0622\u0688\u06cc\u0648 \u0645\u0646\u0638\u0631\u0646\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679 \u0622\u0626\u0633\u0648\u06a9\u0631\u0648\u0646\u0633 \u0627\u0633\u0679\u0631\u06cc\u0645 (BIS)<\/strong> \u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0646\u0634\u0631\u06cc\u0627\u062a \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f \u0630\u0631\u06cc\u0639\u06c1 \u0622\u0688\u06cc\u0648 \u06a9\u0648 \u0644\u0627\u0645\u062d\u062f\u0648\u062f \u062a\u0639\u062f\u0627\u062f \u0645\u06cc\u06ba \u0631\u06cc\u0633\u06cc\u0648\u0631\u0632 \u067e\u0631 \u0646\u0634\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 Auracast \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u06cc\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u0639\u0648\u0627\u0645\u06cc \u062c\u06af\u06c1\u0648\u06ba \u067e\u0631 \u0622\u0688\u06cc\u0648 \u0646\u0634\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0633\u06d2 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0679\u06cc\u0648\u0646 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 (\u062c\u06cc\u0633\u06d2 \u06c1\u0648\u0627\u0626\u06cc \u0627\u0688\u0648\u06ba \u0645\u06cc\u06ba \u062e\u0627\u0645\u0648\u0634 \u0679\u06cc \u0648\u06cc\u060c \u062a\u06be\u06cc\u0679\u0631\u0632 \u0645\u06cc\u06ba \u0633\u0645\u0627\u0639\u062a \u06a9\u06d2 \u0622\u0644\u0627\u062a\u060c \u06a9\u0627\u0646\u0641\u0631\u0646\u0633 \u0631\u0648\u0645\u0632 \u0645\u06cc\u06ba \u06a9\u062b\u06cc\u0631 \u0644\u0633\u0627\u0646\u06cc \u0646\u0634\u0631\u06cc\u0627\u062a \u0648\u063a\u06cc\u0631\u06c1)\u06d4<\/p>\n<p>Zephyr \u0645\u06a9\u0645\u0644 LE \u0622\u0688\u06cc\u0648 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0634\u0645\u0648\u0644 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0622\u0688\u06cc\u0648 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 (BAP)\u060c \u0634\u0627\u0626\u0639 \u0634\u062f\u06c1 \u0622\u0688\u06cc\u0648 \u06a9\u06cc\u067e\u0628\u0644\u0679\u06cc\u0632 (PACS)\u060c \u0622\u0688\u06cc\u0648 \u0627\u0633\u0679\u0631\u06cc\u0645 \u06a9\u0646\u0679\u0631\u0648\u0644 (ASCS)\u060c \u0648\u0627\u0644\u06cc\u0648\u0645 \u06a9\u0646\u0679\u0631\u0648\u0644 (VCP)\u060c \u0645\u06cc\u0688\u06cc\u0627 \u06a9\u0646\u0679\u0631\u0648\u0644 (MCP)\u060c \u06a9\u0627\u0644 \u06a9\u0646\u0679\u0631\u0648\u0644 (CCP)\u060c \u0679\u06cc\u0644\u06cc \u0641\u0648\u0646 \u0627\u0648\u0631 \u0645\u06cc\u0688\u06cc\u0627 \u0622\u0688\u06cc\u0648 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 (TMAP)\u060c \u0627\u0648\u0631 \u06a9\u0627\u0645\u0646 \u0622\u0688\u06cc\u0648 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 (CAP)\u06d4<\/p>\n<p>\u06a9\u06c1 <code>prj.conf<\/code> LE \u0622\u0688\u06cc\u0648 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_BT=y\nCONFIG_BT_AUDIO=y\nCONFIG_BT_BAP_UNICAST_SERVER=y\nCONFIG_BT_PACS=y\nCONFIG_BT_ASCS=y\nCONFIG_BT_ISO=y\nCONFIG_BT_PAC_SNK=y\nCONFIG_BT_PAC_SRC=y\n<\/code><\/pre>\n<p>LE \u0622\u0688\u06cc\u0648 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u0628\u0646\u06cc\u0627\u062f\u06cc BLE \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06c1\u06d2\u06d4 \u0627\u0633 \u0645\u06cc\u06ba isochronous \u0686\u06cc\u0646\u0644\u0632 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645\u060c \u06a9\u0648\u0688\u06cc\u06a9 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u0627\u060c \u0622\u0688\u06cc\u0648 \u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0631\u06cc\u0645\u0632 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u0645\u062e\u062a\u0644\u0641 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0644\u06cc\u0626\u0631\u0632 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u0646\u0627 \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 Zephyr \u06a9\u06d2 \u0646\u0645\u0648\u0646\u06d2 \u06c1\u06cc\u06ba <code>samples\/bluetooth\/bap_unicast_server<\/code> \u0627\u0648\u0631 <code>samples\/bluetooth\/bap_broadcast_source<\/code> \u06cc\u06c1 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0646\u0642\u0637\u06c1 \u0622\u063a\u0627\u0632 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0633\u0645\u0627\u0639\u062a \u06a9\u06d2 \u0622\u0644\u0627\u062a\u060c \u0627\u06cc\u0626\u0631\u0628\u0688\u0632\u060c \u06cc\u0627 \u062f\u06cc\u06af\u0631 \u0622\u0688\u06cc\u0648 \u0688\u06cc\u0648\u0627\u0626\u0633\u0632 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 Zephyr&#8217;s LE Audio \u0627\u06cc\u06a9 \u0633\u0646\u062c\u06cc\u062f\u06c1 \u0633\u0631\u0645\u0627\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2\u06d4 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0627\u0633\u0679\u06cc\u06a9 \u0622\u067e \u06a9\u06d2 \u0646\u0641\u0627\u0630 \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u0645\u0631\u0626\u06cc\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 Nordic \u06a9\u06d2 nRF5340 \u0627\u0648\u0631 nRF54 \u0633\u06cc\u0631\u06cc\u0632 \u06a9\u06d2 \u0686\u067e\u0633 \u0636\u0631\u0648\u0631\u06cc \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u0633\u067e\u0648\u0631\u0679 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-debugging-bluetooth-applications\">\u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0688\u06cc\u0628\u06af \u06a9\u0631\u0646\u0627<\/h2>\n<p>BLE \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0627\u06cc\u0645\u0628\u06cc\u0688\u0688 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0688\u06cc\u0628\u06af \u06a9\u0631\u0646\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0634\u06a9\u0644 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u06a9\u0645\u06cc\u0648\u0646\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u067e\u0648\u0634\u06cc\u062f\u06c1 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06c1\u0648\u0627 \u0645\u06cc\u06ba \u0628\u0631\u06cc\u06a9 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u0646\u06c1\u06cc\u06ba \u0644\u06af\u0627 \u0633\u06a9\u062a\u06d2\u06d4 BLE \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0638\u0627\u0645 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u0648\u0644\u0632 \u0627\u0648\u0631 \u062a\u06a9\u0646\u06cc\u06a9\u0648\u06ba \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<p><strong>\u0632\u06cc\u0641\u06cc\u0631 \u06a9\u0627 \u0644\u0627\u06af\u0646\u06af \u0633\u0628 \u0633\u0633\u0679\u0645<\/strong> \u06cc\u06c1 \u0622\u067e \u06a9\u06cc \u062f\u0641\u0627\u0639 \u06a9\u06cc \u067e\u06c1\u0644\u06cc \u0644\u0627\u0626\u0646 \u06c1\u06d2\u06d4 \u062a\u0641\u0635\u06cc\u0644\u06cc \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0644\u0627\u06af \u0627\u0646 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_LOG=y\nCONFIG_BT_DEBUG_LOG=y\nCONFIG_BT_LOG_LEVEL_DBG=4\n<\/code><\/pre>\n<p><code>CONFIG_LOG=y<\/code>    \u0644\u0627\u06af\u0646\u06af \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 <code>CONFIG_BT_DEBUG_LOG=y<\/code> \u0627\u0648\u0631 <code>CONFIG_BT_LOG_LEVEL_DBG=4<\/code> \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0628\u06af \u0644\u06cc\u0648\u0644 \u0644\u0627\u06af\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u062a\u0645\u0627\u0645 HCI \u06a9\u0645\u0627\u0646\u0688\u0632\u060c \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0627\u06cc\u0648\u0646\u0679\u0633\u060c \u06a9\u0646\u06a9\u0634\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633\u060c GATT \u0622\u067e\u0631\u06cc\u0634\u0646\u0632\u060c \u0627\u0648\u0631 \u063a\u0644\u0637\u06cc\u0627\u06ba \u062f\u06a9\u06be\u0627\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0641\u0635\u06cc\u0644\u06cc \u0622\u0624\u0679 \u067e\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0646\u0633\u0648\u0644 \u0645\u06cc\u06ba \u062c\u0627\u062a\u0627 \u06c1\u06d2 (\u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 UART)\u06d4 \u06cc\u06c1 \u0628\u06c1\u062a \u0644\u0641\u0638\u06cc \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0627\u0633\u06d2 \u0641\u0639\u0627\u0644 \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06c1\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0632\u06cc\u0641\u06cc\u0631 \u0634\u06cc\u0644<\/strong> \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0646\u0679\u0631\u0627\u06cc\u06a9\u0679\u0648 \u06a9\u0645\u0627\u0646\u0688 \u0644\u0627\u0626\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_SHELL=y\nCONFIG_BT_SHELL=y\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06d2 \u0634\u06cc\u0644 \u06a9\u0645\u0627\u0646\u0688 \u0645\u0644\u06cc\u06ba \u06af\u06d2: <code>bt init<\/code>\u060c <code>bt advertise on<\/code>\u060c <code>bt connect<\/code>\u060c <code>bt gatt discover<\/code>\u0627\u0648\u0631 <code>bt gatt read<\/code> \u0622\u067e \u0633\u06cc\u0631\u06cc\u0644 \u06a9\u0646\u0633\u0648\u0644 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u0627\u0646\u0679\u0631\u0627\u06cc\u06a9\u0679\u0648 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0627\u0648\u0631 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u0627\u06c1\u0645 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0645\u0648\u0628\u0627\u0626\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 nRF \u06a9\u0646\u06cc\u06a9\u0679<\/strong> (iOS\/Android) \u0627\u06cc\u06a9 \u0636\u0631\u0648\u0631\u06cc \u0633\u0627\u062a\u06be\u06cc \u0679\u0648\u0644 \u06c1\u06d2\u06d4 \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af \u0627\u0648\u0631 \u06a9\u0646\u06cc\u06a9\u0679\u0646\u06af \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1\u060c \u06cc\u06c1 \u062a\u0645\u0627\u0645 GATT \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0691\u06be\/\u0644\u06a9\u06be \u0633\u06a9\u062a\u0627\/\u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u062e\u0627\u0645 \u0627\u0634\u062a\u06c1\u0627\u0631\u06cc \u0688\u06cc\u0679\u0627 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 BLE \u0627\u06cc\u0648\u0646\u0679\u0633 \u06a9\u0648 \u0679\u0627\u0626\u0645 \u0633\u0679\u06cc\u0645\u067e \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0644\u0627\u06af \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u0622\u0644\u06c1 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062a\u0634\u06c1\u06cc\u0631 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u06a9\u06c1 GATT \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062f\u0631\u0633\u062a \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06c1 \u067e\u0691\u06be\u0646\u0627\/\u0644\u06a9\u06be\u0646\u0627\/\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0628 \u062a\u0648\u0642\u0639 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u0648\u0646\u06af\u06be\u0646\u06d2 \u0648\u0627\u0644\u0627<\/strong> \u062d\u0642\u06cc\u0642\u06cc \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u067e\u06cc\u06a9\u0679 \u06a9\u06cc\u067e\u0686\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 nRF52840 DK \u06a9\u0648 \u0628\u0644\u0648\u0679\u0648\u062a\u06be LE \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 Nordic \u06a9\u06d2 nRF \u0633\u0646\u0641\u0641\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0646\u06cc\u0641\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 Wireshark (\u062c\u0633 \u0645\u06cc\u06ba BLE \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2) \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u062a\u0627\u0631 \u067e\u0631 \u0645\u0648\u062c\u0648\u062f \u062a\u0645\u0627\u0645 \u067e\u06cc\u06a9\u0679\u0648\u06ba \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 PDU \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a\u060c \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0648\u0627\u0642\u0639\u0627\u062a\u060c GATT \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u062c\u0648\u0627\u0628\u060c \u0627\u0648\u0631 \u062c\u0648\u0691\u06cc \u06a9\u06d2 \u062a\u0628\u0627\u062f\u0644\u06d2\u06d4 \u062c\u0628 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u06a9\u0686\u06be \u06a9\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2 \u062a\u0648 \u06cc\u06c1 \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u0627 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0679\u0648\u0644 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0639\u0627\u0645 \u0688\u06cc\u0628\u06af\u0646\u06af \u067e\u06cc\u0679\u0631\u0646\u06d4<\/strong> \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u0627 \u0627\u0634\u062a\u06c1\u0627\u0631 \u0646\u0638\u0631 \u0646\u06c1\u06cc\u06ba \u0622\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0627\u0634\u062a\u06c1\u0627\u0631 \u06a9\u0627 \u0688\u06cc\u0679\u0627 31 \u0628\u0627\u0626\u0679\u0633 (\u0631\u0648\u0627\u06cc\u062a\u06cc \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2) \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0641\u0644\u06cc\u06af \u0641\u06cc\u0644\u0688 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06af\u0631 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba: <code>CONFIG_BT_PERIPHERAL<\/code> \u0641\u0639\u0627\u0644 \u06c1\u06d2 (\u0635\u0631\u0641 <code>CONFIG_BT_BROADCASTER<\/code>)\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 GATT \u0631\u06cc\u0688 \u0635\u0641\u0631 \u0637\u0648\u0627\u0644\u062a \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u067e\u0691\u06be\u0627 \u06c1\u0648\u0627 \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u0633 \u0645\u06cc\u06ba \u0635\u062d\u06cc\u062d \u0642\u062f\u0631 \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2: <code>bt_gatt_attr_read<\/code>. \u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639 \u0646\u06c1\u06cc\u06ba \u067e\u06c1\u0646\u0686\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 0x0001 CCCD \u06a9\u0648 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u06a9\u06be\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u0627 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba: <code>CONFIG_BT_SMP=y<\/code> \u06cc\u06c1 \u0633\u06cc\u0679 \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u0635\u062f\u06cc\u0642\u06cc \u06a9\u0627\u0644 \u0628\u06cc\u06a9 \u0631\u062c\u0633\u0679\u0631\u0688 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-power-optimization-for-ble-devices\">BLE \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0627\u0648\u0631 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646<\/h2>\n<p>\u0627\u06cc\u06a9 BLE \u0688\u06cc\u0648\u0627\u0626\u0633 \u062c\u0633 \u06a9\u06cc \u0628\u06cc\u0679\u0631\u06cc \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u06c1\u0641\u062a\u06d2 \u0645\u06cc\u06ba \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u0679\u0648\u0679\u06cc \u06c1\u0648\u0626\u06cc \u067e\u0631\u0648\u0688\u06a9\u0679 \u06c1\u06d2\u06d4 \u067e\u0627\u0648\u0631 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0631\u06a9\u0627\u0648\u0679 \u06c1\u06d2\u060c \u0633\u0648\u0686\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0646\u06c1\u06cc\u06ba\u06d4 Zephyr \u0679\u0648\u0644\u0632 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0622\u067e \u06a9\u0648 \u0627\u0646\u06c1\u06cc\u06ba \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<p>BLE \u0688\u06cc\u0648\u0627\u0626\u0633 \u0645\u06cc\u06ba \u0628\u062c\u0644\u06cc \u06a9\u0627 \u0633\u0628 \u0633\u06d2 \u0628\u0691\u0627 \u0635\u0627\u0631\u0641 \u0631\u06cc\u0688\u06cc\u0648 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af \u0627\u06cc\u0648\u0646\u0679\u060c \u06a9\u0646\u06a9\u0634\u0646 \u0627\u06cc\u0648\u0646\u0679\u060c \u0627\u0648\u0631 \u0627\u0633\u06a9\u06cc\u0646 \u0648\u0646\u0688\u0648 \u0627\u06cc\u06a9 \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0679\u0631\u0627\u0646\u0633\u0645\u06cc\u0679\u0631 \u06cc\u0627 \u0631\u06cc\u0633\u06cc\u0648\u0631 \u06a9\u0648 \u0627\u06cc\u06a9 \u0648\u0642\u062a \u0645\u06cc\u06ba \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u0627\u0644\u0648 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0633 \u0645\u06cc\u06ba \u0645\u0644\u06cc \u0627\u06cc\u0645\u067e \u06a9\u0631\u0646\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u0646\u0627 \u0628\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u0632\u0646\u062f\u06af\u06cc \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0630\u0631\u06cc\u0639\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0648\u0642\u0641\u06c1 \u0628\u0691\u06be\u0627\u0626\u06cc\u06ba\u06d4 1000ms \u06a9\u0627 \u0648\u0642\u0641\u06c1 200ms \u06a9\u06d2 \u0648\u0642\u0641\u06d2 \u0633\u06d2 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 5 \u06af\u0646\u0627 \u06a9\u0645 \u0637\u0627\u0642\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0637\u0648\u06cc\u0644 \u0648\u0642\u0641\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u067e \u062f\u0648 \u0642\u062f\u0645\u06cc \u0627\u067e\u0631\u0648\u0686 \u0628\u06be\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u0639\u0646\u06cc\u060c \u06cc\u06c1 \u067e\u0627\u0648\u0631 \u0622\u0646 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u067e\u06c1\u0644\u06d2 30 \u0633\u06cc\u06a9\u0646\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0632 \u0648\u0642\u0641\u0648\u06ba (100 ms) \u06a9\u06cc \u062a\u0634\u06c1\u06cc\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u067e\u06be\u0631 \u0645\u0633\u062a\u062d\u06a9\u0645 \u062d\u0627\u0644\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u062a \u0648\u0642\u0641\u0648\u06ba (1000 ms) \u067e\u0631 \u0633\u0648\u0626\u0686 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 Zephyr \u06a9\u0627 \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af API \u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0646\u0633\u0644\u06a9 \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0644\u06cc\u0679\u0646\u0633\u06cc \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 4 \u06a9\u06cc \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0644\u06cc\u0679\u06cc\u0646\u0633\u06cc \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u067e\u06cc\u0631\u06cc\u0641\u06cc\u0631\u0644 \u062c\u0648\u0627\u0628 \u062f\u06cc\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0686\u0627\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633 \u06a9\u0648 \u0686\u06be\u0648\u0691 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u0648\u0642\u0641\u06c1 50ms \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0644\u06cc\u0679\u0646\u0633\u06cc 4 \u06c1\u06d2\u060c \u062a\u0648 \u067e\u06cc\u0631\u06cc\u0641\u06cc\u0631\u0644 50ms \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06c1\u0631 250ms \u067e\u0631 \u062c\u0627\u06af \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u06af\u0631 \u06c1\u0627\u0626\u06cc \u062a\u06be\u0631\u0648 \u067e\u0679 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0645\u0631\u06a9\u0632 \u0637\u0648\u06cc\u0644 \u06a9\u0646\u06a9\u0634\u0646 \u0648\u0642\u0641\u0648\u06ba \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-c\">static struct bt_le_conn_param conn_params = {\n    .interval_min = 80,   \/* 100 ms (units of 1.25 ms) *\/\n    .interval_max = 160,  \/* 200 ms *\/\n    .latency = 4,\n    .timeout = 400,       \/* 4 seconds (units of 10 ms) *\/\n};\n\n\/* After connection is established: *\/\nbt_conn_le_param_update(conn, &conn_params);\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>bt_conn_le_param_update<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0645\u0631\u06a9\u0632 \u06a9\u0648 \u06a9\u0646\u06a9\u0634\u0646 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0642\u0628\u0648\u0644 \u06cc\u0627 \u0645\u0633\u062a\u0631\u062f \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0645\u0631\u06a9\u0632\u06cc \u0622\u0644\u0627\u062a (\u0679\u06cc\u0644\u06cc \u0641\u0648\u0646) \u0645\u0639\u0642\u0648\u0644 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u06a9\u06cc \u062d\u062f\u0648\u062f \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>Zephyr \u06a9\u06d2 \u0633\u0633\u0679\u0645 \u067e\u0627\u0648\u0631 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">CONFIG_PM=y\nCONFIG_PM_DEVICE=y\n<\/code><\/pre>\n<p>\u062c\u0628 \u067e\u0627\u0648\u0631 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06a9\u0631\u0646\u0644 \u067e\u0631\u0648\u0633\u06cc\u0633\u0631 \u06a9\u0648 \u06a9\u0645 \u0637\u0627\u0642\u062a \u0648\u0627\u0644\u06cc \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0628\u06be\u06cc \u06a9\u0648\u0626\u06cc \u062a\u06be\u0631\u06cc\u0688 \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u0646\u06c1 \u06c1\u0648\u06d4<\/p>\n<p>nRF52840 \u0645\u06cc\u06ba\u060c \u0628\u06cc\u06a9\u0627\u0631 \u06a9\u0631\u0646\u0679 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 3 mA (\u0641\u0639\u0627\u0644) \u0633\u06d2 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 1.5 \u03bcA (RAM \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0633\u0679\u0645 \u0622\u0641) \u062a\u06a9 \u06af\u0631 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u0631\u0642 \u0628\u06c1\u062a \u0628\u0691\u0627 \u06c1\u06d2\u06d4 Zephyr \u067e\u0627\u0648\u0631 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc\u0627\u06ba \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06af\u06c1\u0631\u06cc \u0646\u06cc\u0646\u062f \u06a9\u06cc \u0627\u0633 \u062d\u0627\u0644\u062a \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0633 \u0645\u06cc\u06ba \u0646\u0638\u0627\u0645 \u0627\u06af\u0644\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0648\u06cc\u06a9 \u0627\u06cc\u0648\u0646\u0679 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u062f\u0627\u062e\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0688\u06cc\u0648\u0627\u0626\u0633 \u0679\u0631\u06cc \u0627\u0648\u0648\u0631\u0644\u06d2 \u0645\u06cc\u06ba \u063a\u06cc\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0634\u062f\u06c1 \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u062a\u0645\u0627\u0645 \u0641\u0639\u0627\u0644 \u067e\u06cc\u0631\u06cc \u0641\u06cc\u0631\u0644\u0632 (UART\u060c SPI\u060c I2C) \u0628\u06cc\u06a9\u0627\u0631 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0628\u06be\u06cc \u0628\u062c\u0644\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba UART \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 (\u0635\u0631\u0641 \u062a\u0631\u0642\u06cc\u0627\u062a\u06cc \u0644\u0627\u06af\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2)\u060c UART \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-dts\">&uart0 {\n    status = \"disabled\";\n};\n<\/code><\/pre>\n<p>\u0627\u0635\u0644 \u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u06be\u067e\u062a \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u0646\u0648\u0631\u0688\u06a9 \u067e\u0627\u0648\u0631 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0631 \u06a9\u0679 II \u062c\u06cc\u0633\u06d2 \u0679\u0648\u0644\u0632 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0627\u0645\u067e \u0631\u06cc\u0632\u0648\u0644\u0648\u0634\u0646 \u067e\u0631 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u06a9\u0631\u0646\u0679 \u0688\u0631\u0627 \u062f\u06a9\u06be\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 Zephyr \u06a9\u06cc <code>CONFIG_THREAD_ANALYZER<\/code> \u06cc\u06c1 \u062f\u06be\u0627\u06af\u06d2 \u06a9\u06d2 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u0645\u0646\u0627\u0633\u0628 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0633\u0627\u0626\u0632 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u062e\u062a\u0635 \u0627\u0633\u0679\u06cc\u06a9 RAM \u06a9\u0648 \u0636\u0627\u0626\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u0639\u0646\u06cc \u0632\u06cc\u0627\u062f\u06c1 RAM \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2)\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 BLE \u0633\u06cc\u0646\u0633\u0631 \u06a9\u0627 \u0645\u0642\u0635\u062f \u0633\u0646\u06af\u0644 \u06c1\u0646\u062f\u0633\u06c1 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0627\u06cc\u0645\u067e \u0627\u0648\u0633\u0637 \u06a9\u0631\u0646\u0679 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u0648\u0627\u0626\u0646 \u0633\u06cc\u0644 \u0628\u06cc\u0679\u0631\u06cc \u067e\u0631 \u0628\u0631\u0633\u0648\u06ba \u062a\u06a9 \u0686\u0644 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 Zephyr \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062a\u0645\u0627\u0645 \u067e\u0631\u062a\u0648\u06ba \u067e\u0631 \u062a\u0648\u062c\u06c1 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2: \u0631\u06cc\u0688\u06cc\u0648 \u0634\u06cc\u0688\u0648\u0644\u0646\u06af\u060c \u067e\u06cc\u0631\u06cc\u0641\u0631\u0644 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679\u060c \u06af\u06be\u0691\u06cc \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u060c \u0627\u0648\u0631 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0688\u06cc\u0632\u0627\u0626\u0646\u06d4<\/p>\n<h2 id=\"heading-zephyr-bluetooth-vs-other-stacks\">Zephyr \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0627\u0633\u0679\u06cc\u06a9<\/h2>\n<p>\u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 Zephyr \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06cc\u06c1\u0627\u06ba \u06c1\u06d2:<\/p>\n<h3 id=\"heading-1-zephyr-vs-nordic-softdevice\">1. \u0632\u06cc\u0641\u06cc\u0631 \u0628\u0645\u0642\u0627\u0628\u0644\u06c1 \u0646\u0648\u0631\u0688\u06a9 \u0633\u0627\u0641\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633<\/h3>\n<p>Nordic&#8217;s SoftDevice Zephyr \u0645\u06cc\u06ba \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u06cc\u06a9 \u0645\u0644\u06a9\u06cc\u062a\u06cc BLE \u0627\u0633\u0679\u06cc\u06a9 \u062a\u06be\u0627\u06d4 SoftDevices \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u0631\u062a\u0628 \u0634\u062f\u06c1 \u0628\u0627\u0626\u0646\u0631\u06cc \u0628\u0644\u0627\u0628\u0632 \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0627\u0646 \u06a9\u06d2 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648\u0688 \u06a9\u0648 \u067e\u0691\u06be\u0627 \u06cc\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4 Nordic \u06a9\u0627 nRF Connect SDK (Zephyr \u067e\u0631 \u0645\u0628\u0646\u06cc) SoftDevice \u06a9\u0648 Zephyr \u06a9\u06d2 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0627\u0633\u0679\u06cc\u06a9 \u0633\u06d2 \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0646\u0648\u0631\u0688\u06a9 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 Zephyr \u06a9\u0648 \u0622\u0632\u0645\u0627\u0626\u06cc\u06ba\u06d4 SoftDevice \u0645\u06cc\u0631\u0627\u062b \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-zephyr-vs-nimble-apache-mynewt\">Zephyr \u0628\u0645\u0642\u0627\u0628\u0644\u06c1 NimBLE (Apache Mynewt)<\/h3>\n<p>NimBLE \u0627\u06cc\u06a9 \u06c1\u0644\u06a9\u0627 \u067e\u06be\u0644\u06a9\u0627\u060c \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 BLE \u06c1\u0648\u0633\u0679 \u0627\u0633\u0679\u06cc\u06a9 \u06c1\u06d2 \u062c\u0648 \u0627\u0635\u0644 \u0645\u06cc\u06ba Apache Mynewt \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0633\u06d2 \u06c1\u06d2 (\u0627\u0633\u0679\u06cc\u0646\u0688 \u062a\u0646\u06c1\u0627 \u0627\u0648\u0631 ESP-IDF \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0631\u0679\u06cc\u0628\u0644 \u0628\u06be\u06cc \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2)\u06d4 NimBLE Zephyr \u06a9\u06d2 \u0627\u0633\u0679\u06cc\u06a9 \u0633\u06d2 \u0686\u06be\u0648\u0679\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0645\u062d\u062f\u0648\u062f RAM \u0648\u0627\u0644\u06d2 \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 Zephyr \u06a9\u0627 \u0627\u0633\u0679\u06cc\u06a9 \u0632\u06cc\u0627\u062f\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u0633\u06d2 \u0628\u06be\u0631\u067e\u0648\u0631 \u06c1\u06d2 (LE \u0622\u0688\u06cc\u0648\u060c \u0645\u06cc\u0634\u060c \u0688\u0627\u0626\u0631\u06cc\u06a9\u0634\u0646 \u0641\u0627\u0626\u0646\u0688\u0646\u06af) \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u0648\u0633\u06cc\u0639 \u062a\u0631 \u0635\u0646\u0639\u062a \u06a9\u0648 \u0627\u067e\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u067e\u0631\u0648\u0688\u06a9\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c Zephyr \u0627\u06cc\u06a9 \u0632\u06cc\u0627\u062f\u06c1 \u0637\u0627\u0642\u062a\u0648\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e RAM \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0633\u062e\u062a\u06cc \u0633\u06d2 \u0645\u062d\u062f\u0648\u062f \u0646\u06c1 \u06c1\u0648\u06ba\u06d4<\/p>\n<h3 id=\"heading-zephyr-vs-esp-idf-bluetooth\">Zephyr \u0628\u0645\u0642\u0627\u0628\u0644\u06c1 ESP-IDF \u0628\u0644\u0648\u0679\u0648\u062a\u06be<\/h3>\n<p>Espressif \u06a9\u06d2 ESP-IDF \u0645\u06cc\u06ba ESP32 \u0686\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0627\u0633\u0679\u06cc\u06a9 (Bluedroid \u06cc\u0627 NimBLE) \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0635\u0631\u0641 ESP32 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 ESP-IDF \u0627\u06cc\u06a9 \u062f\u0631\u0633\u062a \u0627\u0646\u062a\u062e\u0627\u0628 \u06c1\u06d2\u06d4 Zephyr ESP32 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06d2 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631\u060c \u0627\u06cc\u06a9 \u0645\u0631\u0628\u0648\u0637 \u0628\u0644\u0688 \u0633\u0633\u0679\u0645\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0632\u06cc\u0627\u062f\u06c1 \u062c\u0627\u0645\u0639 BLE \u0641\u06cc\u0686\u0631 \u0633\u06cc\u0679 \u06a9\u0648 \u067e\u0648\u0631\u0679\u06cc\u0628\u0644\u0679\u06cc \u067e\u06cc\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u06a9\u0628\u06be\u06cc \u0686\u067e \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u062a\u0648 Zephyr \u06a9\u06cc \u067e\u0648\u0631\u0679\u06cc\u0628\u0644\u0679\u06cc \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0641\u0627\u0626\u062f\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-zephyr-vs-vendor-sdks-with-proprietary-stacks\">\u0645\u0644\u06a9\u06cc\u062a\u06cc \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be Zephyr \u0627\u0648\u0631 \u0648\u06cc\u0646\u0688\u0631 SDKs<\/h3>\n<p>\u0628\u06c1\u062a \u0633\u06d2 \u0686\u067e \u0641\u0631\u0648\u0634 \u0627\u067e\u0646\u06d2 BLE SDKs \u06a9\u0648 \u0628\u0646\u062f \u0633\u0648\u0631\u0633 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0622\u067e \u0627\u0633 \u0648\u06cc\u0646\u0688\u0631 \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u0628\u0646\u062f \u06c1\u06cc\u06ba\u06d4 Zephyr \u067e\u0648\u0631\u0679\u06cc\u0628\u0644\u0679\u06cc\u060c \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0628\u0691\u06cc \u06a9\u0645\u06cc\u0648\u0646\u0679\u06cc \u06a9\u06cc \u0628\u0627\u06c1\u0645\u06cc \u062a\u0639\u0627\u0648\u0646 \u067e\u06cc\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0679\u0631\u06cc\u0688 \u0622\u0641 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0633\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u0627 \u0645\u0646\u062d\u0646\u06cc \u062e\u0637\u0648\u0637 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u06cc\u0632 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0645\u0639\u0631\u0648\u0641 \u0686\u067e \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062c\u0646 \u067e\u0631\u0648\u0688\u06a9\u0679\u0633 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u062c\u0627\u0631\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0627\u06cc\u06a9 \u0648\u06cc\u0646\u0688\u0631 SDK \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0632 \u062a\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0631\u0648\u0688\u06a9\u0679 \u0644\u0627\u0626\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0686\u067e\u0633 \u067e\u0631 \u0645\u062d\u06cc\u0637 \u06c1\u06cc\u06ba \u06cc\u0627 \u0637\u0648\u06cc\u0644 \u0645\u062f\u062a\u06cc \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c Zephyr \u062c\u06cc\u062a\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-where-to-go-from-here\">\u0645\u06cc\u06ba \u06cc\u06c1\u0627\u06ba \u0633\u06d2 \u06a9\u06c1\u0627\u06ba \u062c\u0627\u0624\u06ba\u061f<\/h2>\n<p>\u06c1\u0645 \u0646\u06d2 \u0627\u0633 \u06c1\u06cc\u0646\u0688 \u0628\u06a9 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u06a9\u0686\u06be \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u0628 \u0622\u067e \u06a9\u0648 BLE \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0628\u0627\u062a\u06cc\u06ba\u060c GAP \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af\u060c GATT \u0633\u0631\u0648\u0633\u0632\u060c \u06a9\u0646\u06cc\u06a9\u0679\u06cc\u0648\u06cc\u0679\u06cc\u060c \u0646\u0648\u0679\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646\u0632\u060c \u067e\u06cc\u0626\u0631\u0646\u06af\u060c \u0645\u06cc\u0634\u060c LE \u0622\u0688\u06cc\u0648\u060c \u0688\u06cc\u0628\u06af\u0646\u06af\u060c \u0627\u0648\u0631 \u067e\u0627\u0648\u0631 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0645\u06cc\u06ba \u0646\u06d2 \u062a\u0645\u0627\u0645 \u06a9\u0644\u06cc\u062f\u06cc \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u0627\u06d4 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06cc\u06c1\u0627\u06ba \u06c1\u06d2:<\/p>\n<p>Zephyr \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0646\u0645\u0648\u0646\u06c1 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc (<code>zephyr\/samples\/bluetooth\/<\/code>)\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 30 \u0633\u06d2 \u200b\u200b\u0632\u06cc\u0627\u062f\u06c1 \u0645\u062b\u0627\u0644\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>peripheral_hr<\/code> \u0646\u0645\u0648\u0646\u06d2 \u0645\u06cc\u06ba \u062f\u0644 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>central<\/code> \u0646\u0645\u0648\u0646\u06c1 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633\u06a9\u06cc\u0646\u0646\u06af\/\u06a9\u0646\u06a9\u0634\u0646 \u0645\u0631\u06a9\u0648\u0632 \u06a9\u0631\u062f\u0627\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u06a9\u06c1 <code>mesh\/<\/code> \u0630\u06cc\u0644\u06cc \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0645\u06cc\u0634 \u0688\u06cc\u0648\u0644\u067e\u0645\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0627\u0626\u0679 \u0633\u0648\u0626\u0686\u0632\u060c \u0644\u0627\u0626\u0679 \u0628\u0644\u0628 \u0627\u0648\u0631 \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>bap_*<\/code> \u0646\u0645\u0648\u0646\u06c1 LE \u0622\u0688\u06cc\u0648 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>Zephyr \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u067e\u0691\u06be\u06cc\u06ba\u06d4 <code>docs.zephyrproject.org\/latest\/connectivity\/bluetooth\/<\/code>. API \u062d\u0648\u0627\u0644\u06c1 \u062a\u0645\u0627\u0645 \u0641\u0646\u06a9\u0634\u0646\u0632\u060c \u0645\u06cc\u06a9\u0631\u0648\u0632 \u0627\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0645\u06cc\u0632\u0628\u0627\u0646\u060c \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u060c \u0627\u0648\u0631 HCI \u067e\u0631\u062a\u06cc\u06ba \u06a9\u0633 \u0637\u0631\u062d \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0646\u0648\u0631\u0688\u06a9 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 nRF Connect SDK \u0633\u06cc\u0679 \u0627\u067e \u062d\u0627\u0635\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 nRF Connect SDK Zephyr \u06a9\u06d2 \u0627\u0648\u067e\u0631 \u0646\u0648\u0631\u0688\u06a9 \u0645\u062e\u0635\u0648\u0635 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0634\u0645\u0648\u0644 \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u060c \u0645\u0644\u06a9\u06cc\u062a\u06cc \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 (ESB\u060c Gazell)\u060c \u0627\u0648\u0631 \u0633\u06cc\u0644\u0648\u0644\u0631 \u0645\u0648\u0688\u06cc\u0645 \u0633\u067e\u0648\u0631\u0679\u06d4 \u06cc\u06c1 \u0648\u06c1\u06cc Zephyr \u06a9\u0631\u0646\u0644 \u0627\u0648\u0631 \u0628\u0644\u0688 \u0633\u0633\u0679\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0688\u06cc\u0633\u06a9 \u0644\u06cc\u0645\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 BLE \u0631\u06cc\u0645\u0648\u0679 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0633\u06cc\u0646\u0633\u0631 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u0645\u0648\u0628\u0627\u0626\u0644 \u0641\u0648\u0646 \u067e\u0631 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u0627\u0648\u0631 \u0646\u0645\u06cc \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 BLE \u06a9\u0646\u06cc\u06a9\u0679\u0648\u0679\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u06a9\u06cc \u0628\u0648\u0631\u0688\u06d4 \u067e\u0627\u0644\u062a\u0648 \u062c\u0627\u0646\u0648\u0631\u0648\u06ba \u06a9\u0627 \u0679\u0631\u06cc\u06a9\u0631\u06d4<\/p>\n<p>\u0627\u0633 \u0639\u0644\u0645 \u06a9\u0648 \u0645\u0633\u062a\u062d\u06a9\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06c1 \u0627\u0635\u0644\u06cc \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0633\u0627\u0645\u0646\u0627 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 BLE \u067e\u0631\u0648\u0688\u06a9\u0679 \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0645\u0646\u0641\u0631\u062f \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba (iOS \u0627\u0648\u0631 Android \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u067e\u0631 \u0628\u0627\u062a \u0686\u06cc\u062a\u060c \u0628\u0627\u0646\u0688 \u06a9\u06d2 \u0646\u0642\u0635\u0627\u0646 \u06a9\u06d2 \u0628\u0639\u062f \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u0627\u060c \u0645\u0648\u062b\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 MTU \u0633\u0627\u0626\u0632 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u0646\u0627)\u060c \u0627\u0648\u0631 \u0622\u067e \u0627\u0646 \u06a9\u0648 \u0628\u0646\u0627 \u06a9\u0631 \u0633\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>BLE \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0628\u06c1\u062a \u0628\u0691\u0627 \u0627\u0648\u0631 \u0628\u0691\u06be \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 Zephyr \u06a9\u0645\u06cc\u0648\u0646\u0679\u06cc \u0627\u0648\u0631 \u0627\u0646\u0679\u0631\u067e\u0631\u0627\u0626\u0632 \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0645\u0639\u06cc\u0627\u0631\u060c \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0641\u0627\u0624\u0646\u0688\u06cc\u0634\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0639\u0627\u0644 \u062a\u0631\u0642\u06cc \u06a9\u0648 \u0645\u0645\u06a9\u0646 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4 \u0627\u0628 \u0622\u067e \u06a9\u0648 \u0627\u0633 \u067e\u0631 \u062a\u0639\u0645\u06cc\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0639\u0644\u0645 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-summary\">\u062e\u0644\u0627\u0635\u06c1<\/h2>\n<p>\u0627\u0633 \u06c1\u06cc\u0646\u0688 \u0628\u06a9 \u0645\u06cc\u06ba Zephyr OS \u0645\u06cc\u06ba \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u06a9\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0645\u06a9\u0645\u0644 \u062f\u0627\u0626\u0631\u06c1 \u06a9\u0627\u0631 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u0635\u0648\u0631\u0627\u062a \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062a\u06a9\u06d4<\/p>\n<p>BLE Basics \u0633\u06cc\u06a9\u0634\u0646 \u0646\u06d2 \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644 \u0642\u0627\u0626\u0645 \u06a9\u06cc\u0627 \u062c\u0633 \u067e\u0631 \u0628\u0627\u0642\u06cc \u0633\u0628 \u06a9\u0686\u06be \u0645\u0628\u0646\u06cc \u06c1\u06d2\u06d4 GAP \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0648\u0631 \u06a9\u0646\u06cc\u06a9\u0679\u06cc\u0648\u06cc\u0679\u06cc \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c GATT \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0633\u0627\u062e\u062a \u0627\u0648\u0631 \u062a\u0628\u0627\u062f\u0644\u06c1 \u06a9\u06cc\u0633\u06d2 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 API \u062a\u0634\u06a9\u06cc\u0644 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 UUID \u062a\u0645\u0627\u0645 \u0627\u062c\u0632\u0627\u0621 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u0635\u0648\u0631\u0627\u062a Zephyr \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc BLE \u0627\u0633\u0679\u06cc\u06a9 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>Zephyr \u06a9\u06cc \u0637\u0631\u0641\u060c \u06c1\u0645 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0628\u06cc\u06a9\u0646 \u0646\u06d2 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 BLE \u0633\u06cc\u0679 \u0627\u067e \u06a9\u0627 \u0645\u0638\u0627\u06c1\u0631\u06c1 \u06a9\u06cc\u0627\u06d4 \u06cc\u0639\u0646\u06cc \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0634\u062a\u06c1\u0627\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06cc\u0644 \u0627\u06cc \u0688\u06cc \u0633\u0631\u0648\u0633 \u06cc\u06c1 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0641\u0648\u0646 \u067e\u0631 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 GATT \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u0645\u062b\u0627\u0644 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0688\u06cc\u0679\u0627 \u067e\u0634 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u067e\u0648\u0631\u0627 \u0633\u06cc\u0646\u0633\u0631 \u0646\u0648\u0688 \u0627\u06cc\u0688\u0648\u0631\u0679\u0627\u0626\u0632\u0646\u06af\u060c GATT\u060c \u06a9\u0646\u06a9\u0634\u0646 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679\u060c \u0627\u0648\u0631 \u0645\u062a\u0648\u0627\u062a\u0631 \u0688\u06cc\u0679\u0627 \u0688\u06cc\u0644\u06cc\u0648\u0631\u06cc \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u0631\u0628\u0648\u0637 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u06cc\u06a9\u062c\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06c1\u0631 \u0627\u06cc\u06a9 \u0646\u0645\u0648\u0646\u06c1 (\u0627\u0634\u062a\u06c1\u0627\u0631\u0627\u062a \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u0627\u060c GATT \u06a9\u0627\u0644 \u0628\u06cc\u06a9\u0633 \u067e\u0631 \u062f\u0633\u062a\u062e\u0637 \u06a9\u0631\u0646\u0627\u060c CCC \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u0627\u060c \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u062a \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u0646\u0627) \u0622\u067e \u06a9\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u0631 BLE \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<p>\u0645\u0639\u06cc\u0627\u0631\u06cc \u06c1\u0627\u0631\u0679 \u0631\u06cc\u0679 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0646\u06d2 \u06cc\u06c1 \u0638\u0627\u06c1\u0631 \u06a9\u06cc\u0627 \u06a9\u06c1 SIG \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 16-bit UUID \u06a9\u0648 Zephyr \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 UUID \u0645\u06cc\u06a9\u0631\u0648\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0633\u06d2 \u0636\u0645 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0639\u0627\u0645 BLE \u0627\u06cc\u067e\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u0679\u0631\u0622\u067e\u0631\u06cc\u0628\u0644\u0679\u06cc \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u0645\u0631\u06a9\u0632\u06cc \u06a9\u0631\u062f\u0627\u0631 \u06a9\u06cc \u0645\u062b\u0627\u0644 \u0646\u06d2 BLE \u06a9\u06d2 \u062f\u06cc\u06af\u0631 \u067e\u06c1\u0644\u0648\u0624\u06ba \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u06cc\u0627: \u0633\u0631\u0648\u0633 \u06a9\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u060c \u06a9\u0646\u06cc\u06a9\u0679\u0648\u0679\u06cc\u060c \u0627\u0648\u0631 \u062f\u0648\u0631 \u062f\u0631\u0627\u0632 \u06a9\u06d2 \u0622\u0644\u0627\u062a \u067e\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a\u06d4 \u0627\u06cc\u0645 \u0679\u06cc \u06cc\u0648 \u06af\u0641\u062a \u0648 \u0634\u0646\u06cc\u062f \u0627\u0648\u0631 \u067e\u06cc \u0627\u06cc\u0686 \u0648\u0627\u0626\u06cc \u0633\u0644\u06cc\u06a9\u0634\u0646 \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0688\u06cc\u0679\u0627 \u062a\u06be\u0631\u0648 \u067e\u0679 \u0627\u0648\u0631 \u06a9\u0648\u0631\u06cc\u062c \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u062f\u0648 \u0627\u06c1\u0645 \u0630\u0631\u0627\u0626\u0639 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062f\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 Kconfig \u0627\u0648\u0631 \u0631\u0646 \u0679\u0627\u0626\u0645 API \u06a9\u0627\u0644\u0632 \u0645\u06cc\u06ba \u0645\u0631\u0628\u0648\u0637 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>DFU \u0633\u06cc\u06a9\u0634\u0646 \u0646\u06d2 MCUboot \u06a9\u0648 BLE \u067e\u0631 SMP \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u06a9\u06d2 \u0641\u06cc\u0644\u0688 \u0627\u067e \u0688\u06cc\u0679 \u0627\u06cc\u0628\u0644 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u06cc\u0627\u06d4<\/p>\n<p>\u067e\u0648\u0627\u0626\u0646\u0679 \u0679\u0648 \u067e\u0648\u0627\u0626\u0646\u0679 \u06a9\u0646\u06cc\u06a9\u0679\u06cc\u0648\u06cc\u0679\u06cc \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1\u060c \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0645\u06cc\u0634 \u0622\u0679\u0648\u0645\u06cc\u0634\u0646 \u0627\u0648\u0631 \u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 IoT \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc\u0648\u06ba \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 BLE \u06a9\u0648 \u06a9\u0626\u06cc \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0646\u06cc\u0679 \u0648\u0631\u06a9\u0633 \u062a\u06a9 \u067e\u06be\u06cc\u0644\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0628\u06a9\u06c1 LE \u0622\u0688\u06cc\u0648 LC3 \u06a9\u0648\u0688\u06cc\u06a9 \u0627\u0648\u0631 \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679 \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0622\u0688\u06cc\u0648 \u06a9\u06cc \u0627\u06af\u0644\u06cc \u0646\u0633\u0644 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0648\u0691\u0627 \u0628\u0646\u0627\u0646\u0627 \u0627\u0648\u0631 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0622\u0644\u0627\u062a \u06a9\u0648 \u063a\u06cc\u0631 \u0645\u062c\u0627\u0632 \u0631\u0633\u0627\u0626\u06cc \u0633\u06d2 \u0628\u0686\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u067e\u0627\u0648\u0631 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0688\u06cc\u0628\u06af\u0646\u06af \u0679\u0648\u0644\u0632\u060c \u0627\u0648\u0631 \u0627\u0633\u0679\u06cc\u06a9 \u0645\u0648\u0627\u0632\u0646\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0635\u0646\u0648\u0639\u0627\u062a \u06a9\u0648 \u0645\u0627\u0631\u06a9\u06cc\u0679 \u0645\u06cc\u06ba \u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u0639\u0645\u0644\u06cc \u0639\u0644\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u067e\u06cc\u0634 \u06a9\u0631\u062f\u06c1 \u06a9\u0648\u0688 \u067e\u06cc\u0679\u0631\u0646 \u0627\u0648\u0631 Kconfig \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a Zephyr \u067e\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc BLE \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0648 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0679\u0648\u0644 \u06a9\u0679 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0633\u0627\u062f\u06c1 \u0628\u06cc\u06a9\u0646\u0632 \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0645\u0644\u0679\u06cc \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06af\u06cc\u0679 \u0648\u06cc\u0632 \u062a\u06a9\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0648\u0627\u0626\u0631\u0644\u06cc\u0633 \u0627\u06cc\u0626\u0631\u0628\u0688\u0632 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u0627\u06cc\u06a9 \u0641\u0648\u0646\u060c \u0627\u06cc\u06a9 \u0627\u0633\u0645\u0627\u0631\u0679 \u0648\u0627\u0686 \u0646\u06d2 \u0635\u062d\u062a \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u06cc\u067e \u0633\u06d2 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u06a9\u06cc\u0627\u060c \u0627\u0648\u0631 \u0639\u0645\u0627\u0631\u062a \u0645\u06cc\u06ba \u06a9\u06c1\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0627\u06cc\u06a9 \u0633\u06cc\u0646\u0633\u0631 \u0646\u06d2 \u06af\u06cc\u0679 \u0648\u06d2 \u06a9\u0648 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u06d4 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0644\u0648 \u0627\u0646\u0631\u062c\u06cc (BLE) \u067e\u0631 \u06c1\u0648\u0626\u06d2\u06d4 \u0627\u0648\u0631 \u062a\u06cc\u0632\u06cc \u0633\u06d2\u060c \u0627\u0646 \u0622\u0644\u0627\u062a \u06a9\u0627 \u0641\u0631\u0645 \u0648\u06cc\u0626\u0631 Zephyr OS \u067e\u0631 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-24785","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/24785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=24785"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/24785\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=24785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=24785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=24785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}