रिमोट एक्सेस सेट करें

एंड्रॉइड 14 नई रिमोट एक्सेस सुविधा पेश करता है, जो भागीदारों को विशिष्ट कार्यों को निष्पादित करने के लिए वाहन में एंड्रॉइड को दूर से जगाने में सक्षम बनाता है। उदाहरण के लिए, सॉफ़्टवेयर अपडेट लागू करने के लिए गैराज मोड को रात भर निष्पादित करना। एंड-टू-एंड वर्कफ़्लो के लिए एकाधिक गैर-एंड्रॉइड घटकों की आवश्यकता होती है। एंड्रॉइड गैर-एंड्रॉइड घटकों के लिए कार्यान्वयन को परिभाषित या प्रदान नहीं करता है (यह जिम्मेदारी आपकी है)।

अधिक जानने के लिए, निम्नलिखित अनुभाग देखें:

वास्तुकला

निम्नलिखित सामग्री मानती है कि निम्नलिखित नमूना वास्तुकला का उपयोग किया गया है, जो काल्पनिक है और वास्तविक वास्तुकला को प्रतिबिंबित नहीं कर सकता है। ओईएम को अपने वाहन और सर्वर आर्किटेक्चर के लिए वास्तविक कार्यान्वयन को अनुकूलित करना चाहिए।

image

चित्र 1. नमूना वास्तुकला.

नमूना आर्किटेक्चर में ये हार्डवेयर घटक शामिल हैं:

हार्डवेयर घटक विवरण
ऐप प्रोसेसर प्रोसेसर जो एंड्रॉइड चलाता है। एंड्रॉइड इस प्रोसेसर पर वर्चुअल मेमोरी (वीएम) (वास्तविक हार्डवेयर पर नहीं) पर चल सकता है।
वाहन प्रोसेसर ऐप प्रोसेसर के लिए पावर को नियंत्रित करने के लिए प्रोसेसर जिम्मेदार है।
टेलीमैटिक्स नियंत्रण इकाई (टीसीयू) वाहन में प्रोसेसर हमेशा क्लाउड से दूरस्थ संदेश प्राप्त करने में सक्षम होता है। ऐसा माना जाता है कि टीसीयू हमेशा चालू या कम-पावर मोड में रहता है। टीसीयू को जागृत करने के लिए दूरस्थ संदेशों का उपयोग करें।
वेक-अप सर्वर एक रिमोट सर्वर जो क्लाउड में चलता है और वेक-अप कमांड जारी करने के लिए वाहन में टीसीयू के साथ संचार करने के लिए जिम्मेदार है।
दूरस्थ कार्य सर्वर रिमोट टास्क सर्वर क्लाउड में चलता है और लोगों के साथ इंटरैक्ट करता है और रिमोट कार्यों का प्रबंधन करता है।

नमूना आर्किटेक्चर में ये सॉफ़्टवेयर घटक शामिल हैं, जो सभी Android पर चलते हैं:

ऑन-एंड्रॉइड सॉफ़्टवेयर घटक विवरण
कार सेवा AAOS फ्रेमवर्क सेवा जो रिमोट एक्सेस एपीआई प्रदान करती है।
दूरस्थ कार्य क्लाइंट एक विक्रेता-लिखित Service वर्ग जो दूरस्थ कार्यों को निष्पादित करता है। एक एंड्रॉइड सिस्टम कई रिमोट टास्क क्लाइंट चला सकता है।
रिमोट एक्सेस एचएएल रिमोट एक्सेस के लिए इसे लागू किया जाना चाहिए.
एएओएस और टीसीयू जैसे गैर-एंड्रॉइड घटक के बीच संचार के लिए अमूर्त परत।

गैर-एंड्रॉइड सॉफ़्टवेयर घटकों का वर्णन नीचे दिया गया है:

