দূরবর্তী অ্যাক্সেস সেট আপ করুন

Android 14 নতুন রিমোট অ্যাক্সেস বৈশিষ্ট্য প্রবর্তন করেছে, যা অংশীদারদের নির্দিষ্ট কাজগুলি চালানোর জন্য একটি গাড়িতে দূরবর্তীভাবে Android জাগিয়ে তুলতে সক্ষম করে। উদাহরণস্বরূপ, সফ্টওয়্যার আপডেটগুলি প্রয়োগ করতে রাতারাতি গ্যারেজ মোড চালানো। এন্ড-টু-এন্ড ওয়ার্কফ্লো-এর জন্য একাধিক নন-অ্যান্ড্রয়েড উপাদান প্রয়োজন। Android নন-অ্যান্ড্রয়েড উপাদানগুলির জন্য সংজ্ঞায়িত বা বাস্তবায়ন প্রদান করে না (এই দায়িত্ব আপনারই)।

আরও জানতে, নিম্নলিখিত বিভাগগুলি দেখুন:

স্থাপত্য

নিম্নলিখিত বিষয়বস্তু অনুমান করে যে নিম্নলিখিত নমুনা স্থাপত্য ব্যবহার করা হয়েছে, যা অনুমানমূলক এবং প্রকৃত স্থাপত্য প্রতিফলিত নাও হতে পারে। OEMs তাদের গাড়ি এবং সার্ভার আর্কিটেকচারে একটি বাস্তব বাস্তবায়ন মানিয়ে নিতে হবে।

image

চিত্র 1. নমুনা স্থাপত্য।

নমুনা আর্কিটেকচার এই হার্ডওয়্যার উপাদানগুলি নিয়ে গঠিত:

হার্ডওয়্যার উপাদান বর্ণনা
অ্যাপ প্রসেসর প্রসেসর যা অ্যান্ড্রয়েড চালায়। অ্যান্ড্রয়েড এই প্রসেসরে ভার্চুয়াল মেমরি (ভিএম) (প্রকৃত হার্ডওয়্যারে নয়) চলতে পারে।
গাড়ির প্রসেসর অ্যাপ প্রসেসরের শক্তি নিয়ন্ত্রণের জন্য দায়ী প্রসেসর।
টেলিমেটিক্স কন্ট্রোল ইউনিট (TCU) গাড়ির প্রসেসর সবসময় ক্লাউড থেকে দূরবর্তী বার্তা গ্রহণ করতে সক্ষম। TCU সর্বদা চালু বা কম-পাওয়ার মোডে থাকে বলে ধারণা করা হয়। TCU জাগ্রত করতে দূরবর্তী বার্তা ব্যবহার করুন.
ওয়েক আপ সার্ভার একটি দূরবর্তী সার্ভার যা ক্লাউডে চলে এবং জেগে ওঠার আদেশ জারি করার জন্য গাড়িতে থাকা TCU এর সাথে যোগাযোগের জন্য দায়ী৷
দূরবর্তী টাস্ক সার্ভার দূরবর্তী টাস্ক সার্ভার ক্লাউডে চলে এবং মানুষের সাথে যোগাযোগ করে এবং দূরবর্তী কাজগুলি পরিচালনা করে।

নমুনা আর্কিটেকচারে এই সফ্টওয়্যার উপাদানগুলি রয়েছে, যার সবকটিই অ্যান্ড্রয়েডে চলে:

অন-অ্যান্ড্রয়েড সফ্টওয়্যার উপাদান বর্ণনা
গাড়ি পরিষেবা AAOS ফ্রেমওয়ার্ক পরিষেবা যা দূরবর্তী অ্যাক্সেস API প্রদান করে।
দূরবর্তী টাস্ক ক্লায়েন্ট একটি বিক্রেতা-লিখিত Service ক্লাস যা দূরবর্তী কাজগুলি সম্পাদন করে। একটি অ্যান্ড্রয়েড সিস্টেম একাধিক দূরবর্তী টাস্ক ক্লায়েন্ট চালাতে পারে।
দূরবর্তী অ্যাক্সেস HAL দূরবর্তী অ্যাক্সেসের জন্য প্রয়োগ করা আবশ্যক।
AAOS এবং একটি নন-অ্যান্ড্রয়েড উপাদান যেমন TCU-এর মধ্যে যোগাযোগের জন্য বিমূর্ততা স্তর।

