Ana içeriğe geç

Kamera Firmware Güncellemesi

Camera OTA, desteklenen cihazın kamera modülündeki firmware’i günceller. Cihazın ana firmware güncellemesinden ayrı bir işlemdir.

Ana uygulama uyumlu bir yerel kamera firmware paketi sağlar. SDK daha sonra cihaz erişim noktasını yapılandırma, Camera OTA moduna geçme, yerel HTTP sunucusunu başlatma, firmware URL’sini cihaza gönderme, paketi aktarma ve kamera firmware’ini yazma aşamalarının tamamını koordine eder. Geçerli işlemi göstermek için aşama callback’lerini kullanın; kesin güncelleme sonucu olarak nihai completion işleyicisini kabul edin.

Animated workflow

Camera OTA aktarım akışı

Yerel paket, ana uygulamadaki doğrulamadan SDK koordinasyonuna; ardından aktarım, firmware yazma ve kesin sonuca ilerler.

Ana uygulama

Paketi Doğrula

Bütünlüğü, kamera modeli uyumluluğunu ve yerel yolun okunabilirliğini doğrulayın.

SDK + cihaz

Erişim Noktasını Yapılandır

Camera OTA akışında kullanılacak cihaz ağını hazırlayın.

Cihaz

OTA Moduna Gir

Kamera modülünü firmware güncelleme moduna geçirin.

SDK

Erişim Noktasına Bağlan

Aşamalı güncelleme oturumu için sunulan SSID’ye bağlanın.

SDK

HTTP Sunucusunu Başlat

Seçilen yerel firmware paketini cihaza sunun.

SDK → cihaz

Firmware URL’sini Gönder

Cihazın isteyeceği yerel HTTP URL’sini iletin.

İlerleme aşaması

Firmware’i Aktar

Cihaz firmware baytlarını indirirken paketi sunun.

.transferring · 0...100
İlerleme aşaması

Firmware’i Yaz

Kamera modülü aktarılan firmware’i yazar. İşlemi kesmeyin.

.flashing · 0...100
Kesin sonuç

Nihai Tamamlanma

Aktarım ilerlemesini değil, nihai callback’i güncelleme sonucu olarak kullanın.

Kesin sonuç için nihai completion callback’ini izleyin.

Ön Koşullar

  • Cihaz bağlıdır ve DeviceCameraOtaAPI protokolüne uyar.
  • Yerel firmware yolu okunabilir ve paket kamera donanımıyla uyumludur.
  • Uygulama cihaz erişim noktasına bağlanabilir, yerel ağa erişebilir ve yerel HTTP sunucusunu kullanılabilir durumda tutabilir.
  • Media File Import, Camera OTA veya diğer erişim noktası iş akışlarının eşzamanlı çalışmasını önleyin.

AI desteğiyle uygulayın

AI ile geliştirin

Bu iş akışını AI ile uygulayın

Resmî “AIBuds Kamera Ürün Yazılımını Güncelleme” becerisini kullanarak iş akışını uygulamanıza uyarlayın.

https://docs-aibuds.github.io/tr/skills/update-aibuds-camera-firmware adresini okuyup yönergeleri izleyin. Bu beceriyle “AIBuds Kamera Ürün Yazılımını Güncelleme” iş akışını iOS projesinde uygulayıp doğrulayın.
Resmî beceriyi görüntüle

API Referansı

Framework

AIBuds.xcframework

İçe Aktarma

Swift
import AIBuds
import AIBudsFoundation

Protokol

DeviceCameraOtaAPI protokolü DeviceAPI protokolünden devralır ve şu anda Camera OTA iş akışının tamamı için tek bir örnek yöntemi sunar.

Örnek Yöntemi

