रिमोट ऐक्सेस सेट अप करना

Android 14 में रिमोट ऐक्सेस की नई सुविधा लॉन्च की गई है. इससे पार्टनर, वाहन में Android को रिमोट तरीके से चालू कर सकते हैं, ताकि वे कुछ खास तरह के टास्क कर सकें. उदाहरण के लिए, रात भर गैरेज मोड चालू करके, सॉफ़्टवेयर अपडेट लागू करना. एंड-टू-एंड वर्कफ़्लो के लिए, Android के अलावा कई अन्य कॉम्पोनेंट की ज़रूरत होती है. Android, Android के अलावा किसी दूसरे प्लैटफ़ॉर्म के कॉम्पोनेंट को लागू करने का तरीका तय नहीं करता या उन्हें लागू नहीं करता. यह आपकी ज़िम्मेदारी है.

ज़्यादा जानने के लिए, नीचे दिए गए सेक्शन देखें:

भवन निर्माण

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

इमेज

पहला डायग्राम. आर्किटेक्चर का सैंपल.

सैंपल आर्किटेक्चर में ये हार्डवेयर कॉम्पोनेंट शामिल हैं:

हार्डवेयर कॉम्पोनेंट ब्यौरा
ऐप्लिकेशन प्रोसेसर Android चलाने वाला प्रोसेसर. इस प्रोसेसर पर, Android वर्चुअल मेमोरी (VM) पर चल सकता है, न कि असली हार्डवेयर पर.
व्हीकल प्रोसेसर ऐप्लिकेशन प्रोसेसर के लिए पावर को कंट्रोल करने वाला प्रोसेसर.
टेलीमैटिक्स कंट्रोल यूनिट (टीसीयू) वाहन में मौजूद प्रोसेसर, क्लाउड से रिमोट मैसेज पाने की सुविधा हमेशा इस्तेमाल कर सकता है. माना जाता है कि टीसीएफ़ हमेशा चालू या कम पावर वाले मोड में होता है. टीसीयू को चालू करने के लिए, रिमोट मैसेज का इस्तेमाल करें.
जगाने वाला सर्वर क्लाउड में चलने वाला रिमोट सर्वर, जो वाहन में मौजूद TCU के साथ कम्यूनिकेट करके, उसे 'जागने' के निर्देश देता है.
रिमोट टास्क सर्वर रिमोट टास्क सर्वर, क्लाउड में चलता है. यह लोगों के साथ इंटरैक्ट करता है और रिमोट टास्क मैनेज करता है.

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

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

Android के अलावा किसी दूसरे ओएस पर काम करने वाले सॉफ़्टवेयर के कॉम्पोनेंट के बारे में यहां बताया गया है:

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

वर्कफ़्लो

इस सेक्शन में, सैंपल वर्कफ़्लो के चरणों की सूची दी गई है.

वर्कफ़्लो का सैंपल

ज़्यादा जानकारी वाला वर्कफ़्लो कुछ ऐसा हो सकता है:

  1. उपयोगकर्ता, गाड़ी को गैरेज में पार्क करता है.

  2. जब वाहन के इंटरैक्शन की संभावना कम होती है, तो पार्टनर रात भर वाहन की जानकारी अपडेट करता है.

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

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

  5. Android, Google Play से अपडेट डाउनलोड और इंस्टॉल करने के लिए, Garage mode चलाता है.

  6. अपडेट लागू करने के बाद, Android टास्क को 'पूरा हो गया' के तौर पर मार्क करता है. इसके बाद, कनेक्शन को खत्म कर दिया जाता है या तय समयसीमा खत्म हो जाती है.

वर्कफ़्लो की पूरी जानकारी

रिमोट ऐक्सेस के लिए, दो ज़रूरी चरण पूरे करने होंगे. पहला तरीक़ा है कि क्लाइंट को रजिस्टर किया जाए, यानी कोई ख़ास उपयोगकर्ता, रिमोट टास्क वाले ऐसे क्लाइंट से लिंक किया जा सकता है जो किसी चुनिंदा वाहन पर चल रहा हो. दूसरा टास्क एक टास्क को डिलीवर करना है. इसका मतलब है कि वह रिमोट टास्क उस उपयोगकर्ता को डिलीवर करना है जो उस उपयोगकर्ता के डिवाइस पर चल रहा है.