নন-অ্যান্ড্রয়েড সফ্টওয়্যার উপাদানগুলি নীচে বর্ণনা করা হয়েছে:

নন-অ্যান্ড্রয়েড সফ্টওয়্যার উপাদান বর্ণনা
জেগে ওঠা ক্লায়েন্ট টিসিইউতে চলমান সফ্টওয়্যার যা ওয়েক-আপ সার্ভারের সাথে দীর্ঘস্থায়ী সংযোগ বজায় রাখে। এটি গাড়ি পরিষেবাতে দূরবর্তী কাজগুলি সরবরাহ করতে রিমোট অ্যাক্সেস HAL-এর সাথে একটি সংযোগ বজায় রাখে।
ওয়েক-আপ সার্ভার বাস্তবায়ন সার্ভার যা টিসিইউতে চলমান ওয়েক-আপ ক্লায়েন্টের সাথে যোগাযোগ করে। জেগে ওঠা ক্লায়েন্টকে জেগে ওঠার অনুরোধ পাঠাতে পারে।
দূরবর্তী টাস্ক সার্ভার বাস্তবায়ন সার্ভার যা দূরবর্তী কাজ পরিচালনা করে। ব্যবহারকারীরা দূরবর্তী কাজগুলি ইস্যু এবং নিরীক্ষণ করতে এই সার্ভারের সাথে যোগাযোগ করে।

কর্মপ্রবাহ

এই বিভাগে একটি নমুনা কর্মপ্রবাহের ধাপগুলি তালিকাভুক্ত করা হয়েছে।

নমুনা কর্মপ্রবাহ

একটি বিস্তারিত কর্মপ্রবাহ নিম্নলিখিত অনুরূপ হতে পারে:

  1. ব্যবহারকারী গ্যারেজে গাড়ি পার্ক করে।

  2. গাড়ির মিথস্ক্রিয়া অসম্ভাব্য হলে অংশীদার রাতারাতি গাড়ি আপডেট করতে চায়।

  3. পার্টনার ক্লাউড সার্ভার গাড়িতে একটি আপডেট সিস্টেম রিমোট টাস্ক পাঠায়। বিশেষত, টেলিমেটিক কন্ট্রোল ইউনিট (টিসিইউ)।

  4. গাড়ির টিসিইউ অ্যান্ড্রয়েড ইলেকট্রনিক কন্ট্রোল ইউনিট (ইসিইউ) জাগিয়ে তোলে এবং একটি OEM পরিষেবা গ্যারেজ মোড ট্রিগার করে।

  5. Google Play এর মাধ্যমে আপডেট ডাউনলোড এবং ইনস্টল করতে Android গ্যারেজ মোড চালায়।

  6. আপডেটটি প্রয়োগ করার পরে, অ্যান্ড্রয়েড কাজটিকে সম্পূর্ণ হিসাবে চিহ্নিত করে এবং হয় সংযোগটি শেষ করে বা একটি নির্দিষ্ট সময়সীমায় পৌঁছে যায়।

বিস্তারিত কর্মপ্রবাহ

দূরবর্তী অ্যাক্সেসের জন্য দুটি গুরুত্বপূর্ণ পদক্ষেপ প্রয়োজন। প্রথমটি হ'ল ক্লায়েন্টকে নিবন্ধন করা, যা একটি নির্দিষ্ট ব্যবহারকারীকে একটি নির্দিষ্ট গাড়িতে চলমান একটি নির্দিষ্ট দূরবর্তী টাস্ক ক্লায়েন্টের সাথে লিঙ্ক করা। অন্যটি একটি টাস্ক ডেলিভারি করা, যা নির্দিষ্ট গাড়িতে চলমান নির্দিষ্ট দূরবর্তী টাস্ক ক্লায়েন্টের কাছে একটি নির্দিষ্ট ব্যবহারকারীর জন্য দূরবর্তী টাস্ক সরবরাহ করা।

