ড্রাইভারইউআই

ঐতিহ্যগতভাবে ক্লাস্টার UI স্টিয়ারিং হুইলের পিছনে একটি আলাদা ডিসপ্লেতে রাখা হতো। OEM-রা ধীরে ধীরে ক্লাস্টার এবং IVI-কে একটি একক ডিসপ্লেতে একত্রিত করছে। এই সম্মিলিত UI-টিই হলো DriverUI।

ড্রাইভারইউআই

চিত্র ১. ড্রাইভারইউআই।

DriverUI হলো একটি অ্যান্ড্রয়েড সিস্টেম অ্যাপ যা হাই অ্যাভেইলেবিলিটি রেন্ডারার (HAR) দ্বারা প্রদর্শিত নিরাপত্তা-সম্পর্কিত বা নিয়ন্ত্রক উপাদানগুলো ব্যতীত সম্পূর্ণ ইন্সট্রুমেন্ট ক্লাস্টার ডিসপ্লে রেন্ডার করে। DriverUI মিডিয়া প্লেব্যাক, টেলিফোন কল, ম্যাপ, নেভিগেশন এবং আরও অনেক কিছু সম্পর্কিত তথ্য প্রদর্শন করে এবং Automotive Design for Compose বাস্তবায়ন করে।

ডিফল্ট ক্লাস্টার অ্যাক্টিভিটি হিসেবে DriverUI

DriverUI অ্যান্ড্রয়েডে একটি বিশেষাধিকারপ্রাপ্ত ক্লাস্টার অ্যাপ হিসেবে চলে এবং AAOS এটিকে স্বয়ংক্রিয়ভাবে চালু করে।

AAOS ইন্সট্রুমেন্ট ক্লাস্টার তৈরি করতে ClusterHomeManager ক্লাস ব্যবহার করে, যা Cluster2 নামেও পরিচিত। এই ক্লাসটি একটি ইন্সট্রুমেন্ট ক্লাস্টার ইমপ্লিমেন্টেশন শনাক্ত করার জন্য প্রয়োজনীয় কনফিগারেশন এবং AAOS কীভাবে এর সাথে কাজ করে তা নির্দিষ্ট করে। গুগল Cluster2 API-এর রেফারেন্স ইমপ্লিমেন্টেশন সরবরাহ করে।

প্ল্যাটফর্ম

আপনি এসডিভি-তে ডিসপ্লে সেফটি তৈরি এবং চালাতে পারেন। সফটওয়্যার ডিফাইন্ড ভেহিকেল (এসডিভি) প্ল্যাটফর্ম:

  • দুটি গেস্ট ভিএম প্রয়োজন।
  • একটি গেস্ট ভিএম-এ এসডিভি মিডিয়া (যা র‍্যাপিড বুট ভিএম নামেও পরিচিত)-তে এইচএআর (HAR) চালায়।
  • অন্য একটি গেস্ট SDV IVI VM-এ DriverUI চালায়।
  • SDV Media VM-এ সেফটি মনিটর চালায়।

এসডিভি প্ল্যাটফর্ম স্থাপত্য

চিত্র ২. এসডিভি প্ল্যাটফর্মের স্থাপত্য।

HAR এবং DriverUI আউটপুট মিশ্রিত করুন

HAR এবং DriverUI তাদের UI রেন্ডার করার জন্য আলাদা ডিসপ্লে ব্যবহার করে। এই দুটি আউটপুট কম্পোজিট এবং DriverUI-এর কাছে একটি একক চিত্র হিসাবে প্রদর্শিত হয়।

এটি করার জন্য, HAR, DriverUI থেকে আসা হার্টবিট বার্তার উপর ভিত্তি করে অ্যান্ড্রয়েড আউটপুট প্রদর্শিত হওয়ার স্থানগুলোর স্বচ্ছতা নিয়ন্ত্রণ করে। যখন DriverUI উপলব্ধ থাকে না, তখন HAR হার্টবিটের অভাব শনাক্ত করে DriverUI-এর বিভিন্ন অংশকে অস্বচ্ছ করে দেয় এবং প্লেসহোল্ডার প্রদর্শন করে। হার্টবিট পাওয়া গেলে, প্লেসহোল্ডারগুলো সরিয়ে দেওয়া হয় এবং DriverUI-এর অংশগুলো স্বচ্ছ হয়ে যায়।

HAR এবং DriverUI গঠন

চিত্র ৩. HAR এবং DriverUI-এর গঠন।

ড্রাইভারইউআই এবং এইচএআর যোগাযোগ

