শক্তি ব্যবস্থাপনা

গাড়ি-নির্দিষ্ট পাওয়ার ম্যানেজমেন্টকে সমর্থন করার জন্য, Android একটি CarPowerManagementService পরিষেবা এবং একটি CarPowerManager ইন্টারফেস প্রদান করে।

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

পরিভাষা

এই শর্তাবলী এই নথি জুড়ে ব্যবহৃত হয়:

অ্যাপ প্রসেসর (এপি)
একটি চিপে সিস্টেমের অংশ (SoC)
বোর্ড সাপোর্ট প্যাকেজ (BSP)
সফ্টওয়্যারের স্তর যা হার্ডওয়্যার-নির্দিষ্ট বুট ফার্মওয়্যার এবং ডিভাইস ড্রাইভার ধারণ করে যা একটি এমবেডেড অপারেটিং সিস্টেমকে একটি প্রদত্ত হার্ডওয়্যার পরিবেশে (একটি মাদারবোর্ড) কাজ করার অনুমতি দেয়, এমবেডেড অপারেটিং সিস্টেমের সাথে একীভূত হয়৷
কারপাওয়ার ম্যানেজার (সিপিএম)
পাওয়ার স্টেট পরিবর্তনের জন্য নিবন্ধন করার জন্য অ্যাপগুলির জন্য একটি API প্রকাশ করে৷
কারপাওয়ার ম্যানেজমেন্ট সার্ভিস (সিপিএমএস)
কার পাওয়ার স্টেট মেশিন, VHAL-এর সাথে ইন্টারফেস, এবং suspend() এবং shutdown() করার জন্য চূড়ান্ত কলগুলি সম্পাদন করে।
CarPowerPolicyDemon (CPPD)
পাওয়ার পলিসি লিসেনার রেজিস্টার করার জন্য নেটিভ প্রসেসের জন্য AIDL ইন্টারফেস প্রকাশ করে।
সাধারণ উদ্দেশ্য ইনপুট বা আউটপুট (GPIO)
সাধারণ উদ্দেশ্যে ব্যবহারের জন্য একটি ডিজিটাল সিগন্যাল পিন।
হার্ডওয়্যার বিমূর্তকরণ স্তর (HAL)
একটি সফ্টওয়্যার স্তর যা হার্ডওয়্যার কার্যকারিতা অ্যাক্সেস করার জন্য অন্যান্য উচ্চ স্তরের মডিউলগুলিকে অবশ্যই ইন্টারঅ্যাক্ট করতে হবে।
হাইবারনেট
সাসপেন্ড-টু-ডিস্ক (S2D/S4) হিসাবেও উল্লেখ করা হয়। SoC কে S4 পাওয়ার মোডে (হাইবারনেট) রাখা হয় এবং RAM বিষয়বস্তু অ-উদ্বায়ী মিডিয়াতে লেখা হয় (যেমন ফ্ল্যাশ বা ডিস্ক) এবং পুরো সিস্টেমটি বন্ধ হয়ে যায়।
মিডিয়া প্রসেসর (এমপি)
একটি চিপে সিস্টেম দেখুন (SoC)
পাওয়ার ম্যানেজমেন্ট ইন্টিগ্রেটেড সার্কিট (PMIC)
হোস্ট সিস্টেমের জন্য পাওয়ার প্রয়োজনীয়তা পরিচালনা করতে ব্যবহৃত চিপ।
একটি চিপে সিস্টেম (এসওসি)
প্রধান প্রসেসর যা AAOS চালায়, সাধারণত Intel, MediaTek, Nvidia, Qualcomm, Renesas এবং Texas Instruments এর মতো নির্মাতারা সরবরাহ করে।
স্থগিত করা
সাসপেন্ড-টু-RAM (S2R বা STR) হিসাবেও উল্লেখ করা হয়। SoC S3 পাওয়ার মোডে স্থাপন করা হয় এবং RAM চালু থাকা অবস্থায় CPU বন্ধ থাকে।
যানবাহন HAL (VHAL)
গাড়ির নেটওয়ার্কের সাথে ইন্টারফেস করতে ব্যবহৃত Android API। টিয়ার 1 অংশীদার বা OEM এই মডিউলটি লেখার জন্য দায়ী৷ যানবাহন নেটওয়ার্ক যেকোনো শারীরিক স্তর (যেমন CAN, LIN, MOST, এবং Ethernet) ব্যবহার করতে পারে। AAOS কে গাড়ির সাথে ইন্টারঅ্যাক্ট করতে সক্ষম করতে VHAL এই যানবাহন নেটওয়ার্ককে বিমূর্ত করে।
যানবাহন ইন্টারফেস প্রসেসর (ভিআইপি)
যানবাহন MCU দেখুন।
যানবাহন মাস্টার কন্ট্রোল ইউনিট (VMCU)
মাইক্রোকন্ট্রোলার যা গাড়ির নেটওয়ার্ক এবং SoC-এর মধ্যে ইন্টারফেস প্রদান করে। SoC USB, UART, SPI, এবং GPIO সংকেতের মাধ্যমে VMCU এর সাথে যোগাযোগ করে।