गैर-एंड्रॉइड सॉफ़्टवेयर घटक विवरण
जागो ग्राहक टीसीयू पर चलने वाला सॉफ़्टवेयर जो वेक-अप सर्वर के साथ लंबे समय तक कनेक्शन बनाए रखता है। यह कार सेवा को दूरस्थ कार्य प्रदान करने के लिए रिमोट एक्सेस एचएएल के साथ भी संबंध बनाए रखता है।
वेक-अप सर्वर कार्यान्वयन सर्वर जो टीसीयू पर चलने वाले वेक-अप क्लाइंट के साथ संचार करता है। वेक-अप क्लाइंट को वेक-अप अनुरोध भेज सकते हैं।
दूरस्थ कार्य सर्वर कार्यान्वयन सर्वर जो दूरस्थ कार्यों का प्रबंधन करता है। उपयोगकर्ता दूरस्थ कार्यों को जारी करने और मॉनिटर करने के लिए इस सर्वर के साथ इंटरैक्ट करते हैं।

कार्यप्रवाह

यह अनुभाग नमूना वर्कफ़्लो में चरणों को सूचीबद्ध करता है।

नमूना कार्यप्रवाह

एक विस्तृत वर्कफ़्लो निम्नलिखित जैसा हो सकता है:

  1. उपयोगकर्ता गैराज में वाहन पार्क करता है।

  2. जब वाहन से बातचीत की संभावना नहीं होती तो पार्टनर रातों-रात वाहन को अपडेट करना चाहता है।

  3. पार्टनर क्लाउड सर्वर वाहन को एक अपडेट सिस्टम रिमोट टास्क भेजता है। विशेष रूप से, टेलीमैटिक कंट्रोल यूनिट (टीसीयू)।

  4. वाहन का टीसीयू एंड्रॉइड इलेक्ट्रॉनिक कंट्रोल यूनिट (ईसीयू) को सक्रिय करता है और एक ओईएम सेवा गैराज मोड को ट्रिगर करती है।

  5. एंड्रॉइड Google Play के माध्यम से अपडेट डाउनलोड और इंस्टॉल करने के लिए गैराज मोड चलाता है।

  6. अपडेट लागू करने के बाद, एंड्रॉइड कार्य को पूर्ण के रूप में चिह्नित करता है और या तो कनेक्शन समाप्त कर देता है या एक निर्दिष्ट टाइमआउट पर पहुंच जाता है।

विस्तृत कार्यप्रवाह

रिमोट एक्सेस के लिए दो महत्वपूर्ण चरण आवश्यक हैं। पहला है क्लाइंट को पंजीकृत करना, जो किसी विशिष्ट उपयोगकर्ता को किसी विशिष्ट वाहन पर चलने वाले विशिष्ट दूरस्थ कार्य क्लाइंट से लिंक करना है। दूसरा कार्य वितरित करना है, जो किसी विशिष्ट उपयोगकर्ता के लिए दूरस्थ कार्य को विशिष्ट वाहन पर चलने वाले विशिष्ट दूरस्थ कार्य क्लाइंट तक पहुंचाना है।

एक ग्राहक पंजीकृत करें

