2013-09-27 9 views
5

मैं ब्लूज़ स्रोतों में प्लगइन/gatt_example.c को विस्तारित कर रहा हूं ताकि सफलता के बिना बीएलई अधिसूचना फ़ंक्शन आज़माएं। मैं ब्लूज़ स्रोत में शामिल नमूना बैटरी सेवा का उपयोग कर रहा हूं। इसमें रीड और नोटिफ़ी गुणों के साथ 1 विशेषता है। मैं ब्लूटूथ डिमन के बाहर से विशेषता मूल्य को अद्यतन करने के लिए attrib_db_update() को कॉल करने के लिए dbus विधि जोड़ता हूं।ब्लूज़ के साथ ब्लूटूथ कम ऊर्जा जीएटीटी अधिसूचना कैसे भेजें?

अब, मैं कौन से क्लाइंट (एंड्रॉइड 4.3 और आईफोन (लाइटब्लू फ्री ऐप) के साथ नेक्सस 4) से कनेक्ट कर सकता हूं और अधिसूचना शुरू कर सकता हूं (डिस्क्रिप्टर सीसीसी फ्लैग को सूचित करता है)। (नोट: सीसीसी डिस्क्रिप्टर चार में डिफ़ॉल्ट ऑथ अनुमति है, इसलिए आईसीसी से सीसीसी संशोधित करना (सूचित करना शुरू करें) ब्लूज़ को त्रुटि वापस करने के लिए बना देगा: अनुमति अधिकृत नहीं है। चूंकि मैं बाद में प्राधिकरण से निपटने की योजना बना रहा हूं, इसलिए मैं डिफ़ॉल्ट अनुमति को अस्थायी रूप से बदलता हूं किसी के लिए नहीं, और आईफोन सीसीसी अधिसूचना झंडे सेट करने में सक्षम है)।

समस्या यह भी है कि क्लाइंट (एंड्रॉइड या आईओएस दोनों) ने अधिसूचना शुरू कर दी है, attrib_db_update() को कॉल करने के लिए क्लाइंट को कोई अधिसूचना भेजने के लिए ब्लूज़ नहीं बना रहा है (एचसीडम्प के साथ मॉनीटर करें, कोई पैकेट क्लाइंट को भेजें)।

प्रश्न: क्या क्लाइंट को ब्लूज़ भेजने के लिए attrib_db_update() के पास कोई कदम आवश्यक है? मैं नमूना स्रोत के किसी भी लिंक की सराहना करता हूं। पुनश्च। मैं परिधीय + गैट सर्वर कॉन्फ़िगरेशन के रूप में bluez का उपयोग करता हूं (जैसे प्लगइन/gatt_example.c में बैटरी सेवा) इसके विपरीत नहीं।

धन्यवाद।

=== अद्यतन (मैं नहीं जानता कि कैसे टिप्पणी काम स्वरूपण ... इसलिए मैं अद्यतन यहां जोड़ सकते हैं।)
बारे प्रोफाइल/चेतावनी नमूना:
हाँ मैं पहले से ही प्रोफ़ाइल/चेतावनी पहले सवाल पूछने पर जांच । एक और समस्या यह है कि मैं उन नमूने को नहीं चला सका (यही कारण है कि मैं पहली बार सवाल पूछता हूं)।
प्रोफाइल/अलर्ट/सर्वर.c: attio_connected_cb() server.c में filter_devices_notify() द्वारा पंजीकृत कॉलबैक फ़ंक्शन है। यह btd_device_add_attio_callback() (src/device.c से) का उपयोग करता है। आगे की जांच src/device.c, ऐसा लगता है कि यह डिवाइस-> attrib अगर यह निष्पादित करने के लिए मौजूद है (कॉल करने के पहले कतार में डालें तो फिर कॉलबैक डालें) कॉलबैक या डिवाइस कनेक्ट होने तक बस कतार में डालें?
इसे डिबग करना, यह डिवाइस की तरह दिखता है-> अट्रिब खाली है भले ही मैं डिवाइस से पहले ही कनेक्ट हो।