ব্যবস্থা পরিকল্পনা

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

কার পাওয়ার স্টেট মেশিন

AAOS AP-এর শক্তি অবস্থার প্রতিনিধিত্ব করতে একটি রাষ্ট্রীয় মেশিন ব্যবহার করে। রাষ্ট্রীয় যন্ত্র নীচে চিত্রিত রাজ্যগুলি প্রদান করে:

কার পাওয়ার স্টেট মেশিন

চিত্র 1. গাড়ী শক্তি রাষ্ট্র মেশিন.

সবচেয়ে সাধারণ রূপান্তরগুলি নীল রঙে হাইলাইট করা হয়। এইগুলি হল রাজ্য এবং সাধারণ রূপান্তর:

  • সাসপেন্ড-টু-RAM। যানবাহন এবং SoC বন্ধ আছে. কোন কোড কার্যকর করা হচ্ছে না. SoC RAM এ পাওয়ার রক্ষণাবেক্ষণ করা হয়।
  • VHAL এর জন্য অপেক্ষা করুন। যখন ড্রাইভার গাড়ির সাথে যোগাযোগ করে, উদাহরণস্বরূপ, একটি দরজা খোলার মাধ্যমে, VMCU SoC-তে শক্তি প্রয়োগ করে। AAOS সাসপেন্ড-টু-RAM থেকে পুনরায় শুরু হয় এবং VHAL-এর জন্য অপেক্ষা করুন, যেখানে এটি VHAL-এর সাথে সমন্বয়ের জন্য অপেক্ষা করে।
  • চালু. ভিএইচএএল AAOS কে অন স্টেটে প্রবেশ করতে বলে। এই অবস্থায়, AAOS সম্পূর্ণভাবে চলছে এবং ড্রাইভারের সাথে ইন্টারঅ্যাক্ট করছে।
  • শাটডাউন প্রস্তুত করুন। ড্রাইভারের গাড়ি চালানো শেষ হলে, VHAL AAOS কে শাটডাউন প্রিপারে প্রবেশ করতে বলে। এই অবস্থায়, ডিসপ্লে এবং অডিও বন্ধ আছে এবং AAOS ড্রাইভারের সাথে ইন্টারঅ্যাক্ট করছে না। অ্যান্ড্রয়েড সিস্টেম এখনও চলছে এবং অ্যাপ এবং অ্যান্ড্রয়েড সিস্টেম আপডেট করার জন্য বিনামূল্যে। আপডেটগুলি, যদি থাকে, সম্পূর্ণ হয়ে গেলে, Android সিস্টেম প্রবেশ করে ওয়েট ফর ভিএইচএএল ফিনিশ৷
  • VHAL সমাপ্তির জন্য অপেক্ষা করুন। এই মুহুর্তে, AAOS VHAL কে জানায় যে এটি বন্ধ করার জন্য প্রস্তুত। VMCU গভীর ঘুমে SoC স্থাপন করবে এবং অ্যাপ প্রসেসর থেকে পাওয়ার অপসারণ করবে বলে আশা করা হচ্ছে। AAOS তখন সাসপেন্ড-টু-RAM অবস্থায় থাকে, যদিও কোনো কোড কার্যকর করা হচ্ছে না।

পাওয়ার ম্যানেজমেন্ট মডিউল

পাওয়ার ম্যানেজমেন্ট সিস্টেম এই মডিউলগুলি নিয়ে গঠিত:

মডিউল নাম বর্ণনা
কারপাওয়ার ম্যানেজার জাভা বা C++ API।
কার পাওয়ার ম্যানেজমেন্ট সার্ভিস শক্তি রাষ্ট্রের স্থানান্তর সমন্বয় করে।
CarPowerPolicyDemon নেটিভ পাওয়ার পলিসি ক্লায়েন্টদের সাথে যোগাযোগ করে।
যানবাহন HAL ভিএমসিইউতে ইন্টারফেস।
কার্নেল RAM বা ডিস্ক বাস্তবায়ন সাসপেন্ড।

