प्लैटफ़ॉर्म एब्स्ट्रैक्ट लेयर एपीआई लागू करना

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

GitHub पर स्रोत देखें

OpenThread, ओएस और प्लैटफ़ॉर्म एग्नोस्टिक है. इसमें छोटी प्लैटफ़ॉर्म ऐब्स्ट्रैक्ट लेयर होती है (PAL). इस PAL के मुताबिक:

पोर्टिंग आर्किटेक्चर
  • अलार्म के साथ फ़्री-रनिंग टाइमर के लिए अलार्म इंटरफ़ेस
  • सीएलआई और स्पिनल मैसेज के बारे में बताने के लिए बस इंटरफ़ेस (यूआई)
  • IEEE 802.15.4-2006 कम्यूनिकेशन के लिए रेडियो इंटरफ़ेस
  • जीसीसी के लिए शुरू करने वाले खास रूटीन
  • ट्रू नंबर जनरेशन के लिए एंट्रॉपी
  • गैर-वोल्टाइल कॉन्फ़िगरेशन स्टोरेज के लिए सेटिंग सेवा
  • OpenThread लॉग मैसेज डिलीवर करने के लिए इंटरफ़ेस लॉग करना
  • सिस्टम के हिसाब से शुरू करने वाले रूटीन

सभी एपीआई, बुनियादी हार्डवेयर ऐब्स्ट्रैक्ट (एचएएल) बिल्ड सपोर्ट पैकेज (बीएसपी) के आधार पर लागू किए जाने चाहिए.

एपीआई फ़ाइलों को इन डायरेक्ट्री में रखा जाना चाहिए:

टाइप निर्देशिका
प्लैटफ़ॉर्म के हिसाब से PAL लागू करना /openthread/examples/platforms/platform-name
हेडर फ़ाइलें — गैर-वाेलाटाइल स्टोरेज एपीआई /openthread/examples/platforms/utils
दूसरी सभी हेडर फ़ाइलें /openthread/include/openthread/platform
एचएएल बीएसपी /openthread/third_party/platform-name

अलार्म

एपीआई एलान:

/openthread/include/openthread/platform/alarm-milli.h

अलार्म एपीआई, ऊपर की लेयर के टाइमर को लागू करने में बुनियादी समय और अलार्म की सेवाएं देता है.

अलार्म की दो तरह की सेवाएं होती हैं, मिलीसेकंड और माइक्रोसेकंड. नए हार्डवेयर प्लैटफ़ॉर्म के लिए, मिलीसेकंड होना ज़रूरी है. माइक्रोसेकंड ज़रूरी नहीं है.

यूआरटी

एपीआई एलान:

/openthread/examples/platforms/utils/uart.h

UART एपीआई बुनियादी यूआरटी पोर्ट कम्यूनिकेशन को UART इंटरफ़ेस के ज़रिए लागू करता है.

वहीं, OpenThread CLI और NCP ऐड-ऑन, होस्ट साइड से इंटरैक्ट करने के लिए, AART इंटरफ़ेस पर निर्भर करते हैं. हालांकि, YouTube का एपीआई इस्तेमाल करना ज़रूरी नहीं है. हालांकि, अगर आप नए हार्डवेयर प्लैटफ़ॉर्म के उदाहरण में इन ऐड-ऑन का इस्तेमाल नहीं करना चाहते हैं, तो हमारा सुझाव है कि आप कुछ वजहों से सहायता जोड़ें:

  • सीएलआई, इस बात की पुष्टि करने के लिए उपयोगी है कि पोर्ट सही तरीके से काम करता है
  • हार्नेस ऑटोमेशन टूल की मदद से, OpenART को कंट्रोल किया जा सकता है, ताकि जांच और सर्टिफ़िकेशन के लिए इस्तेमाल किए जा सकें

अगर टारगेट हार्डवेयर प्लैटफ़ॉर्म, एआरटी के बजाय यूएसबी सीडीसी मॉड्यूल के साथ काम करता है, तो पक्का करें कि:

  • होस्ट साइड पर सही यूएसबी सीडीसी ड्राइवर इंस्टॉल करें
  • एक ही फ़ंक्शन प्रोटोटाइप का इस्तेमाल करके, UART एपीआई लागू करने की जगह को USB CDC ड्राइवर (BSP के साथ) से बदलें

रेडियो

एपीआई एलान:

/openthread/include/openthread/platform/radio.h

रेडियो एपीआई, ऊपर के आईईईई 802.15.4 एमएसी लेयर से जुड़े सभी ज़रूरी फ़ंक्शन के बारे में बताता है. रेडियो चिप को 2.4 गीगाहर्ट्ज़ IEEE 802.15.4-2006 के निर्देशों के मुताबिक होना चाहिए.

इसके बेहतर कम क्षमता वाली सुविधा की वजह से, OpenThread के लिए डिफ़ॉल्ट रूप से सभी प्लैटफ़ॉर्म को ऑटो फ़्रेम की मंज़ूरी बाकी है (डायरेक्ट ट्रांसमिशन) ज़रूरी है. साथ ही, सोर्स पते की टेबल टेबल को भी radio.h सोर्स फ़ाइल में लागू करना चाहिए.

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

अन्य सुविधाएं

एपीआई एलान:

