শক্তি নীতি

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

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

AAOS পাওয়ার স্টেট

AAOS ডিভাইসগুলি এই পাওয়ার স্টেট ডায়াগ্রাম অনুসরণ করে:

AAOS পাওয়ার স্টেট ডায়াগ্রাম

চিত্র 1. AAOS পাওয়ার স্টেট ডায়াগ্রাম

প্রতিটি শক্তি অবস্থা নীচে বর্ণনা করা হয়েছে:

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

সফটওয়্যার আর্কিটেকচার

পাওয়ার পলিসি আর্কিটেকচার নীচে চিত্রিত করা হয়েছে এবং নিম্নলিখিত বিভাগে সংজ্ঞায়িত করা হয়েছে:

চিত্র 2। পাওয়ার পলিসি আর্কিটেকচার

শক্তি নীতি কিভাবে সংজ্ঞায়িত করা হয়?

বাস্তবায়নকারীরা /vendor/etc/automotive/power_policy.xml এ পাওয়ার নীতিগুলি সংজ্ঞায়িত করে, যা:

  • শক্তি নীতি সংজ্ঞায়িত করে।
  • পাওয়ার নীতি গোষ্ঠীগুলিকে সংজ্ঞায়িত করে, যার মধ্যে ডিফল্ট পাওয়ার নীতি অন্তর্ভুক্ত থাকে এবং যখন পাওয়ার স্টেট ট্রানজিশন ঘটে তখন স্বয়ংক্রিয়ভাবে প্রয়োগ হয়।
  • সিস্টেম পাওয়ার নীতি ওভাররাইড করুন।

শক্তি নীতি

পাওয়ার নীতি হল হার্ডওয়্যার এবং সফ্টওয়্যার উপাদানগুলির প্রত্যাশিত পাওয়ার স্টেটের একটি সেট। AAOS পাওয়ার নীতিতে নিম্নলিখিত উপাদানগুলিকে সমর্থন করে:

  • AUDIO
  • MEDIA
  • DISPLAY_MAIN
  • DISPLAY_CLUSTER
  • DISPLAY_FRONT_PASSENGER
  • DISPLAY_REAR_PASSENGER
  • BLUETOOTH
  • WIFI
  • CELLULAR
  • ETHERNET
  • PROJECTION
  • NFC
  • INPUT
  • VOICE_INTERACTION
  • VISUAL_INTERACTION
  • TRUSTED_DEVICE_DETECTION
  • LOCATION
  • MICROPHONE
  • CPU

শক্তি নীতি গ্রুপ

ডিফল্ট পাওয়ার নীতি স্বয়ংক্রিয়ভাবে পাওয়ার স্টেট ট্রানজিশনে প্রয়োগ করা হয় পাওয়ার পলিসি গ্রুপে নির্দিষ্ট করা হয়। বিক্রেতারা VHAL এর জন্য অপেক্ষা করুন, চালু করুন এবং VHAL ফিনিশের জন্য অপেক্ষা করুন (ডিপ স্লিপ এন্ট্রি বা শাটডাউন স্টার্ট) এর জন্য ডিফল্ট পাওয়ার নীতি নির্ধারণ করতে পারেন।

সিস্টেম শক্তি নীতি

AAOS শুধুমাত্র একটি সিস্টেম পাওয়ার নীতি সমর্থন করে, যা "ব্যবহারকারীর কোনো ইন্টারঅ্যাকশন" নয়। ডিভাইসটি গ্যারেজ মোডে গেলে সিস্টেম পাওয়ার নীতি প্রয়োগ করা হয়।

সিস্টেম পাওয়ার নীতিতে প্রতিটি উপাদানের আচরণ নীচের সারণীতে তালিকাভুক্ত করা হয়েছে। বাস্তবায়নকারীরা সিস্টেম পাওয়ার নীতিতে ব্লুটুথ, এনএফসি এবং বিশ্বস্ত ডিভাইস সনাক্তকরণকে ওভাররাইড করতে পারে। ওভাররাইডগুলি /vendor/etc/power_policy.xml এ প্রয়োগ করা হয়।

উপাদান শক্তি রাষ্ট্র কনফিগারযোগ্য
শ্রুতি বন্ধ না
মিডিয়া বন্ধ না
প্রধান প্রদর্শন বন্ধ না
ডিসপ্লে ক্লাস্টার বন্ধ না
সামনের যাত্রী প্রদর্শন করুন বন্ধ না
পিছনের যাত্রী প্রদর্শন করুন বন্ধ না
ব্লুটুথ বন্ধ হ্যাঁ
ওয়াইফাই চালু না
কোষ বিশিষ্ট চালু না
ইথারনেট চালু না
অভিক্ষেপ বন্ধ না
এনএফসি বন্ধ হ্যাঁ
ইনপুট বন্ধ না
ভয়েস মিথস্ক্রিয়া বন্ধ না
ভিজ্যুয়াল মিথস্ক্রিয়া বন্ধ না
বিশ্বস্ত ডিভাইস সনাক্তকরণ চালু হ্যাঁ
অবস্থান বন্ধ না
মাইক্রোফোন বন্ধ না
সিপিইউ চালু না