গভীর ঘুম/হাইবারনেশন বৈশিষ্ট্য (অ্যান্ড্রয়েড থেকে RAM/ডিস্কে সাসপেন্ড) কার্নেলে প্রয়োগ করা হয়েছে। এই বৈশিষ্ট্যটি /sys/power/state এ অবস্থিত একটি বিশেষ ফাইল হিসাবে ব্যবহারকারীর স্থানের কাছে উন্মুক্ত করা হয়েছে। এই ফাইলে mem বা disk লিখে AAOS সাসপেন্ড করা হয়েছে।

CPMS অন্যান্য পরিষেবা এবং HAL-এর সাথে পাওয়ার স্টেটকে সমন্বয় করে। CPMS উপরে বর্ণিত স্টেট মেশিন প্রয়োগ করে এবং যখন একটি পাওয়ার স্টেট ট্রানজিশন ঘটে তখন প্রতিটি পর্যবেক্ষককে বিজ্ঞপ্তি পাঠায়। এই পরিষেবাটি হার্ডওয়্যারে বার্তা পাঠাতে VHAL ব্যবহার করে।

CPMS নিয়ন্ত্রণ না করা পর্যন্ত CPPD শক্তি নীতি পরিচালনা করে। এটি স্থানীয় শ্রোতাদের কাছে পাওয়ার নীতি পরিবর্তনের বিজ্ঞপ্তিও পাঠায়।

কিছু বৈশিষ্ট্য VHAL এ সংজ্ঞায়িত করা হয়েছে। VMCU এর সাথে যোগাযোগ করার জন্য, CPMS এই বৈশিষ্ট্যগুলি পড়ে এবং লেখে। অ্যাপগুলি পাওয়ার স্টেট পরিবর্তনগুলি নিরীক্ষণ করতে CPM-এ সংজ্ঞায়িত ইন্টারফেস ব্যবহার করতে পারে। এই ইন্টারফেস অ্যাপগুলিকে পাওয়ার নীতি শ্রোতাদের নিবন্ধন করতে সক্ষম করে। এই API জাভা থেকে কল করা যেতে পারে এবং @hide / @System API দিয়ে টীকা করা হয়, যার মানে এটি শুধুমাত্র সুবিধাপ্রাপ্ত অ্যাপের জন্য উপলব্ধ। এই মডিউল, অ্যাপস এবং পরিষেবাগুলির মধ্যে সম্পর্ক নীচে চিত্রিত করা হয়েছে:

পাওয়ার কম্পোনেন্ট রেফারেন্স ডায়াগ্রাম

চিত্র 2। পাওয়ার কম্পোনেন্ট রেফারেন্স ডায়াগ্রাম।

বার্তা ক্রম

পূর্ববর্তী বিভাগে পাওয়ার ম্যানেজমেন্ট সিস্টেমের অন্তর্ভুক্ত মডিউলগুলি বর্ণনা করা হয়েছে। মডিউল এবং অ্যাপগুলি কীভাবে যোগাযোগ করে তা ব্যাখ্যা করতে এই বিভাগটি গভীর ঘুমে প্রবেশ করুন এবং গভীর ঘুম থেকে প্রস্থান করার উদাহরণ ব্যবহার করে:

গভীর ঘুমে প্রবেশ করুন

শুধুমাত্র VMCU গভীর ঘুম শুরু করতে পারে। একবার গভীর ঘুম শুরু হলে, VMCU VHAL এর মাধ্যমে CPMS-কে একটি বিজ্ঞপ্তি পাঠায়। CPMS রাজ্যটিকে SHUTDOWN Prepare-এ পরিবর্তন করে এবং CPM দ্বারা প্রদত্ত একটি নতুন রাজ্য আইডি সহ onStateChanged() পদ্ধতিতে কল করে সমস্ত পর্যবেক্ষকদের (অ্যাপ এবং পরিষেবাগুলি যেগুলি CPMS নিরীক্ষণ করে) এই রাজ্যের রূপান্তর সম্প্রচার করে৷