/openthread/include/openthread/platform/misc.h

चिप/रीसेट एपीआई, चिप पर सॉफ़्टवेयर रीसेट करने की सुविधा देता है, और पिछली बार रीसेट करने की वजह बताता है.

एन्ट्रॉपी

एपीआई एलान:

/openthread/include/openthread/platform/entropy.h

Entropy API ऊपरी स्तर की एक वास्तविक संख्या वाला जनरेटर (TRNG) उपलब्ध कराता है. इसका इस्तेमाल पूरे OpenThread नेटवर्क के लिए सुरक्षा एसेट बनाए रखने के लिए किया जाता है. एपीआई को इस बात की गारंटी देनी चाहिए कि हर फ़ंक्शन कॉल के लिए एक नया रैंडम नंबर जनरेट किया गया है. जिन सुरक्षा एसेट पर टीआरएनजी का असर पड़ा है उनमें शामिल हैं:

  • AES CCM nonce
  • अनजाने में देर से मिलने वाला सिग्नल
  • डिवाइस' विस्तृत पता
  • ट्रिकल टाइमर में शुरुआती रैंडम पीरियड
  • सीओएपी टोकन/मैसेज के आईडी

ध्यान दें, कई प्लैटफ़ॉर्म ने पहले से ही रैंडम नंबर जनरेटर को इंटिग्रेट किया है. इसमें एपीआई को अपने बीएसपी पैकेज में दिखाया जाता है. अगर इवेंट में टारगेट हार्डवेयर प्लैटफ़ॉर्म, TRNG के साथ काम नहीं करता है, तो कोई तय लंबाई वाला रैंडम नंबर जनरेट करने के लिए, ADC मॉड्यूल सैंपलिंग का इस्तेमाल करें. अगर TRNG की ज़रूरी शर्तों (uint32_t) को पूरा करना ज़रूरी हो, तो एक से ज़्यादा दोहराने का नमूना लें.

जब मैक्रो MBEDTLS_ENTROPY_HARDWARE_ALT को 1 पर सेट किया जाता है, तब इस एपीआई को mbedTLS लाइब्रेरी में इस्तेमाल किए गए हार्डवेयर एंट्रॉपी को जनरेट करने का तरीका भी उपलब्ध कराना चाहिए.

वाॅन्टाइल स्टोरेज

एपीआई एलान:

/openthread/include/openthread/platform/flash.h

या

/openthread/include/openthread/platform/settings.h

ऊपर दिए गए दो एपीआई में से किसी एक को लागू करके, गैर-वाेलाटाइल स्टोरेज की ज़रूरत को पूरा किया जा सकता है. Flash API, फ़्लैश मेमोरी ड्राइवर को लागू करता है, जबकि सेटिंग एपीआई, ऊपर की परत में बुनियादी फ़्लैश ऑपरेशन को लागू करने के लिए फ़ंक्शन देता है.

ये एपीआई ऊपर वाली लेयर के सामने दिखते हैं:

  • ऐप्लिकेशन डेटा को स्टोर करने के लिए इस्तेमाल किए जाने वाले उपलब्ध गैर-वाेलाटाइल स्टोरेज आकार (उदाहरण के लिए, सक्रिय/मंज़ूरी बाकी डेटासेट), मौजूदा नेटवर्क पैरामीटर और थ्रेड डिवाइस{0/}
  • फ़्लैश की स्थिति की कार्रवाई पढ़ें, लिखें, मिटाएं और क्वेरी करें

अपने प्लैटफ़ॉर्म के उदाहरण's की कॉन्फ़िगरेशन फ़ाइल में OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE का इस्तेमाल करके बताएं कि प्लैटफ़ॉर्म को कौनसा एपीआई इस्तेमाल करना चाहिए. अगर 1 पर सेट है, तो Flash API लागू करना चाहिए. नहीं तो, सेटिंग एपीआई को लागू करना चाहिए.

यह फ़्लैग आपकी /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h फ़ाइल में सेट होना चाहिए.

लॉग इन हो रहा है

एपीआई एलान:

/openthread/include/openthread/platform/logging.h

लॉगिंग API, OpenThread's लॉगिंग और डीबग फ़ंक्शन को लागू करता है, जिसमें डीबग आउटपुट के कई लेवल उपलब्ध होते हैं. अगर आप अपने नए हार्डवेयर प्लैटफ़ॉर्म के उदाहरण में OpenThread's लॉगिंग का इस्तेमाल नहीं करना चाहते हैं, तो यह एपीआई वैकल्पिक है.

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

सिस्टम के हिसाब से

एपीआई एलान:

/openthread/examples/platforms/openthread-system.h

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

इस एपीआई को लागू करना, आपके इस्तेमाल के तरीके पर निर्भर करता है. अगर आप किसी उदाहरण प्लैटफ़ॉर्म के लिए जनरेट किए गए सीएलआई और एनसीपी ऐप्लिकेशन का इस्तेमाल करना चाहते हैं, तो आपको यह एपीआई लागू करना होगा. नहीं तो, किसी भी एपीआई को लागू करके, अपने प्लैटफ़ॉर्म/आरटीओ में प्लैटफ़ॉर्म के ड्राइवर को इंटिग्रेट किया जा सकता है.