蓝牙升级库
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升级功能入口