लगभग सभी एंड्रॉयड स्रोत आधार के रूप में AOSP/CAF/मुख्यमंत्री स्रोत (एंड्रॉयड ओपन सोर्स प्रोजेक्ट, CodeAurora फोरम, CyanogenMod क्रमशः), में पाया सी कोड होगा में कहा जाता rild, (रेडियो इंटरफेस स्तर Daemon) । यह आमतौर पर स्रोत पेड़ के /hardware/ril
के भीतर पाया जाता है।
यह डिमन एंड्रॉइड बूट होने के पल से चलता है, और /dev/socket/rild
और /dev/socket/rild-debug
नामक एक सॉकेट बनाता है। क्वालकॉम, एचटीसी से आने वाली एक मालिकाना लाइब्रेरी होगी, जो बूट पर रन टाइम पर गतिशील रूप से लोड हो जाती है। यह स्वामित्व पुस्तकालय है जो बदले में, रेडियो फर्मवेयर से संचार करता है। और rild मालिकाना पुस्तकालय में कॉल-बैक के लिए हुक वहां और फिर स्थापित किया गया है।
पर परत rild, ऊपर उल्लिखित सॉकेट के माध्यम से, कैसे एंड्रॉयड परत (स्रोत पेड़ में पाया, frameworks/base/telephony/com/android/internal/telephony/RIL.java
) संचार है।
जावा पक्ष पर, यह पढ़ने/लिखने के लिए सॉकेट खोलता है, उद्देश्य की स्थापना और प्रसारण के लिए प्रतिनिधियों की स्थापना/इस सॉकेट के माध्यम से घटनाओं को प्राप्त करने के साथ।
उदाहरण के लिए, एक आने वाली कॉल, मालिकाना लाइब्रेरी, rild द्वारा स्थापित कॉलबैक हुक का आह्वान करती है। rild सॉकेट से एटी हेस मॉडेम आदेशों मानक सामान्य लिखते हैं, जावा पक्ष पर, इसे पढ़ता है और मॉडेम आदेशों की व्याख्या, और वहाँ से, PhoneManager प्रसारण CALL_STATE_RINGING
, जिसमें फोन आवेदन (स्रोत में पाया packages/apps/Phone
) ने एक रिसीवर पंजीकृत किया है और उपयोगकर्ता इंटरफ़ेस को किकस्टार्ट किया है, और इस तरह आप कॉल का जवाब देते हैं।
एक अन्य उदाहरण है, आउटगोइंग कॉल के समय, आप एक नंबर Android पर डायल, आशय बनाया है और जो बारी में PhoneManager (यह सब, यहाँ, के शीर्ष याद नहीं कर सकते यह की जड़ है हो जाता है मेरे सिर, लगता है अपने frameworks/base/core/java
स्रोत पेड़ में कहीं) आशय प्राप्त करता है में, यह या तो एटी हेस मॉडेम आदेशों के अनुक्रम में कनवर्ट करते हैं, सॉकेट से यह पता लिखते हैं, rild तो मालिकाना पुस्तकालय के लिए एक कॉलबैक का आह्वान, मालिकाना लाइब्रेरी बदले में रेडियो फर्मवेयर के प्रतिनिधि।
अंतिम उदाहरण, संदेश से, पाठ संदेश भेजने के आवेदन (में packages/apps/Mms
स्रोत पेड़ पाया जाता है), जो टेक्स्ट लिखते हैं, एक उद्देश्य के बारे में shoved हो जाता है, PhoneManager, आशय प्राप्त करता GSM- में पाठ धर्मान्तरित इनकोडिंग 7 बिट जीएसएम अक्षरों का प्रयोग कर (IIRC), सॉकेट से बाहर लिखा जाता है, rild बदले में मालिकाना पुस्तकालय के लिए एक कॉलबैक का आह्वान, रेडियो फर्मवेयर के लिए बारी प्रतिनिधियों में मालिकाना पुस्तकालय और पाठ अब डोमेन छोड़ दिया है हैंडसेट का और कहीं एयरवेव में है ...:) एंड्रॉइड के भीतर एक प्रसारण संदेश भेजने के साथ-साथ, READ_PHONE_STATE
अनुमति का उपयोग किया जाता है और AndroidManifest.xml में निर्दिष्ट किया गया है।
इसी तरह इसके विपरीत जब पाठ संदेश प्राप्त करने, यह रिवर्स में है, रेडियो फर्मवेयर कुछ बाइट्स प्राप्त करता है, मालिकाना पुस्तकालय बाहर सॉकेट से बाइट्स लिखते rild को कॉलबैक का आह्वान, और इस तरह। जावा पक्ष पर, यह इससे पढ़ता है, और बाइट्स के अनुक्रम को डीकोड करता है, जैसा कि हम जानते हैं, पाठ को परिवर्तित करता है, एक संदेश प्राप्त अधिसूचना के साथ प्रसारित करता है। संदेश आवेदन बारी में, ने कहा कि प्रसारण के लिए रिसीवर पंजीकृत किया गया है, और सूचना पट्टी करने के लिए एक आशय भेजता है की तरह कुछ frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
उद्देश्य पाए जाते हैं में "नया संदेश + xxxxxx से प्राप्त" कहने के लिए
टेलीफ़ोनी सिस्टम कैसे काम करता है, इसका असली अर्थ यह है कि वास्तविक जेनरिक एटी हेस मॉडेम कमांड का उपयोग करता है जिससे वास्तविक स्वामित्व तंत्र को सरल और छुपाया जा सके।
क्वालकॉम, एचटीसी की पसंद के लिए, यह सोचने में भूल जाओ कि वे कभी भी पुस्तकालय को स्रोत में खोलेंगे क्योंकि रेडियो टेलीफोनी परत एस-ओ-सी (चिप पर सिस्टम) सर्किट्री के भीतर एम्बेडेड है!
जो एक साइड नोट के रूप में भी है, क्यों रेडियो फर्मवेयर फ्लैश करने के लिए जोखिम भरा है, कुछ हैंडसेट इसे करने की क्षमता प्रदान करते हैं, गलत फर्मवेयर (जैसे असंगत या हैंडसेट के लिए उपयुक्त नहीं) को फ्लैश करें, हैंडसेट अच्छा चुंबन - और एक दरवाजा स्टॉपर या कागज वजन के रूप में इसका उपयोग करें! :)
यह ध्यान दिया जाना चाहिए कि इसमें शून्य जेएनआई तंत्र शामिल हैं।
यह मेरी समझ से है कि यह कैसे काम करता है, यह है कि मैं यह कह सकता हूं कि रेडियो फर्मवेयर को स्मृति पते में लोड किया गया है जहां लिनक्स कर्नेल ने पता स्थान आरक्षित किया है और इसे स्पर्श नहीं करता है, कुछ पीछे की तरह पुराने पीसी दिनों में जब डॉस बूट हो गया था, तो बीआईओएस द्वारा उपयोग किए गए आरक्षित पते थे, मुझे लगता है कि, आरक्षित के रूप में चिह्नित पते फर्मवेयर द्वारा कब्जे में हैं, जिसमें स्वामित्व वाली रेडियो लाइब्रेरी इससे बात करती है - और चूंकि लाइब्रेरी कर्नेल द्वारा स्वामित्व वाले पता स्थान में चल रही है, जो रूट विशेषाधिकारों के साथ रूट के स्वामित्व में है, यदि आप चोटी और पोक की पुरानी मूलभूत बोली का उपयोग करने के बारे में सोचते हैं, तो यह "बात" कर सकता है, मुझे लगता है कि आप नहीं करेंगे उस पते पर बाइट्स के एक निश्चित अनुक्रम को लिखकर वहां से बहुत दूर रहें, रेडियो फर्मवेयर उस पर कार्य करता है, लगभग एक इंटरप्ट वेक्टर टेबल की तरह ... यह अनुमान लगा रहा है कि यह कैसे बिल्कुल काम करता है। :)
इसलिए यदि आप ओस्मोकॉम ओपनबीएससी के लिए 'रिल्ड' को स्वैप करते हैं, तो आपके पास एक खुला फोन है? –
@ जेनस ट्रॉल्सन यह संदिग्ध होगा, हैंडसेट के भीतर रेडियो के फर्मवेयर चिपसेट के आधार पर और इसमें अधिक सुविधाएं हो सकती हैं जिनमें मालिकाना पुस्तकालय को संभालने की आवश्यकता होगी। – t0mm13b
जेएनआई के उपयोग के बिना बनाई गई रोल्ड परत में हुक कैसे हैं? – gonzobrains