DriverUI এবং HAR রিমোট প্রসিডিউর কল (RPC) ব্যবহার করে একে অপরের সাথে যোগাযোগ করে। হার্টবিট মেসেজ হলো RPC চ্যানেলের মাধ্যমে প্রেরিত ডেটার একটি উদাহরণ এবং এর একটি ফিল্ড হিসেবে টাইমস্ট্যাম্প থাকে।

gRPC, RPC-এর জন্য ব্যবহৃত হয়। SDV-তে, SDV comms, DriverUI থেকে HAR-এর সাথে একটি চ্যানেল আবিষ্কার ও স্থাপন করার জন্য SDV Gateway Client প্রদান করে। gRPC সার্ভিসটি একটি প্রোটোকল বাফার ফাইল সংজ্ঞায়িত করে:


// Heartbeat.
rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse) {}

// Document switched in the DriverUI.
rpc DocumentSwitched(DocumentSwitchedRequest) returns (DocumentSwitchedResponse) {}

// Document updated in the DriverUI. Unary RPC.
rpc DocumentUpdated(DocumentUpdatedRequest) returns (DocumentUpdatedResponse) {}

// Document updated in the DriverUI. Requests are streamed with each request
// containing a part of the document and the entire document is assembled from these
// chunks by the server.
rpc DocumentUpdatedStreaming(stream DocumentUpdatedRequest) returns (DocumentUpdatedResponse) {}

/// Request for HAR to change design tokens.
rpc DesignTokenUpdate(DesignTokenUpdateRequest) returns (DesignTokenUpdateResponse) {}

// Request to change the current locale used in HAR.
rpc LocaleUpdate(LocaleUpdateRequest) returns (LocaleUpdateResponse) {}

// Requests to swap a certain variant at a Figma node.
rpc ChangeVariant(ChangeVariantRequest) returns (ChangeVariantResponse) {}

// Requests to change the container (display/root node) configuration (dpi, size) in HAR.
rpc ChangeContainerConfiguration(ChangeContainerConfigurationRequest) returns (ChangeContainerConfigurationResponse) {}

অনুরোধ এবং প্রতিক্রিয়ার বিস্তারিত বিবরণ ub-automotive সোর্স কোড রিপোজিটরির packages/apps/Car/DriverUI/proto/driverui.proto তে অবস্থিত ডিসপ্লে সেফটি সোর্সে রয়েছে।

SDV প্ল্যাটফর্মে, SDV Comms, DriverUI থেকে HAR-এ একটি gRPC চ্যানেল আবিষ্কার ও স্থাপন করার জন্য SDV Gateway Client প্রদান করে।

IVI টার্মিনাল ব্যবহার করে এই কমান্ডগুলো কার্যকর করলে SDV Media-তে বার্তা পাঠানো হয়, যা পুরো ক্লাস্টার জুড়ে থিম আপডেট শুরু করে দেয়।

adb shell cmd car_service inject-key -d 1 9 # Purple Theme
adb shell cmd car_service inject-key -d 1 8 # Blue Theme

DriverUI এবং HAR উভয় থিম পরিবর্তন করার জন্য RPC কমিউনিকেশন।

চিত্র ৪. DriverUI এবং HAR থিম উভয় পরিবর্তনের জন্য RPC যোগাযোগ।

ক্লাস্টারে মিডিয়া, মানচিত্র এবং টেলিফোনি তথ্য প্রদর্শন করুন

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

  1. মানচিত্র
  2. টেলিফোনি
  3. মিডিয়া

সিস্টেমটি ডিফল্ট মিডিয়া অবস্থার চেয়ে ম্যাপ নেভিগেশন বা সক্রিয় টেলিফোনি পরিষেবা দেখানোকে স্বয়ংক্রিয়ভাবে অগ্রাধিকার দেয়।

DriverUI-এর বিভিন্ন ডিসপ্লে অবস্থা নিম্নলিখিত চিত্রে দেখানো হয়েছে:

DriverUI সম্পূর্ণ ক্লাস্টারে মিডিয়া এবং টেলিফোনি বিভাগ প্রদর্শন করছে।

চিত্র ৫. সম্পূর্ণ ক্লাস্টারে মিডিয়া ও টেলিফোনি বিভাগ প্রদর্শনকারী ড্রাইভারইউআই।

কম্পোজ ইন্টিগ্রেশনের জন্য অটোমোটিভ ডিজাইন