একটি ক্লায়েন্ট নিবন্ধন

রিমোট অ্যাক্সেস ফিচার ব্যবহার করতে, একজন ব্যবহারকারীকে অন্তত একবার রিমোট টাস্ক ক্লায়েন্ট অ্যাপ খুলতে হবে এবং ক্লায়েন্ট রেজিস্ট্রেশন প্রক্রিয়া শেষ করতে হবে ( বোল্ড টেক্সট AAOS দ্বারা বাস্তবায়িত কাজগুলি নির্দেশ করে):

  1. বুট-আপ করার সময়, গাড়ি পরিষেবা দূরবর্তী অ্যাক্সেস HAL থেকে গাড়ির তথ্য পায়।

  2. বুট-আপে, কার সার্ভিস ইনটেন্ট-ফিল্টার এবং অনুমতির উপর ভিত্তি করে সমস্ত দূরবর্তী টাস্ক ক্লায়েন্ট চালু করে।

  3. রিমোট টাস্ক ক্লায়েন্ট শুরু হলে, রিমোট টাস্ক ক্লায়েন্ট নিজেকে গাড়ি পরিষেবার সাথে নিবন্ধন করে।

  4. গাড়ি পরিষেবা গাড়ির আইডি এবং ক্লায়েন্ট আইডি সহ নিবন্ধনের তথ্য সম্পর্কে দূরবর্তী টাস্ক ক্লায়েন্টকে অবহিত করে। ক্লায়েন্ট আইডি অনন্য এবং এই ক্লায়েন্টকে গাড়ি পরিষেবা দ্বারা বরাদ্দ করা হয়েছে। একই গাড়িতে থাকা সমস্ত দূরবর্তী টাস্ক ক্লায়েন্টদের মধ্যে এটি অনন্য হওয়ার নিশ্চয়তা।

  5. ব্যবহারকারী রিমোট টাস্ক ক্লায়েন্টের মাধ্যমে রিমোট টাস্ক সার্ভারে লগ ইন করে এবং এই গাড়ির জন্য রিমোট অ্যাক্সেস বৈশিষ্ট্য সক্ষম করে। এই ধাপে সাধারণত রিমোট টাস্ক সার্ভারের মাধ্যমে প্রমাণীকরণ জড়িত থাকে।

  6. রিমোট টাস্ক ক্লায়েন্ট রিমোট টাস্ক সার্ভারে গাড়ির আইডি এবং ক্লায়েন্ট আইডি সহ ব্যবহারকারীর তথ্য আপলোড করে এবং ব্যবহারকারীকে এই নির্দিষ্ট ক্লায়েন্ট এবং এই নির্দিষ্ট গাড়ির সাথে লিঙ্ক করতে বলে।

    ঐচ্ছিকভাবে, এই ধাপে ব্যবহারকারীর কাছ থেকে অতিরিক্ত দ্বি-ফ্যাক্টর প্রমাণীকরণ জড়িত হতে পারে।

    রিমোট টাস্ক সার্ভারকে অবশ্যই প্রমাণীকরণ করতে হবে যে অনুরোধে প্রদত্ত গাড়ির আইডি প্রেরকের গাড়ির আইডির সাথে মেলে, যা যানবাহনের সত্যায়নের মাধ্যমে করা যেতে পারে।

ফ্যাক্টরি রিসেট না হলে, ক্লায়েন্ট রেজিস্ট্রেশন প্রক্রিয়া প্রতি গাড়ি প্রতি ব্যবহারকারীর একবার প্রয়োজন। ক্লায়েন্ট আইডি স্থানীয়ভাবে গাড়ি পরিষেবাতে সংরক্ষণ করা হয় এবং একই ক্লায়েন্টের জন্য একই থাকে।