रिमोट एक्सेस सुविधा का उपयोग करने के लिए, उपयोगकर्ता को रिमोट टास्क क्लाइंट ऐप को कम से कम एक बार खोलना होगा और क्लाइंट पंजीकरण प्रक्रिया को पूरा करना होगा ( बोल्ड टेक्स्ट एएओएस द्वारा कार्यान्वित कार्यों को इंगित करता है):

  1. बूट-अप पर, कार सेवा को रिमोट एक्सेस एचएएल से वाहन की जानकारी मिलती है।

  2. बूट-अप पर, कार सर्विस इरादे-फ़िल्टर और अनुमति के आधार पर सभी दूरस्थ कार्य क्लाइंट लॉन्च करती है।

  3. रिमोट टास्क क्लाइंट शुरू होने पर, रिमोट टास्क क्लाइंट खुद को कार सेवा के साथ पंजीकृत करता है।

  4. कार सेवा दूरस्थ कार्य क्लाइंट को वाहन आईडी और क्लाइंट आईडी सहित पंजीकरण जानकारी के बारे में सूचित करती है। क्लाइंट आईडी अद्वितीय है और कार सेवा द्वारा इस ग्राहक को सौंपी गई है। यह एक ही वाहन पर सभी दूरस्थ कार्य ग्राहकों के बीच अद्वितीय होने की गारंटी है।

  5. उपयोगकर्ता रिमोट टास्क क्लाइंट के माध्यम से रिमोट टास्क सर्वर में लॉग इन करता है और इस वाहन के लिए रिमोट एक्सेस सुविधा को सक्षम करता है। इस चरण में आमतौर पर दूरस्थ कार्य सर्वर के माध्यम से प्रमाणीकरण शामिल होता है।

  6. रिमोट टास्क क्लाइंट उपयोगकर्ता की जानकारी को वाहन आईडी और क्लाइंट आईडी के साथ रिमोट टास्क सर्वर पर अपलोड करता है और उपयोगकर्ता को इस विशिष्ट क्लाइंट और इस विशिष्ट वाहन के साथ लिंक करने के लिए कहता है।

    वैकल्पिक रूप से, इस चरण में उपयोगकर्ता से अतिरिक्त दो-कारक प्रमाणीकरण शामिल हो सकता है।

    रिमोट टास्क सर्वर को यह प्रमाणित करना होगा कि अनुरोध में प्रदान की गई वाहन आईडी प्रेषक की वाहन आईडी से मेल खाती है, जो वाहन सत्यापन के माध्यम से किया जा सकता है।

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

image

चित्र 2. एक ग्राहक पंजीकृत करें.

किसी ग्राहक का पंजीकरण रद्द करें

उपयोगकर्ता वाहन को अपने खाते से या तो वाहन से या दूरस्थ कार्य सर्वर से अनलिंक कर सकता है:

  • वाहन पर, उपयोगकर्ता रिमोट टास्क क्लाइंट ऐप खोल सकते हैं और इस वाहन को उसके पहले से लिंक किए गए उपयोगकर्ता खातों से अनलिंक करने के लिए अनलिंक अनुरोध जारी कर सकते हैं।

  • रिमोट टास्क सर्वर पर, उपयोगकर्ता अपने खाते में लॉग इन कर सकते हैं और इस खाते से पहले से लिंक किए गए वाहन को अनलिंक कर सकते हैं।

यदि उपयोगकर्ता अपने खाते से वाहन को अनलिंक करता है, तो दूरस्थ कार्य सर्वर को विशिष्ट उपयोगकर्ता के लिए संग्रहीत मैपिंग को हटाना होगा।

कार्य वितरित करें

बादलों में:

  1. एक उपयोगकर्ता किसी विशिष्ट वाहन को दूरस्थ कार्य भेजने के लिए दूरस्थ कार्य सर्वर का उपयोग करता है।

  2. रिमोट टास्क सर्वर उपयोगकर्ता आईडी को वाहन आईडी और क्लाइंट आईडी पर मैप करता है। यह कार्य डेटा, वाहन आईडी और क्लाइंट आईडी को वेक-अप सर्वर पर भेजता है।

  3. वेक-अप सर्वर वाहन आईडी के लिए विशिष्ट टीसीयू ढूंढता है (यह मानते हुए कि टीसीयू पंजीकरण पहले ही हो चुका है) और कार्य डेटा और क्लाइंट आईडी टीसीयू को भेजता है।

