ক্যামেরা অনবোর্ডিংয়ের জন্য কমিশনিং-পরবর্তী বৈশিষ্ট্য

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

OtaSoftwareUpdateRequestor বৈশিষ্ট্য

এই বৈশিষ্ট্যটি ক্যামেরা ডিভাইসে একটি 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() অপারেটর নিশ্চিত করে যে শৃঙ্খলে পরবর্তী কোডটি কেবল তখনই প্রতিক্রিয়া দেখায় যখন বৈশিষ্ট্যের অবস্থা আসলে পরিবর্তিত হয়, যা এটিকে ধ্রুবক পোলিং এর চেয়ে বেশি কার্যকর করে তোলে।

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

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

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

কনফিগারেশন সম্পন্ন বৈশিষ্ট্য

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

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