CPM অ্যাপ/পরিষেবা এবং CPMS-এর মধ্যে মধ্যস্থতা করে। অ্যাপস/পরিষেবাগুলির জন্য onStateChanged() পদ্ধতিটি CPM-এর onStateChanged() পদ্ধতিতে সিঙ্ক্রোনাসভাবে আহ্বান করা হয়। বেশিরভাগ অ্যাপ এবং পরিষেবাগুলিকে এই কল থেকে ফিরে আসার আগে তাদের প্রস্তুতি সম্পূর্ণ করতে হবে৷ PRE_SHUTDOWN_PREPARE , SUSPEND_ENTER , POST_SUSPEND_ENTER এর জন্য ফিরে আসার পর বিশেষাধিকারপ্রাপ্ত পরিষেবাগুলিকে তাদের প্রস্তুতিগুলি অ্যাসিঙ্ক্রোনাসভাবে চালিয়ে যাওয়ার অনুমতি দেওয়া হয়েছে৷ এই ক্ষেত্রে, প্রিভিলেজড সার্ভিসটি প্রদত্ত CompletablePowerStateChangeFuture অবজেক্টে complete() কল করবে যখন এটি প্রস্তুতি শেষ করবে। মনে রাখবেন SHUTDOWN_PREPARE এর জন্য অ্যাসিঙ্ক্রোনাস প্রস্তুতির অনুমতি নেই। DEEP_SLEEP_ENTRY VHAL-এ পাঠানোর আগে, CPMS পর্যায়ক্রমে VHAL-এ শাটডাউন স্থগিত করার অনুরোধ পাঠায়।

যখন সমস্ত CPM অবজেক্ট শাটডাউন প্রস্তুতি সম্পন্ন করে, তখন CPMS VHAL-এ AP_POWER_STATE_REPORT পাঠায়, যা VMCU-কে অবহিত করে যে AP স্থগিত করার জন্য প্রস্তুত। CPMS তার সাসপেন্ড পদ্ধতিকেও কল করে, যা কার্নেলকে সাসপেন্ড করে।

উপরে বর্ণিত ক্রমটি নীচে চিত্রিত করা হয়েছে:

গভীর ঘুমে প্রবেশ করুন

চিত্র 3. গভীর ঘুমে প্রবেশ করুন।

CPM দ্বারা প্রদত্ত প্রোগ্রামিং ইন্টারফেস

এই বিভাগটি সিস্টেম অ্যাপ এবং পরিষেবাগুলির জন্য CPM দ্বারা প্রদত্ত জাভা API বর্ণনা করে৷ এই API সিস্টেম সফ্টওয়্যারকে সক্ষম করে:

  • এপি-তে শক্তির অবস্থার পরিবর্তনগুলি পর্যবেক্ষণ করুন।
  • পাওয়ার নীতি প্রয়োগ করুন।

CPM দ্বারা প্রদত্ত API কল করতে এই পদক্ষেপগুলি ব্যবহার করুন:

  1. CPM দৃষ্টান্ত অর্জন করতে, Car API কল করুন।
  2. ধাপ 1 এ তৈরি বস্তুর উপর উপযুক্ত পদ্ধতি কল করুন।

একটি CarPowerManager অবজেক্ট তৈরি করুন

একটি CPM অবজেক্ট তৈরি করতে, কার অবজেক্টের getCarManager() পদ্ধতিতে কল করুন। এই পদ্ধতিটি একটি সম্মুখভাগ যা CPM বস্তু তৈরি করতে ব্যবহৃত হয়। একটি CPM অবজেক্ট তৈরি করার জন্য একটি যুক্তি হিসাবে android.car.Car.POWER_SERVICE নির্দিষ্ট করুন৷

Car car = Car.createCar(this);
CarPowerManager powerManager =
  (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);

CarPowerStateListener এবং নিবন্ধন

সিস্টেম অ্যাপ এবং পরিষেবাগুলি CarPowerManager.CarPowerStateListener প্রয়োগ করে পাওয়ার স্টেট পরিবর্তনের বিজ্ঞপ্তি পেতে পারে৷ এই ইন্টারফেসটি একটি পদ্ধতিকে সংজ্ঞায়িত করে onStateChanged() , যা একটি কলব্যাক ফাংশন যা CPMS-এর পাওয়ার স্টেট পরিবর্তন করা হলে আহ্বান করা হয়। নিম্নলিখিত উদাহরণটি একটি নতুন বেনামী ক্লাস সংজ্ঞায়িত করে যা ইন্টারফেস প্রয়োগ করে:

