ক্যামেরা অনবোর্ডিংয়ের জন্য কমিশন করার পরে থাকা ট্রেইট

ডিভাইস কমিশন করার পরে যেসব বৈশিষ্ট্য ব্যবহার করা যেতে পারে সেগুলি হল:

OtaSoftwareUpdateRequestor trait

   Android-এর জন্য Sample App-এ প্রয়োগ করা হয়েছে   

এই ট্রেট ক্যামেরা ডিভাইসে OTA সফ্টওয়্যার আপডেট মনিটর করার জন্য একটি ইন্টারফেস প্রদান করে। কমিশন করা হয়ে গেলে, ক্যামেরা আপডেট শুরু করে এবং অ্যাপকে এর স্ট্যাটাস জানায়। অ্যাপটি সফ্টওয়্যার আপডেট সম্পূর্ণ হয়েছে বলে স্ট্যাটাস পেলে, ক্যামেরা লাইভ স্ট্রিম করা শুরু করতে পারে।

নিম্নলিখিত স্যাম্পেল কোড ও ব্যাখ্যা থেকে বোঝা যায় যে কীভাবে এই ট্রেট ব্যবহার করা যায়।

withTimeout(OTA_TIMEOUT_MS) {
  device.type(OtaRequestorDevice)
    .mapNotNull { it?.trait(OtaSoftwareUpdateRequestor) }
    .distinctUntilChanged()
    .transformWhile { trait ->
      emit(trait)
      !isTerminalState(trait.updateState)
    }
    .collect { trait ->
      updateState = trait.updateState
      updateStateProgress = trait.updateStateProgress
    }
}
  • টাইম-আউট: withTimeout মনিটরিং প্রসেসের জন্য সর্বাধিক সময়সীমা (OTA_TIMEOUT_MS) নির্ধারণ করে। এই সময়ের মধ্যে আপডেট সম্পূর্ণ না হলে, টাইম-আউট হয়ে যায়।

  • ট্রেটের পরিবর্তন লক্ষ্য করা: .distinctUntilChanged() অপারেটর নিশ্চিত করে যে চেনের পরবর্তী কোড শুধুমাত্র তখনই প্রতিক্রিয়া জানাবে যখন ট্রেটের স্টেট আসলে পরিবর্তিত হবে, যা এটিকে ধ্রুবক পোলিংয়ের চেয়ে আরও বেশি কার্যকর করে তোলে।

  • সম্পূর্ণ না হওয়া পর্যন্ত প্রসেস করা: OTA updateState যদি টার্মিনাল স্টেটে (যেমন, সম্পূর্ণ হওয়া বা না হওয়া) না থাকে, তাহলে .transformWhile অপারেটর আপডেট প্রসেস করা চালিয়ে যায়।

  • সংগ্রহ করার স্ট্যাটাস: প্রতিটি স্টেট পরিবর্তনের জন্য, .collect ব্লকটি এক্সিকিউট করা হয় যাতে updateState এবং updateStateProgress ভেরিয়েবলগুলিকে ট্রেটের সর্বশেষ ভ্যালু দিয়ে আপডেট করা যায়।

আরও তথ্যের জন্য, OtaSoftwareUpdateRequestor ট্রেট রেফারেন্স দেখুন।

ConfigurationDone ট্রেইট

ক্যামেরা অ্যাক্টিভেশনের জন্য এই ট্রেট প্রয়োজন নেই, তবে এটি অ্যাপকে ট্র্যাক করতে দেয় যে ডিভাইসটি কখন সম্পূর্ণ সেট-আপ করা হয়েছে এবং ব্যবহারযোগ্য হয়েছে। এটি করার জন্য AppConfigurationComplete অ্যাট্রিবিউটকে true হিসেবে সেট করতে হয়। OtaSoftwareUpdateRequestor ট্রেটের পরে এই ট্রেট ব্যবহার করা উচিত।

device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }