सेवा देने वाली कंपनी के विज्ञापन का सिग्नल

विज्ञापन: खोजे जाने लायक

जब प्रोवाइडर का डिवाइस BR/EDR को खोजा जा सकता है (यानी कि दूसरे डिवाइस से जोड़ने वाले मोड में), तो वह को BLE के मुकाबले फ़ास्ट पेयर मॉडल आईडी डेटा के विज्ञापन दिखाए जाएंगे. साथ ही, बीएलई पते को घुमाया जाएगा.

विज्ञापन दिखाने के लिए इंटरवल: खोजे जाने की सुविधा

विज्ञापनों के बीच का अंतराल 100 मि॰से॰ (10 हर्ट्ज़) से ज़्यादा नहीं होना चाहिए. ऐप्लिकेशन तेज़ दर की मदद से, खोज करने वाले व्यक्ति को तेज़ी से, सेवा देने वाली कंपनी को ढूंढने में मदद मिलती है. वह ऐसा तब भी कर सकता है, जब कम पावर वाला मोड चालू करें.

विज्ञापन पेलोड: फ़ास्ट पेयर मॉडल आईडी डेटा

विज्ञापन में सेवा डेटा प्रकार, ibid, शामिल होगा. § 1.11. कॉन्टेंट बनाने यूयूआईडी, 0xFE2C की फ़ास्ट पेयर सेवा का यूयूआईडी होगा. सेवा डेटा में यह काम होगा: इनमें ये शामिल हैं:

ऑक्टेट डेटा टाइप ब्यौरा मान
0-2 uint24 24-बिट मॉडल आईडी अलग-अलग

विज्ञापन: जब खोजे जाने लायक न हो

जब खोजे जाने लायक न हो (जो कि दूसरे डिवाइस से जोड़ने वाले मोड में नहीं है), तो सेवा देने वाले का डिवाइस यह काम करेगा फ़ास्ट पेयर खाते के डेटा का विज्ञापन दें. इसके लिए, इन दिशा-निर्देशों का पालन करें.

खाते के डेटा का विज्ञापन करते समय, आस-पास के नौकरी ढूंढने वाले लोग यह पता लगा सकते हैं कि सेवा देने वाली कंपनी, कब उसके खाते से जुड़ी हो और उसे प्रोवाइडर को पहले पेयरिंग मोड में वापस चालू करें, जो कि उपयोगकर्ता के लिए एक आम वजह है शिकायत करें. नौकरी ढूंढने वाले, उपयोगकर्ताओं को उन्हें अनदेखा करने में मदद करेंगे यह प्रसारण ऐसे मामलों में हो सकता है जहाँ वे कंपनी के साथ जुड़ने के लिए इंतज़ार नहीं करते या वह ब्रॉडकास्ट प्रासंगिक नहीं है (उदाहरण के लिए, अगर वह पहले ही दूसरे डिवाइस से जुड़ा हुआ है). नौकरी ढूंढने वाले लोग, खराब ब्रॉडकास्ट को अपने-आप ही फ़िल्टर कर देंगे, जैसे कि जब खाते का डेटा गलत तरीके से कॉन्फ़िगर किया गया हो.

विज्ञापन दिखाने के लिए इंटरवल: खोजे जाने लायक न होने पर

विज्ञापनों के बीच का अंतराल ज़्यादा से ज़्यादा 250 मि॰से॰ (4 हर्ट्ज़) होना चाहिए.

विज्ञापन पेलोड: फ़ास्ट पेयर खाते का डेटा

विज्ञापन में सेवा डेटा प्रकार, Ibid, शामिल होगा. § 1.11. कॉन्टेंट बनाने यूयूआईडी, 0xFE2C की फ़ास्ट पेयर सेवा का यूयूआईडी होगा. सेवा डेटा में यह काम होगा: इनमें ये शामिल हैं:

ऑक्टेट डेटा टाइप ब्यौरा मान
0 uint8 वर्शन और फ़्लैग
0bVVVVFFFF
  • V = वर्शन
  • F = फ़्लैग
0x00
(आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया)
1 - अलग-अलग खाते के लिए कुंजी का डेटा अलग-अलग
या 0x00 होने पर, खाते की कुंजी सूची खाली हो सकती है

खाते के डिजिटल बटन के डेटा में यह जानकारी होती है:

ऑक्टेट डेटा टाइप ब्यौरा मान
0 uint8 फ़ील्ड की लंबाई और टाइप
0bLLLLTTTT
  • L = खाते के बटन वाले फ़िल्टर की लंबाई बाइट में
  • T = टाइप
0बीएलएलएल0000
  • लंबाई = 0bLLLL = अलग-अलग
  • type = 0b0000 (यूज़र इंटरफ़ेस (यूआई) संकेत दिखाएं) या 0b0010 (यूज़र इंटरफ़ेस को छिपाएं), खाता कुंजी का फ़िल्टर
1 - से॰ खाता कुंजी फ़िल्टर अलग-अलग
s + 1 uint8 फ़ील्ड की लंबाई और टाइप
0bLLLLTTTT
  • L = बाइट में लंबाई
  • T = टाइप
0b00100001
  • लंबाई = 0b0010 = 2
  • type = 0b0001, Salt
s + 2 - s + 3 uint16 Salt अलग-अलग

खाता कुंजी फ़िल्टर

विज्ञापन में दिखाए गए खाते की कुंजी के फ़िल्टर की मदद से, नौकरी ढूंढने वाला व्यक्ति यह तुरंत पता लगा सकता है कि सेवा देने वाली कंपनी के पास खाता कुंजी हो सकती है. इसमें फ़ॉल्स पॉज़िटिव नहीं होता औसत 0.5% से भी कम होता है. कॉन्टेंट बनाने नौकरी ढूंढने वाला व्यक्ति जब भी दिखता है, तो प्रोसेस अपने-आप कनेक्ट होकर शुरू करने की कोशिश कर सकता है ऐसा फ़िल्टर जिसे टाइप 0 के साथ ब्रॉडकास्ट किया जा रहा है. इसका मतलब है कि यूज़र इंटरफ़ेस (यूआई) इंडिकेटर, जो इसमें खाते की कोई एक कुंजी शामिल हो सकती है, ताकि गलत जानकारी होने की दर को कम किया जा सके सकारात्मक जवाब दिए. कुछ मामलों में, सेवा देने वाली कंपनी की पहचान की जा सकती है जब पेयर करने के लिए तैयार न हो, तब सीकर के ज़रिए. एक उदाहरण यह है कि जब ईयरबड को ऐसी स्थिति में वापस जाते हैं, तो हम बाद में जोड़ी जाने वाली सूचना दिखाना बंद करना चाहते हैं क्योंकि हेडसेट द्वारा उस पेयरिंग को अस्वीकार किया जा सकता है.