private final CarPowerManager.CarPowerStateListener powerListener =
  new CarPowerManager.CarPowerStateListener () {
    @Override
     public void onStateChanged(int state) {
       Log.i(TAG, "onStateChanged() state = " + state);
     }
};

একটি পাওয়ার স্টেট ট্রানজিশন নিরীক্ষণ করার জন্য এই লিসেনার অবজেক্টকে নির্দেশ দিতে, একটি নতুন এক্সিকিউশন থ্রেড তৈরি করুন এবং লিসেনার এবং এই থ্রেডটি CPM অবজেক্টে নিবন্ধন করুন:

executor = new ThreadPerTaskExecutor();
powerManager.setListener(powerListener, executor);

পাওয়ার স্টেট পরিবর্তন করা হলে, শ্রোতা অবজেক্টের onStateChanged() পদ্ধতিটি নতুন পাওয়ার স্টেটকে উপস্থাপন করার জন্য একটি মান সহ আহ্বান করা হয়। প্রকৃত মান এবং শক্তি অবস্থার মধ্যে সংযোগটি CarPowerManager এ সংজ্ঞায়িত করা হয়েছে এবং নিম্নলিখিত সারণীতে দেখানো হয়েছে:

নাম বর্ণনা
STATE_ON অন ​​স্টেট লিখুন। সিস্টেম সম্পূর্ণরূপে চালু আছে.
STATE_SHUTDOWN_CANCELLED শাটডাউন বাতিল করা হয়েছে এবং পাওয়ার স্টেট স্বাভাবিক অবস্থায় ফিরে এসেছে।
STATE_SHUTDOWN_ENTER অ্যাপগুলি পরিষ্কার হয়ে যাবে এবং বন্ধ করার জন্য প্রস্তুত হবে বলে আশা করা হচ্ছে।
STATE_POST_SHUTDOWN_ENTER বন্ধ করার প্রস্তুতি সম্পন্ন হয়েছে এবং VMCU বন্ধের জন্য প্রস্তুত। শাটডাউন অবস্থা লিখুন।
STATE_PRE_SHUTDOWN_PREPARE শাটডাউন প্রক্রিয়ার অনুরোধ করা হয়েছে কিন্তু CPMS এখনও প্রক্রিয়া শুরু করে না। প্রদর্শন এবং অডিও এখনও চালু আছে
STATE_SHUTDOWN_PREPARE গ্যারেজ মোড পিরিয়ড চলাকালীন চলতে পারে।
STATE_SUSPEND_ENTER অ্যাপগুলি পরিষ্কার করা হবে এবং সাসপেন্ড-টু-RAM-এর জন্য প্রস্তুত হবে বলে আশা করা হচ্ছে।
STATE_POST_SUSPEND_ENTER সাসপেন্ড-টু-RAM-এর প্রস্তুতি সম্পন্ন হয়েছে এবং VMCU সাসপেন্ড-টু-RAM-এর জন্য প্রস্তুত। সাসপেন্ড স্টেট লিখুন।
STATE_SUSPEND_EXIT স্থগিত থেকে জেগে উঠুন বা বাতিল সাসপেন্ড থেকে পুনরায় শুরু করুন।
STATE_HIBERNATION_ENTER অ্যাপগুলি পরিষ্কার করা হবে এবং হাইবারনেশনের জন্য প্রস্তুত হবে বলে আশা করা হচ্ছে।
STATE_POST_HIBERNATION_ENTER হাইবারনেশনের জন্য প্রস্তুতি সম্পন্ন হয়েছে এবং VMCU হাইবারনেশনের জন্য প্রস্তুত হাইবারনেশন স্টেটে প্রবেশ করুন।
STATE_HIBERNATION_EXIT হাইবারনেশন থেকে জেগে উঠুন বা বাতিল হাইবারনেশন থেকে আবার শুরু করুন।
STATE_WAIT_FOR_VHAL সিস্টেমটি শুরু হচ্ছে, কিন্তু চালু অবস্থায় যাওয়ার আগে VHAL-এর সাথে যোগাযোগ স্থাপনের জন্য অপেক্ষা করছে।

CarPowerStateListener নিবন্ধনমুক্তকরণ

CPM-তে নিবন্ধিত সমস্ত শ্রোতা বস্তুকে নিবন্ধনমুক্ত করতে, clearListener পদ্ধতিতে কল করুন:

powerManager.clearListener();

আপনার অ্যান্ড্রয়েড বাস্তবায়নে সিস্টেম ইন্টিগ্রেশন