Swift
/// Start camera OTA upgrade.
///
/// - Parameters:
///   - filePath: The readable local path of the camera firmware file.
///   - configureHotspotStartingHandler: Called when hotspot configuration starts.
///   - hotspotConfigureCompletionHandler: Called when hotspot configuration completes.
///     - success: `true` if configuration succeeded; otherwise `false`.
///     - error: The failure information, or `nil` if configuration succeeded.
///   - enterCameraOtaModeStartingHandler: Called when entry into camera OTA mode starts.
///   - enterCameraOtaModeCompletedHandler: Called when entry into camera OTA mode completes.
///     - success: `true` if the device entered OTA mode; otherwise `false`.
///     - error: The failure information, or `nil` if entry succeeded.
///   - waitingForHotspotOpenHandler: Called while waiting for the device hotspot to open.
///   - connectDeviceHotspotStartingHandler: Called when connecting to the device hotspot starts.
///     - ssid: The SSID of the device hotspot.
///   - deviceHotspotConnectCompletionHandler: Called when the hotspot connection completes.
///     - success: `true` if the connection succeeded; otherwise `false`.
///     - error: The failure information, or `nil` if the connection succeeded.
///   - httpServerStartingHandler: Called when the local HTTP server is starting.
///   - httpServerStartCompletionHandler: Called when the HTTP server start attempt completes.
///     - success: `true` if the server started; otherwise `false`.
///     - error: The failure information, or `nil` if the server started.
///   - sendingFirmwareUrlHandler: Called before sending the firmware URL to the device.
///     - firmwareUrl: The local HTTP URL that will be sent.
///   - firmwareUrlSendCompletionHandler: Called when firmware URL delivery completes.
///     - success: `true` if the URL was sent; otherwise `false`.
///     - error: The failure information, or `nil` if delivery succeeded.
///   - startCompletionHandler: Called when the Camera OTA start command completes.
///     - success: `true` if the update started; otherwise `false`.
///     - error: The failure information, or `nil` if the update started.
///   - fileTransferStartedHandler: Called when firmware transfer starts.
///   - fileTransferCompletedHandler: Called when firmware transfer completes.
///   - waitingForFlashingHandler: Called while the device is preparing to flash.
///   - flashingStartedHandler: Called when firmware flashing starts.
///   - flashingCompletedHandler: Called when firmware flashing completes.
///   - phaseProgressHandler: Reports progress for transfer and flashing.
///     - phase: `.transferring` or `.flashing`.
///     - progress: The phase progress in the range `0...100`.
///   - completionHandler: Called when the complete Camera OTA workflow finishes.
///     - success: `true` if the upgrade succeeded; otherwise `false`.
///     - error: The failure information, or `nil` if the upgrade succeeded.
func startCameraOta(
    withFilePath filePath: String,
    configureHotspotStartingHandler: AIBudsCameraOtaConfigureHotspotStartingHandler?,
    hotspotConfigureCompletionHandler: AIBudsCameraOtaHotspotConfigureCompletionHandler?,
    enterCameraOtaModeStartingHandler: AIBudsEnterCameraOtaModeStartingHandler?,
    enterCameraOtaModeCompletedHandler: AIBudsEnterCameraOtaModeCompletionHandler?,
    waitingForHotspotOpenHandler: AIBudsCameraOtaStartingToWaitForHotspotOpenHandler?,
    connectDeviceHotspotStartingHandler: AIBudsCameraOtaConnectDeviceHotspotStartingHandler?,
    deviceHotspotConnectCompletionHandler: AIBudsCameraOtaDeviceHotspotConnectCompletionHandler?,
    httpServerStartingHandler: AIBudsCameraOtaHttpServerStartingHandler?,
    httpServerStartCompletionHandler: AIBudsCameraOtaHttpServerStartCompletionHandler?,
    sendingFirmwareUrlHandler: AIBudsCameraOtaSendingFirmwareUrlHandler?,
    firmwareUrlSendCompletionHandler: AIBudsCameraOtaFirmwareUrlSendCompletionHandler?,
    startCompletionHandler: AIBudsCameraOtaStartCompletionHandler?,
    fileTransferStartedHandler: AIBudsCameraOtaFileTransferStartedHandler?,
    fileTransferCompletedHandler: AIBudsCameraOtaFileTransferCompletedHandler?,
    waitingForFlashingHandler: AIBudsCameraOtaWaitingForFlashingHandler?,
    flashingStartedHandler: AIBudsCameraOtaFlashingStartedHandler?,
    flashingCompletedHandler: AIBudsCameraOtaFlashingCompletedHandler?,
    phaseProgressHandler: AIBudsCameraOtaPhaseProgressHandler?,
    completionHandler: AIBudsCameraOtaCompletionHandler?
)