image

চিত্র 2. একটি ক্লায়েন্ট নিবন্ধন.

একটি ক্লায়েন্ট নিবন্ধনমুক্ত

একজন ব্যবহারকারী যানবাহন থেকে বা দূরবর্তী টাস্ক সার্ভার থেকে তাদের অ্যাকাউন্ট থেকে গাড়িটিকে আনলিঙ্ক করতে পারেন:

  • গাড়িতে , ব্যবহারকারীরা দূরবর্তী টাস্ক ক্লায়েন্ট অ্যাপটি খুলতে পারে এবং এই গাড়িটিকে এর পূর্বে লিঙ্ক করা ব্যবহারকারীর অ্যাকাউন্টগুলি থেকে আনলিঙ্ক করার অনুরোধ জারি করতে পারে।

  • রিমোট টাস্ক সার্ভারে , ব্যবহারকারীরা তাদের অ্যাকাউন্টে লগ ইন করতে পারেন এবং এই অ্যাকাউন্ট থেকে পূর্বে লিঙ্ক করা গাড়িটি আনলিঙ্ক করতে পারেন।

ব্যবহারকারী যদি তাদের অ্যাকাউন্ট থেকে গাড়িটিকে আনলিঙ্ক করে, তাহলে রিমোট টাস্ক সার্ভারকে অবশ্যই নির্দিষ্ট ব্যবহারকারীর জন্য সঞ্চিত ম্যাপিং সরিয়ে ফেলতে হবে।

কাজগুলি সরবরাহ করুন

মেঘের মধ্যে:

  1. একটি ব্যবহারকারী একটি নির্দিষ্ট গাড়িতে একটি দূরবর্তী টাস্ক পাঠাতে দূরবর্তী টাস্ক সার্ভার ব্যবহার করে।

  2. রিমোট টাস্ক সার্ভার ইউজার আইডিকে গাড়ির আইডি এবং ক্লায়েন্ট আইডিতে ম্যাপ করে। এটি ওয়েক-আপ সার্ভারে টাস্ক ডেটা, গাড়ির আইডি এবং ক্লায়েন্ট আইডি পাঠায়।

  3. ওয়েক-আপ সার্ভার গাড়ির আইডির জন্য নির্দিষ্ট TCU খুঁজে বের করে (ধরে নিচ্ছে যে TCU নিবন্ধন ইতিমধ্যেই সম্পন্ন হয়েছে) এবং TCU-তে টাস্ক ডেটা এবং ক্লায়েন্ট আইডি পাঠায়।

গাড়িতে ( বোল্ড টেক্সট AAOS দ্বারা সম্পাদিত কাজগুলি নির্দেশ করে):

  1. TCU দূরবর্তী সার্ভার থেকে দূরবর্তী কাজ গ্রহণ করে।

  2. AAOS চলমান অ্যাপ প্রসেসর (AP) বন্ধ থাকলে, TCU AP-কে জাগানোর জন্য গাড়ির প্রসেসর (VP) ব্যবহার করে।

  3. কার সার্ভিস টিসিইউ থেকে কাজ পায়।

  4. কার সার্ভিস সংশ্লিষ্ট রিমোট টাস্ক ক্লায়েন্টের কাছে টাস্ক বিতরণ করে।

  5. রিমোট টাস্ক ক্লায়েন্ট টাস্কটি গ্রহণ করে এবং কার্যকর করে।

    ( ঐচ্ছিক ) দূরবর্তী টাস্ক ক্লায়েন্ট আরও টাস্ক বিশদ বিবরণের জন্য টাস্ক সার্ভারের সাথে যোগাযোগ করে এবং টাস্কটি সম্পাদন করে।

  6. ( ঐচ্ছিক ) দূরবর্তী টাস্ক ক্লায়েন্ট পরিষেবা টাস্ক সার্ভারে টাস্ক ফলাফল রিপোর্ট করে।

  7. রিমোট টাস্ক ক্লায়েন্ট টাস্ক সম্পূর্ণ হলে গাড়ি পরিষেবাকে অবহিত করে।

  8. প্রয়োজন হলে, গাড়ি পরিষেবা গাড়ির শক্তির অবস্থা পুনরুদ্ধার করে।