क्लाइंट रजिस्टर करना

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

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

  2. कार चालू होने पर, Car Service, इंटेंट-फ़िल्टर और अनुमति के आधार पर, सभी रिमोट टास्क क्लाइंट लॉन्च करती है.

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

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

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

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

    इसके अलावा, इस चरण में उपयोगकर्ता से दो तरीकों से पुष्टि करने की अतिरिक्त प्रक्रिया भी शामिल की जा सकती है.

    रिमोट टास्क सर्वर को इस बात की पुष्टि करनी होगी कि अनुरोध में दिया गया वाहन आईडी, ईमेल भेजने वाले व्यक्ति के वाहन आईडी से मैच करता है. यह पुष्टि, वाहन की पुष्टि करने की सुविधा की मदद से की जा सकती है.

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

इमेज

दूसरी इमेज. क्लाइंट रजिस्टर करें.

किसी क्लाइंट को अनरजिस्टर करना

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

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

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

अगर उपयोगकर्ता अपने खाते से वाहन को अनलिंक करता है, तो रिमोट टास्क सर्वर को उस उपयोगकर्ता के लिए सेव की गई मैपिंग को हटाना होगा.

टास्क डिलीवर करना

क्लाउड में:

  1. कोई उपयोगकर्ता, किसी खास वाहन पर रिमोट टास्क भेजने के लिए, रिमोट टास्क सर्वर का इस्तेमाल करता है.

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

  3. वेक-अप सर्वर, व्हीकल आईडी के लिए खास टीसीयू ढूंढता है. ऐसा यह मानते हुए किया जाता है कि टीसीयू का रजिस्ट्रेशन पहले से हो चुका है. इसके बाद, वह टास्क का डेटा और क्लाइंट आईडी, टीसीयू को भेजता है.

वाहन पर (बोल्ड टेक्स्ट से पता चलता है कि AAOS ने कौनसे टास्क पूरे किए हैं):

  1. टीसीयू को रिमोट सर्वर से रिमोट टास्क मिलते हैं.

  2. अगर AAOS चलाने वाला ऐप्लिकेशन प्रोसेसर (एपी) बंद है, तो टीसीयू, एपी को चालू करने के लिए वाहन के प्रोसेसर (वीपी) का इस्तेमाल करता है.

  3. कार सर्विस को TCU से टास्क मिलते हैं.

  4. कार सेवा, टास्क को उससे जुड़े रिमोट टास्क क्लाइंट को डिस्ट्रिब्यूट करती है.

  5. टास्क क्लाइंट को टास्क मिलता है और वह उसे पूरा करता है.

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

  6. (ज़रूरी नहीं) रिमोट टास्क क्लाइंट सेवा, टास्क के नतीजे को टास्क सर्वर को रिपोर्ट करती है.

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

  8. ज़रूरत पड़ने पर, कार सेवा, वाहन की पावर स्टेटस को पहले जैसा कर देती है.

इमेज

तीसरी इमेज. टास्क पूरा करना.

रिमोट टास्क क्लाइंट लिखें

CarRemoteAccessManager, रिमोट ऐक्सेस की सुविधाओं के लिए एपीआई उपलब्ध कराता है. ज़्यादा जानने के लिए, CarRemoteAccessManager सेक्शन देखें. रिमोट टास्क क्लाइंट, Android की ऐसी सेवा है जो रिमोट टास्क परफ़ॉर्म करती है और 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);
    }
}

शून्य वैल्यू दिखाने के लिए, इसे onBind फ़ंक्शन को बदलना होगा.

@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
}

इसके अलावा, userdebug/eng बिल्ड पर adb के इस निर्देश का इस्तेमाल करें:

adb shell cmd car_service enable-feature car_remote_access_service

Android डिवाइसों के लिए ज़रूरी शर्तें

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

रिमोट ऐक्सेस हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल), वेंडर की ओर से लागू की गई एक ऐब्स्ट्रक्शन लेयर है, जो AAOS और दूसरे ईसीयू (जैसे, टीसीयू) के बीच कम्यूनिकेशन के लिए होती है. रिमोट ऐक्सेस की सुविधा के साथ काम करने के लिए, यह ज़रूरी है. अगर रिमोट ऐक्सेस की सुविधा लागू नहीं की गई है, तो इसे लागू करने की ज़रूरत नहीं है.

इंटरफ़ेस के बारे में जानकारी, 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 kernel sysfs फ़ाइलों से कंट्रोल किया जाता है.