API Referansındaki startCameraOta öğesine bakın.

Dönüş Değeri

Bu yöntem doğrudan değer döndürmez. Başlangıç, aşama geçişleri, ilerleme ve nihai sonuç sağlanan işleyiciler aracılığıyla iletilir.

İş Akışı Aşamaları

Bunlar Camera OTA iş akışındaki callback aşamalarıdır; CameraOtaProgressPhase değerleri değildir.

Aşamaİlgili işleyiciler
Erişim noktasını yapılandırmaconfigureHotspotStartingHandler, hotspotConfigureCompletionHandler
Camera OTA moduna girmeenterCameraOtaModeStartingHandler, enterCameraOtaModeCompletedHandler
Cihaz erişim noktasına bağlanmawaitingForHotspotOpenHandler, connectDeviceHotspotStartingHandler, deviceHotspotConnectCompletionHandler
Yerel HTTP sunucusunu başlatmahttpServerStartingHandler, httpServerStartCompletionHandler
Firmware URL’sini göndermesendingFirmwareUrlHandler, firmwareUrlSendCompletionHandler
Güncellemeyi başlatmastartCompletionHandler
Firmware’i aktarmafileTransferStartedHandler, fileTransferCompletedHandler
Hazırlama ve firmware yazmawaitingForFlashingHandler, flashingStartedHandler, flashingCompletedHandler
TamamlamacompletionHandler

İlerleme Aşamaları

CameraOtaProgressPhase tam olarak iki genel değer içerir. progress argümanı, bildirilen aşama için 0 ile 100 arasında bir tamsayıdır.

SwiftObjective-CHam değerAnlamı
.transferringAIBudsCameraOtaProgressPhaseTransferring1Firmware dosyası aktarım ilerlemesi.
.flashingAIBudsCameraOtaProgressPhaseFlashing2Kamera firmware güncelleme ilerlemesi.

Kullanım Örnekleri

Örnekler SDK Demo’sunun sunduğu her callback’i korur. Üretim kodunda kullanıcı arayüzünü ana kuyrukta güncelleyin.

Swift
guard let cameraOtaDevice = device as? DeviceCameraOtaAPI else {
    print("Camera OTA is not supported")
    return
}

cameraOtaDevice.startCameraOta(
    withFilePath: filePath,
    configureHotspotStartingHandler: {
        print("Configuring device hotspot")
    },
    hotspotConfigureCompletionHandler: { success, error in
        print(
            success
                ? "Hotspot configured"
                : "Hotspot configuration failed: \(error?.localizedDescription ?? "Unknown error")")
    },
    enterCameraOtaModeStartingHandler: {
        print("Entering Camera OTA mode")
    },
    enterCameraOtaModeCompletedHandler: { success, error in
        print(
            success
                ? "Camera OTA mode ready"
                : "Could not enter Camera OTA mode: \(error?.localizedDescription ?? "Unknown error")"
        )
    },
    waitingForHotspotOpenHandler: {
        print("Waiting for device hotspot")
    },
    connectDeviceHotspotStartingHandler: { ssid in
        print("Connecting to \(ssid)")
    },
    deviceHotspotConnectCompletionHandler: { success, error in
        print(
            success
                ? "Device hotspot connected"
                : "Hotspot connection failed: \(error?.localizedDescription ?? "Unknown error")")
    },
    httpServerStartingHandler: {
        print("Starting local HTTP server")
    },
    httpServerStartCompletionHandler: { success, error in
        print(
            success
                ? "HTTP server ready"
                : "HTTP server failed: \(error?.localizedDescription ?? "Unknown error")")
    },
    sendingFirmwareUrlHandler: { firmwareURL in
        print("Sending firmware URL: \(firmwareURL)")
    },
    firmwareUrlSendCompletionHandler: { success, error in
        print(
            success
                ? "Firmware URL sent"
                : "URL delivery failed: \(error?.localizedDescription ?? "Unknown error")")
    },
    startCompletionHandler: { success, error in
        print(
            success
                ? "Camera OTA started"
                : "Camera OTA could not start: \(error?.localizedDescription ?? "Unknown error")")
    },
    fileTransferStartedHandler: {
        print("Firmware transfer started")
    },
    fileTransferCompletedHandler: {
        print("Firmware transfer completed")
    },
    waitingForFlashingHandler: {
        print("Waiting for flashing")
    },
    flashingStartedHandler: {
        print("Firmware flashing started")
    },
    flashingCompletedHandler: {
        print("Firmware flashing completed")
    },
    phaseProgressHandler: { phase, progress in
        switch phase {
        case .transferring:
            print("Transfer: \(progress)%")
        case .flashing:
            print("Flashing: \(progress)%")
        }
    },
    completionHandler: { success, error in
        if success {
            print("Camera OTA completed successfully")
        } else {
            print("Camera OTA failed: \(error?.localizedDescription ?? "Unknown error")")
        }
    }
)