image

চিত্র 3. কার্যগুলি সরবরাহ করুন।

একটি দূরবর্তী টাস্ক ক্লায়েন্ট লিখুন

CarRemoteAccessManager দূরবর্তী অ্যাক্সেস বৈশিষ্ট্যগুলির জন্য API প্রদান করে। আরও জানতে, 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);
    }
}

নাল রিটার্ন করতে এটি অবশ্যই অনবিন্ড ফাংশনকে ওভাররাইড করবে।

@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();
    }
}

বিক্রেতা বাস্তবায়ন

দূরবর্তী অ্যাক্সেস বৈশিষ্ট্য ঐচ্ছিক এবং ডিফল্টরূপে অক্ষম। বৈশিষ্ট্যটি সক্ষম করতে, নিম্নলিখিতগুলির মতো একটি RRO যোগ করুন:

// 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

অন-অ্যান্ড্রয়েড প্রয়োজনীয়তা

দূরবর্তী অ্যাক্সেস HAL

রিমোট এক্সেস হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) হল AAOS এবং অন্য ECU (উদাহরণস্বরূপ, একটি TCU) এর মধ্যে যোগাযোগের জন্য বিক্রেতা-বাস্তবায়িত বিমূর্ত স্তর। দূরবর্তী অ্যাক্সেস বৈশিষ্ট্য সমর্থন করার জন্য এটি বাধ্যতামূলক। দূরবর্তী অ্যাক্সেস বৈশিষ্ট্যটি বাস্তবায়িত না হলে এটি বাস্তবায়নের প্রয়োজন নেই।

ইন্টারফেসটি 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)

একটি কলব্যাক যা একটি দূরবর্তী কাজ অনুরোধ করা হলে বলা হয়।

একটি বাহ্যিক TCU সহ রেফারেন্স বাস্তবায়ন দেখুন। বাস্তবায়নটি দূরবর্তী কাজগুলি পেতে একটি দীর্ঘ-জীবিত পঠন স্ট্রিম ব্যবহার করে এবং নিম্নলিখিত debug কমান্ড সমর্থন করে:

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

যানবাহন HAL

দূরবর্তী অ্যাক্সেস বৈশিষ্ট্য সমর্থন করার জন্য, VHAL অবশ্যই এই বৈশিষ্ট্যগুলিকে সমর্থন করবে:

ক্লাস বর্ণনা
SHUTDOWN_REQUEST হেড ইউনিট বন্ধ করার অনুরোধ করে।
VEHICLE_IN_USE
  • গাড়িটি ব্যবহার করা হচ্ছে কিনা তা সনাক্ত করে।
  • ব্যবহারকারী গাড়িটি আনলক করার পরে বা ব্যবহারকারী গাড়ির কাছে যাওয়ার সাথে সাথে। true হওয়া উচিত।
  • ব্যবহারকারী গাড়িটি বন্ধ করার পরে বা ব্যবহারকারী গাড়িটিকে লক করার পরে একটি নির্দিষ্ট সময়কাল। false হতে হবে।
  • true হলে, দূরবর্তী কাজটি সম্পন্ন হলে AAOS গাড়িটি বন্ধ করার চেষ্টা করে না।

আরও জানতে, সমর্থিত সিস্টেম বৈশিষ্ট্য দেখুন।

নীরব মোড

রিমোট অ্যাক্সেস বৈশিষ্ট্যের জন্য সাইলেন্ট মোড অবশ্যই সমর্থিত হতে হবে যাতে কোনও ব্যবহারকারী উপস্থিত না থাকলে গাড়িটি দূরবর্তী কাজগুলি চালানোর জন্য নীরব মোডে বুট করতে পারে। নীরব মোডের সাথে, ডিসপ্লে এবং অডিও বন্ধ করে AAOS ডিভাইস বুট আপ হয়।

