هل تقوم ذاكرة التخزين المؤقت الزرقاء بقيم ATT، وكيفية مسح ذاكرة التخزين المؤقت؟

StackOverflow https://stackoverflow.com//questions/22028998

سؤال

أحاول العثور على أي حلول بديلة لـ a خطأ Bluetooth LE على OSX.على وجه الخصوص، أريد أن أعرف أين يخطئ OSX في قراءة جدول Bluetooth LE GATT.وبالتالي، فإنني أعرض حزم L2CAP فيها PacketLogger من أدوات IO للأجهزة لـ XCode.

عندما أستخدم Bluetooth Explorer للاتصال بجهاز Bluetooth LE، أتوقع رؤية 3.4.4.9 القراءة حسب طلب نوع المجموعة(uuid=0x2800 «الخدمة الأساسية»، startHandle=0x0001، endHandle=0xffff) لاكتشاف الخدمات الأساسية (أو البحث حسب نوع قيمة الطلب(uuid=0x2800، القيمة:uuid للخدمة))، متبوعًا بـ 3.4.4.1 قراءة حسب نوع الطلب(uuid=0x2803 «مميزة») لاكتشاف الخصائص.هذا ما أراه عندما أشم الحزم من جهاز iPhone (باستخدام CC2540).

لكن على OSX، طلبات L2CAP الوحيدة التي أراها في PacketLogger (وCC2540) بعد الاتصال هي:

  1. قراءة حسب نوع الطلب(attributeType=0x2803، startHandle=0x001a، endHandle=0x001a)
  2. قراءة حسب نوع الطلب(نوع السمة=0x2802 «تضمين»، مقبض البداية=0x0001، مقبض النهاية=0x0004)
  3. قراءة حسب نوع الطلب(نوع السمة=0x2802، مقبض البداية=0x0005، مقبض النهاية=0x0009)
  4. قراءة حسب نوع الطلب(attributeType=0x2802، startHandle=0x0010، endHandle=0x0019)
  5. قراءة حسب نوع الطلب(attributeType=0x2802، startHandle=0x001a، endHandle=0x001a)
  6. قراءة حسب نوع الطلب(attributeType=0x2803، startHandle=0x001a، endHandle=0x001a)
  7. قراءة حسب نوع الطلب(attributeType=0x2802، startHandle=0x0021، endHandle=0x0027)
  8. قراءة حسب نوع الطلب(نوع السمة = 0x2802، مؤشر البداية = 0x002b، مؤشر النهاية = 0x002e)

هذه ليست طلبات كافية لاكتشاف الخدمات، ومع ذلك فإن Bluetooth Explorer يسرد جميع معرفات UUID الخاصة بالخدمة في هذه المرحلة.يشير هذا إلى أن OSX يعرف بالفعل مكان وجود الخدمات على جهاز Bluetooth LE هذا.هل blued خدمات الجهاز ذاكرة التخزين المؤقت وقراءتها عند بدء التشغيل؟إذا كان الأمر كذلك، كيف يمكنني مسح ذاكرة التخزين المؤقت؟

لقد حاولت إيقاف تشغيل Bluetooth، وقتل blued، وإعادة تشغيل OSX، ولكن في كل مرة لا يعيد OSX اكتشاف الخدمات أبدًا.

هل كانت مفيدة؟

المحلول

نعم، يقوم blued بتخزين جدول Bluetooth LE GATT مؤقتًا.إذا كانت ذاكرة التخزين المؤقت سيئة، فقم بما يلي لحذفها، وذلك بفضل "العملية الزرقاء تقتل وحدة المعالجة المركزية الخاصة بي":

  1. احذف /Library/Preferences/com.apple.Bluetooth.plist.سيؤدي هذا إلى إزالة المعرفة بجميع أجهزة Bluetooth وBluetooth LE المرتبطة.
  2. اقتل /usr/sbin/blued.سيتم إعادة تشغيله بواسطة Launchd.
  3. قم بتشغيل برنامج Bluetooth LE مرة أخرى.سوف يظهر PacketLogger الآن القراءة حسب نوع المجموعة طلبات إعادة اكتشاف الخدمات الأساسية.

يُسمح بالتخزين المؤقت عندما ينشئ الجهاز المركزي "رابطة" مع الجهاز الطرفي (وليس مقترنًا فقط)، وفقًا لـ Bluetooth 4.0 المجلد 3 الجزء G القسم 2.5.2 التخزين المؤقت للسمات.لست متأكدًا من كيفية التحقق من ارتباط المركز المركزي بالفعل بالجهاز الطرفي، لكنني أفترض أنه حدث ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top