Hata Yönetimi

Camera OTA hataları AIBudsSDK.CameraOtaErrorDomain ile SdkCameraOtaErrorCode kullanır. Genel enum; yerel dosya doğrulama, ağ/erişim noktası, görev yaşam döngüsü, OTA moduna giriş ve firmware URL’si iletim hatalarını kapsar.

KodlarTipik durum
unknown, networkRequestFailed, networkTimeoutSDK hatayı daha ayrıntılı sınıflandıramaz veya ağ işlemi başarısız olur.
cameraOtaFileNotFound, invalidCameraOtaFile, cameraOtaTaskCreateFailedDueToFileNotFoundSeçilen yerel firmware yolu yoktur veya paket geçersizdir.
hotspotDisconnectedDuringTransfer, invalidHotspotConfigCihaz erişim noktası güvenilir biçimde kullanılamaz.
stageTwoTimeout, interruptedByShutdownOrLowBatteryFirmware yazma işlemi tamamlanmaya yakın takılır veya cihaz güncellemeyi keser.
cameraOtaTaskAlreadyRunningBaşka bir Camera OTA görevi etkindir.
4003...4009Görev; cihaz bağlantısı, zaman aşımı, erişim noktası kurulumu, OTA moduna giriş, HTTP sunumu veya URL iletimi sırasında başarısız olur.
5001...5010Cihaz komut, depolama, izin, kanal veya durum koşulları nedeniyle OTA moduna girişi ya da firmware URL’si iletimini reddeder.

Genel bir güncelleme hatası yerine başarısız olan iş akışı aşamasını gösterin. Firmware yazma başladıktan sonra otomatik yeniden denemeyin; bağlantıyı kesmeyin, cihazı kapatmayın veya başka bir erişim noktası iş akışı başlatmayın. SDK şu anda kesin yeniden deneme sınırları tanımlamaz; başka bir paket sunmadan önce cihazın kurtarma durumunu ve kamera firmware sürümünü doğrulayın.

En İyi Uygulamalar

  1. API’yi çağırmadan önce yerel dosyanın varlığını doğrulayın; paketin özgünlüğü ve kamera modeli uyumluluğu ana ürünün sorumluluğundadır.
  2. Media File Import, Camera OTA veya diğer erişim noktası iş akışlarının eşzamanlı çalışmasını önleyin.
  3. Nihai tamamlanmaya kadar uygulamayı etkin ve yerel HTTP sunucusunu erişilebilir tutun.
  4. Callback’ler başka bir kuyruktan gelebileceği için kullanıcı arayüzü güncellemelerini ana kuyruğa yönlendirin.
  5. startCompletionHandler değerini nihai güncelleme başarısı olarak değil, OTA işleminin başlatılma sonucu olarak değerlendirin.
  6. Nihai sonuç için completionHandler kullanın ve yeniden bağlandıktan sonra kamera firmware durumunu doğrulayın.

Notlar

  • Camera OTA yerel firmware yolu kullanır; SDK uzak güncelleme servisini sorgulamaz veya paketi indirmez.
  • phaseProgressHandler yalnızca aktarım ve firmware yazma ilerlemesini bildirir. Diğer iş akışı aşamaları kendi callback’lerini kullanır.
  • Aktarım ilerlemesinin 100 olması nihai Camera OTA sonucu değildir; firmware yazma ve nihai tamamlanma aşamaları devam eder.
  • Güvenli otomatik yeniden deneme davranışı henüz genel SDK sözleşmesinde tanımlanmamıştır.