ইন্টিগ্রেটর নিম্নলিখিত আইটেমগুলির জন্য দায়ী:

  • অ্যান্ড্রয়েড সাসপেন্ড করতে কার্নেল ইন্টারফেস প্রয়োগ করা হচ্ছে।
  • এতে VHAL ফাংশন বাস্তবায়ন করা হচ্ছে:
    • গাড়ি থেকে অ্যান্ড্রয়েডে সাসপেন্ড বা শাটডাউনের সূচনা প্রচার করুন।
    • অ্যান্ড্রয়েড থেকে গাড়িতে শাটডাউন প্রস্তুত বার্তা পাঠান।
    • লিনাক্স কার্নেল ইন্টারফেসের মাধ্যমে অ্যান্ড্রয়েডের শাটডাউন বা সাসপেন্ড শুরু করুন।
  • ডিভাইসটি সাসপেন্ড অবস্থায় থাকাকালীন সমস্ত ওয়েকসোর্স অক্ষম করা হয়েছে তা নিশ্চিত করুন৷
  • নিশ্চিত করুন যে অ্যাপগুলি দ্রুত পর্যাপ্ত বন্ধ হয়ে যায় যাতে শাটডাউন প্রক্রিয়া অনির্দিষ্টকালের জন্য স্থগিত না হয়।
  • নিশ্চিত করুন যে বিএসপি পাওয়ার নীতি অনুসারে ডিভাইসের উপাদানগুলি চালু (বা বন্ধ) করে যাতে সাসপেন্ড বা হাইবারনেশন ব্লক না হয়

কার্নেল ইন্টারফেস: /sys/power/state

AAOS একটি ডিভাইসকে সাসপেন্ড মোডে রাখে যখন একটি অ্যাপ বা পরিষেবা /sys/power/state এ অবস্থিত একটি ফাইলে সাসপেন্ড-টু-RAM বা সাসপেন্ড-টু- disk জন্য mem লিখে। ইন্টিগ্রেটরকে অবশ্যই একটি ফাংশন প্রদান করতে হবে যা এই ফাইলটিকে নিরীক্ষণ করে এবং লিনাক্সকে সাসপেন্ড পাওয়ার স্টেটে রাখে। এই ফাংশনটি VMCU-তে একটি GPIO পাঠাতে পারে VMCU-কে জানাতে যে ডিভাইসটি সম্পূর্ণরূপে বন্ধ হয়ে গেছে। VHAL-এর VMCU-তে চূড়ান্ত বার্তা পাঠানো এবং সিস্টেম সাসপেন্ড বা শাটডাউন মোডে যাওয়ার মধ্যে যেকোনও রেসের অবস্থা দূর করার জন্যও ইন্টিগ্রেটর দায়ী।

VHAL দায়িত্ব

VHAL গাড়ির নেটওয়ার্ক এবং অ্যান্ড্রয়েডের মধ্যে একটি ইন্টারফেস প্রদান করে। ভিএইচএএল:

  • গাড়ি থেকে Android-এ সাসপেন্ড বা শাটডাউনের সূচনা প্রচার করে।
  • অ্যান্ড্রয়েড থেকে গাড়িতে শাটডাউন রেডি মেসেজ পাঠায়।
  • Linux কার্নেল ইন্টারফেসের মাধ্যমে Android এর শাটডাউন বা সাসপেন্ড শুরু করে।

যখন CPMS VHAL কে জানায় যে এটি বন্ধ করার জন্য প্রস্তুত, VHAL VMCU কে শাটডাউন প্রস্তুত বার্তা পাঠায়। সাধারণত, অন-চিপ পেরিফেরাল যেমন UART, SPI এবং USB বার্তা প্রেরণ করে। একবার বার্তা পাঠানো হলে, CPMS ডিভাইসটিকে সাসপেন্ড বা বন্ধ করতে কার্নেল কমান্ডকে কল করে। এটি করার আগে, VHAL বা BSP একটি GPIO টগল করে VMCU কে নির্দেশ দিতে পারে যে ডিভাইস থেকে শক্তি সরানো নিরাপদ।

VHAL-কে অবশ্যই নিম্নলিখিত বৈশিষ্ট্যগুলিকে সমর্থন করতে হবে, যা VHAL-এর মাধ্যমে শক্তি ব্যবস্থাপনা নিয়ন্ত্রণ করে:

