रनटाइम के दौरान सुविधाओं में बदलाव करना

प्रोवाइडर पर फ़र्मवेयर को अपग्रेड करके, नई सुविधाएं (जैसे, डाइनैमिक बफ़र साइज़) चालू की जा सकती हैं. इसलिए, हम रनटाइम के दौरान प्रोवाइडर की सुविधाओं को पाने का एक तरीका उपलब्ध कराना चाहते हैं. बार-बार क्वेरी करने से बचने के लिए, पहले प्रोवाइडर को कनेक्ट होने पर, मैसेज स्ट्रीम के ज़रिए, फ़र्मवेयर रिविज़न को सीकर को भेजना चाहिए. इसलिए, हम मौजूदा मैसेज ग्रुप, डिवाइस की जानकारी वाले इवेंट में नया मैसेज कोड जोड़ते हैं.

मैसेज ग्रुप का नाम मान
डिवाइस की जानकारी देने वाला इवेंट 0x03
मैसेज कोड का नाम मान
फ़र्मवेयर में बदलाव 0x09

फ़र्मवेयर रिविज़न कोड मिलने के बाद, सीकर को यह देखना होगा कि वह कोड, कैश मेमोरी में सेव किए गए कोड से मेल खाता है या नहीं. अगर फ़र्मवेयर रिविज़न बदला गया है, तो Seeker कैश मेमोरी में मौजूद फ़र्मवेयर रिविज़न को अपडेट करेगा. साथ ही, Message Stream की मदद से सुविधाओं के बारे में क्वेरी करेगा.

हम प्रोवाइडर को, सीधे तौर पर अनुरोध किए बिना, डिवाइस इस्तेमाल करने वाले को सुविधाएं देने की अनुमति भी देते हैं. ऐसा इसलिए है, क्योंकि हमें लगता है कि आने वाले समय में, ज़्यादा बेहतर डिवाइस (शायद Android-आधारित) एक ही फ़र्मवेयर रिविज़न के लिए, फ़्लैग के आधार पर डाइनैमिक कॉन्फ़िगरेशन करेंगे.

इसलिए, हम यहां एक नया मैसेज ग्रुप और मैसेज कोड जोड़ते हैं.

मैसेज ग्रुप का नाम मान
डिवाइस की क्षमता सिंक करने वाला इवेंट 0x06
मैसेज कोड का नाम मान
अनुरोध की सुविधा को अपडेट करने का अनुरोध (खोज करने वाले व्यक्ति से भेजा गया) 0x01
FHN ट्रैकिंग 0x03

0x0601 मिलने पर,

  • अगर सेवा देने वाली कंपनी ने एफ़एचएन ट्रैकिंग की सुविधा चालू की है, तो उसे इस तरह जवाब देना चाहिए:
ऑक्टेट डेटा टाइप ब्यौरा मान
0 uint8 डिवाइस की क्षमता सिंक करने वाला इवेंट 0x06
1 uint8 एफ़एचएन ट्रैकिंग 0x03
2 - 3 uint16 अतिरिक्त डेटा की लंबाई 0x0007
4 uint8 FHN प्रॉविज़निंग की स्थिति अगर डिवाइस के लिए कोई खाता सेट नहीं किया गया है, तो 0x00; अगर किसी खाते से सेट किया गया है, तो 0x01
5 - 10 uint8[] डिवाइस का मौजूदा BLE मैक पता अलग-अलग होता है