蓝牙升级库

3.1功能概述

SDK升级功能只负责固件升级。不处理固件版本确定和固件下载。注意固件下载的完整性,在升级期间传入固件本地沙箱路径,监视升级进度和完成状态,以及错误代理回调。升级库的当前版本添加了nordic、realtk、apollo平台。升级管理库(IDOBlueUpdate)是依赖蓝牙协议库(IDOBlueProtocol),所以在使用升级管理库前,先导入蓝牙协议库。

3.2对应功能表

//设备更新
funcTable4Model.deviceUpdate

3.3升级初始化

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参数说明

参数 说明 备注
packagePath 固件包本地路径 本地沙盒路径
errorCode 升级错误码 readonly
state 升级状态 readonly
updateType 升级平台类型 支持nordic、realtk、apollo

3.5基础方法

Objc:

//开始升级
[IDOUpdateFirmwareManager startUpdate];

Swift:

//开始升级
IDOUpdateFirmwareManager.startUpdate();

3.6代理方法

Objc:

<IDOUpdateManagerDelegate>
- (NSString *)currentPackagePathWithUpdateManager:(IDOUpdateFirmwareManager *)manager
{
   // 固件包本地存放路径
    return filePath;
}

- (void)updateManager:(IDOUpdateFirmwareManager *)manager
                state:(IDO_UPDATE_STATE)state
{
    if (state == IDO_UPDATE_COMPLETED) {
        //升级完成
    }else if state == IDO_UPDATE_DID_ENTER_OTA{
        //进入ota模式
    }else if state == IDO_UPDATE_STARTING {
        //升级中
    }
}

- (void)updateManager:(IDOUpdateFirmwareManager *)manager updateError:(NSError *)error
{
   // 升级失败
}

- (void)updateManager:(IDOUpdateFirmwareManager *)manager
             progress:(float)progress
              message:(NSString *)message
{
 // 升级进度 (0-1)
}

@optional
- (IDO_UPDATE_DFU_FIRMWARE_TYPE)selectDfuFirmwareTypeWithUpdateManager:(IDOUpdateFirmwareManager * _Nullable)manager
{
    // 升级nordic application类型
    return IDO_DFU_FIRMWARE_APPLICATION_TYPE;
    // 升级nordic bootloader类型
    return IDO_DFU_FIRMWARE_BOOTLOADER_TYPE;
}

- (IDO_REALTK_UPDATE_TYPE)selectRealtkTypeWithUpdateManager(IDOUpdateFirmwareManager *_Nullable)manager
                        supportOtaMode:(BOOL)isOtaMode
                     supportSilentMode:(BOOL)isSilentMode
{
  // 升级realtk主控程序
  return IDO_NORMAL_MODE_UPDATE_TYPE;
  // 升级realtk flash 文件
  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
{
   //固件升级名称: @".fw" 图片资源名称: @".fzbin" 字库名称:@".bin" 语言:@".lang",bt升级:@".bt"
    return @".bt";
}

- (NSInteger)setTransferNumberPacketsUpdateManager:(IDOUpdateFirmwareManager *)manager
{
   //默认值为10
    return 10;
}

Swift:

IDOUpdateManagerDelegate
func currentPackagePath(withUpdate manager: IDOUpdateFirmwareManager?) -> String? {
    // 固件包本地存放路径
    return filePath;
}

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

func update(_ manager: IDOUpdateFirmwareManager?, state: IDO_UPDATE_STATE) {
    if state == IDO_UPDATE_STATE.COMPLETED {
        //升级完成
    }else if state == IDO_UPDATE_STATE.DID_ENTER_OTA{
        //进入ota模式
    }else if state == IDO_UPDATE_STATE.STARTING {
        //升级中
    }
}

func update(_ manager: IDOUpdateFirmwareManager?, updateError error: Error?) {
   // 升级失败
}

func selectDfuFirmwareType(withUpdate manager: IDOUpdateFirmwareManager?) -> IDO_UPDATE_DFU_FIRMWARE_TYPE {
    // 升级nordic application类型
    return IDO_UPDATE_DFU_FIRMWARE_TYPE.DFU_FIRMWARE_APPLICATION_TYPE;
    // 升级nordic bootloader类型
    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 {
    // 升级realtk主控程序
    return IDO_REALTK_UPDATE_TYPE.NORMAL_MODE_UPDATE_TYPE;
    // 升级realtk flash 文件
    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? {
     //固件升级名称: @".fw" 图片资源名称: @".fzbin" 字库名称:@".bin" 语言:@".lang",bt升级:@".bt"
        return "bt"
  }

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

3.7 Demo升级功能入口

Copyright © 2015-2020 IDO. All rights reserved. all right reserved,powered by Gitbook修订时间: 2023-12-18 10:04:13

results matching ""

    No results matching ""