DriverUI, Compose-এর জন্য Automotive Design প্রয়োগ করে, যার ফলে ডিজাইন (Figma) সরাসরি অ্যান্ড্রয়েড অ্যাপের মধ্যেই প্রদর্শন ও পরিমার্জন করা যায়। এই ইন্টিগ্রেশনটি রানটাইম পরিবেশে ডিজাইন ডকুমেন্ট রেন্ডার করার সুযোগ দিয়ে ডিজাইন ও ডেভেলপমেন্টের মধ্যকার ব্যবধান দূর করে।

ডিজাইন অ্যাসেট অ্যাক্সেস করুন

DriverUI-এর জন্য নমুনা ফিগমা ডকুমেন্টগুলো কোডবেসের অংশ। এই ডিজাইনগুলো অ্যাক্সেস এবং পরিবর্তন করতে:

  1. packages/apps/Car/DriverUI/src/main/assets/figma/*.dcf থেকে স্থানীয় Automotive Design for Compose DCF ডিজাইন ফাইলটি দিয়ে DriverUI চালু করুন।
  2. packages/apps/Car/DriverUI/src/main/assets/DriverUI.fig অ্যাসেট ফাইলটি খুঁজুন।
  3. মূল ডিজাইনগুলো দেখতে বা পরিবর্তন করতে এই ফাইলটি ফিগমাতে ইম্পোর্ট করুন।

কম্পোজ সংস্করণের জন্য অটোমোটিভ ডিজাইন

  • Gradle packages/apps/Car/libs/aaos-apps-gradle-project/gradle/libs.versions.toml ফাইলে designcompose জন্য নির্দিষ্ট করা Automotive Design for Compose সংস্করণটি ব্যবহার করে।
  • Automotive Design for Compose-এর রিলিজগুলো রিলিজ পেজে পাওয়া যাচ্ছে।

লাইভ আপডেট কনফিগারেশন

Automotive Design for Compose ডেভেলপমেন্ট মোডে লাইভ আপডেট সমর্থন করে, যার ফলে Figma-তে করা পরিবর্তনগুলো DriverUI-তে তাৎক্ষণিকভাবে রেন্ডার করা যায়। এটি দ্রুত টেস্টিং এবং ডিজাইনের পুনরাবৃত্তি চক্রকে ত্বরান্বিত করে।

DriverUI-এর জন্য ফিগমা টোকেন সেট করতে নিম্নলিখিত কমান্ডটি চালান:

adb shell am startservice \
  -n "com.android.car.driverui/com.android.designcompose.ApiKeyService" \
  -a setApiKey \
  -e ApiKey $FIGMA_ACCESS_TOKEN \
  --user 0

দ্বৈত ভিএম ডিজাইন ডকুমেন্ট সিঙ্ক্রোনাইজেশন

দুটি ভার্চুয়াল মেশিন (VM) সেটআপে, সামঞ্জস্য বজায় রাখার জন্য ডিজাইন আপডেটগুলো অবশ্যই সীমানা পেরিয়ে ছড়িয়ে পড়তে হবে।

  • DriverUI সর্বশেষ ফিগমা ডিজাইন ডকুমেন্টটি সংগ্রহ করে এবং এই পৃষ্ঠায় বিস্তারিতভাবে বর্ণিত gRPC যোগাযোগ চ্যানেলগুলো ব্যবহার করে HAR-এ প্রেরণ করে।
  • এর ফলে, সম্পূর্ণ ক্লাস্টারটি সর্বশেষ ফিগমা ডিজাইন ইটারেশন অনুযায়ী আপডেট হয়, যা উভয় ভিএম-কে ডিজাইন সোর্সের সাথে সিঙ্ক করে রাখে।

ফিগমা থেকে ড্রাইভারইউআই এবং এইচএআর-এ ডিজাইন ডকুমেন্টের লাইভ আপডেট।

চিত্র ৬। ফিগমা থেকে ড্রাইভারইউআই এবং এইচএআর-এ ডিজাইন ডকুমেন্টের লাইভ আপডেট।

gRPC চ্যানেল সুরক্ষিত করুন

gRPC-তে SSL এবং TLS ইন্টিগ্রেশন রয়েছে এবং এটি সার্ভারকে অথেন্টিকেট করতে ও ক্লায়েন্ট এবং সার্ভারের মধ্যে আদান-প্রদান হওয়া সমস্ত ডেটা এনক্রিপ্ট করতে SSL এবং TLS-এর ব্যবহারকে উৎসাহিত করে। ক্লায়েন্টদের পারস্পরিক অথেন্টিকেশনের জন্য সার্টিফিকেট প্রদানের ঐচ্ছিক ব্যবস্থা রয়েছে। gRPC অথেন্টিকেশন সম্পর্কে আরও তথ্যের জন্য, অথেন্টিকেশন (Authentication) দেখুন।