वाहन पर ( बोल्ड टेक्स्ट एएओएस द्वारा किए गए कार्यों को इंगित करता है):

  1. TCU दूरस्थ सर्वर से दूरस्थ कार्य प्राप्त करता है।

  2. यदि AAOS पर चलने वाला ऐप प्रोसेसर (AP) बंद है, तो TCU AP को जगाने के लिए वाहन प्रोसेसर (VP) का उपयोग करता है।

  3. कार सेवा को TCU से कार्य प्राप्त होते हैं।

  4. कार सेवा संबंधित दूरस्थ कार्य क्लाइंट को कार्य वितरित करती है।

  5. दूरस्थ कार्य क्लाइंट कार्य प्राप्त करता है और निष्पादित करता है।

    ( वैकल्पिक ) दूरस्थ कार्य क्लाइंट अधिक कार्य विवरण के लिए कार्य सर्वर से संपर्क करता है और कार्य निष्पादित करता है।

  6. ( वैकल्पिक ) दूरस्थ कार्य क्लाइंट सेवा कार्य परिणाम को कार्य सर्वर पर रिपोर्ट करती है।

  7. कार्य पूरा होने पर रिमोट टास्क क्लाइंट कार सेवा को सूचित करता है।

  8. यदि आवश्यक हो, तो कार सेवा वाहन की पावर स्थिति को बहाल करती है।

image

चित्र 3. कार्य वितरित करें.

एक दूरस्थ कार्य क्लाइंट लिखें

CarRemoteAccessManager रिमोट एक्सेस सुविधाओं के लिए एपीआई प्रदान करता है। अधिक जानने के लिए, CarRemoteAccessManager देखें। रिमोट टास्क क्लाइंट एक एंड्रॉइड सेवा है जो रिमोट कार्यों को निष्पादित करती है और CarRemoteAccessManager उपयोग करती है। इसके लिए PERMISSION_USE_REMOTE_ACCESS और PERMISSION_CONTROL_REMOTE_ACCESS की आवश्यकता होती है और RemoteTaskClientService के लिए एक आशय फ़िल्टर घोषित करना होगा जैसे:

<service android:name=".remoteaccess.RemoteTaskClientService"
         android:directBootAware="true"
         android:exported="true">
    <intent-filter>
       <action android:name="android.car.remoteaccess.RemoteTaskClientService" />
    </intent-filter>
</service>

एक दूरस्थ कार्य क्लाइंट को निर्माण के दौरान स्वयं को कार सेवा में पंजीकृत करना चाहिए:

public final class RemoteTaskClientService extends Service {
    @Override
    public void onCreate() {
        // mCar = Car.createCar()...
        mRemoteAccessManager = (CarRemoteAccessManager)
            mcar.getCarManager(Car.CAR_REMOTE_ACCESS_SERVICE);
        if (mRemoteAccessManager == null) {
            // Remote access feature is not supported.
            return;
        }
        mRemoteAccessManager.setRemoteTaskClient(executor, mRemoteTaskClient);
    }
}

शून्य वापस लौटने के लिए इसे ऑनबाइंड फ़ंक्शन को ओवरराइड करना होगा।

@Override
public IBinder onBind(Intent intent) {
    return null;
}

कार सेवा अपने जीवन चक्र का प्रबंधन करती है। स्टार्टअप के दौरान और जब कोई दूरस्थ कार्य आता है तो कार सेवा इस सेवा से जुड़ जाती है। कार्य पूरा होने पर कार सेवा इस सेवा से बंधन मुक्त कर देती है। अधिक जानने के लिए, किसी सेवा के जीवनचक्र का प्रबंधन करना देखें।

रिमोट टास्क क्लाइंट सिस्टम उपयोगकर्ता के रूप में चलता है इसलिए इसकी किसी भी उपयोगकर्ता-विशिष्ट डेटा तक पहुंच नहीं होती है।

निम्नलिखित उदाहरण दिखाता है कि पंजीकृत कॉलबैक को कैसे संभालना है:

private final class RemoteTaskClient
    implements CarRemoteAccessManager.RemoteTaskClientCallback {
    @Override
    public void onRegistrationUpdated(
        RemoteTaskClientRegistrationInfo info) {
        // Register to remote task server using info.
    }
    @Override
    public void onRemoteTaskRequested(String taskId,
        byte[] data, int remainingTimeSec) {
        // Parses the data and execute the task.
        // Report task result to remote task server.
        mRemoteAccessManager.reportRemoteTaskDone(taskId);
    }
    @Override
    public void onShutdownStarting(CompleteableRemoteTaskFuture future) {
        // Stop the executing task.
        // Clear the pending task queue.
        future.complete();
    }
}

विक्रेता कार्यान्वयन

रिमोट एक्सेस सुविधा वैकल्पिक है और डिफ़ॉल्ट रूप से अक्षम है। सुविधा को सक्षम करने के लिए, निम्नलिखित जैसा आरआरओ जोड़ें:

// res/xml/overlays.xml
<?xml version="1.0" encoding="utf-8"?>
<overlay>
    <item target="array/config_allowed_optional_car_features" value="@array/config_allowed_optional_car_features" />
</overlay>

// res/values/config.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string-array translatable="false" name="config_allowed_optional_car_features">
        <item>car_remote_access_service</item>
    </string-array>
</resources>

// Android.bp
runtime_resource_overlay {
    name: "RemoteAccessOverlay",
    resource_dirs: ["res"],
    manifest: "AndroidManifest.xml",
    sdk_version: "current",
    product_specific: true
}

या यूजरडीबग/इंग्लैंड बिल्ड पर निम्नलिखित एडीबी कमांड का उपयोग करें:

adb shell cmd car_service enable-feature car_remote_access_service

ऑन-एंड्रॉइड आवश्यकताएँ

रिमोट एक्सेस एचएएल

रिमोट एक्सेस हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) एएओएस और अन्य ईसीयू (उदाहरण के लिए, एक टीसीयू) के बीच संचार के लिए एक विक्रेता-कार्यान्वित एब्स्ट्रैक्शन लेयर है। रिमोट एक्सेस सुविधा का समर्थन करने के लिए यह अनिवार्य है। यदि रिमोट एक्सेस सुविधा लागू नहीं की गई है तो इसे लागू करने की आवश्यकता नहीं है।

इंटरफ़ेस को IRemoteAccess.aidl पर परिभाषित किया गया है और इसमें ये विधियाँ शामिल हैं:

कक्षा विवरण
String getVehicleId() एक अद्वितीय वाहन आईडी प्राप्त होती है जिसे वेक-अप सर्वर द्वारा पहचाना जा सकता है।
String getWakeupServiceName() रिमोट वेक-अप सर्वर का नाम मिलता है।
String getProcessorId() एक अद्वितीय प्रोसेसर आईडी प्राप्त होती है जिसे क्लाइंट को जगाकर पहचाना जा सकता है।
void setRemoteTaskCallback(IRemoteTaskCallback callback)

किसी दूरस्थ कार्य का अनुरोध होने पर कॉलबैक सेट करता है।

void clearRemoteTaskCallback() पहले से सेट किए गए दूरस्थ कार्य कॉलबैक को साफ़ करता है।
void notifyApStateChange(in ApState state)

यह पता लगाता है कि ऐप प्रोसेसर दूरस्थ कार्य प्राप्त करने के लिए तैयार है या नहीं।

कॉलबैक इंटरफ़ेस को IRemoteTaskCallback.aid पर परिभाषित किया गया है।

कक्षा विवरण
oneway void onRemoteTaskRequested(String clientId, in byte[] data)

एक कॉलबैक जिसे किसी दूरस्थ कार्य का अनुरोध किए जाने पर कॉल किया जाता है।

बाहरी टीसीयू के साथ संदर्भ कार्यान्वयन देखें। कार्यान्वयन दूरस्थ कार्यों को प्राप्त करने के लिए एक लंबे समय तक चलने वाली रीड स्ट्रीम का उपयोग करता है और निम्नलिखित debug कमांड का समर्थन करता है:

dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default

वाहन एचएएल

रिमोट एक्सेस सुविधा का समर्थन करने के लिए, VHAL को इन गुणों का समर्थन करना होगा:

कक्षा विवरण
SHUTDOWN_REQUEST हेड यूनिट को बंद करने का अनुरोध करता है।
VEHICLE_IN_USE
  • यह पता लगाता है कि वाहन उपयोग में है या नहीं।
  • उपयोगकर्ता द्वारा वाहन को अनलॉक करने के बाद या जैसे ही उपयोगकर्ता वाहन के पास आता है। true होना चाहिए.
  • उपयोगकर्ता द्वारा वाहन बंद करने के बाद या जब उपयोगकर्ता वाहन को लॉक कर देता है तो एक विशिष्ट अवधि। false होना चाहिए.
  • true होने पर, AAOS दूरस्थ कार्य पूरा होने पर वाहन को बंद करने का प्रयास नहीं करता है।

अधिक जानने के लिए, समर्थित सिस्टम गुण देखें।

शांत अवस्था

रिमोट एक्सेस सुविधा के लिए साइलेंट मोड का समर्थन किया जाना चाहिए ताकि कोई उपयोगकर्ता मौजूद न होने पर वाहन रिमोट कार्यों को निष्पादित करने के लिए साइलेंट मोड में बूट हो सके। साइलेंट मोड के साथ, AAOS डिवाइस डिस्प्ले और ऑडियो बंद होने पर बूट होता है।

साइलेंट मोड को दो Linux कर्नेल sysfs फ़ाइलों के माध्यम से नियंत्रित किया जाता है।

कक्षा विवरण
/sys/kernel/silent_boot/pm_silentmode_kernel_state

वर्तमान साइलेंट मोड का प्रतिनिधित्व करता है.

/sys/kernel/silent_boot/pm_silentmode_hw_state

एक नया साइलेंट मोड सेट करने के लिए हार्डवेयर सिग्नल का प्रतिनिधित्व करता है।

वाहन प्रोसेसर साइलेंट मोड को चालू/बंद करने के लिए एंड्रॉइड SoC को एक HW सिग्नल भेजता है। सिग्नल (0 या 1) /sys/kernel/silent_boot/pm_silentmode_hw_state पर लिखा जाता है। फिर, AAOS फ्रेमवर्क /sys/kernel/silent_boot/pm_silentmode_kernel_state को तदनुसार अपडेट करता है जो वर्तमान साइलेंट मोड का प्रतिनिधित्व करता है। AAOS मॉड्यूल यह जानने के लिए /sys/kernel/silent_boot/pm_silentmode_kernel_state जांच करता है कि सिस्टम साइलेंट मोड में है या नहीं।

जब कोई दूरस्थ कार्य प्राप्त होता है और AAOS बूट होता है, तो वाहन प्रोसेसर साइलेंट मोड सेट करता है और AAOS शुरू करता है ताकि सिस्टम डिस्प्ले/ऑडियो बंद के साथ बूट हो।

वाहन पर गैर-एंड्रॉइड घटक

वाहन प्रोसेसर

वाहन प्रोसेसर वाहन में एक प्रोसेसर है जो एंड्रॉइड चलाने वाले ऐप प्रोसेसर के लिए पावर को नियंत्रित कर सकता है। उदाहरण आर्किटेक्चर में, टीसीयू वाहन प्रोसेसर को सिग्नल भेजकर ऐप प्रोसेसर को जगाता है।

वाहन पर गैर-एंड्रॉइड घटक

वाहन टीसीयू हमेशा दूरस्थ संदेश प्राप्त कर सकता है।

रिमोट वेक-अप सर्वर के साथ दीर्घकालिक कनेक्शन सुनिश्चित करने के लिए वेक-अप क्लाइंट टीसीयू पर चलता है।

