গাড়ি-নির্দিষ্ট পাওয়ার ম্যানেজমেন্টকে সমর্থন করার জন্য, Android একটি CarPowerManagementService
পরিষেবা এবং একটি CarPowerManager
ইন্টারফেস প্রদান করে।
যানবাহন মাস্টার কন্ট্রোল ইউনিট (VMCU) দ্বারা রাজ্যের রূপান্তরগুলি শুরু হয়৷ VMCU এর সাথে যোগাযোগ করতে, ইন্টিগ্রেটরদের অবশ্যই বেশ কয়েকটি উপাদান বাস্তবায়ন করতে হবে। ইন্টিগ্রেটররা যানবাহন হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (ভিএইচএএল) এবং কার্নেল বাস্তবায়নের সাথে সংহত করার জন্য দায়ী। ইন্টিগ্রেটররা ওয়েক সোর্স অক্ষম করার জন্য এবং শাটডাউনগুলি অনির্দিষ্টকালের জন্য স্থগিত না করা নিশ্চিত করার জন্যও দায়ী।
পরিভাষা
এই শর্তাবলী এই নথি জুড়ে ব্যবহৃত হয়:
suspend()
এবং shutdown()
করার জন্য চূড়ান্ত কলগুলি সম্পাদন করে।সিস্টেম ডিজাইন
এই বিভাগটি বর্ণনা করে যে কীভাবে 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 কল করতে এই পদক্ষেপগুলি ব্যবহার করুন:
- CPM দৃষ্টান্ত অর্জন করতে, Car API কল করুন।
- ধাপ 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. অবজেক্ট রেফারেন্স ডায়াগ্রাম।