{"id":371523,"date":"2024-05-21T04:50:43","date_gmt":"2024-05-21T04:50:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=371523"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=371523","title":{"rendered":"<span>KatWalk C2: \u0447.3: \u043e\u0442\u0440\u0435\u0437\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0430<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/articles\/798029\/\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438<\/a>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0430 \u0441\u0432\u044f\u0437\u044c \u0438\u0433\u0440 \u0441 \u0441\u043e\u0444\u0442\u043e\u043c. <a href=\"https:\/\/habr.com\/ru\/articles\/799197\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0444\u0442\u0430 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439<\/a>. \u041f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438: \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u043d\u0430\u043c \u043f\u0440\u043e\u0432\u043e\u0434 \u0434\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435?<\/p>\n<h2>\u041a\u0430\u043a \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435<\/h2>\n<p>\u0427\u0442\u043e \u043c\u044b \u0437\u043d\u0430\u0435\u043c? \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u044b &#8212; \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432 6 \u0431\u0430\u0439\u0442. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u0438\u0434\u0435\u043d\u044c\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 USB-bluetooth \u0441\u043f\u0430\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u043e\u043c. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0437\u043e\u0432\u0451\u0442\u0441\u044f Receiver. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043a\u0440\u044f\u043a\u0430\u0435\u0442, \u0437\u043d\u0430\u0447\u0438\u0442 \u0443\u0442\u043a\u0430. \u041c\u043e\u0436\u0435\u0442, \u0440\u0435\u0437\u0438\u043d\u043e\u0432\u0430\u044f, \u043d\u043e \u0443\u0442\u043a\u0430.<\/p>\n<p>\u041a\u0430\u043a \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u0443\u0442\u043a\u0438 \u043f\u043b\u0430\u0432\u0430\u044e\u0442 \u0432\u043e\u043a\u0440\u0443\u0433? \u0423 \u043a\u043e\u043c\u043f\u0430 \u043c\u043e\u0435\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 wifi+bluetooth, \u043d\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 bluetooth \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u043d\u043e. \u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 Bluetooth LE Explorer, Bluetooth LE Lab \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u043d\u043e \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0435 \u0434\u0430\u043b\u0438. \u041f\u043e\u0438\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0434\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0433\u043e\u043d \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u043d\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u043a\u0440\u0443\u0433, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u043e\u0441\u044c <a href=\"https:\/\/www.nordicsemi.com\/Products\/Development-tools\/nRF-Connect-for-mobile\" rel=\"noopener noreferrer nofollow\"><strong>nRF Connect<\/strong><\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0443\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/307\/01c\/bd7\/30701cbd740872ed950e684e8d00f7af.png\" alt=\"\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\" title=\"\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\" width=\"1080\" height=\"1422\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/307\/01c\/bd7\/30701cbd740872ed950e684e8d00f7af.png\"\/><\/p>\n<div><figcaption>\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e \u0434\u0430\u0451\u0442 \u043d\u0430\u0434\u0435\u0436\u0434\u0443 \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043b\u0435\u0433\u043a\u043e!<\/p>\n<p>\u0412\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 &#171;Scanner&#187;, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 &#171;SCAN&#187; \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u0432\u0438\u0441\u0438\u0442 \u0432\u0430\u0433\u043e\u043d \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 &#171;KATVR&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/77b\/796\/879\/77b79687929d98fe0acd78d98edf4bc2.png\" alt=\"\u0418 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u043d\u043e\" title=\"\u0418 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u043d\u043e\" width=\"1080\" height=\"911\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/77b\/796\/879\/77b79687929d98fe0acd78d98edf4bc2.png\"\/><\/p>\n<div><figcaption>\u0418 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0423\u0440\u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e Bluetooth LE \u0434\u0435\u0432\u0430\u0439\u0441\u044b! \u0422\u044b\u043a\u0430\u0435\u043c \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f, \u043d\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#8212; \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043f\u0443\u0441\u0442\u0430\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b29\/7dc\/10a\/b297dc10a02f71a100fe9e25062dbdf7.png\" alt=\"\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 -- \u043f\u0443\u0441\u0442\u043e\" title=\"\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 -- \u043f\u0443\u0441\u0442\u043e\" width=\"1080\" height=\"683\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b29\/7dc\/10a\/b297dc10a02f71a100fe9e25062dbdf7.png\"\/><\/p>\n<div><figcaption>\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 &#8212; \u043f\u0443\u0441\u0442\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u043c&#8230; \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u0441\u044f \u043e\u043f\u044f\u0442\u044c, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043b\u043e\u0433:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b61\/fb7\/60c\/b61fb760c7fdae039a78c132f72cd9d1.png\" width=\"1080\" height=\"2275\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b61\/fb7\/60c\/b61fb760c7fdae039a78c132f72cd9d1.png\"\/><\/figure>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e.<\/p>\n<p>\u041e\u043a\u0435\u0439. \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043c <a href=\"https:\/\/source.android.com\/docs\/core\/connect\/bluetooth\/verifying_debugging#debugging-with-logs\" rel=\"noopener noreferrer nofollow\">&#171;Snoop logs&#187;<\/a>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u043e ADB, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043e\u043f\u044f\u0442\u044c <strong>wireshark<\/strong>, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c91\/bea\/4be\/c91bea4bed9ec7e96df90b725cdddcde.png\" alt=\"\u0427\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Wireshark \u043d\u0435\u0442\" title=\"\u0427\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Wireshark \u043d\u0435\u0442\" width=\"412\" height=\"37\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c91\/bea\/4be\/c91bea4bed9ec7e96df90b725cdddcde.png\"\/><\/p>\n<div><figcaption>\u0427\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Wireshark \u043d\u0435\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0434\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435, \u043d\u0443 \u0432\u043e\u0442 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435! \u0412\u043e\u0442 \u043e\u043d\u0438!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/100\/fab\/fdf\/100fabfdf772a6ce584fc29cd464ea24.png\" alt=\"\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u043d\u0430 \u043b\u0430\u0434\u043e\u043d\u0438\" title=\"\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u043d\u0430 \u043b\u0430\u0434\u043e\u043d\u0438\" width=\"2137\" height=\"700\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/100\/fab\/fdf\/100fabfdf772a6ce584fc29cd464ea24.png\"\/><\/p>\n<div><figcaption>\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u043d\u0430 \u043b\u0430\u0434\u043e\u043d\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u043a\u0430\u043a-\u0442\u043e \u0441\u0435\u0431\u044f \u0432\u0435\u0434\u0451\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u043d\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442. \u041d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0435\u0442, \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0438\u0433\u0434\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u043d\u043e&#8230; \u0427\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0447\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u0443\u0437\u043d\u0430\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u0435\u043d\u0441\u043e\u0440\u044b &#8212; Bluetooth LE.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u043d\u0441\u043e\u0440\u044b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Notification \u0434\u043b\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 0x002E, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e &#8212; \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0430 USB.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0435 \u0432\u0438\u0434\u0438\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Bluetooth LE<\/h2>\n<p>\u0414\u0438\u043b\u0435\u0442\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043d\u0430 Bluetooth LE. \u0412 Bluetooth LE \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0440\u043e\u043b\u0435\u0439, \u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0434\u0435\u0431\u0430\u043b\u0435\u0442\u0430. \u041e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u0445 (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 freq-hopping), \u0433\u0434\u0435 \u0442\u0435, \u043a\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c \u043d\u0430\u0434\u043e.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u043e\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c? \u042d\u0442\u043e \u0432\u0441\u0451 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>GAP<\/strong> &#8212; &#171;Generic Access Profile&#187;. \u0414\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u0435\u0439 \u0434\u0432\u0435 &#8212; <strong>Peripheral<\/strong> \u0438 <strong>Central<\/strong>. <strong>Peripheral<\/strong> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u044e\u0442 Advertising Data (\u0434\u043e 31 \u0431\u0430\u0439\u0442\u0430) \u043f\u0440\u044b\u0433\u0430\u044f \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0451\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c \u0434\u043b\u044f \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442. <strong>Central<\/strong> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043b\u0443\u0448\u0430\u044e\u0442 \u043d\u0430 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 (\u0438\u043b\u0438 \u043f\u0440\u044b\u0433\u0430\u044f \u043f\u043e \u043d\u0438\u043c) \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0415\u0441\u043b\u0438 Central \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0430\u0434\u043e, \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 <code>Scan Response Request<\/code> \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0441 \u043a\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u0441\u044f. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f: \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 Advertising Data, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0430\u043a\u0435\u0442. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0434\u0451\u0442 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0431\u043c\u0435\u043d\u0430 \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043c\u0435\u043d\u044b \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p><strong>Central<\/strong> \u0440\u043e\u043b\u044c \u0432\u0435\u0434\u0443\u0449\u0430\u044f. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 \u0440\u043e\u043b\u044c\u044e Central \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u044b\u0445 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439. \u0412 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f Central \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u0442\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0421\u043f\u0443\u0441\u0442\u044f \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f &#8212; \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 Central \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e Peripheral \u043e\u0431\u044f\u0437\u0430\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 peripheral \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0433\u043e &#8212; \u0441\u0432\u044f\u0437\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u043e\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0430\u043b\u0430\u043d\u0441 \u043c\u0435\u0436\u0434\u0443 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0435\u0434\u043e\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0438\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u044b.<\/p>\n<p><strong>Peripheral<\/strong> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0435\u0434\u043e\u043c\u044b\u0435. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043f\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0438\u043c \u043d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0440\u0430\u0434\u0438\u043e\u044d\u0444\u0438\u0440 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043a \u043d\u0438\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0442\u0430\u043a \u0436\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0436\u0434\u0451\u043c \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0434\u0451\u0442 \u0442\u043e\u043b\u0441\u0442\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041d\u0435\u0432\u0430\u0436\u043d\u043e \u043a\u0442\u043e \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0430 \u043a\u0442\u043e \u0432\u0435\u0434\u043e\u043c\u044b\u0439, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442(\u044b) \u0442\u0443\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438. \u0421\u043b\u043e\u0435\u043c \u043f\u043e\u0432\u044b\u0448\u0435 \u0432 \u044d\u0442\u043e\u043c \u0431\u0443\u0442\u0435\u0440\u0431\u0440\u043e\u0434\u0435 \u0438\u0434\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0432 \u044d\u0442\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445, <strong>GATT<\/strong> (\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 <strong>ATT<\/strong>) \u0438\u043b\u0438 <strong>L2CAP<\/strong>. GATT &#8212; \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 &#171;\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b&#187;, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0435\u0433\u043e GUID \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f-\u043f\u0438\u0448\u0435\u0442\u0441\u044f-\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 16\u0431\u0438\u0442\u043d\u044b\u0439 Handle. \u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e: \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u0441\u044f, \u0447\u0438\u0442\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043f\u043e\u0442\u043e\u043c \u0447\u0438\u0442\u0430\u0435\u043c-\u043f\u0438\u0448\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<p><strong>GATT Server<\/strong> \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043d\u0430 <strong>Peripheral<\/strong>, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0431\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c GATT Server, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043e\u0431\u0430 \u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c GATT Client&#8217;\u0430\u043c\u0438 \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c. \u0425\u043e\u0442\u044c \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0443\u0448\u0430 \u0447\u0435\u0440\u0435\u0437 Notification \u0438\u043b\u0438 Indication, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 GATT Client \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443 GATT Server, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, GATT Client \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441 \u043d\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0447\u0430\u0441\u0442\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0448\u0438\u0432\u043a\u0438 \u043f\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0443).<\/p>\n<p><strong>L2CAP<\/strong> \u044d\u0442\u043e \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435 ATT \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0441\u0432\u044f\u0437\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e, \u0430 \u0443\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. ATT \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 L2CAP \u043a\u0430\u043d\u0430\u043b\u0435 #4 (\u043f\u0440\u0438\u0431\u0438\u0442\u043e \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438, \u0438\u0431\u043e \u0442\u0430\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c).<\/p>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Bluetooth LE<\/h2>\n<p>\u041d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0434\u0438\u043b\u0435\u0442\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043a\u0430\u043a \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0448\u0435.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432. \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 BLE \u0441\u0442\u0435\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043d\u0430 Windows, Linux, Android \u0438 \u0442.\u043f.) \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Central \u0440\u043e\u043b\u0438 \u0438 \u0443\u043c\u0435\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a GATT Server \u0442\u0430\u043a \u0438 GATT Client. \u041d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u0431\u044b\u0442\u044c GATT Client.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0432\u044f\u0437\u0438 \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041b\u0438\u0431\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c Scan (\u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043b\u0443\u0448\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435), \u043b\u0438\u0431\u043e \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e (\u0435\u0433\u043e MAC \u0430\u0434\u0440\u0435\u0441).<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043a\u043e\u043c\u0443, \u043c\u044b \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b; \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043d\u0430\u0434\u043e &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0449\u0438\u0439 \u043a\u043b\u044e\u0447, \u043b\u0438\u0431\u043e \u043a\u043b\u044e\u0447 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430 PIN \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043b\u0438 \u0432\u0432\u043e\u0434\u0430 PIN \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0447. \u041a \u0441\u043b\u043e\u0432\u0443, \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 GATT \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u043a\u0442\u043e \u0431\u044b \u043d\u0438 \u0431\u044b\u043b GATT Client, \u043e\u043d \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u044b \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c Notification \/ Indication \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432).<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0438\u043b\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043b\u044e\u0442\u0443\u0441 \u0441\u0442\u0435\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0438 \u0431\u0435\u0440\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.<\/p>\n<p>\u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e&#8230; \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0448\u043b\u043e\u043c\u0443 \u043e\u043f\u044b\u0442\u0443 \u043f\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e USB \u0441\u0442\u0435\u043a\u0430, \u044f \u0432\u0437\u044f\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 &#8212; <a href=\"https:\/\/github.com\/gaikwadChetan93\/Android-BLE-Connection\" rel=\"noopener noreferrer nofollow\">Android-BLE-Connection<\/a>, <a href=\"https:\/\/github.com\/android\/connectivity-samples\/tree\/master\/BluetoothLeGatt\" rel=\"noopener noreferrer nofollow\">BluetoothLeGatt<\/a>, <a href=\"https:\/\/github.com\/joelwass\/Android-BLE-Connect-Example\" rel=\"noopener noreferrer nofollow\">Android-BLE-Connect-Example<\/a>.<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043e\u043d\u0438 \u0432\u0441\u0435 \u0431\u044b\u043b\u0438 outdated, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0447\u0442\u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0434\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u043b\u0435\u0433\u043a\u0438\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u0430\u0432\u043e\u043a \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 BLE \u0441\u0442\u0435\u043a\u0435&#8230; \u041d\u043e \u0432\u0441\u0451 \u0442\u0449\u0435\u0442\u043d\u043e! \u042f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043c\u043e\u0433 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0440\u0443\u0433\u0438\u0445 Bluetooth \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u043d\u043e \u0432\u043e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043e\u0442 KATVR \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u042f \u0437\u043d\u0430\u043b Handle \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 &#8212; \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0449\u0435 \u0438 Logcat \u0432 Wireshark, \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/98d\/9bd\/670\/98d9bd6704add8bbffca4f80088b7f39.png\" alt=\"\u0427\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a\" title=\"\u0427\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a\" width=\"2028\" height=\"1165\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/98d\/9bd\/670\/98d9bd6704add8bbffca4f80088b7f39.png\"\/><\/p>\n<div><figcaption>\u0427\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a<\/figcaption><\/div>\n<\/figure>\n<p>\u042f \u0434\u0430\u0436\u0435 \u0441\u043b\u0430\u0437\u0438\u043b \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0441\u0442\u0435\u043a\u0430 \u043a\u0430\u043a \u0432 <a href=\"https:\/\/android.googlesource.com\/platform\/packages\/apps\/Bluetooth\/+\/eec3e7295c27a6c49f9d33edd8e82f26376b1a31\/src\/com\/android\/bluetooth\/gatt\/GattService.java#3077\" rel=\"noopener noreferrer nofollow\">Java \u0447\u0430\u0441\u0442\u044c<\/a>, \u0442\u0430\u043a \u0438 \u0432 <a href=\"https:\/\/android.googlesource.com\/platform\/packages\/apps\/Bluetooth\/+\/eec3e7295c27a6c49f9d33edd8e82f26376b1a31\/jni\/com_android_bluetooth_gatt.cpp#1366\" rel=\"noopener noreferrer nofollow\">Native \u0447\u0430\u0441\u0442\u044c<\/a>.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u043f\u043e\u0438\u0433\u0440\u0430\u043b\u0441\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u043c\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0435\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0444\u0435\u0439\u043a\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044e \u0434\u043b\u044f \u0434\u043e\u0431\u044b\u0447\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041f\u044b\u0442\u0430\u043b\u0441\u044f \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u0441 Native \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f IPC \u0438 \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0422\u0449\u0435\u0442\u043d\u043e.<\/p>\n<p>\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 Windows BLE \u0441\u0442\u0435\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435. \u0421\u0442\u0435\u043a \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043e\u0442\u0434\u0430\u043b\u043e &#8212; \u0442\u043e \u0438 \u0432\u0430\u043c \u0438\u0445 \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e. \u0418 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0442&#8230; \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0438\u0445 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442. \u041d\u0438\u043a\u0430\u043a. \u041d\u0438 \u0437\u0430 \u0447\u0442\u043e.<\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e!<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/34e\/e69\/866\/34ee698667f23c4a980a65bba6abb9eb.jpg\" alt=\"We need to go deeper\" title=\"We need to go deeper\" width=\"279\" height=\"181\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/34e\/e69\/866\/34ee698667f23c4a980a65bba6abb9eb.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>We need to go deeper<\/figcaption><\/div>\n<\/figure>\n<h2>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0451 Bluetooth Central \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/h2>\n<p><strong>\u0416\u0435\u043b\u0435\u0437\u043e &#8212; nRF52840<\/strong><\/p>\n<p>\u0420\u0430\u0437 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043b\u043e\u0451\u0432 \u043e\u0447\u0435\u043d\u044c \u0443\u043c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0437\u0430\u0449\u0438\u0449\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u0441 \u043e\u0442 \u043b\u044e\u0431\u044b\u0445 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432\u0437\u044f\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u043d\u0430\u0448\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/02a\/e7a\/4d1\/02ae7a4d1e54a3e50396eb6f9e787ae9.jpg\" alt=\"\u0412\u0440\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u0435\u043b \u043d\u0430 \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e?\" title=\"\u0412\u0440\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u0435\u043b \u043d\u0430 \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e?\" width=\"1020\" height=\"768\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/02a\/e7a\/4d1\/02ae7a4d1e54a3e50396eb6f9e787ae9.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0412\u0440\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u0435\u043b \u043d\u0430 \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e?<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b <a href=\"https:\/\/www.nordicsemi.com\/Products\/Development-hardware\/nRF52840-Dongle\/GetStarted?lang=en\" rel=\"noopener noreferrer nofollow\"><strong>nRF52840 Dongle<\/strong><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043a\u0443\u043f\u0438\u043b \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u043d\u044e\u0445\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438, \u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0430 \u0447\u0442\u043e \u0436\u0435 \u043e\u043d \u0443\u043c\u0435\u0435\u0442. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u043a\u0443\u0441\u043d\u044b\u0439 \u0437\u0432\u0435\u0440\u0451\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0434\u0438\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u044b\u0442\u043a\u0430\u0435\u0442\u0441\u044f \u0432 USB \u043f\u043e\u0440\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0436 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043a\u043e\u0434\u0430, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c \u043c\u0435\u0433\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043a\u0438, \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u0441 32\u0431\u0438\u0442\u043d\u044b\u043c ARM \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u043d\u0430 64 \u043c\u0435\u0433\u0430\u0433\u0435\u0440\u0446\u0430\u0445, \u0434\u0430 \u0435\u0449\u0435 \u0438 \u0441 fpu. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f &#8212; \u044d\u0442\u043e \u043d\u0435\u0447\u0442\u043e \u043c\u043e\u0449\u043d\u0435\u0435 \u043c\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c, \u0447\u0442\u043e nRF Connect \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u0432\u0437\u043b\u0435\u0442\u0430\u0435\u0442 \u0432 VS Code, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u0447\u0442\u043e \u043e\u0441\u043e\u0431\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u043d\u0435 \u0431\u0443\u0434\u0443, \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0432\u0430\u0442\u0438\u0442\u044c. \u0414\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043d\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 DevKit, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u043e\u043d\u0433\u043b! \ud83d\ude42 \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u0435\u0449\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0433\u0434\u0435 \u044f \u043d\u0435 \u043f\u0440\u0430\u0432, \u044f \u0434\u043e\u043a\u0443\u043f\u0438\u043b <a href=\"https:\/\/www.seeedstudio.com\/Seeed-XIAO-BLE-nRF52840-p-5201.html\" rel=\"noopener noreferrer nofollow\">Seeed Studio XIAO nRF52840<\/a>. \u041e\u043d \u0435\u0449\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435, \u0443\u0434\u043e\u0431\u043d\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u0431\u0435\u0437 \u0441\u043e\u0444\u0442\u0430 (\u0443 \u043d\u0435\u0433\u043e UF2 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u043e\u0438\u0442, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043d\u0430 \u043d\u0435\u0433\u043e), \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442 \u044f \u0443\u0436\u0435 \u043d\u0430 \u043d\u0451\u043c, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 nRF Dongle \u0447\u0438\u0441\u0442\u043e \u0434\u043b\u044f Sniffer&#8217;\u0430.<\/p>\n<h3>\u0421\u043e\u0444\u0442 &#8212; \u043d\u0430 \u0431\u0430\u0437\u0435 Zephyr<\/h3>\n<p>\u041f\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u043b \u0438\u0434\u0435\u044e, \u0447\u0442\u043e <a href=\"https:\/\/github.com\/zephyrproject-rtos\/zephyr\" rel=\"noopener noreferrer nofollow\"><strong>Zephyr OS<\/strong><\/a> \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u043e\u043b\u044c \u0434\u043b\u044f RTOS &#8212; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u043e\u043d\u043a\u0438\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u0436\u0435\u043b\u0435\u0437\u043e\u043c, \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0417\u0430 \u0441\u0447\u0435\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b nRF SDK, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0445\u043e\u0434\u0443, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u043e\u0433\u0438\u043a\u0435. \u0414\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043c\u043e\u0433\u043b\u043e \u0434\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u044b\u0433\u043e\u0434\u044b, \u043d\u043e \u043b\u0443\u0447\u0448\u0435\u0435 &#8212; \u0432\u0440\u0430\u0433 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e, \u0430 \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \ud83d\ude42<\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u0430 \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c-\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438, \u0442\u0430\u043a \u0447\u0442\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0443\u0434\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 <code>CMakeLists.txt<\/code>. \u0427\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0432 \u043d\u0451\u043c \u0438\u043b\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0432 \u0441\u0442\u0443\u0434\u0438\u0438, \u0438\u043b\u0438 \u0435\u0449\u0435 \u043f\u0430\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043f\u043b\u0430\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0430\u0434\u043e &#8212; \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e.<\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 <code>prj.conf<\/code> \u043c\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f RTOS, \u0432\u043a\u043b\u044e\u0447\u0430\u044f-\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u044f \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u043b\u0430\u0433\u0430\u044f\u0441\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0441\u0432\u043e\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0438\u043b\u0438 \u0442\u044e\u043d\u0438\u043d\u0433 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 <code>Kconfig<\/code>. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c, \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e.<\/p>\n<h4>\u0428\u0430\u0433 \u043f\u0435\u0440\u0432\u044b\u0439: USB Console<\/h4>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0435 \u043d\u0430 DevKit (\u0442\u043e \u0435\u0441\u0442\u044c JTAG \/ \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u043f\u043b\u0430\u0442\u0443, \u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e JTAG \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0437\u0430\u0432\u0430\u043b\u044f\u043b\u043e\u0441\u044c), \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434 &#8212; \u043d\u0430 XIAO nRF52840 \u043e\u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e (\u0447\u0435\u0440\u0435\u0437 <code>prj.conf<\/code> \u0441\u043b\u043e\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b), \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u043d\u0451\u043c \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0435\u0451 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c. \u041d\u0430 nRF Dongle \u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c app.overlay, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438\u0431\u0438\u043d\u0434\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043a usb-uart \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"cpp\">\/* For now, enable single USB-UART that act as a debug console. *\/  \/ {     chosen {         zephyr,console = &amp;cdc_acm_uart0;     }; };  &amp;zephyr_udc0 {     cdc_acm_uart0: cdc_acm_uart0 {         compatible = \"zephyr,cdc-acm-uart\";     }; };<\/code><\/pre>\n<p>\u0412 <code>prj.conf<\/code> \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">CONFIG_USB_DEVICE_STACK=y CONFIG_USB_DEVICE_PRODUCT=\"nRF KAT-VR Receiver\" CONFIG_USB_DEVICE_PID=0x0004 CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n CONFIG_SERIAL=y CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_UART_LINE_CTRL=y  CONFIG_LOG=y CONFIG_LOG_PRINTK=y CONFIG_LOG_MODE_IMMEDIATE=y<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432 <code>src\/main.c<\/code> \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c BUILD_ASSERT \u0447\u0442\u043e\u0431 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c, \u0430 \u0432 \u043a\u043e\u0434 main() \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0444\u043e\u043d\u0435 \u0432\u0438\u0441\u0438\u0442 &#171;nRF Terminal&#187; \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043b\u043e\u0433 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<pre><code class=\"cpp\">#include &lt;zephyr\/kernel.h> #include &lt;zephyr\/drivers\/uart.h> #include &lt;zephyr\/usb\/usb_device.h> #include &lt;zephyr\/usb\/usbd.h> #include &lt;zephyr\/sys\/printk.h>  \/\/ Ensure the console is USB-UART BUILD_ASSERT(DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart),              \"Console device is not ACM CDC UART device\");  int main(void) {     int err;      if (IS_ENABLED(CONFIG_USB_DEVICE_STACK))     {         const struct device *const dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_console));          err = usb_enable(NULL);         if (err &amp;&amp; (err != -EALREADY))         {             printk(\"Failed to enable USB\");             return err;         }          \/* Poll if the DTR flag was set *\/         uint32_t dtr = 0;         while (!dtr)         {                 uart_line_ctrl_get(dev, UART_LINE_CTRL_DTR, &amp;dtr);                 \/* Give CPU resources to low priority threads. *\/                 k_sleep(K_MSEC(100));         }     }      printk(\"*** nRF KAT Receiver ***\\n\");      printk(\"Initialized.\\n\");     return 0; }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/b81ae79b4e80b6ab0c1f3b12bffaffaeed1ce5df\" rel=\"noopener noreferrer nofollow\">\u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0441\u0442\u043e\u0432<\/a>, \u043f\u043e\u0432\u0435\u0440\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0434\u0438\u0442\u044c &#8212; \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c!<\/p>\n<h4>\u0428\u0430\u0433 \u0432\u0442\u043e\u0440\u043e\u0439: Bluetooth Central<\/h4>\n<p>Zephyr BLE \u0441\u0442\u0435\u043a \u0443\u043c\u0435\u0435\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e. \u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u043b \u0442\u0430\u043a: \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043d\u0430\u0439\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c MAC \u0430\u0434\u0440\u0435\u0441\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u043e\u043d\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0438), \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e GATT Server&#8217;\u0430, \u043d\u0430\u043c \u0434\u0430\u0436\u0435 GATT Client \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0448\u043b\u044e\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f. \u041f\u043b\u044e\u0441, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043e 4\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 (\u043b\u0435\u0432\u044b\u0439-\u043f\u0440\u0430\u0432\u044b\u0439-\u0441\u043f\u0438\u043d\u0430-\u0441\u0435\u0434\u043b\u043e)&#8230;<\/p>\n<p>\u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 <code>prj.conf<\/code>:<\/p>\n<pre><code class=\"cpp\">CONFIG_BT=y CONFIG_BT_CENTRAL=y CONFIG_BT_GATT_CLIENT=n CONFIG_BT_GATT_DM=n CONFIG_BT_SCAN=n CONFIG_BT_MAX_CONN=4<\/code><\/pre>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 <code>main.c<\/code>:<\/p>\n<pre><code class=\"cpp\">#include &lt;zephyr\/bluetooth\/bluetooth.h><\/code><\/pre>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u0443 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435. MAC \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0432 network order, \u043e\u0442 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u043a \u0441\u0442\u0430\u0440\u0448\u0435\u043c\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0430\u0434\u0440\u0435\u0441&#8230; \u043d\u043e \u0437\u0430\u0447\u0435\u043c, \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b-\u0442\u043e?):<\/p>\n<pre><code class=\"cpp\">const bt_addr_le_t katDevices[] = {         \/\/ KAT_DIR         {.type=BT_ADDR_LE_PUBLIC, .a={.val={0x01, 0x74, 0xEB, 0x16, 0x4D, 0xAC}}}, \/\/ AC:4D:16:EB:74:01 }<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u0432\u0430 callback&#8217;\u0430, \u043d\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430 \u0440\u0430\u0437\u0440\u044b\u0432. \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u0440\u0430\u0434\u0438\u0443\u0441\u0435 \u0434\u043e\u0441\u044f\u0433\u0430\u0435\u043c\u043e\u0441\u0442\u0438, \u0438 \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0441\u043b\u0438 \u0443\u0439\u0434\u0451\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u0438\u043b\u0438 \u0443\u0441\u043d\u0451\u0442 \u0438\u043b\u0438 \u0435\u0449\u0435 \u0447\u0442\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0443\u0436\u043d\u044b \u043e\u0431\u0430 &#8212; \u0435\u0441\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u0434\u0451\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<pre><code class=\"cpp\">static void device_connected(struct bt_conn *conn, uint8_t conn_err) {     if (!conn_err) {         int conn_num = bt_conn_index(conn);         printk(\"Device connected (%p\/%d)\\n\", conn, conn_num);     } else {         printk(\"Connect error (%p\/%x)\\n\", conn, conn_err);         bt_conn_unref(conn);     } }  static void device_disconnected(struct bt_conn *conn, uint8_t reason) {     printk(\"Device disconnected (%p\/0x%02x)\\n\", conn, reason); }  BT_CONN_CB_DEFINE(conn_callbacks) = {     .connected = device_connected,     .disconnected = device_disconnected, };<\/code><\/pre>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u043d\u043e\u0441\u043a\u0430 \u043d\u0430 \u0442\u0435\u043c\u0443 <code>BT_CONN_CB_DEFINE<\/code>. \u0412 Zephyr OS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430: \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u041f\u0440\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0432 \u043a\u043e\u0434\u0435 \u043d\u0430\u0434\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e; \u043f\u0440\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 &#8212; \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430. \u041c\u0430\u043a\u0440\u043e\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u043d\u043a\u0435\u0440 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u043e\u043d\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u044f\u0434\u0440\u043e\u043c \u043e\u0441\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0441\u043e\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u044d\u0434\u0430\u043a\u043e\u0435, \u043d\u0430 \u0447\u0442\u043e \u041e\u0421 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 bluetooth \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <code>BT_CONN_CB_DEFINE<\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 callback&#8217;\u0430\u043c\u0438, \u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c <code>bt_conn_cb<\/code> \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c <code>bt_conn_cb_register<\/code>, \u0438 \u0431\u0443\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445 &#8212; \u0435\u0451 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c <code>bt_conn_cb_unregister<\/code> \u043f\u043e\u0442\u043e\u043c. \u041d\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f &#8212; \u0441\u0430\u043c\u043e\u0435 \u043e\u043d\u043e.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432\u043e-1\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c BLE \u0441\u0442\u0435\u043a, \u0432\u043e-2\u0445 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u043c.<\/p>\n<pre><code class=\"cpp\">static struct bt_conn *default_conn;  int main(void) {     \/\/\/ ...     printk(\"*** nRF KAT Receiver ***\\n\");     err = bt_enable(NULL);     if (err)     {         printk(\"Bluetooth init failed (err %d)\\n\", err);         return 0;     }      printk(\"Bluetooth initialized\\n\");     err = bt_conn_le_create(&amp;katDevices[0], BT_CONN_LE_CREATE_CONN,             BT_LE_CONN_PARAM_DEFAULT, &amp;default_conn);     if (err) {         printk(\"Create conn failed (%d)\\n\", err);     } }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u0441\u044f \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u043c, \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c.<\/p>\n<p>\u0412\u0441\u0451 \u0431\u044b \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u0441\u044f \u043d\u0430\u0434\u043e \u043d\u0435 \u0441 \u043e\u0434\u043d\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0438 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041c\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u044f\u0434\u043e\u043c \u0438 \u0432\u0441\u0435 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043e\u0442\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e.<\/p>\n<p>\u0422\u0430\u043a\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0434\u0432\u0430. \u0412\u043e-1\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e; \u0432\u043e-2\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0439\u043c\u0430\u043d Advertising \u043f\u0430\u043a\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0438\u0441\u043a &#8212; \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0434\u0438\u043e\u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u044b \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0442\u0430\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u044d\u0444\u0438\u0440\u0430 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 <code>prj.conf<\/code> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0444\u0438\u0447\u0438 \u0447\u0435\u0440\u0435\u0437 <code>CONFIG_BT_FILTER_ACCEPT_LIST=y<\/code><\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0451\u043c \u043d\u0443\u0436\u043d\u044b\u0435 MAC \u0430\u0434\u0440\u0435\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 <code>bt_le_filter_accept_list_add<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 <code>bt_conn_le_create_auto<\/code>.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0441\u0451, \u043a\u0430\u043a\u043e\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u0438\u0437 \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0440\u0430\u0434\u0438\u0443\u0441 &#8212; \u0441 \u0442\u0430\u043a\u0438\u043c \u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c <code>bt_conn_le_create_auto<\/code> \u0437\u0430\u043d\u043e\u0432\u043e \u0447\u0442\u043e\u0431\u044b \u0436\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e <code>bt_conn_le_create<\/code> \u043c\u044b \u041d\u0415 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043c\u044b \u0435\u0451 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0443\u0432\u0438\u0434\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <code>connected()<\/code> \u043a\u043e\u043b\u0431\u044d\u043a\u0435, \u043d\u043e \u043d\u0430\u043c \u0435\u0433\u043e \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a \u0430\u0432\u0442\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u044e\u0442 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0438 \u043d\u0430 \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043f\u0440\u0438\u0431\u043e\u0440\u0430\u043c\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a \u043d\u043e\u0432\u044b\u043c, \u0432\u0430\u0436\u043d\u043e \u0441\u043f\u0435\u0440\u0432\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e \u0438 \u0443\u0436 \u043f\u043e\u0442\u043e\u043c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e. \u0418 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0441\u043b\u043e\u0442\u044b (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435).<\/p>\n<h4>\u0428\u0430\u0433 \u0442\u0440\u0435\u0442\u0438\u0439: \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c ATT \u043f\u0430\u043a\u0435\u0442\u044b \u0431\u0435\u0437 GATT \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u0437\u0430\u0442\u0435\u0432\u0430\u043b\u043e\u0441\u044c. \u0415\u0441\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u043d\u043e \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435\u0442! \u041d\u0443 \u0432\u043e\u0442 \u0442\u0430\u043a. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u043d\u0430 \u0412\u0421\u0401 \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 <code>prj.conf<\/code><\/p>\n<pre><code class=\"cpp\">CONFIG_BT_A2DP_LOG_LEVEL_DBG=y CONFIG_BT_BAS_LOG_LEVEL_DBG=y CONFIG_BT_DF_LOG_LEVEL_DBG=y CONFIG_BT_HCI_DRIVER_LOG_LEVEL_DBG=y CONFIG_BT_LOG_LEVEL_DBG=y CONFIG_BT_RFCOMM_LOG_LEVEL_DBG=y CONFIG_BT_LOG_SNIFFER_INFO=y CONFIG_BT_ATT_LOG_LEVEL_DBG=y CONFIG_BT_GATT_LOG_LEVEL_DBG=y CONFIG_BT_CONN_LOG_LEVEL_DBG=y CONFIG_BT_HCI_CORE_LOG_LEVEL_DBG=y CONFIG_BT_L2CAP_LOG_LEVEL_DBG=y<\/code><\/pre>\n<p>\u041f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c. \u042d\u0442\u043e \u0431\u044b\u043b \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u044f \u0441\u0434\u0430\u043b\u0441\u044f, \u0434\u043e\u043a\u0443\u043f\u0438\u043b \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u043d\u0433\u043b (XIAO \u043a\u043e\u0442\u043e\u0440\u044b\u0439) \u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0434\u043e\u043b\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u0442\u0440\u0435\u0439\u0441\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043d\u0438\u0444\u0444\u0435\u0440\u0430: \u0440\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430 \u0438 \u043c\u043e\u0435\u0433\u043e. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c (\u0442\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0439 \u0440\u0435\u0441\u0438\u0432\u0435\u0440) \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0430 \u043f\u0430\u043a\u0435\u0442 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043a\u043e\u043b\u0431\u044d\u043a <code>connected()<\/code> \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043e\u0442\u043a\u043d\u0443\u0442\u044c <code>bt_conn_le_param_update<\/code> \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u044e \u0440\u0430\u0437\u043c\u0435\u0440 timeout, \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043b\u0435\u0437\u0442\u044c \u0432\u0433\u043b\u0443\u0431\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0438. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e GATT Client \u044d\u0442\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0444\u0438\u0447\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0435 L2CAP \u0438, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0435\u043a\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e. \u041c\u043d\u0435 \u0436\u0435 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c L2CAP \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u043d\u0430\u043b\u0430 \u043d\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d, \u0430 \u043a\u0430\u043a \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u044f\u0442\u0441\u044f. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043b\u0430\u0437\u0438\u0442\u044c \u0432 \u0443\u043d\u0443\u0442\u0440\u043e \u0438 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u0430:<\/p>\n<pre><code class=\"cpp\">#ifndef BT_L2CAP_CHANNEL_DEFINE \/\/ Include l2cap_internal.h if you build in-tree; otherwise, let's just steal definitions from compatible (v2.5.2) struct bt_l2cap_fixed_chan {     uint16_t cid;     int (*accept)(struct bt_conn *conn, struct bt_l2cap_chan **chan);     bt_l2cap_chan_destroy_t destroy; }; #define BT_L2CAP_CHANNEL_DEFINE(_name, _cid, _accept, _destroy)         \\     const STRUCT_SECTION_ITERABLE(bt_l2cap_fixed_chan, _name) = {   \\         .cid = _cid,                            \\         .accept = _accept,                      \\         .destroy = _destroy,                    \\     } #define BT_L2CAP_CID_ATT                0x0004 #endif  BT_L2CAP_CHANNEL_DEFINE(a_att_fixed_chan, BT_L2CAP_CID_ATT, my_att_accept, NULL);<\/code><\/pre>\n<p>\u0418\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0438 \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0442\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0446\u0435\u043f\u043b\u0435\u043d \u043f\u0435\u0440\u0432\u044b\u043c, \u0434\u043e GATT Client&#8217;\u0430 (\u0431\u0443\u0434\u0435 \u043e\u043d \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d). \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f GATT Client \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0443\u0436\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u0438 \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0443 \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0435\u0441\u043b\u0438 \u044f \u0437\u0430\u0445\u043e\u0447\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043a\u043e\u043b\u0431\u044d\u043a \u043d\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 L2CAP \u043a\u0430\u043d\u0430\u043b\u0430 \u043f\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 (\u0434\u043b\u044f \u043c\u0435\u043d\u044f &#8212; \u0432\u0441\u0435\u0433\u0434\u0430), \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u043a\u043e\u043b\u0431\u044d\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0435\u0433\u043e. \u041e\u043f\u044f\u0442\u044c \u0436\u0435 \u043c\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u0436\u0435\u043b\u0435\u0437\u0435 \u0438 \u0441 RTOS: \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f \u0442\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0423 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e CONFIG_BT_MAX_CONN \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u0438 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e (\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0447\u0435\u0440\u0435\u0437 <code>bt_conn_index<\/code>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0441\u0442:<\/p>\n<pre><code class=\"cpp\">static struct bt_l2cap_le_chan my_att_chan_pool[CONFIG_BT_MAX_CONN]; static int my_att_accept(struct bt_conn *conn, struct bt_l2cap_chan **ch) {     static const struct bt_l2cap_chan_ops ops = {         .recv = my_att_recv,     };      int id = bt_conn_index(conn);     printk(\"Capturing L2CAP ATT channel on connection %p\/%d\\n\", conn, id);      struct bt_l2cap_le_chan *chan = &amp;my_att_chan_pool[id];     chan->chan.ops = &amp;ops;     *ch = &amp;chan->chan;     return 0; }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u043b\u0431\u044d\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u0430\u043a \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u0432 \u044d\u0442\u043e\u0442 \u043a\u0430\u043d\u0430\u043b, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"cpp\">static int my_att_recv(struct bt_l2cap_chan *chan, struct net_buf *req_buf) {     int id = bt_conn_index(chan->conn);      printk(\"Received packet for conn %d [%d bytes]:\", id, req_buf->len);     for (int i = 0; i&lt;req_buf->len; ++i) {             printk(\" %02x\", req_buf->data[i]);     }     printk(\"\\n\");      return 0; }<\/code><\/pre>\n<p>\u0412\u0441\u0451, \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0435\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441 \u043d\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c: \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438 \u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/58bf6a3c5ee962759230e819dcffda358c03e431\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u043e\u0433<\/a>, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/ef2f73e65541e53cbb4aacd5111ede3240a77023\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/a>.<\/p>\n<h4>\u0428\u0430\u0433 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439: USB HID \u043c\u0443\u043b\u044c\u0442\u0438\u0434\u0435\u0432\u0430\u0439\u0441 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043a\u0438\u043d\u0443\u0442\u044c\u0441\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u043e\u043c<\/h4>\n<p>\u0418\u0442\u0430\u043a \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043d\u0430 \u043a\u043e\u043c\u043f. \u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 &#8212; \u043f\u0440\u0438\u043a\u0438\u043d\u0443\u0442\u044c\u0441\u044f <s>\u0448\u043b\u0430\u043d\u0433\u043e\u043c<\/s> \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u043e\u043c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0443\u0434\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u043b\u044e\u0434\u044f\u043c: \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0438\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u043e\u0434 \u043f\u043e \u043a\u043e\u043c\u043d\u0430\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u0418\u043b\u0438 \u0434\u043b\u044f &#171;\u043d\u043e\u0432\u044b\u0445 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u0433\u0440&#187; \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0445\u0435\u0434\u0441\u0435\u0442\u0435 \u0438 \u0438\u0433\u0440\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u0435 \u043f\u043b\u044e\u0441\u044b &#8212; \u0441 &#171;\u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c&#187; \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/66b\/980\/952\/66b980952af0e15022b7d94c68316149.jpg\" alt=\"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0430\u043f\u0433\u0440\u0435\u0439\u0434...\" title=\"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0430\u043f\u0433\u0440\u0435\u0439\u0434...\" width=\"1020\" height=\"614\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/66b\/980\/952\/66b980952af0e15022b7d94c68316149.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0430\u043f\u0433\u0440\u0435\u0439\u0434&#8230;<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f VID\/PID \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 (<code>prj.conf<\/code>). \u0410 \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u0439\u0442\u0432\u0435\u0439 \u043d\u0435 \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0448\u0435\u043b \u043d\u043e\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e &#8212; \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0449\u0435 \u0438 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a.<\/p>\n<pre><code class=\"cpp\">CONFIG_USB_DEVICE_VID=0xC4F4 CONFIG_USB_DEVICE_PID=0x2F37 CONFIG_USB_DEVICE_SN=\"CRA21D60xxx\"<\/code><\/pre>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 &#8212; \u0432\u043e\u043e\u0431\u0449\u0435, Zerphyr \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0447\u0438\u043f\u0430. \u041d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0435\u0433\u043e, KAT Gateway \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0434\u0430\u043b \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u041f\u0440\u043e\u0449\u0451\u043b\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a (\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 <code>KATDeviceSDK.dll<\/code> \u0447\u0435\u0440\u0435\u0437 <code>rundll<\/code> \u0432 <strong>IDA<\/strong>) \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437-\u0437\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0422\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a&#8230; \u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 12 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u043b\u0438\u043d\u043e\u0439. \u0422\u0430\u043a \u0447\u0442\u043e \u044f \u0437\u0430\u0434\u0430\u043b \u043f\u0440\u044f\u043c\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, \u0438 \u043e\u043d \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043d\u043e \u044d\u0442\u043e <a href=\"https:\/\/github.com\/zephyrproject-rtos\/zephyr\/issues\/69585\" rel=\"noopener noreferrer nofollow\">\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u0430\u0433\u043e\u043c<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430! \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c&#8230; \ud83d\ude42<\/p>\n<p>\u0421\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c HID \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c HID \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0438 \u0437\u0430\u0434\u0430\u0451\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0422\u0422\u0425 (\u044f \u0434\u043e\u043b\u0433\u043e \u0442\u0443\u043f\u0438\u043b \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 16 \u0431\u0430\u0439\u0442). \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u043e\u0434\u043d\u043e HID \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430 USB \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u043e\u043f\u043b\u0430\u043d\u043e\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u043e\u0434\u043d\u043e \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b &#8212; \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0438 (\u0438 Win, \u0438 Lin, \u0438 Android) \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0445 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e &#8212; \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442 \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0445\u0430\u0431\u043e\u043c.<\/p>\n<pre><code class=\"cpp\">CONFIG_USB_DEVICE_HID=y CONFIG_USB_HID_DEVICE_COUNT=1 CONFIG_HID_INTERRUPT_EP_MPS=64 CONFIG_ENABLE_HID_INT_OUT_EP=y CONFIG_USB_COMPOSITE_DEVICE=y CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f HID \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u044b\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/todbot\/win-hid-dump\" rel=\"noopener noreferrer nofollow\">win-hid-dump<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u0432\u044b\u0434\u0430\u0451\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code>C4F4:2F37: KATVR - walk c2 receiver PATH:\\\\?\\hid#vid_c4f4&amp;pid_2f37#8&amp;a136e90&amp;0&amp;0000#{4d1e55b2-f16f-11cf-88cb-001111000030} DESCRIPTOR:   06  A0  FF  09  01  A1  01  09  01  15  00  25  FF  35  00  45   00  65  00  55  00  75  08  95  20  81  02  09  02  91  02  09   03  95  05  B1  02  C1  00   (39 bytes)<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c USB \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043a <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/connect-usb\" rel=\"noopener noreferrer nofollow\">WSL2 \u043b\u0438\u043d\u0443\u0445\u0443<\/a> \u0447\u0435\u0440\u0435\u0437:<\/p>\n<pre><code>> winget install --interactive --exact dorssel.usbipd-win > usbipd bind --hardware-id c4f4:2f37 > usbipd attach --wsl -i c4f4:2f37<\/code><\/pre>\n<p>\u0410 \u0432 \u0441\u0430\u043c\u043e\u043c WSL \u0432\u044b\u0437\u0432\u0430\u0442\u044c usbhid-dump:<\/p>\n<pre><code class=\"bash\">$ sudo usbhid-dump  001:002:000:DESCRIPTOR         1710781357.084389  06 A0 FF 09 01 A1 01 09 01 15 00 26 FF 00 75 08  95 20 81 02 09 02 75 08 95 20 91 02 09 03 75 08  95 05 B1 02 C0<\/code><\/pre>\n<p>\u0421 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043d\u0435\u0432\u0430\u0436\u043d\u043e \u0447\u0435\u043c, \u043d\u043e <strong>win-hid-dump<\/strong> \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0432\u0438\u043d\u0434\u044b, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a <strong>usbhid-dump<\/strong> \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0434\u0430\u0451\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/eleccelerator.com\/usbdescreqparser\/\" rel=\"noopener noreferrer nofollow\"><strong>USB Descriptor and Request Parser<\/strong><\/a>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0448\u043b\u0438\u0444\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"cpp\">static const uint8_t hid_report_desc[] = {     HID_ITEM(HID_ITEM_TAG_USAGE_PAGE, HID_ITEM_TYPE_GLOBAL, 2),     0xA0,     0xFF,                                       \/\/ Usage Page (Vendor Defined 0xFFA0)     HID_USAGE(0x01),                            \/\/ Usage (0x01)     HID_COLLECTION(HID_COLLECTION_APPLICATION), \/\/ Collection (Application)     HID_USAGE(0x01),                            \/\/   Usage (0x01)     HID_LOGICAL_MIN8(0x00),                     \/\/   Logical Minimum (0)     HID_LOGICAL_MAX16(0xFF, 0x00),              \/\/   Logical Maximum (0xFF)     HID_REPORT_SIZE(8),                         \/\/   Report Size (8)     HID_REPORT_COUNT(32),                       \/\/   Report Count (32)     HID_INPUT(0x02),                            \/\/   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)     HID_USAGE(0x02),                            \/\/   Usage (0x02)     HID_REPORT_SIZE(8),                         \/\/   Report Size (8)     HID_REPORT_COUNT(32),                       \/\/   Report Count (32)     HID_OUTPUT(0x02),                           \/\/   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)     HID_USAGE(0x03),                            \/\/   Usage (0x03)     HID_REPORT_SIZE(8),                         \/\/   Report Size (8)     HID_REPORT_COUNT(5),                        \/\/   Report Count (5) -- why?!     HID_FEATURE(0x02),                          \/\/   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)     HID_END_COLLECTION, };<\/code><\/pre>\n<p>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u043f\u043e\u043d\u044f\u043b, USB \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432 Zephyr \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0440\u044b\u043c \u0438 \u043d\u043e\u0432\u044b\u043c API, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u0440\u044b\u0439 \u0443\u0436\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d \u0430 \u043d\u043e\u0432\u044b\u0439 \u0435\u0449\u0435 \u043d\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0433\u043b\u044b \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0442\u043e \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 HID\u043e\u0432, \u043d\u043e \u0430\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e:<\/p>\n<pre><code class=\"cpp\">static const struct device *hiddev; static const struct hid_ops usb_ops = {     .int_in_ready = int_in_ready_cb,     .int_out_ready = int_out_ready_cb, };  int start_usb(void) {     hiddev = device_get_binding(\"HID_0\");     if (hiddev == NULL)     {         return -ENODEV;     }      usb_hid_register_device(hiddev, hid_report_desc, sizeof(hid_report_desc), &amp;usb_ops);      int err = usb_hid_init(hiddev);     if (err)     {         printk(\"usb_hid_init failed: %d\\n\", err);         return err;     }      return usb_enable(NULL \/*status_cb*\/); }<\/code><\/pre>\n<p>\u0415\u0449\u0435 \u0440\u0430\u0437 \u0443\u0442\u043e\u0447\u043d\u044e, \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u043e\u044f\u043b\u043e <code>CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n<\/code> \u0438\u043d\u0430\u0447\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442 USB \u0434\u043b\u044f USB-Console \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0430\u043d\u043e \u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 HID \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>\u0412 <code>usb_ops<\/code> \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043b\u0431\u044d\u043a\u043e\u0432. \u041d\u0430\u043c \u0438\u0445 \u043d\u0430\u0434\u043e \u0434\u0432\u0430 &#8212; \u043e\u0434\u0438\u043d \u043d\u0430 &#171;\u043f\u0430\u043a\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d&#187;, \u0432\u0442\u043e\u0440\u043e\u0439 &#171;\u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d&#187;. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442 \u043b\u0443\u043a\u0430\u0432\u043e\u0433\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f. \u041a\u0430\u043a \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/799197\/\" rel=\"noopener noreferrer nofollow\">\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a>, \u0432\u0441\u0451 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u043d\u0430 URB_INTERRUPT \u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0438 \u0441 \u0447\u0435\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u043c.<\/p>\n<p>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e, \u0442\u0430\u043a \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0434\u043b\u044f USB \u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442; \u043c\u044b \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 (\u0438 \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c), \u043b\u0438\u0431\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e (\u0438 \u043c\u043e\u0436\u0435\u043c \u0435\u0449\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c), \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c. \u041f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442, \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0442. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043b\u0438\u0431\u043e \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043b\u0438\u0431\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432.<\/p>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0430\u043a\u0430\u044f:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0438\u0448\u0435\u043b \u043f\u0430\u043a\u0435\u0442: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. <\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0432\u0435\u0442: \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u0430\u043a\u0435\u0442 \u0443\u0448\u0435\u043b: \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435. <\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435\u0442 \u043b\u0438 \u0441\u0432\u0435\u0436\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0441\u0432\u0435\u0436\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u043b\u0438 USB, \u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d &#8212; \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 1 \u043e\u0442\u0432\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c; \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u0431\u0443\u0444\u0435\u0440, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u0451\u043c\u0430.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"cpp\">static void usb_write_and_forget(const struct device * dev, void *buf) {     int wrote = -1;     hid_int_ep_write(dev, buf, KAT_USB_PACKET_LEN, &amp;wrote); \/\/ feeling lucky     if (wrote != KAT_USB_PACKET_LEN)     {         \/\/ This shouldn't happen. To avoid hanging USB, release it and keep trying other time.         atomic_clear_bit(&amp;usbbusy, cUsbOutBusy);         printk(\"Send output bug: wrote only %d bytes instead of %d.\\n\", wrote, KAT_USB_PACKET_LEN);     } }  static void usb_send_or_queue(const struct device * dev, void *buf) {     \/\/ Check old business status, send if were free.     if (!atomic_test_and_set_bit(&amp;usbbusy, cUsbOutBusy))     {         usb_write_and_forget(dev, buf);     }     else     {         \/\/ Queue the buffer till the next time.         if (!atomic_ptr_cas(&amp;usb_queue, NULL, buf))         {             printk(\"Output queue is busy. Packet is lost. [should not happen (tm)]\");         }     } }  static void int_in_ready_cb(const struct device *dev) {     \/\/ We enter assuming we own the business lock.     \/\/ If there queued packed to send -- send it now.     atomic_ptr_val_t queue = atomic_ptr_clear(&amp;usb_queue);     if (queue)     {         usb_write_and_forget(dev, queue);     }     else     {         \/\/ if there is no queued packets - try to send fresh update.         if (!send_update_packet(dev)) {             \/\/ If there was nothing to send -- we clear out busy signal.             atomic_clear_bit(&amp;usbbusy, cUsbOutBusy);         }     } }  tKatUsbBuf usb_command_buf; static void int_out_ready_cb(const struct device *dev) {     int read = -1;     int err = hid_int_ep_read(dev, usb_command_buf, sizeof(usb_command_buf), &amp;read);     if (!err) {         if (handle_kat_usb(usb_command_buf, read))         {             usb_send_or_queue(dev, usb_command_buf);         }     } }<\/code><\/pre>\n<p>\u041f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u043e\u0432\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/blob\/c89b28b476beb9456b3c3f3ee4f014453ab4aa55\/src\/kat_usb_pack.c#L118\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430<\/a> \u0438 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/blob\/c89b28b476beb9456b3c3f3ee4f014453ab4aa55\/src\/kat_usb_pack.c#L242\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u0435 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u044b<\/a>.<\/p>\n<h4>\u0428\u0430\u0433 \u043f\u044f\u0442\u044b\u0439: \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0432\u0441\u0451 \u043f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 &#8212; \u0433\u0435\u0439\u0442\u0432\u0435\u0439 \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0437\u044c, \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0434\u0435\u0440\u0433\u0430\u043d\u044b\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0412\u043e-1\u0445, \u0443 \u043d\u0430\u0441 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442 USB. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, USB \u043f\u043e\u043b\u043b\u0438\u043d\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0430\u0437 \u0432 9 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434, \u0442\u043e \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 111 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0438\u0431\u043e \u043c\u044b \u043d\u0435 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0443\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e. \u042d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<pre><code class=\"cpp\">CONFIG_USB_HID_POLL_INTERVAL_MS=1<\/code><\/pre>\n<p>\u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e 1000 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<p>\u0412\u043e-2\u0445, \u0443 \u043d\u0430\u0441 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442 BLE \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u044f. \u041f\u0440\u0438\u0447\u0438\u043d \u0442\u0443\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e.<\/p>\n<p>\u0421\u0430\u043c BLE (\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c 1Mbit) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043a\u0432\u0430\u043d\u0442\u0430\u0445 \u043f\u043e 1.25\u043c\u0441. \u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043c\u044b \u0437\u0430\u0434\u0430\u0451\u043c &#171;Connection Interval&#187; &#8212; \u0441 \u043a\u0430\u043a\u043e\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0441\u0432\u044f\u0437\u0438 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c. \u041e\u043d\u043e \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u044d\u0442\u0438\u0445 \u043a\u0432\u0430\u043d\u0442\u0430\u0445, \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b 6 \u043a\u0432\u0430\u043d\u0442\u043e\u0432 (\u0440\u0430\u0437 \u0432 7.5\u043c\u0441). \u0421\u0430\u043c\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043a\u0432\u0430\u043d\u0442 (<a href=\"https:\/\/interrupt.memfault.com\/blog\/ble-throughput-primer\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0451 \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/a>). \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438, \u043e\u043d\u0438 \u0445\u043e\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u044f\u0442 MTU \u0432 250 \u0431\u0430\u0439\u0442, \u044d\u0442\u0438\u043c \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043a\u0438\u043d\u0443\u0442\u044c \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0442\u0443\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u043f\u0443\u0441\u0442\u044c \u043f\u043e \u043a\u0432\u0430\u043d\u0442\u0443. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 1000\/1.25=800 \u043a\u0432\u0430\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0434\u0432\u0430 \u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u044e \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u043c, \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0442\u0440\u0438, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 800\/3\/2 = 133\u0413\u0446 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0435, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 133\u0413\u0446 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432\u043e-1\u0445 \u0437\u0430\u0434\u0430\u0442\u044c Connection Window \u0432 \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 6 \u043a\u0432\u0430\u043d\u0442\u043e\u0432 (\u0442\u043e \u0435\u0441\u0442\u044c 2 \u043a\u0432\u0430\u043d\u0442\u0430 \u043d\u0430 \u0441\u0432\u044f\u0437\u044c, 4 \u043a\u0432\u0430\u043d\u0442\u0430 \u043d\u0430 \u0441\u0432\u044f\u0437\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u0432\u0443\u043c\u044f, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c). \u0410 \u0437\u0430\u0442\u0435\u043c \u0435\u0449\u0435 \u0438 <a href=\"https:\/\/devzone.nordicsemi.com\/f\/nordic-q-a\/108640\/lowest-latency-on-1m-for-multiple-devices\" rel=\"noopener noreferrer nofollow\">\u0443\u043a\u043e\u0440\u043e\u0442\u0438\u0442\u044c \u0441\u0430\u043c\u043e \u043e\u043a\u043d\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/a>, \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 7.5\u043c\u0441. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 1250 &#8212; 1 \u043a\u0432\u0430\u043d\u0442 &#8212; \u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 ~1500-1600 \u0441\u0432\u044f\u0437\u044c \u0441\u0442\u0430\u043b\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 2\u043c\u0441:<\/p>\n<pre><code class=\"cpp\">#prj.conf CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=2000<\/code><\/pre>\n<p>\u0418 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">static const struct bt_le_conn_param btConnParam = BT_LE_CONN_PARAM_INIT(6, 6, 0, 2000);<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441 \u043d\u0438\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f. \u042d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438, \u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0442 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u0451\u043c \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0439\u043c\u0430\u0435\u043c \u0432\u0441\u0435\u0445.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u043e\u0441\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043d\u0430\u0447\u0430\u043b\u0438 &#171;\u043f\u0440\u043e\u0441\u043a\u0430\u043b\u044c\u0437\u044b\u0432\u0430\u0442\u044c&#187;: \u0432\u043e-1\u0445 \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 (\u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u044a\u0451\u043c\u0430 \u043e\u043a\u043d\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u043e 2000), \u0432\u043e-2\u0445 \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u043d\u0441\u043e\u0440 \u0432\u0435\u0434\u0451\u0448\u044c-\u0432\u0435\u0434\u0451\u0448\u044c, \u0430 \u043e\u043d \u0440\u0430\u0437 \u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043d\u0443\u043b\u0438, \u043f\u043e\u0442\u043e\u043c \u043e\u043f\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f&#8230; \u0421\u043d\u0438\u0437\u0438\u043b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u043e 100\u0413\u0446. \u041d\u0430 100\u0433\u0446 \u0441\u0432\u044f\u0437\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 100\u0413\u0446, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440 \u043a\u0430\u0436\u0434\u044b\u0435 <code>1000\/1.25\/100 = 8<\/code> \u043a\u0432\u0430\u043d\u0442\u043e\u0432.<\/p>\n<pre><code class=\"cpp\">static const struct bt_le_conn_param btConnParam = BT_LE_CONN_PARAM_INIT(8, 8, 0, 2000);<\/code><\/pre>\n<h4>\u0428\u0430\u0433 \u0448\u0435\u0441\u0442\u043e\u0439: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/h4>\n<p>\u0421\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u043e USB \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 MAC \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u043e\u0439 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u043e USB. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0448\u044c \u0436\u0435 \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 (\u0434\u043b\u044f \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u0433\u0435\u0439\u0442\u0432\u0435\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u0441\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u043a\u0430\u0431\u0435\u043b\u0435\u043c, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u043d\u0441\u043e\u0440 \u0441\u043f\u0438\u043d\u044b \u043d\u0430\u0434\u043e \u0430\u0436 \u0432\u044b\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u0438\u0437 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b&#8230;), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c.<\/p>\n<p>Zephyr, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432, \u0443\u043c\u0435\u044e\u0449\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441 \u0444\u043b\u0435\u0448\u043a\u043e\u0439 &#8212; \u043a\u0430\u043a \u043f\u043e\u0441\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439, \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0439.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0430\u0434\u043e \u0432 <code>prj.conf<\/code> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0451 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0435\u0441\u044f: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 NVS, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 NVS, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0444\u043b\u0435\u0448\u0430 \u0438 \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<pre><code class=\"cpp\">CONFIG_NVS=y CONFIG_FLASH=y CONFIG_FLASH_MAP=y CONFIG_SETTINGS=y CONFIG_SETTINGS_NVS=y<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u044b \u0444\u043b\u0435\u0448\u0430, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0435 (\u043a\u0430\u043a \u0440\u0430\u0437 \u0432\u043e FLASH_MAP), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0437\u0430\u0434\u0430\u0435\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u043c \u0434\u043b\u044f Zephyr \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f-\u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">SETTINGS_STATIC_HANDLER_DEFINE(     katrc, \"katrc\",     \/*get=*\/NULL,     \/*set=*\/katreceiver_settings_set,     \/*commit=*\/NULL,     \/*export=*\/katreceiver_settings_export);<\/code><\/pre>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432\u0441\u0451 \u0440\u0430\u0437\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 <code>settings_save()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 <code>export<\/code> \u043a\u043e\u043b\u043b\u0431\u0435\u043a\u0438, \u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0430\u043c \u0433\u0434\u0435 \u043d\u0430\u0434\u043e. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u0444\u043b\u0435\u0448\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <code>settings_load<\/code>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f <code>set<\/code> \u043a\u043e\u043b\u043b\u0431\u0435\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a; \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d <code>commit<\/code>. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u0435\u0449\u0435 \u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>set<\/code> \u0438 <code>export<\/code>.<\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u0430\u043a key=>id=>value, \u0433\u0434\u0435 key &#8212; \u0441\u0442\u0440\u043e\u043a\u0430, id &#8212; \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u0435\u043d\u0434\u043b. \u0412\u043e \u0444\u043b\u0435\u0448\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 key=>id, \u0430 \u0432 \u0441\u0430\u043c\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0438\u0448\u0443\u0442\u0441\u044f id \u0438 \u0438\u0445 value, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435; \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0430 \u0435\u0441\u043b\u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b &#8212; \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 \u043d\u043e\u0432\u0443\u044e, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u0442\u0430\u0440\u0443\u044e \u0441\u0442\u0435\u0440\u0435\u0442\u044c. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u0441\u0451 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043e.<\/p>\n<p>\u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0435\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e: <code>set()<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0443\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 (&#171;katrc&#187; \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435), \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a <code>export()<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">int katreceiver_settings_export(int(*export_func)(const char *name, const void *val, size_t val_len)) {     int ret;      ret = export_func(\"katrc\/devCnt\", &amp;numKatDevices, sizeof(numKatDevices));     if (ret &lt; 0) return ret;      char argstr[100] = \"katrc\/dev\/\";     char * argsuffix = &amp;argstr[strlen(argstr)]; \/\/ argsuffix now is the pointer beyond \"\/\"     for (int dev = 0; dev &lt; numKatDevices; ++dev) {         sprintf(argsuffix, \"%d\", dev); \/\/ argstr now katrc\/dev\/N         ret = export_func(argstr, &amp;katDevices[dev].a, sizeof(katDevices[dev].a));         if (ret &lt; 0) return ret;     }      return 0; }<\/code><\/pre>\n<p>\u0413\u0434\u0435 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c export_func (\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432). \u0410 \u0447\u0442\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">int katreceiver_settings_set(const char *key, size_t len, settings_read_cb read_cb, void *cb_arg) {     const char *next;     int ret;      if (settings_name_steq(key, \"devCnt\", &amp;next) &amp;&amp; !next) {         if (len != sizeof(numKatDevices)) {             return -EINVAL;         }          ret = read_cb(cb_arg, &amp;numKatDevices, sizeof(numKatDevices));         if (ret &lt; 0) {             numKatDevices = 0;             return ret;         }         return 0;     }      if (settings_name_steq(key, \"dev\", &amp;next) &amp;&amp; next) {         int dev = atoi(next);          if (dev &lt; 0 || dev > ARRAY_SIZE(katDevices)) {             return -ENOENT;         }          if (len != sizeof(katDevices[dev].a)) {             return -EINVAL;         }          katDevices[dev].type = BT_ADDR_LE_PUBLIC; \/\/ Well, it's just zero, so noop.         ret = read_cb(cb_arg, &amp;katDevices[dev].a, sizeof(katDevices[dev].a));         if (ret &lt; 0) {             memset(&amp;katDevices[dev].a, 0, sizeof(katDevices[dev].a));             return ret;         }         return 0;     }      return -ENOENT; }<\/code><\/pre>\n<p>\u0427\u0442\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043d\u043e \u043e\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0443\u0448\u0435\u043d \u043f\u0440\u0435\u0444\u0438\u043a\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u043b\u043b\u0431\u044d\u043a\u043e\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u0430 \u0435\u0449\u0435 \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043e\u0449\u0443\u0442\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u0440\u0435\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0441\u0442\u0440\u043e\u043a &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e &#8212; \u043d\u043e \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e\u043b \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438\u0441\u0442\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u043c-\u0442\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0435 strtok: \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441 \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u043c, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u044d\u0442\u043e \u043b\u0438\u0441\u0442 (\u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212; \u0442\u043e\u0447\u043d\u043e <code>katvr\/devCnt<\/code>), \u0438\u043b\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 (\u0432\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e <code>katvr\/dev\/<\/code> \u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u0435\u0448\u0430 \u0447\u0442\u043e-\u0442\u043e \u0435\u0441\u0442\u044c).<\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 (\u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0447\u0442\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, \u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0447\u0438\u0449\u0435\u043d\u044b).<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u043e\u0436\u0435 \u0445\u0440\u0430\u043d\u044f\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0435 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438 \u0432 Bluetooth \u0441\u043c\u044b\u0441\u043b\u0435 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u043c\u0435\u043d PIN), \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>settings_subsys_init()<\/code> (\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432) \u0438 <code>settings_load()<\/code> \u0434\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u0433\u0434\u0430 \u0443\u0436\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0430\u0436\u043e\u0447\u0435\u043a.<\/p>\n<p>\u0412\u0441\u044f\u043a\u0438\u0435 \u043c\u0435\u043b\u043e\u0447\u0438, \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043c\u0430\u043a\u043e\u0432 (\u0442\u0438\u043f\u0430 &#171;\u043e\u0442\u0441\u043e\u0435\u0434\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432&#187;, &#171;\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435&#187;, &#171;\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b&#187;, &#171;\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b&#187; \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443) \u043e\u043f\u0443\u0441\u0442\u0438\u043c.<\/p>\n<h4>\u0428\u0430\u0433 \u0441\u0435\u0434\u044c\u043c\u043e\u0439: \u043e\u0431\u0449\u0438\u0439 \u044e\u0437\u0435\u0440-\u0444\u0440\u0435\u043d\u0434\u043b\u0438<\/h4>\n<p>\u042f \u043c\u043e\u0433\u0443 \u0445\u043e\u0442\u044c \u043a\u043b\u0438\u043d\u043e\u043f\u0438\u0441\u044c\u044e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0432\u044b\u0431\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a, \u043d\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0433\u043b\u0443\u043f\u044b\u043c \u0437\u0430\u043d\u044f\u0442\u0438\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043f\u043e\u0434 \u0441\u0435\u0431\u044f.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 (\u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430)<\/p>\n<\/li>\n<li>\n<p>\u0416\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0448\u0430\u0433\u0430 \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u044f: <\/p>\n<ul>\n<li>\n<p>C2\/C2+ \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d PID, C2Core \u0438\u043c\u0435\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 PID (\u043d\u043e \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u044b)<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a, \u0447\u0442\u043e \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0447\u0442\u043e\u0431\u044b \u0433\u0435\u0439\u0442\u0432\u0435\u0439 \u043d\u0435 \u043f\u0440\u043e\u0441\u0438\u043b \u0441\u043f\u0430\u0440\u0438\u0442\u044c \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043e\u043f\u044f\u0442\u044c)<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0438\u043c\u0435\u044e\u0449\u0435\u0435\u0441\u044f \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u044b\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u044f \u0434\u0443\u043c\u0430\u043b. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 &#8212; \u0444\u0430\u0439\u043b\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f Seeeds \u043c\u043e\u0434\u0443\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u043e\u0432\u0437\u0434\u044f\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043e\u0432\u0435\u0440\u043b\u0435\u0439 <code>prj.conf<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/00fb01028f1baae48e01cffbe8414746e43018c8#diff-7c9693e9c5e61a1d80e09769377d47bb415ec39ca5aeaa85d13581b0105d6359\" rel=\"noopener noreferrer nofollow\">Kconfig<\/a> \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c: \u0438 <code>SERIAL<\/code> \u0438 <code>CONSOLE<\/code> \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0432 <code>prj.conf<\/code> <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/00fb01028f1baae48e01cffbe8414746e43018c8#diff-6b55e72541ade97f0ae249027acf901a7a142f47598a55b0249e3c9bdb9492daR57\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043f\u0438\u0441\u0430\u0442\u044c<\/a> \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e &#8212; \u0432 <code>prj-debug.conf<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0432\u0435\u0440\u043b\u0435\u0439. \u041a\u0440\u0438\u0432\u043e, \u043a\u043e\u0441\u043e, \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e \u0437\u0430\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 &#8212; \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 C2Core \u044f \u0438\u0441\u043a\u0430\u043b \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043c\u0435\u043d\u0438\u0442\u044c PID \u0434\u0438\u043d\u0430\u043c\u0447\u0435\u0441\u043a\u0438. \u0414\u043b\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u043c \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c&#8230; \u0420\u0430\u0437 \u0443\u0436 \u044f \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430 \u0438 \u0434\u0435\u0431\u0430\u0433\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0435 \u043e\u0434\u0438\u043d <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/blob\/master\/prj_c2core.conf\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u0444\u0438\u0433-\u043e\u0432\u0435\u0440\u043b\u0435\u0439<\/a> \u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/fec8131047d1a938a0b4af4b75d60438abdec12d\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043b\u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442<\/a>.<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 USB \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a\u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041d\u043e \u043e\u043d\u0430 \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u043d\u043e, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0434\u0430\u0436\u0435 \u0434\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u041f\u043b\u044e\u0441, \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043c\u0435\u043d\u0443 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a\u0430 \u043d\u0430 \u043b\u0435\u0442\u0443, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0449\u0435 \u0438 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 USB \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u044e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>\u0418 \u044f <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/blob\/e13785fca6b49d0911ae4102d4acfad83e5abea1\/src\/main.c#L37\" rel=\"noopener noreferrer nofollow\">\u0441\u043c\u043e\u0433 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0438\u0437 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430: \u0441\u0442\u0430\u0440\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0436\u0435\u0441\u0442\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u043d\u0435\u0439, \u043d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440, \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 ascii \u0432 utf-16 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430. \u0412\u0441\u0451. \u0414\u0430, \u044d\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u0435\u0448\u0438 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0435 (\u0438 \u0442\u043e\u0442 \u0436\u0435 UsbTreeView \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f), \u043d\u043e API \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f HID \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e\u0441\u044b\u043b\u0430\u044e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u043d\u044b \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a\u0430 \u0433\u0435\u0439\u0442\u0432\u0435\u0439 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0439 \u0440\u0435\u0441\u0438\u0432\u0435\u0440 \u043a\u0430\u043a \u0440\u043e\u0434\u043d\u043e\u0439.<\/p>\n<p>\u041d\u043e \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0430\u043c \u0434\u043e\u043d\u0433\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a, \u043d\u0430\u0434\u043e \u0435\u0449\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a \u0432 \u043d\u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c. USB \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438 \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e SetSN (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 7), \u043d\u043e \u0435\u0451 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c &#8212; \u0433\u0435\u0439\u0442\u0432\u0435\u0439 \u0437\u0430 \u043d\u0430\u0441 \u044d\u0442\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0433\u0435\u0439\u0442\u0432\u0435\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 C#, \u0430 PowerShell &#8212; \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c C#, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0451 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 HID \u043f\u0430\u043a\u0435\u0442\u0430:<\/p>\n<pre><code class=\"powershell\">Add-Type -Path \"C:\\Program Files (x86)\\KAT Gateway\\IBizLibrary.dll\" [IBizLibrary.KATSDKInterfaceHelper].GetMethod('GetDeviceConnectionStatus').invoke($null, $null) $dev = New-Object IBizLibrary.KATSDKInterfaceHelper+KATModels [IBizLibrary.KATSDKInterfaceHelper]::GetDevicesDesc([ref]$dev, 0) [IBizLibrary.ComUtility]::KatDevice='walk_c2' [IBizLibrary.Configs].GetMethod('C2ReceiverPairingInfoRead').invoke($null, $null)  $newSn = [IBizLibrary.KATSDKInterfaceHelper]::receiverPairingInfoSave.ReceiverSN [byte[]]$newSnArr = $newSn.ToCharArray() [byte[]]$ans = New-Object byte[] 32 [byte[]]$command = 0x20,0x1f,0x55,0xAA,0x00,0x00,0x07,0x00 + $newSnArr + $ans [IBizLibrary.KATSDKInterfaceHelper]::SendHIDCommand($dev.serialNumber, $command, 32, $ans, 32)  [IBizLibrary.KATSDKInterfaceHelper]::GetDevicesDesc([ref]$dev, 0)  $pairing=[IBizLibrary.KATSDKInterfaceHelper]::receiverPairingInfoSave.ReceiverPairingByte [byte[]]$ans = New-Object byte[] 32 [byte[]]$command = 0x20,0x1f,0x55,0xAA,0x00,0x00,0x20,0x00 + $pairing + $ans [IBizLibrary.KATSDKInterfaceHelper]::SendHIDCommand($dev.serialNumber, $command, 32, $ans, 32)<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0435\u0449\u0435 \u043a\u0443\u0447\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u044b\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0448\u0430\u0433\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 (C2 \u0438\u043b\u0438 C2Core) \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u0422\u0443\u0442 \u044f \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0442\u0430\u043a \u043a\u0430\u043a PowerShell \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 Power, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 \u043c\u0430\u0445\u043e\u043d\u044c\u043a\u0438\u0439 \u0431\u0430\u0442\u043d\u0438\u0447\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 PowerShell \u0441\u043a\u0440\u0438\u043f\u0442. \u0414\u0430-\u0434\u0430, \u0432\u043e\u0442 \u0442\u0430\u043a &#8212; \u043c\u043e\u0436\u043d\u043e. \u041d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0433\u0434\u0435 \u0442\u0443\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u0447\u0442\u043e \u0443\u0436. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0430\u043a\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0432\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, <code>README.txt<\/code>, <code>install.cmd<\/code> \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 powershell. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c-\u043f\u0430\u0440\u0430\u043d\u043e\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445.<\/p>\n<p>\u0422\u044f\u0436\u0435\u043b\u044b\u0439 \u043f\u0430\u0440\u0430\u043d\u043e\u0438\u043a &#8212; welcome \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u0431\u043b\u0430\u0433\u043e \u0438\u0445 \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e.<\/p>\n<h4>\u0428\u0430\u0433 \u0432\u043e\u0441\u044c\u043c\u043e\u0439: \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440-\u0444\u0440\u0435\u043d\u0434\u043b\u0438<\/h4>\n<p>&#8230; \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0434 \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 \u0441\u043f\u0430\u0433\u0435\u0442\u0442\u0438. \u0422\u0443\u0442 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0442\u0443\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u0443\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043e\u0434\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0435, \u043a\u0443\u0434\u0430-\u0442\u043e \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u0430 \u0433\u0434\u0435-\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041a\u0430\u0448\u0430. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0444\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0438\u043d\u0430\u0447\u0435?<\/p>\n<blockquote>\n<p>&#8212; \u0417\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0444\u0442\u043e\u043c \u0438 \u043a\u043e\u043b\u0431\u0430\u0441\u043e\u0439?<br \/>&#8212; \u0427\u0442\u043e?<br \/>&#8212; \u041b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/blockquote>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u044f \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043b \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0441\u0442\u0438 (\u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u0430) \u0437\u0430\u043d\u044f\u0442\u0438\u044e \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 &#8212; <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/commit\/81109617258b2e657c0716dc27ccf3279feb9c8c\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0443<\/a>.<\/p>\n<p>\u041c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u044d\u0440\u043e\u0437\u0438\u044e:<\/p>\n<ul>\n<li>\n<p>\u0412 <code>kat_ble*<\/code> \u0432\u0441\u0451, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0435\u0441\u044f \u043a BLE \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0438 <code>kat_ble.c<\/code> \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 <code>kat_main.h<\/code> \u0438 <code>kat_ble_pack.c<\/code>; \u043f\u043b\u044e\u0441 \u043e\u0434\u043d\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>kat_usb_try_send_update()<\/code> \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043d\u043a\u0443\u044e \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 \u0432 main(), \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0412 <code>kat_usb*<\/code> \u0432\u0441\u0451, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0435\u0441\u044f \u043a USB; \u0442\u0430\u043a \u0436\u0435 kat_usb.c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 <code>kat_main.h<\/code> \u0438 \u0441\u0432\u043e\u0438\u0445 usb \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0435\u0432; \u043f\u043b\u044e\u0441 <code>kat_ble_get_localaddr<\/code> \u0438 <code>kat_ble_update_devices<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0425\u0430\u043a \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 usb \u0441\u0435\u0440\u0438\u0439\u043d\u0438\u043a\u0430 \u0432\u044b\u043d\u0435\u0441 \u0432 <code>kat_usb_serialno.c<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u043e\u043c \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 USB \u0434\u0440\u0430\u0439\u0432\u0435\u0440, \u043b\u0435\u0433\u043a\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0412 <code>main.c<\/code> \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0431\u0435\u0442\u0430\u0442\u0435\u0441\u0442\u0435\u0440\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u044f \u043d\u0430\u0433\u0443\u0433\u043b\u0438\u043b <a href=\"https:\/\/www.reddit.com\/r\/PowerShell\/comments\/j1edow\/powershell_on_windows_10_connecting_to_serial_port\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0431\u0440\u043e\u0441\u043e\u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441 \u043b\u0435\u0433\u043a\u0438\u043c \u0434\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u0432 <a href=\"https:\/\/github.com\/datacompboy\/nrf-katvr-receiver\/blob\/master\/scripts\/serial-log.cmd\" rel=\"noopener noreferrer nofollow\">\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0431\u0430\u0442\u043d\u0438\u0447\u0435\u043a<\/a>.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 (C2 \/ C2Core) \u0438 \u044d\u0442\u043e\u0442 \u0431\u0430\u0442\u043d\u0438\u0447\u0435\u043a. \u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u043d\u0430 \u0440\u0435\u0441\u0435\u0442, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b, \u043a\u0430\u043a \u0434\u0438\u0441\u043a \u0438\u0441\u0447\u0435\u0437 &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0448\u044c \u0431\u0430\u0442\u043d\u0438\u0447\u0435\u043a, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0448\u044c \u043c\u043d\u0435 (\u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u043b\u0438 \u043a\u043e\u043f\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430). \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0433\u0434\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044f \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u043b \ud83d\ude42<\/p>\n<h4>\u041f\u0440\u043e\u0444\u0438\u0442!<\/h4>\n<p>\u0423\u0440\u0430, \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438\u0447\u0435\u043c \u0441 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0439 latency \u0447\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0441\u0438\u0432\u0435\u0440. <a href=\"https:\/\/photos.google.com\/share\/AF1QipNBI1ZZSi7RjZD27jWZXmUdVW7N7byMNFuYdcP143NqeriFWkLfIwtVk3D6jIj9gQ?key=d19TelFMNmpUZVpJbnFzc2s1cVB1SFN6bnpnRUtB\" rel=\"noopener noreferrer nofollow\">\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435 \u0441\u0430\u043c\u0438<\/a>. \u041d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c \u0432\u0438\u0434\u043d\u043e, \u0433\u0434\u0435 \u043c\u043e\u0451 \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/@UMaFullBodyVRGaming\" rel=\"noopener noreferrer nofollow\">Utopia Machine<\/a> \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 <a href=\"https:\/\/www.youtube.com\/watch?v=Sp2X7HheArI\" rel=\"noopener noreferrer nofollow\">\u043d\u043e\u0432\u044b\u0439 \u0440\u043e\u043b\u0438\u043a<\/a>.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65fc99872331bb9d71b1b380\" data-style=\"\" id=\"65fc99872331bb9d71b1b380\" width=\"\"><\/div>\n<p>\u041e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0435\u043c\u0443 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f!<\/p>\n<h2>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h2>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0445\u043e\u0442\u044c \u044f \u0438 \u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f 133 \u0413\u0446 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u0441\u0432\u044f\u0437\u044c \u0431\u044b\u043b\u0430 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 &#8212; \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442 \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442, \u043d\u043e \u043f\u0443\u0441\u0442\u044b\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 &#8212; \u043d\u0430 100 \u0413\u0446, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 133 \u0413\u0446 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e? \u0427\u0430\u0441\u0442\u044c-\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/4fc\/d2f\/2ea\/4fcd2f2eac693a92cf7b04509063f055.jpg\" alt=\"We need to go EVEN deeper\" title=\"We need to go EVEN deeper\" width=\"1020\" height=\"768\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4fc\/d2f\/2ea\/4fcd2f2eac693a92cf7b04509063f055.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>We need to go EVEN deeper<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430-\u0434\u0430, \u0432\u044b \u043f\u0440\u0430\u0432\u044b. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0445 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430, \u0438 \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c diff\/patch \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0443\u0442\u0438\u043b\u0438\u0442.<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ul>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 1: &#171;\u0418\u0433\u0440\u0430\u0435\u043c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/798029\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/3364c324e710?source=friends_link&amp;sk=5535c9f1c834b35af2ac1d282fd41826\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/playing-kat-walk-c2-part-1-actually-anton-fedorov-frtwe\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 2: &#171;\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/799197\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-part-2-peeking-eavesdropping-sniffing-and-learning-how-to-communicate-with-unknown-bb390c089a00\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-part-2-peeking-eavesdropping-sniffing-learning-fedorov-bcbme\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 3: &#171;\u041e\u0442\u0440\u0435\u0437\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u043e\u0434&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/802125\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-p-3-cutting-the-wire-987753f49da8?source=friends_link&amp;sk=a4e0e2d3f71be681bc206b1d9a3d307a\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-p3-cutting-wire-anton-fedorov-4abae\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 4: &#171;\u0418\u0433\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/804327\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-p-4-playing-with-firmware-ccad00d9eeeb?source=friends_link&amp;sk=3b0779685140b65e84d667950f07f7d6\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-p4-playing-firmware-anton-fedorov-wirce\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 5: &#171;\u041e\u0432\u0435\u0440\u043a\u043b\u043e\u043a\u0438\u043d\u0433 \u0438 \u0431\u0430\u0433\u0444\u0438\u043a\u0441\u0438\u043d\u0433&#187; \u043d\u0430 [<a href=\"https:\/\/habr.com\/ru\/articles\/805747\/\" rel=\"noopener noreferrer nofollow\">Habr<\/a>], [<a href=\"https:\/\/medium.com\/@datacompboy\/katwalk-c2-p-5-overclocking-and-bugfixing-0ff1fd853e49?source=friends_link&amp;sk=4f44bf29291c8c3ad1b2522c5fd2d3a9\" rel=\"noopener noreferrer nofollow\">Medium<\/a>] \u0438 [<a href=\"https:\/\/www.linkedin.com\/pulse\/katwalk-c2-p5-overclocking-bugfixing-how-use-ghidra-analyse-fedorov-5nome\/\" rel=\"noopener noreferrer nofollow\">LinkedIn<\/a>].<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/802125\/\"> https:\/\/habr.com\/ru\/articles\/802125\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/articles\/798029\/\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438<\/a>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0430 \u0441\u0432\u044f\u0437\u044c \u0438\u0433\u0440 \u0441 \u0441\u043e\u0444\u0442\u043e\u043c. <a href=\"https:\/\/habr.com\/ru\/articles\/799197\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0444\u0442\u0430 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439<\/a>. \u041f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438: \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u043d\u0430\u043c \u043f\u0440\u043e\u0432\u043e\u0434 \u0434\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435?<\/p>\n<h2>\u041a\u0430\u043a \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435<\/h2>\n<p>\u0427\u0442\u043e \u043c\u044b \u0437\u043d\u0430\u0435\u043c? \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u0435\u043d\u0441\u043e\u0440\u044b &#8212; \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432 6 \u0431\u0430\u0439\u0442. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u0438\u0434\u0435\u043d\u044c\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 USB-bluetooth \u0441\u043f\u0430\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u043e\u043c. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u043f\u043e\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0437\u043e\u0432\u0451\u0442\u0441\u044f Receiver. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043a\u0440\u044f\u043a\u0430\u0435\u0442, \u0437\u043d\u0430\u0447\u0438\u0442 \u0443\u0442\u043a\u0430. \u041c\u043e\u0436\u0435\u0442, \u0440\u0435\u0437\u0438\u043d\u043e\u0432\u0430\u044f, \u043d\u043e \u0443\u0442\u043a\u0430.<\/p>\n<p>\u041a\u0430\u043a \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u0443\u0442\u043a\u0438 \u043f\u043b\u0430\u0432\u0430\u044e\u0442 \u0432\u043e\u043a\u0440\u0443\u0433? \u0423 \u043a\u043e\u043c\u043f\u0430 \u043c\u043e\u0435\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 wifi+bluetooth, \u043d\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 bluetooth \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u043d\u043e. \u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 Bluetooth LE Explorer, Bluetooth LE Lab \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u043d\u043e \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0435 \u0434\u0430\u043b\u0438. \u041f\u043e\u0438\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0434\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0433\u043e\u043d \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u043d\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u043a\u0440\u0443\u0433, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u043e\u0441\u044c <a href=\"https:\/\/www.nordicsemi.com\/Products\/Development-tools\/nRF-Connect-for-mobile\" rel=\"noopener noreferrer nofollow\"><strong>nRF Connect<\/strong><\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0443\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e \u0434\u0430\u0451\u0442 \u043d\u0430\u0434\u0435\u0436\u0434\u0443 \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043b\u0435\u0433\u043a\u043e!<\/p>\n<p>\u0412\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 &#171;Scanner&#187;, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 &#171;SCAN&#187; \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u0432\u0438\u0441\u0438\u0442 \u0432\u0430\u0433\u043e\u043d \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 &#171;KATVR&#187;:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0418 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0423\u0440\u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e Bluetooth LE \u0434\u0435\u0432\u0430\u0439\u0441\u044b! \u0422\u044b\u043a\u0430\u0435\u043c \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f, \u043d\u0430 \u0441\u0435\u043d\u0441\u043e\u0440\u0435 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#8212; \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043f\u0443\u0441\u0442\u0430\u044f:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 &#8212; \u043f\u0443\u0441\u0442\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u043c&#8230; \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u0441\u044f \u043e\u043f\u044f\u0442\u044c, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043b\u043e\u0433:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e.<\/p>\n<p>\u041e\u043a\u0435\u0439. \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043c <a href=\"https:\/\/source.android.com\/docs\/core\/connect\/bluetooth\/verifying_debugging#debugging-with-logs\" rel=\"noopener noreferrer nofollow\">&#171;Snoop logs&#187;<\/a>, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u043e ADB, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043e\u043f\u044f\u0442\u044c <strong>wireshark<\/strong>, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443:<\/p>\n<figure class=\"\">\n<div><figcaption>\u0427\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Wireshark \u043d\u0435\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u0434\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435, \u043d\u0443 \u0432\u043e\u0442 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435! \u0412\u043e\u0442 \u043e\u043d\u0438!<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u043d\u0430 \u043b\u0430\u0434\u043e\u043d\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u043a\u0430\u043a-\u0442\u043e \u0441\u0435\u0431\u044f \u0432\u0435\u0434\u0451\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u043d\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442. \u041d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0435\u0442, \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0438\u0433\u0434\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u043d\u043e&#8230; \u0427\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0447\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u0443\u0437\u043d\u0430\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u0435\u043d\u0441\u043e\u0440\u044b &#8212; Bluetooth LE.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u043d\u0441\u043e\u0440\u044b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Notification \u0434\u043b\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 0x002E, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e &#8212; \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0430 USB.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0435 \u0432\u0438\u0434\u0438\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Bluetooth LE<\/h2>\n<p>\u0414\u0438\u043b\u0435\u0442\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043d\u0430 Bluetooth LE. \u0412 Bluetooth LE \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0440\u043e\u043b\u0435\u0439, \u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0434\u0435\u0431\u0430\u043b\u0435\u0442\u0430. \u041e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u0445 (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 freq-hopping), \u0433\u0434\u0435 \u0442\u0435, \u043a\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c \u043d\u0430\u0434\u043e.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u043e\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c? \u042d\u0442\u043e \u0432\u0441\u0451 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>GAP<\/strong> &#8212; &#171;Generic Access Profile&#187;. \u0414\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u0435\u0439 \u0434\u0432\u0435 &#8212; <strong>Peripheral<\/strong> \u0438 <strong>Central<\/strong>. <strong>Peripheral<\/strong> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u044e\u0442 Advertising Data (\u0434\u043e 31 \u0431\u0430\u0439\u0442\u0430) \u043f\u0440\u044b\u0433\u0430\u044f \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0451\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c \u0434\u043b\u044f \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442. <strong>Central<\/strong> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043b\u0443\u0448\u0430\u044e\u0442 \u043d\u0430 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 (\u0438\u043b\u0438 \u043f\u0440\u044b\u0433\u0430\u044f \u043f\u043e \u043d\u0438\u043c) \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0415\u0441\u043b\u0438 Central \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0430\u0434\u043e, \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 <code>Scan Response Request<\/code> \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0441 \u043a\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u0441\u044f. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f: \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 Advertising Data, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0430\u043a\u0435\u0442. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0434\u0451\u0442 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0431\u043c\u0435\u043d\u0430 \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043c\u0435\u043d\u044b \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p><strong>Central<\/strong> \u0440\u043e\u043b\u044c \u0432\u0435\u0434\u0443\u0449\u0430\u044f. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 \u0440\u043e\u043b\u044c\u044e Central \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u044b\u0445 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439. \u0412 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f Central \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430 \u0442\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0421\u043f\u0443\u0441\u0442\u044f \u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f &#8212; \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 Central \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e Peripheral \u043e\u0431\u044f\u0437\u0430\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 peripheral \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0433\u043e &#8212; \u0441\u0432\u044f\u0437\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u043e\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0430\u043b\u0430\u043d\u0441 \u043c\u0435\u0436\u0434\u0443 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0435\u0434\u043e\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0438\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u044b.<\/p>\n<p><strong>Peripheral<\/strong> \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0435\u0434\u043e\u043c\u044b\u0435. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043f\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0438\u043c \u043d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0440\u0430\u0434\u0438\u043e\u044d\u0444\u0438\u0440 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043a \u043d\u0438\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0442\u0430\u043a \u0436\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0436\u0434\u0451\u043c \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0434\u0451\u0442 \u0442\u043e\u043b\u0441\u0442\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041d\u0435\u0432\u0430\u0436\u043d\u043e \u043a\u0442\u043e \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0430 \u043a\u0442\u043e \u0432\u0435\u0434\u043e\u043c\u044b\u0439, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442(\u044b) \u0442\u0443\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438. \u0421\u043b\u043e\u0435\u043c \u043f\u043e\u0432\u044b\u0448\u0435 \u0432 \u044d\u0442\u043e\u043c \u0431\u0443\u0442\u0435\u0440\u0431\u0440\u043e\u0434\u0435 \u0438\u0434\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0432 \u044d\u0442\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445, <strong>GATT<\/strong> (\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 <strong>ATT<\/strong>) \u0438\u043b\u0438 <strong>L2CAP<\/strong>. GATT &#8212; \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 &#171;\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b&#187;, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0435\u0433\u043e GUID \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f-\u043f\u0438\u0448\u0435\u0442\u0441\u044f-\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 16\u0431\u0438\u0442\u043d\u044b\u0439 Handle. \u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e: \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u0441\u044f, \u0447\u0438\u0442\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043f\u043e\u0442\u043e\u043c \u0447\u0438\u0442\u0430\u0435\u043c-\u043f\u0438\u0448\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<p><strong>GATT Server<\/strong> \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043d\u0430 <strong>Peripheral<\/strong>, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0431\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c GATT Server, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043e\u0431\u0430 \u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c GATT Client&#8217;\u0430\u043c\u0438 \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c. \u0425\u043e\u0442\u044c \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0443\u0448\u0430 \u0447\u0435\u0440\u0435\u0437 Notification \u0438\u043b\u0438 Indication, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 GATT Client \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0443 GATT Server, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f, GATT Client \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441 \u043d\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0447\u0430\u0441\u0442\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0448\u0438\u0432\u043a\u0438 \u043f\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0443).<\/p>\n<p><strong>L2CAP<\/strong> \u044d\u0442\u043e \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435 ATT \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0441\u0432\u044f\u0437\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e, \u0430 \u0443\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. ATT \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 L2CAP \u043a\u0430\u043d\u0430\u043b\u0435 #4 (\u043f\u0440\u0438\u0431\u0438\u0442\u043e \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438, \u0438\u0431\u043e \u0442\u0430\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c).<\/p>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Bluetooth LE<\/h2>\n<p>\u041d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0434\u0438\u043b\u0435\u0442\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043a\u0430\u043a \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0448\u0435.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432. \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 BLE \u0441\u0442\u0435\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043d\u0430 Windows, Linux, Android \u0438 \u0442.\u043f.) \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Central \u0440\u043e\u043b\u0438 \u0438 \u0443\u043c\u0435\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a GATT Server \u0442\u0430\u043a \u0438 GATT Client. \u041d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u0431\u044b\u0442\u044c GATT Client.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0432\u044f\u0437\u0438 \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041b\u0438\u0431\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c Scan (\u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043b\u0443\u0448\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435), \u043b\u0438\u0431\u043e \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e (\u0435\u0433\u043e MAC \u0430\u0434\u0440\u0435\u0441).<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043a\u043e\u043c\u0443, \u043c\u044b \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b; \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043d\u0430\u0434\u043e &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0449\u0438\u0439 \u043a\u043b\u044e\u0447, \u043b\u0438\u0431\u043e \u043a\u043b\u044e\u0447 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430 PIN \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043b\u0438 \u0432\u0432\u043e\u0434\u0430 PIN \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0447. \u041a \u0441\u043b\u043e\u0432\u0443, \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 GATT \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u043a\u0442\u043e \u0431\u044b \u043d\u0438 \u0431\u044b\u043b GATT Client, \u043e\u043d \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u044b \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c Notification \/ Indication \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432).<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0438\u043b\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043b\u044e\u0442\u0443\u0441 \u0441\u0442\u0435\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0438 \u0431\u0435\u0440\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.<\/p>\n<p>\u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e&#8230; \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0448\u043b\u043e\u043c\u0443 \u043e\u043f\u044b\u0442\u0443 \u043f\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e USB \u0441\u0442\u0435\u043a\u0430, \u044f \u0432\u0437\u044f\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 &#8212; <a href=\"https:\/\/github.com\/gaikwadChetan93\/Android-BLE-Connection\" rel=\"noopener noreferrer nofollow\">Android-BLE-Connection<\/a>, <a href=\"https:\/\/github.com\/android\/connectivity-samples\/tree\/master\/BluetoothLeGatt\" rel=\"noopener noreferrer nofollow\">BluetoothLeGatt<\/a>, <a href=\"https:\/\/github.com\/joelwass\/Android-BLE-Connect-Example\" rel=\"noopener noreferrer nofollow\">Android-BLE-Connect-Example<\/a>.<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043e\u043d\u0438 \u0432\u0441\u0435 \u0431\u044b\u043b\u0438 outdated, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0447\u0442\u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0434\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u043b\u0435\u0433\u043a\u0438\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u0430\u0432\u043e\u043a \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 BLE \u0441\u0442\u0435\u043a\u0435&#8230; \u041d\u043e \u0432\u0441\u0451 \u0442\u0449\u0435\u0442\u043d\u043e! \u042f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043c\u043e\u0433 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0440\u0443\u0433\u0438\u0445 Bluetooth \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432, \u043d\u043e \u0432\u043e\u0442 \u0441\u0435\u043d\u0441\u043e\u0440\u044b \u043e\u0442 KATVR \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u042f \u0437\u043d\u0430\u043b Handle \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 &#8212; \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0449\u0435 \u0438 Logcat \u0432 Wireshark, \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0427\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a<\/figcaption><\/div>\n<\/figure>\n<p>\u042f \u0434\u0430\u0436\u0435 \u0441\u043b\u0430\u0437\u0438\u043b \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0441\u0442\u0435\u043a\u0430 \u043a\u0430\u043a \u0432 <a href=\"https:\/\/android.googlesource.com\/platform\/packages\/apps\/Bluetooth\/+\/eec3e7295c27a6c49f9d33edd8e82f26376b1a31\/src\/com\/android\/bluetooth\/gatt\/GattService.java#3077\" rel=\"noopener noreferrer nofollow\">Java \u0447\u0430\u0441\u0442\u044c<\/a>, \u0442\u0430\u043a \u0438 \u0432 <a href=\"https:\/\/android.googlesource.com\/platform\/packages\/apps\/Bluetooth\/+\/eec3e7295c27a6c49f9d33edd8e82f26376b1a31\/jni\/com_android_bluetooth_gatt.cpp#1366\" rel=\"noopener noreferrer nofollow\">Native \u0447\u0430\u0441\u0442\u044c<\/a>.<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u043f\u043e\u0438\u0433\u0440\u0430\u043b\u0441\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u043c\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0435\u043a \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0444\u0435\u0439\u043a\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u044e \u0434\u043b\u044f \u0434\u043e\u0431\u044b\u0447\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041f\u044b\u0442\u0430\u043b\u0441\u044f \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u0441 Native \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f IPC \u0438 \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u0422\u0449\u0435\u0442\u043d\u043e.<\/p>\n<p>\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 Windows BLE \u0441\u0442\u0435\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435. \u0421\u0442\u0435\u043a \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043e\u0442\u0434\u0430\u043b\u043e &#8212; \u0442\u043e \u0438 \u0432\u0430\u043c \u0438\u0445 \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e. \u0418 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0442&#8230; \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0438\u0445 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442. \u041d\u0438\u043a\u0430\u043a. \u041d\u0438 \u0437\u0430 \u0447\u0442\u043e.<\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e!<\/p>\n<figure class=\"\">\n<div><figcaption>We need to go deeper<\/figcaption><\/div>\n<\/figure>\n<h2>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0451 Bluetooth Central \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/h2>\n<p><strong>\u0416\u0435\u043b\u0435\u0437\u043e &#8212; nRF52840<\/strong><\/p>\n<p>\u0420\u0430\u0437 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043b\u043e\u0451\u0432 \u043e\u0447\u0435\u043d\u044c \u0443\u043c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0437\u0430\u0449\u0438\u0449\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u0441 \u043e\u0442 \u043b\u044e\u0431\u044b\u0445 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432\u0437\u044f\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u043d\u0430\u0448\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0440\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0442\u0435\u043b \u043d\u0430 \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e?<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b <a href=\"https:\/\/www.nordicsemi.com\/Products\/Development-hardware\/nRF52840-Dongle\/GetStarted?lang=en\" rel=\"noopener noreferrer nofollow\"><strong>nRF52840 Dongle<\/strong><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043a\u0443\u043f\u0438\u043b \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u043d\u044e\u0445\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430 \u0441 \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c\u0438, \u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0430 \u0447\u0442\u043e \u0436\u0435 \u043e\u043d \u0443\u043c\u0435\u0435\u0442. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u043a\u0443\u0441\u043d\u044b\u0439 \u0437\u0432\u0435\u0440\u0451\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0434\u0438\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u044b\u0442\u043a\u0430\u0435\u0442\u0441\u044f \u0432 USB \u043f\u043e\u0440\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0436 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043a\u043e\u0434\u0430, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c \u043c\u0435\u0433\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043a\u0438, \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u0441 32\u0431\u0438\u0442\u043d\u044b\u043c ARM \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u043d\u0430 64 \u043c\u0435\u0433\u0430\u0433\u0435\u0440\u0446\u0430\u0445, \u0434\u0430 \u0435\u0449\u0435 \u0438 \u0441 fpu. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f &#8212; \u044d\u0442\u043e \u043d\u0435\u0447\u0442\u043e \u043c\u043e\u0449\u043d\u0435\u0435 \u043c\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c, \u0447\u0442\u043e nRF Connect \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u0432\u0437\u043b\u0435\u0442\u0430\u0435\u0442 \u0432 VS Code, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u0447\u0442\u043e \u043e\u0441\u043e\u0431\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u043d\u0435 \u0431\u0443\u0434\u0443, \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0432\u0430\u0442\u0438\u0442\u044c. \u0414\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043d\u0438<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-371523","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=371523"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371523\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}