खाते का कुंजी फ़िल्टर, वैरिएबल के मुताबिक होता है ब्लूम फ़िल्टर, इस तरह बनाया जाता है: अनुसरण करता है:

  1. मान लें कि n, सेव की गई खाता कुंजियों की संख्या (n >= 1) है खाते की कुंजी की सूची.
  2. मान लीजिए, s को बाइट में फ़िल्टर का साइज़ (1.2*n + 3) छोटा किया गया है. इसके लिए उदाहरण के लिए, अगर एक कुंजी को प्रोसेस किया जाता है, तो s = 4 बाइट.
    uint8_t s = (((uint8_t)(( float )1.2 * n)) + 3);
  3. फ़िल्टर F को s बाइट के कलेक्शन के तौर पर शुरू करें. हर बाइट की वैल्यू 0 पर सेट होनी चाहिए.
    uint8_t F[s] = {0};
  4. मौजूदा खाते की कुंजी सूची में मौजूद हर खाता कुंजी K के लिए:
    ए. V को Concat(K, Salt) होने दें.

    // In the sample code, the size of salt is 2 bytes.
    #define SALT_SIZE 2
    
    uint8_t V[FASTPAIR_ACCOUNT_KEY_SIZE + SALT_SIZE];
    for (uint8_t keyIndex = 0; keyIndex < n; keyIndex++)
      {
         // concat (K, Salt)
          fastpair_get_account_key_by_index(keyIndex, V);
    
          uint8_t randomSalt = (uint8_t)rand();
          V[FASTPAIR_ACCOUNT_KEY_SIZE] = randomSalt;
          ... }
    

    b. SHA256 का इस्तेमाल करके, V को हैश करें, 32-बाइट की वैल्यू H = पाएं {H0, ..., H31}.

    uint8_t H[32] = {0};
    SHA256_hash_function(V, H);
    

    c. H को बिग-एंडियन में, 4-बाइट वाले आठ पूर्णांकों में विभाजित करें, X = {X0, ..., X7}, जहां X0 = 0xH0H1H2H3.

         uint32_t X[8];
         for (index = 0; index < 8; index++)
         {
            X[index] = (((uint32_t)(H[index * 4])) << 24) |
                        (((uint32_t)(H[index * 4 + 1])) << 16) |
                        (((uint32_t)(H[index * 4 + 2])) << 8) |
                        (((uint32_t)(H[index * 4 + 3])) << 0);
         }
    

    d. हर Xi के लिए:
    i. मान लें कि M, फ़िल्टर में बिट की संख्या Xi है, (s * 8).
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ii. इंडेक्स (M / 8) पर, F में बाइट को राउंड डाउन करें.
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है iii. बाइट के अंदर, इंडेक्स पर बिट (M % 8) को 1 पर सेट करें.
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है iv. दूसरे शब्दों में:

        // M = Xi % (s * 8)
        // F[M/8] = F[M/8] | (1 << (M % 8))
        for (index = 0; index < 8; index++)
        {
            uint32_t M    = X[index] % (s * 8);
            F[M / 8] = F[M / 8] | (1 << (M % 8));
        }
    

विज्ञापन डेटा में, खाते के डिजिटल बटन के फ़िल्टर फ़ील्ड के तौर पर F फ़िल्टर शामिल करें. ध्यान दें कि इसमें "एंडियननेस" शामिल नहीं होती इस मान में बदल सकते हैं, क्योंकि इससे कोई सीमा या कम नहीं होती अहम बाइट—बाइट के क्रम में बदलाव न करें.

नमक का क्षेत्र

सॉल्ट एक रैंडम वैल्यू है. इसे खाते की कुंजियों में जोड़ा जाता है ब्लूम फ़िल्टर. जब भी आरपीए अपडेट किया जाता है, तो इस सॉल्ट को फिर से जनरेट किया जाना चाहिए सेवा देने वाली कंपनी को, पते के रोटेशन में होने वाली गतिविधियों को ट्रैक करने से बचना होगा.

सॉल्ट का इस्तेमाल करके खाता कुंजी फ़िल्टर जनरेट करने के लिए:

  1. रैंडम दो-बाइट S जनरेट करें. ध्यान दें कि इसमें "एंडियननेस" शामिल नहीं होती इससे वैल्यू, क्योंकि कोई बाइट ज़्यादा या कम अहम नहीं है — बाइट में बदलाव न करें ऑर्डर.
  2. सॉल्ट के तौर पर, 2-बाइट S का इस्तेमाल करें.
  3. विज्ञापन में दिखाए गए फ़ास्ट पेयर खाते के डेटा में, जनरेट किया गया फ़िल्टर शामिल करें खाता कुंजी का फ़िल्टर फ़ील्ड और सॉल्ट फ़ील्ड में S.