নাম বর্ণনা
AP_POWER_STATE_REPORT VehicleApPowerStateReport enum মান ব্যবহার করে Android এই সম্পত্তির সাথে VMCU-তে রাষ্ট্রীয় রূপান্তর প্রতিবেদন করে।
AP_POWER_STATE_REQ VehicleApPowerStateReq enum মান ব্যবহার করে Android-কে বিভিন্ন পাওয়ার স্টেটে স্থানান্তর করার নির্দেশ দিতে VMCU এই সম্পত্তি ব্যবহার করে।

AP_POWER_STATE_REPORT

Android এর বর্তমান পাওয়ার ম্যানেজমেন্ট স্টেট রিপোর্ট করতে এই প্রপার্টি ব্যবহার করুন। এই সম্পত্তি দুটি পূর্ণসংখ্যা রয়েছে:

  • int32Values[0] : বর্তমান অবস্থার VehicleApPowerStateReport enum.
  • int32Values[1] : মিলিসেকেন্ডে সময় স্থগিত করতে বা ঘুমাতে বা শাটডাউন করতে। এই মানের অর্থ প্রথম মানের উপর নির্ভর করে।

প্রথম মান নিম্নলিখিত মানগুলির মধ্যে একটি নিতে পারে। VehicleApPowerStateReport.aidl আরও সুনির্দিষ্ট বিবরণ রয়েছে, যা hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle এ সংরক্ষিত থাকে।

মান নাম বর্ণনা দ্বিতীয় মান
WAIT_FOR_VHAL AP শুরু করছে এবং VHAL এর সাথে যোগাযোগ স্থাপন করতে হবে।
DEEP_SLEEP_ENTRY এপি গভীর ঘুমের রাজ্যে প্রবেশ করছে। VMCU দ্বিতীয় মানের নির্দিষ্ট সময়ের পরে AP আবার চালু করা উচিত। সেট করতে হবে
DEEP_SLEEP_EXIT AP গভীর ঘুমের অবস্থা থেকে প্রস্থান করছে।
HIBERNATION_ENTRY এপি হাইবারনেশন অবস্থায় প্রবেশ করছে। VMCU দ্বিতীয় মানের নির্দিষ্ট সময়ের পরে AP আবার চালু করা উচিত। সেট করতে হবে
HIBERNATION_EXIT AP হাইবারনেশন অবস্থা থেকে প্রস্থান করছে।
SHUTDOWN_POSTPONE অ্যান্ড্রয়েড বন্ধ করার জন্য প্রস্তুত নয়। AP বন্ধ করার আগে VMCU-কে দ্বিতীয় মানের মধ্যে নির্দিষ্ট সময় অপেক্ষা করতে হবে। Android অতিরিক্ত SHUTDOWN_POSTPONE প্রতিবেদন জারি করে অতিরিক্ত স্থগিত করার অনুরোধ করতে পারে৷ সেট করতে হবে
SHUTDOWN_PREPARE অ্যান্ড্রয়েড বন্ধ করার প্রস্তুতি নিচ্ছে। সেট করতে হবে
SHUTDOWN_START AP বন্ধ করার জন্য প্রস্তুত। VMCU দ্বিতীয় মানের নির্দিষ্ট সময়ের পরে AP আবার চালু করা উচিত। (টাইমড টার্ন-অন বৈশিষ্ট্য সমর্থন করার জন্য VMCU এর প্রয়োজন নেই।) সেট করতে হবে
SHUTDOWN_বাতিল করা হয়েছে অ্যান্ড্রয়েড বন্ধ হওয়ার প্রস্তুতি বন্ধ করছে এবং WAIT_FOR_VHAL-এ এগিয়ে যাবে৷
চালু অ্যান্ড্রয়েড স্বাভাবিকভাবে চলছে।

রাষ্ট্র স্বায়ত্তশাসিতভাবে সেট করা যেতে পারে বা VMCU এর মাধ্যমে একটি অনুরোধের প্রতিক্রিয়া হিসাবে।

AP_POWER_STATE_REQ

এই সম্পত্তিটি VMCU দ্বারা Android কে একটি ভিন্ন পাওয়ার স্টেটে রূপান্তর করার জন্য পাঠানো হয়েছে এবং এতে দুটি পূর্ণসংখ্যা রয়েছে:

  • int32Values[0] : VehicleApPowerStateReq enum মান, যেটি নতুন রাষ্ট্রের প্রতিনিধিত্ব করে যেখানে স্থানান্তর করা হবে।
  • int32Values[1] : VehicleApPowerStateShutdownParam enum value. এই মানটি শুধুমাত্র একটি SHUTDOWN_PREPARE বার্তার জন্য পাঠানো হয় এবং এতে থাকা বিকল্পগুলি Android-এ প্রেরণ করা হয়৷