সাইলেন্ট মোড দুটি লিনাক্স কার্নেল sysfs ফাইলের মাধ্যমে নিয়ন্ত্রিত হয়।

ক্লাস বর্ণনা
/sys/kernel/silent_boot/pm_silentmode_kernel_state

বর্তমান নীরব মোড প্রতিনিধিত্ব করে।

/sys/kernel/silent_boot/pm_silentmode_hw_state

একটি নতুন নীরব মোড সেট করতে হার্ডওয়্যার সংকেত প্রতিনিধিত্ব করে।

সাইলেন্ট মোড চালু/বন্ধ করতে গাড়ির প্রসেসর Android 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 শুরু করে যাতে ডিসপ্লে/অডিও বন্ধ সহ সিস্টেম বুট হয়।

যানবাহনে নন-অ্যান্ড্রয়েড উপাদান

গাড়ির প্রসেসর

গাড়ির প্রসেসর হল গাড়ির একটি প্রসেসর যা Android চালিত অ্যাপ প্রসেসরের শক্তি নিয়ন্ত্রণ করতে পারে। উদাহরণ আর্কিটেকচারে, TCU গাড়ির প্রসেসরে একটি সংকেত পাঠানোর মাধ্যমে অ্যাপ প্রসেসরকে জাগিয়ে তোলে।

যানবাহনে নন-অ্যান্ড্রয়েড উপাদান

যানবাহন TCU সর্বদা দূরবর্তী বার্তা গ্রহণ করতে পারে।

দূরবর্তী ওয়েক-আপ সার্ভারের সাথে দীর্ঘস্থায়ী সংযোগ নিশ্চিত করতে ওয়েক-আপ ক্লায়েন্ট টিসিইউতে চলে।

AP-তে চলমান AAOS রিমোট অ্যাক্সেস HAL-এর মাধ্যমে TCU-তে চলমান ওয়েক-আপ ক্লায়েন্টের সাথে যোগাযোগ করতে পারে।

image

চিত্র 4. TCU (ওয়েক-আপ ক্লায়েন্ট)।

অন-ক্লাউড উপাদান

ওয়েক আপ সার্ভার

ওয়েক-আপ সার্ভার টিসিইউ-তে জেগে ওঠা ক্লায়েন্টের সাথে যোগাযোগ করে:

  • গাড়ির TCU এর সাথে দীর্ঘস্থায়ী সংযোগ বজায় রাখুন।
  • গাড়ির আইডির উপর ভিত্তি করে একটি নির্দিষ্ট TCU খুঁজুন।
  • একটি গাড়ির অবস্থা রিপোর্ট করুন. উদাহরণস্বরূপ, অনলাইন বা অফলাইন, বা রিমোট টাস্ক সার্ভারে শেষ অনলাইন সময়।

একটি বাস্তব বাস্তবায়নে, একটি ওয়েক-আপ সার্ভারকে একটি দূরবর্তী টাস্ক সার্ভারের সাথে একত্রিত করা যেতে পারে।

দূরবর্তী টাস্ক সার্ভার

দূরবর্তী টাস্ক সার্ভার এই দূরবর্তী কাজগুলি পরিচালনা করে।

  • ব্যবহারকারী নতুন দূরবর্তী কাজ শুরু করতে এবং দূরবর্তী কাজগুলি নিরীক্ষণ করতে সার্ভারের সাথে যোগাযোগ করে।

  • যানবাহনে অ্যাপ প্রসেসর জাগানোর জন্য রিমোট ওয়েক-আপ সার্ভার ব্যবহার করে।

  • গাড়িতে চলমান দূরবর্তী টাস্ক ক্লায়েন্টের সাথে যোগাযোগ করে।

  • ক্লায়েন্ট নিবন্ধন তথ্য সঞ্চয়. এটি একটি নির্দিষ্ট ব্যবহারকারীকে একটি নির্দিষ্ট গাড়িতে একটি নির্দিষ্ট দূরবর্তী টাস্ক ক্লায়েন্টের সাথে সংযুক্ত করে।