एपी पर चलने वाला एएओएस रिमोट एक्सेस एचएएल के माध्यम से वें टीसीयू पर चलने वाले वेक-अप क्लाइंट के साथ संचार कर सकता है।

image

चित्र 4. टीसीयू (वेक-अप क्लाइंट)।

ऑन-क्लाउड घटक

वेक-अप सर्वर

वेक-अप सर्वर टीसीयू पर वेक-अप क्लाइंट के साथ संचार करता है:

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

वास्तविक कार्यान्वयन में, एक वेक-अप सर्वर को एक दूरस्थ कार्य सर्वर के साथ विलय किया जा सकता है।

दूरस्थ कार्य सर्वर

दूरस्थ कार्य सर्वर इन दूरस्थ कार्यों का प्रबंधन करता है।

  • उपयोगकर्ता नए दूरस्थ कार्यों को शुरू करने और दूरस्थ कार्यों की निगरानी करने के लिए सर्वर के साथ इंटरैक्ट करता है।

  • वाहनों में ऐप प्रोसेसर को जगाने के लिए रिमोट वेक-अप सर्वर का उपयोग करता है।

  • वाहन पर चल रहे रिमोट टास्क क्लाइंट के साथ इंटरैक्ट करता है।

  • ग्राहक पंजीकरण जानकारी संग्रहीत करता है। यह एक विशिष्ट उपयोगकर्ता को एक विशिष्ट वाहन पर एक विशिष्ट दूरस्थ कार्य क्लाइंट से जोड़ता है।

आमतौर पर कार्य डेटा जो दूरस्थ कार्य सर्वर के माध्यम से वेक-अप सर्वर, वाहन के टीसीयू और अंततः दूरस्थ कार्य क्लाइंट को भेजा जाता है, वह केवल एक कार्य आईडी है। दूरस्थ कार्य क्लाइंट दूरस्थ कार्य सर्वर से विस्तृत जानकारी प्राप्त करने के लिए कार्य आईडी का उपयोग करता है।

गोपनीयता और सुरक्षा आवश्यकताएँ

काम स्थिति मांग
टीसीयू (वेक-अप क्लाइंट) अवश्य
  • वेक-अप सर्वर को प्रमाणित करें.
  • कोड पर भरोसा करें.
वेक-अप सर्वर अवश्य
  • केवल अनुमति-सूचीबद्ध दूरस्थ कार्य सर्वरों को कनेक्ट करने की अनुमति दें।
  • वेक-अप क्लाइंट को प्रमाणित करें।
  • वेक-अप संदेश केवल लक्षित वाहन को भेजें।
दूरस्थ कार्य क्लाइंट अवश्य
  • पंजीकरण के दौरान उपयोगकर्ता को प्रमाणित करें।
  • दूरस्थ कार्य सर्वर को प्रमाणित करें।
  • Android सेवा के लिए सभी सुरक्षा आवश्यकताओं को पूरा करें। उदाहरण के लिए, सीमित अनुमतियाँ.
दूरस्थ कार्य सर्वर अवश्य
  • वेक-अप सर्वर को प्रमाणित करना होगा.
  • वाहन सत्यापन प्रदान करें. अर्थात्, प्रमाणित करें कि अनुरोध में प्रदान की गई वाहन आईडी प्रेषक की वाहन आईडी से मेल खाती है। यदि वाहन का सत्यापन संभव नहीं है, तो यह सत्यापित करने के लिए अन्य तरीकों का उपयोग करना चाहिए कि उपयोगकर्ता वर्तमान में वाहन का मालिक है।
  • उपयोगकर्ता की पहचान प्रमाणित करें.
  • उपयोगकर्ता की जानकारी को संभालने वाले सर्वर के लिए सभी सुरक्षा आवश्यकताओं को पूरा करें।

फ़ैक्टरी रीसेट और स्वामित्व हस्तांतरण