VHAL এর সাথে মিথস্ক্রিয়া

সিস্টেম লেয়ারে চলমান কার পাওয়ার পলিসি ডেমন VHAL থেকে অনুরোধ শোনার জন্য দুটি বৈশিষ্ট্য সাবস্ক্রাইব করে:

  • POWER_POLICY_REQ , VHAL এই সম্পত্তিতে পাওয়ার পলিসি আইডি লেখে।
  • POWER_POLICY_GROUP_REQ , VHAL এই সম্পত্তিতে পাওয়ার পলিসি গ্রুপ আইডি লিখে।

সিস্টেমের বর্তমান শক্তি নীতি VHAL ছাড়া অন্য মডিউল দ্বারা পরিবর্তন করা যেতে পারে। সেক্ষেত্রে, গাড়ির পাওয়ার পলিসি ডেমন VHAL-এ পরিবর্তনটি জানানোর জন্য CURRENT_POWER_POLICY বৈশিষ্ট্য আপডেট করে।

নেটিভ প্রক্রিয়ার সাথে মিথস্ক্রিয়া

উপরে উল্লিখিত হিসাবে, কার পাওয়ার পলিসি ডেমন সিস্টেম লেয়ারে চলে এবং পাওয়ার পলিসি ম্যানেজমেন্টের ক্ষেত্রে, ফ্রেমওয়ার্ক লেয়ারে চলমান CPMS-এর মতো প্রায় একই কার্যকারিতা প্রদান করে। এছাড়াও, অনুমান করুন যে গাড়ির শক্তি নীতি ডেমন এবং CPMS সম্পূর্ণরূপে সিঙ্ক করা হয়েছে৷

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

ICarPowerPolicyServer.aidl

package android.frameworks.automotive.powerpolicy;

import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter;
import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback;
import android.frameworks.automotive.powerpolicy.PowerComponent;

/**
 * ICarPowerPolicyServer is an interface implemented by the power policy daemon.
 * VHAL changes the power policy and the power policy daemon notifies the change to registered
 * subscribers. When subscribing to policy changes, a filter can be specified so that the registered
 * callbacks can listen only to a specific power component's change.
 */

@VintfStability
interface ICarPowerPolicyServer {
  /**
   * Gets the current power policy.
   */
  CarPowerPolicy getCurrentPowerPolicy();

  /**
   * Gets whether the power component is turned on or off.
   *
   * @param componentId Power component ID defined in PowerComponent.aidl to check power state.
   * @return True if the component's power state is on.
   */
  boolean getPowerComponentState(in PowerComponent componentId);

  /**
   * Subscribes to power policy change.
   * Notification is sent to the registered callback when the power policy changes and the power
   * state of the components which the callback is interested in changes.
   *
   * @param callback Callback that is invoked when the power policy changes.
   * @param filter The list of components which the callback is interested in.
   */
  void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback,
      in CarPowerPolicyFilter filter);

  /**
   * Unsubscribes from power policy change.
   *
   * @param callback Callback that doesn't want to receive power policy change.
   */
  void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);
}

ICarPowerPolicyChangeCallback.aidl

package android.frameworks.automotive.powerpolicy;

import android.frameworks.automotive.powerpolicy.CarPowerPolicy;

/**
 * ICarPowerPolicyChangeCallback is notified when a power policy changes.
 */

@VintfStability
oneway interface ICarPowerPolicyChangeCallback {
  /**
   * Called when a power policy is fully changed.
   *
   * @param policy The current policy.
   */
  void onPolicyChanged(in CarPowerPolicy policy);
}

জাভা মডিউলগুলির সাথে মিথস্ক্রিয়া

CarPowerManager পাওয়ার পলিসি ম্যানেজমেন্ট সক্ষম করার পদ্ধতি প্রদান করে:

  • বর্তমান শক্তি নীতি পান।
  • বর্তমান শক্তি নীতি গ্রুপ পান
  • একটি নতুন শক্তি নীতি প্রয়োগ করুন
  • একটি নতুন শক্তি নীতি গোষ্ঠী সেট করুন

শুধুমাত্র সিস্টেম-সুবিধাপ্রাপ্ত মডিউল পদ্ধতিগুলি ব্যবহার করতে পারে। যে মডিউলগুলি পাওয়ার পলিসি প্রয়োগ করার সময় জানাতে চায়, সেগুলি CarPowerManager এ পাওয়ার পলিসি পরিবর্তন শ্রোতাদের নিবন্ধন করতে পারে৷