সাধারণত দূরবর্তী টাস্ক সার্ভারের মাধ্যমে ওয়েক-আপ সার্ভারে, গাড়ির টিসিইউতে এবং অবশেষে দূরবর্তী টাস্ক ক্লায়েন্টে পাঠানো টাস্ক ডেটা কেবল একটি টাস্ক আইডি। রিমোট টাস্ক ক্লায়েন্ট রিমোট টাস্ক সার্ভার থেকে বিস্তারিত তথ্য আনতে টাস্ক আইডি ব্যবহার করে।

গোপনীয়তা এবং নিরাপত্তা প্রয়োজনীয়তা

টাস্ক অবস্থা প্রয়োজনীয়তা
TCU (ওয়েক আপ ক্লায়েন্ট) অবশ্যই
  • ওয়েক-আপ সার্ভারটি প্রমাণীকরণ করুন।
  • কোড বিশ্বাস করুন.
ওয়েক আপ সার্ভার অবশ্যই
  • শুধুমাত্র অনুমোদিত-তালিকাভুক্ত রিমোট টাস্ক সার্ভারগুলিকে সংযোগ করার অনুমতি দিন।
  • জেগে ওঠা ক্লায়েন্টকে প্রমাণীকরণ করুন।
  • শুধুমাত্র টার্গেট গাড়িতে জাগ্রত বার্তা পাঠান।
দূরবর্তী টাস্ক ক্লায়েন্ট অবশ্যই
  • নিবন্ধনের সময় ব্যবহারকারীকে প্রমাণীকরণ করুন।
  • দূরবর্তী টাস্ক সার্ভার প্রমাণীকরণ.
  • একটি Android পরিষেবার জন্য সমস্ত নিরাপত্তা প্রয়োজনীয়তা পূরণ করুন। উদাহরণস্বরূপ, সীমিত অনুমতি।
দূরবর্তী টাস্ক সার্ভার অবশ্যই
  • ওয়েক-আপ সার্ভারকে অবশ্যই প্রমাণীকরণ করতে হবে।
  • গাড়ির প্রত্যয়ন প্রদান করুন। অর্থাৎ, অনুরোধে প্রদত্ত গাড়ির আইডি প্রেরকের গাড়ির আইডির সাথে মেলে তা প্রমাণ করুন। গাড়ির প্রত্যয়ন করা সম্ভব না হলে, ব্যবহারকারী বর্তমানে গাড়িটির মালিক কিনা তা যাচাই করতে অন্য উপায় ব্যবহার করতে হবে।
  • ব্যবহারকারীর পরিচয় প্রমাণীকরণ করুন।
  • ব্যবহারকারীর তথ্য পরিচালনা করে এমন একটি সার্ভারের জন্য সমস্ত নিরাপত্তা প্রয়োজনীয়তা পূরণ করুন।

ফ্যাক্টরি রিসেট এবং মালিকানা হস্তান্তর

যদি একজন ব্যবহারকারী ফ্যাক্টরি রিসেট করেন, তাহলে কার সার্ভিসে সঞ্চিত ক্লায়েন্ট আইডি মুছে ফেলা হয়। যাইহোক, সার্ভারগুলিকে (রিমোট টাস্ক সার্ভার এবং রিমোট ওয়েকআপ সার্ভার) জানানো হয় না। সার্ভারগুলি এখন মেয়াদোত্তীর্ণ ক্লায়েন্ট আইডি থেকে গাড়িতে একটি ম্যাপিং ধরে রাখে। ফলস্বরূপ, ব্যবহারকারী গাড়ির জন্য একটি নতুন দূরবর্তী কাজ শুরু করলে, এটি মেয়াদোত্তীর্ণ ক্লায়েন্ট আইডি ব্যবহার করে। গাড়িটি জাগ্রত হয়েছে, কিন্তু দূরবর্তী টাস্কটি কার্যকর করা যাবে না যেহেতু দূরবর্তী টাস্ক ক্লায়েন্টের একটি ভিন্ন ক্লায়েন্ট আইডি রয়েছে যা মেলে না।