यदि कोई उपयोगकर्ता फ़ैक्टरी रीसेट करता है, तो कार सेवा में संग्रहीत क्लाइंट आईडी मिटा दी जाती है। हालाँकि, सर्वर (रिमोट टास्क सर्वर और रिमोट वेकअप सर्वर) को सूचित नहीं किया जाता है। सर्वर अब समाप्त हो चुकी क्लाइंट आईडी से वाहन तक मैपिंग बनाए रखते हैं। परिणामस्वरूप, यदि उपयोगकर्ता वाहन के लिए एक नया दूरस्थ कार्य शुरू करता है, तो वह समाप्त हो चुकी क्लाइंट आईडी का उपयोग करता है। वाहन जागृत है, लेकिन दूरस्थ कार्य निष्पादित नहीं किया जा सकता क्योंकि दूरस्थ कार्य क्लाइंट के पास एक अलग क्लाइंट आईडी है जो मेल नहीं खाती है।

निम्नलिखित फ़ैक्टरी रीसेट के लिए एक संभावित कार्यान्वयन का वर्णन करता है।

जब कोई उपयोगकर्ता फ़ैक्टरी रीसेट जारी करता है, तो विक्रेता उपयोगकर्ता को रिमोट टास्क सर्वर में लॉग इन करने और यदि उपयोगकर्ता ने पहले वाहन को लिंक किया है तो वाहन को अपने खाते से अनलिंक करने के लिए संकेत देता है। फ़ैक्टरी रीसेट के दौरान डिवाइस को नेटवर्क एक्सेस की गारंटी नहीं है। इसलिए, डिवाइस से फ़ैक्टरी रीसेट समय पर अनलिंक अनुरोध जारी करना संभव नहीं हो सकता है।

जब भी किसी वाहन का स्वामित्व हस्तांतरित किया जाता है, तो यह सुनिश्चित करने के लिए कुछ ऑपरेशन किए जाने चाहिए कि पिछला मालिक अब वाहन को दूरस्थ कार्य जारी नहीं कर सकता है। उदाहरण के लिए, नए मालिक से पूछा जा सकता है:

  • फ़ैक्टरी रीसेट करें. यह सुनिश्चित करता है कि क्लाइंट आईडी पुनर्जीवित हो गई है। इस चरण के बाद, पिछला मालिक अभी भी वाहन को जगा सकता है, लेकिन अब दूरस्थ कार्यों को निष्पादित नहीं कर सकता है।

  • रिमोट टास्क क्लाइंट ऐप खोलें और वाहन को पिछले मालिक के खाते से अनलिंक करने के लिए अनरजिस्टर ए क्लाइंट प्रक्रिया का पालन करें। नया मालिक वाहन को अपने खाते से लिंक करने और पहले से लिंक किए गए खाते को बदलने के लिए रजिस्टर ए क्लाइंट प्रक्रिया का पालन कर सकता है।

  • नया मालिक वाहन को अपने खाते से लिंक करने और पहले से लिंक किए गए खाते को बदलने के लिए रजिस्टर ए क्लाइंट प्रक्रिया का उपयोग कर सकता है।

दूरस्थ कार्य क्लाइंट का परीक्षण करें

हम दूरस्थ कार्य क्लाइंट का परीक्षण करने के लिए संदर्भ रिमोट एक्सेस एचएएल default निर्देशिका प्रदान करते हैं। आप एचएएल में एक नकली रिमोट कार्य को इंजेक्ट करने के लिए निम्नलिखित debug कमांड का उपयोग कर सकते हैं, जो कि यदि आप सही क्लाइंट आईडी प्रदान करते हैं तो आपके रिमोट टास्क क्लाइंट को भेज दिया जाता है। आप अपने दूरस्थ कार्य क्लाइंट कार्यान्वयन में पंजीकरण जानकारी लॉग करके क्लाइंट आईडी प्राप्त कर सकते हैं।

adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]