Bluetooth upgrade library

3.1 Functional Overview

The SDK upgrade function is only responsible for firmware upgrade. Firmware version determination and firmware download are not handled. Pay attention to the integrity of firmware downloads, pass in firmware local sandbox paths during upgrades, monitor upgrade progress and completion status, and error proxy callbacks. The current version of the upgrade library adds nordic, realtk, apollo platforms. The upgrade management library (IDOBlueUpdate) depends on the Bluetooth protocol library (IDOBlueProtocol), so before using the upgrade management library, import the Bluetooth protocol library first.。

3.2 Corresponding function table

//Device update
funcTable4Model.deviceUpdate

3.3 Upgrade initialization

Objc:

[IDOUpdateFirmwareManager shareInstance].delegate = self;
[IDOUpdateFirmwareManager shareInstance].updateType = IDO_NORDIC_PLATFORM_TYPE;

Swift:

IDOUpdateFirmwareManager.shareInstance().delegate = self;
IDOUpdateFirmwareManager.shareInstance().updateType = IDO_UPDATE_PLATFORM_TYPE.NORDIC_PLATFORM_TYPE;

3.4 Parameter Description

Parameters illustrate Remarks
packagePath Firmware package local path local sandbox path
errorCode upgrade error code readonly
state upgrade status readonly
updateType Upgrade platform type Support nordic、realtk、apollo

3.5 basic method

Objc:

//startUpdate
[IDOUpdateFirmwareManager startUpdate];

Swift:

//startUpdate
IDOUpdateFirmwareManager.startUpdate();

3.6 proxy method

Objc:

<IDOUpdateManagerDelegate>
- (NSString *)currentPackagePathWithUpdateManager:(IDOUpdateFirmwareManager *)manager
{
   // Firmware package local storage path
    return filePath;
}

- (void)updateManager:(IDOUpdateFirmwareManager *)manager
                state:(IDO_UPDATE_STATE)state
{
    if (state == IDO_UPDATE_COMPLETED) {
        //update completed
    }else if state == IDO_UPDATE_DID_ENTER_OTA{
        //enter ota mode
    }else if state == IDO_UPDATE_STARTING {
        //Upgrading
    }
}

- (void)updateManager:(IDOUpdateFirmwareManager *)manager updateError:(NSError *)error
{
   // upgrade unsuccessful
}

- (void)updateManager:(IDOUpdateFirmwareManager *)manager
             progress:(float)progress
              message:(NSString *)message
{
 // Upgrade progress (0-1)
}

@optional
- (IDO_UPDATE_DFU_FIRMWARE_TYPE)selectDfuFirmwareTypeWithUpdateManager:(IDOUpdateFirmwareManager * _Nullable)manager
{
    // Upgrade nordic application Type
    return IDO_DFU_FIRMWARE_APPLICATION_TYPE;
    // Upgrade nordic bootloader Type
    return IDO_DFU_FIRMWARE_BOOTLOADER_TYPE;
}

- (IDO_REALTK_UPDATE_TYPE)selectRealtkTypeWithUpdateManager(IDOUpdateFirmwareManager *_Nullable)manager
                        supportOtaMode:(BOOL)isOtaMode
                     supportSilentMode:(BOOL)isSilentMode
{
  // Upgrade realtk main control program
  return IDO_NORMAL_MODE_UPDATE_TYPE;
  // Upgrade realtk flash file
  return IDO_SILENT_MODE_UPDATE_TYPE;
}

- (IDO_DATA_FILE_TRAN_TYPE)selectFileTranTypeUpdateManager:(IDOUpdateFirmwareManager *_Nullable)manager
{
    return IDO_DATA_FILE_TRAN_DIAL_TYPE;
}

- (IDO_DATA_TRAN_COMPRESSION_TYPE)fileTranCompressionTypeUpdateManager:(IDOUpdateFirmwareManager *)manager
{
    return IDO_DATA_TRAN_COMPRESSION_FASTLZ_TYPE;
}

- (NSString * _Nullable)fileTranNameUpdateManager:(IDOUpdateFirmwareManager *_Nullable)manager
{
   //Firmware upgrade name: @".fw" Image resource name: @".fzbin" font name:@".bin" language:@".lang",bt upgrade:@".bt"
    return @".bt";
}

- (NSInteger)setTransferNumberPacketsUpdateManager:(IDOUpdateFirmwareManager *)manager
{
   //default value is 10
    return 10;
}

Swift:

IDOUpdateManagerDelegate
func currentPackagePath(withUpdate manager: IDOUpdateFirmwareManager?) -> String? {
    // Firmware package local storage path
    return filePath;
}

func update(_ manager: IDOUpdateFirmwareManager?, progress: Float, message: String?) {
   // Upgrade progress (0-1)
}

func update(_ manager: IDOUpdateFirmwareManager?, state: IDO_UPDATE_STATE) {
    if state == IDO_UPDATE_STATE.COMPLETED {
        //update completed
    }else if state == IDO_UPDATE_STATE.DID_ENTER_OTA{
        //enter ota mode
    }else if state == IDO_UPDATE_STATE.STARTING {
        //Upgrading
    }
}

func update(_ manager: IDOUpdateFirmwareManager?, updateError error: Error?) {
   // upgrade unsuccessful
}

func selectDfuFirmwareType(withUpdate manager: IDOUpdateFirmwareManager?) -> IDO_UPDATE_DFU_FIRMWARE_TYPE {
    // Upgrade nordic application Type
    return IDO_UPDATE_DFU_FIRMWARE_TYPE.DFU_FIRMWARE_APPLICATION_TYPE;
    // Upgrade nordic bootloader Type
    return IDO_UPDATE_DFU_FIRMWARE_TYPE.DFU_FIRMWARE_BOOTLOADER_TYPE;
}

func selectRealtkType(withUpdate manager: IDOUpdateFirmwareManager?, supportOtaMode isOtaMode: Bool, supportSilentMode isSilentMode: Bool) -> IDO_REALTK_UPDATE_TYPE {
    // Upgrade realtk main control program
    return IDO_REALTK_UPDATE_TYPE.NORMAL_MODE_UPDATE_TYPE;
    // Upgrade realtk flash file
    return IDO_REALTK_UPDATE_TYPE.SILENT_MODE_UPDATE_TYPE;
}

 func selectFileTranTypeUpdate(_ manager: IDOUpdateFirmwareManager?) -> IDO_DATA_FILE_TRAN_TYPE {
        return .DIAL_TYPE
  }

    func fileTranCompressionTypeUpdate(_ manager: IDOUpdateFirmwareManager?) -> IDO_DATA_TRAN_COMPRESSION_TYPE {
        return .FASTLZ_TYPE
  }

   func fileTranNameUpdate(_ manager: IDOUpdateFirmwareManager?) -> String? {
     //Firmware upgrade name: @".fw" Image resource name: @".fzbin" font name:@".bin" language:@".lang",bt upgrade:@".bt"
        return "bt"
  }

   func setTransferNumberPacketsUpdate(_ manager: IDOUpdateFirmwareManager?) -> Int {
        return 10
   }

3.7 Demo Upgrade function entry

Copyright © 2015-2020 IDO. All rights reserved. all right reserved,powered by GitbookModify Date: 2023-12-18 10:04:13

results matching ""

    No results matching ""