নিম্নলিখিত একটি ফ্যাক্টরি রিসেটের জন্য একটি সম্ভাব্য বাস্তবায়ন বর্ণনা করে।

যখন একজন ব্যবহারকারী একটি ফ্যাক্টরি রিসেট ইস্যু করে, তখন বিক্রেতা ব্যবহারকারীকে রিমোট টাস্ক সার্ভারে লগ ইন করতে এবং ব্যবহারকারী যদি আগে গাড়িটিকে লিঙ্ক করে থাকে তবে তাদের অ্যাকাউন্ট থেকে গাড়িটিকে আনলিঙ্ক করতে অনুরোধ করে। ফ্যাক্টরি রিসেট করার সময় ডিভাইসটির নেটওয়ার্ক অ্যাক্সেসের নিশ্চয়তা নেই। তাই, ডিভাইস থেকে ফ্যাক্টরি রিসেট করার সময় আনলিঙ্কের অনুরোধ জারি করা সম্ভব নাও হতে পারে।

যখনই একটি গাড়ির মালিকানা হস্তান্তর করা হয়, পূর্ববর্তী মালিক আর গাড়িতে দূরবর্তী কাজগুলি ইস্যু করতে না পারে তা নিশ্চিত করার জন্য কিছু অপারেশন করা উচিত। উদাহরণস্বরূপ, নতুন মালিককে বলা যেতে পারে:

  • একটি ফ্যাক্টরি রিসেট সম্পাদন করুন। এটি নিশ্চিত করে যে ক্লায়েন্ট আইডি পুনরায় তৈরি করা হয়েছে। এই পদক্ষেপের পরে, পূর্ববর্তী মালিক এখনও গাড়িটিকে জাগিয়ে তুলতে পারেন, কিন্তু দূরবর্তী কাজগুলি আর চালাতে পারবেন না।

  • রিমোট টাস্ক ক্লায়েন্ট অ্যাপটি খুলুন এবং পূর্ববর্তী মালিকের অ্যাকাউন্ট থেকে গাড়িটিকে আনলিঙ্ক করতে একটি ক্লায়েন্টের নিবন্ধনমুক্ত প্রক্রিয়া অনুসরণ করুন। নতুন মালিক গাড়িটিকে তাদের অ্যাকাউন্টের সাথে লিঙ্ক করতে এবং পূর্বে লিঙ্ক করা অ্যাকাউন্টটি প্রতিস্থাপন করতে একটি ক্লায়েন্ট নিবন্ধন প্রক্রিয়া অনুসরণ করতে পারেন।

  • নতুন মালিক তাদের অ্যাকাউন্টের সাথে গাড়িটিকে লিঙ্ক করতে এবং পূর্বে লিঙ্ক করা অ্যাকাউন্টটি প্রতিস্থাপন করতে একটি ক্লায়েন্ট নিবন্ধন প্রক্রিয়া ব্যবহার করতে পারেন।

দূরবর্তী টাস্ক ক্লায়েন্ট পরীক্ষা করুন

আমরা দূরবর্তী টাস্ক ক্লায়েন্ট পরীক্ষা করার জন্য রেফারেন্স রিমোট অ্যাক্সেস HAL default ডিরেক্টরি প্রদান করি। আপনি HAL-তে একটি জাল রিমোট টাস্ক ইনজেক্ট করতে নিম্নলিখিত debug কমান্ড ব্যবহার করতে পারেন, যদি আপনি সঠিক ক্লায়েন্ট আইডি প্রদান করেন তবে এটি আপনার দূরবর্তী টাস্ক ক্লায়েন্টে ফরোয়ার্ড করা হয়। আপনি আপনার দূরবর্তী টাস্ক ক্লায়েন্ট বাস্তবায়নে নিবন্ধন তথ্য লগ ইন করে ক্লায়েন্ট আইডি পেতে পারেন।

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