প্রথম পূর্ণসংখ্যার মানটি সেই নতুন অবস্থাকে উপস্থাপন করে যেখানে Android ট্রানজিট করতে হবে। শব্দার্থবিদ্যা VehicleApPowerStateReq.aidl এ সংজ্ঞায়িত করা হয়েছে এবং নীচে দেওয়া হয়েছে:

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

VehicleApPowerStateShutdownParam VehicleApPowerStateShutdownParam.aidl এ সংজ্ঞায়িত করা হয়েছে। এই enum এই উপাদান আছে:

মান নাম বর্ণনা
ঘুমাতে পারেন AP সম্পূর্ণরূপে বন্ধ করার পরিবর্তে গভীর ঘুমে প্রবেশ করতে পারে। স্থগিত করা অনুমোদিত।
CAN_HIBERNATE AP সম্পূর্ণরূপে বন্ধ করার পরিবর্তে হাইবারনেশনে প্রবেশ করতে পারে। স্থগিত করা অনুমোদিত।
SHUTDOWN_ONLY AP বন্ধ করা উচিত. স্থগিত করা অনুমোদিত। গভীর ঘুমের অনুমতি নেই।
SLEEP_IMMEDIATELY AP গভীর ঘুমে প্রবেশ করতে পারে, তবে হয় ঘুমাতে হবে বা অবিলম্বে বন্ধ করতে হবে। পিছিয়ে দেওয়া অনুমোদিত নয়।
HIBERNATE_IMMEDIATELY AP সাসপেন্ড-টু-ডিস্কে প্রবেশ করতে পারে, তবে হয় হাইবারনেট করতে হবে বা অবিলম্বে বন্ধ করতে হবে। পিছিয়ে দেওয়া অনুমোদিত নয়।
SHUTDOWN_IMMEDIATELY AP অবিলম্বে বন্ধ করা আবশ্যক. পিছিয়ে দেওয়া অনুমোদিত নয়। গভীর ঘুমের অনুমতি নেই।

ওয়েক সোর্স

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

অ্যাপস

OEMগুলিকে অবশ্যই অ্যাপগুলি লিখতে সতর্কতা অবলম্বন করতে হবে যাতে সেগুলি দ্রুত বন্ধ হয়ে যায় এবং প্রক্রিয়াটি অনির্দিষ্টকালের জন্য পিছিয়ে না যায়৷

পরিশিষ্ট

সোর্স কোড ট্রিতে ডিরেক্টরি

বিষয়বস্তু ডিরেক্টরি
CarPowerManager-সম্পর্কিত কোড। packages/services/Car/car-lib/src/android/car/hardware/power
CarPowerManagementService এবং তাই। packages/services/Car/service/src/com/android/car/power
VHAL-এর সাথে ডিল করা পরিষেবা, যেমন VehicleHal এবং HAlClient packages/services/Car/service/src/com/android/car/hal
VHAL ইন্টারফেস এবং সম্পত্তি সংজ্ঞা। hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/
CarPowerManager সম্পর্কে কিছু ধারণা প্রদানের জন্য নমুনা অ্যাপ packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink

ক্লাস ডায়াগ্রাম

এই ক্লাস ডায়াগ্রামটি পাওয়ার ম্যানেজমেন্ট সিস্টেমে জাভা ক্লাস এবং ইন্টারফেসগুলি প্রদর্শন করে:

পাওয়ার ক্লাস ডায়াগ্রাম

চিত্র 4. পাওয়ার ক্লাস ডায়াগ্রাম।

বস্তুর সম্পর্ক

চিত্র 5 কোন বস্তুর অন্যান্য বস্তুর রেফারেন্স আছে তা ব্যাখ্যা করে। একটি প্রান্ত মানে উৎস বস্তু লক্ষ্য বস্তুর একটি রেফারেন্স ধারণ করে। উদাহরণস্বরূপ, VehicleHAL একটি PropertyHalService অবজেক্টের একটি রেফারেন্স আছে।

অবজেক্ট রেফারেন্স ডায়াগ্রাম

চিত্র 5. অবজেক্ট রেফারেন্স ডায়াগ্রাম।