रुचि रखने वालों के/डिबग नमूना चेतावनी प्रोफ़ाइल को चलाने के लिए (कोई दस्तावेज़ नहीं है के बाद से :() के लिए।
टिप्पणी बाहर निम्नलिखित अगर (लाइन 564 के आसपास), हम उन की जांच में कोई दिलचस्पी नहीं कर ...

 

    /* 
     if (!g_str_equal(alert->srv, sender)) { 
      DBG("Sender %s is not registered in category %s", sender, 
            category); 
      return btd_error_invalid_args(msg); 
     } 
    */ 

भागो bluetoothd: पूर्व bluetoothd -n -d -p चेतावनी
अन्य कंसोल से रजिस्टर चेतावनी startNotify
जब तक अपने डिवाइस से कनेक्ट

:।

 

    dbus-send --system --dest=org.bluez --type=method_call "/org/bluez" "org.bluez.Alert1.RegisterAlert" string:"simple" objpath:"/org/bluez/AlertAgent1" 

नया अलर्ट बनाएं:

 

    bluetoothd[1928]: src/attrib-server.c:attrib_db_update() handle=0x001c 
    bluetoothd[1928]: src/attrib-server.c:attrib_db_update() handle=0x0021 
    bluetoothd[1928]: profiles/alert/server.c:register_alert() RegisterAlert("simple", "/org/bluez/AlertAgent1") 
    bluetoothd[1928]: src/attrib-server.c:attrib_db_update() handle=0x001e 
    bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() 0x1b6e718 registered ATT connection callback 
    bluetoothd[1928]: src/device.c:device_set_auto_connect() 10:68:3F:E1:4E:F2 auto connect: 1 
    bluetoothd[1928]: src/adapter.c:adapter_connect_list_add() /org/bluez/hci0/dev_10_68_3F_E1_4E_F2 added to BlueZ 5.14's connect_list 
    bluetoothd[1928]: src/adapter.c:trigger_passive_scanning() 
    bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() device->attrib = false 
    bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() cfunc = true 
    bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() no idle 
    bluetoothd[1928]: profiles/alert/server.c:new_alert() NewAlert("simple", 1, "simple") 
    bluetoothd[1928]: src/adapter.c:passive_scanning_complete() status 0x03 
    bluetoothd[1928]: Wrong size of start scanning return parameters 

मेमो:: device.c में कुछ डिबग आउटपुट जोड़ने

 

    dbus-send --system --dest=org.bluez --type=method_call "/org/bluez" "org.bluez.Alert1.NewAlert" string:"simple" uint16:"1" string:"test" 

मैं निम्नलिखित bluetoothd की लॉग मिला है। ऐसा लगता है कि डिवाइस-> अटारी खाली है।और ऑटोकनेक्ट (क्यों गैट सर्वर/परिधीय को केंद्रीय से कनेक्ट करना है?) अज्ञात कारण के लिए विफल रहा है।

उत्तर

3

संपादित करें: मैं कोड में टेस्ट-अलर्ट पायथन स्क्रिप्ट का उपयोग करके सतर्क नमूना चलाने में सफल रहा हूं।

मैंने डेवलपर से सीधे संपर्क किया और पूछा। यह पता चला कि ब्लिज़ को परिधीय के रूप में चलाने पर एक बग था, इसलिए उसने मेलिंग सूची पर कई पैच बनाए।

http://marc.info/?l=linux-bluetooth&m=139092431515560&w=2

पैच लागू करने के बाद, सर्वर चलाने के लिए और परीक्षण चेतावनी प्रयोग करके देखें:

  1. कनेक्ट और क्लाइंट साइड
  2. पर सूचना के लिए सही सीसीसी संभाल करने के लिए लिखने के सर्वर साइड पर परीक्षण-अलर्ट चलाएं (-w परीक्षण-चेतावनी जारी रखना है, या ईमेल अलर्ट पंजीकृत करने के लिए, - अपठित ईमेल के लिए, 30 अपठित ईमेल की संख्या है):

    test-alert -w -r email -u email 30

+0

जानकारी ईसा के लिए धन्यवाद। ऐसा लगता है कि पैच नवीनतम रिलीज (5.14) में अभी तक नहीं है। मैं पता लगाने के लिए, नवीनतम स्रोत को गिट से लाऊंगा। लेकिन एंडरसन की तरह कहा, यह पूरी तरह से काम नहीं कर सकता है। (मुझे समझ में आ रहा है कि क्यों एंड्रॉइड ब्लूटूथ स्टैक 4.3 और बाद में स्विच करता है ...)। मैं ब्लेंनो की तरह एक और समाधान की तलाश में हूं। पिछली बार जब मैं जांच करता हूं कि अभी तक अधिसूचना नहीं है, लेकिन जैसा कि मैंने अभी जांच की है कि इसे पहले ही लागू किया गया है। – user1012131

+0

बुरी खबर। दुर्भाग्य से यह काम नहीं कर रहा है (परीक्षण अलर्ट का उपयोग कर)। मैं कनेक्ट करने के लिए आईओएस 7 ब्लूलाइट का उपयोग करता हूं, लॉग मेरे अपडेट के समान ही है (डिवाइस-> अट्रिब शून्य है, गलत आकार ...) नेक्सस 4 के साथ भी परीक्षण करें (बीएलई के लिए 4.4.2 की आवश्यकता है, आप कई बग फिक्स कर सकते हैं 4.3 या 4.4 के साथ ब्लूज़ से कनेक्ट नहीं है) इस बार लॉग भिन्न है। लेकिन फिर भी मुझे नेक्सस को कोई सूचना नहीं मिली और न ही अधिसूचना पैकेट भेजने के लिए hcidump। ब्लेंनो कोशिश करेंगे। – user1012131

संबंधित मुद्दे