कक्षा ब्यौरा
/sys/kernel/silent_boot/pm_silentmode_kernel_state

मौजूदा साइलेंट मोड दिखाता है.

/sys/kernel/silent_boot/pm_silentmode_hw_state

यह नए साइलेंट मोड को सेट करने के लिए, हार्डवेयर सिग्नल दिखाता है.

वाहन का प्रोसेसर, Android SoC को एक हार्डवेयर सिग्नल भेजता है, ताकि साइलेंट मोड को चालू/बंद किया जा सके. सिग्नल (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 को शुरू करता है, ताकि सिस्टम डिसप्ले/ऑडियो बंद करके बूट हो.

वाहन में मौजूद ऐसे कॉम्पोनेंट जो Android पर काम नहीं करते

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

वाहन का प्रोसेसर, वाहन में मौजूद एक प्रोसेसर है. यह Android पर चलने वाले ऐप्लिकेशन प्रोसेसर के लिए, पावर को कंट्रोल कर सकता है. उदाहरण के तौर पर, वाहन के प्रोसेसर को सिग्नल भेजकर, टीसीयू ऐप्लिकेशन प्रोसेसर को चालू करता है.

वाहन में मौजूद ऐसे कॉम्पोनेंट जो Android पर काम नहीं करते

टीसीयू वाहन में किसी भी समय रिमोट मैसेज पाए जा सकते हैं.

रिमोट वेक-अप सर्वर के साथ लंबे समय तक कनेक्शन बनाए रखने के लिए, वेक-अप क्लाइंट टीसीयू पर चलता है.

एपी पर चलने वाला AAOS, रिमोट ऐक्सेस एचएएल की मदद से, टीसीयू पर चलने वाले वेक-अप क्लाइंट से संपर्क कर सकता है.

इमेज

चौथी इमेज. टीसीयू (वेक-अप क्लाइंट).

ऑन-क्लाउड कॉम्पोनेंट

वेक-अप सर्वर

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

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

असल में, वेक-अप सर्वर को रिमोट टास्क सर्वर के साथ मर्ज किया जा सकता है.

रिमोट टास्क सर्वर

रिमोट टास्क सर्वर, इन रिमोट टास्क को मैनेज करता है.

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

  • वाहनों में ऐप्लिकेशन प्रोसेसर को चालू करने के लिए, रिमोट वेक-अप सर्वर का इस्तेमाल करता है.

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

  • क्लाइंट के रजिस्ट्रेशन की जानकारी सेव करता है. यह किसी उपयोगकर्ता को किसी वाहन पर मौजूद किसी रिमोट टास्क क्लाइंट से जोड़ता है.

आम तौर पर, टास्क का डेटा, रिमोट टास्क सर्वर से वेक-अप सर्वर, वाहन के टीसीयू, और आखिर में रिमोट टास्क क्लाइंट को भेजा जाता है. यह टास्क आईडी होता है. रिमोट टास्क क्लाइंट, टास्क आईडी का इस्तेमाल करके रिमोट टास्क सर्वर से ज़्यादा जानकारी फ़ेच करता है.

निजता और सुरक्षा से जुड़ी ज़रूरी शर्तें

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

फ़ैक्ट्री रीसेट और मालिकाना हक का ट्रांसफ़र

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

यहां फ़ैक्ट्री रीसेट करने के एक तरीके के बारे में बताया गया है.

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

जब भी किसी वाहन का मालिकाना हक ट्रांसफ़र किया जाता है, तो कुछ कार्रवाइयां की जानी चाहिए. इससे यह पक्का किया जा सकता है कि वाहन का पिछला मालिक, अब उसे रिमोट से कंट्रोल न कर सके. उदाहरण के लिए, नए मालिक से कहा जा सकता है कि:

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

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

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

रिमोट टास्क क्लाइंट की जांच करें

हम रिमोट टास्क क्लाइंट को टेस्ट करने के लिए, रिमोट ऐक्सेस HAL default डायरेक्ट्री का रेफ़रंस देते हैं. नीचे दिए गए debug कमांड का इस्तेमाल करके, HAL में नकली रिमोट टास्क इंजेक्ट किया जा सकता है. सही क्लाइंट आईडी देने पर, इसे आपके रिमोट टास्क क्लाइंट को भेज दिया जाता है. अपने रिमोट टास्क क्लाइंट के लागू होने की जानकारी को लॉग करके, क्लाइंट आईडी पाया जा सकता है.

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