蓝牙 OTA SDK

更新时间:2018-08-14 09:43:14

概述

SDK 提供蓝牙 OTA 业务的 APP 端解决方案,提供了蓝牙设备固件升级的能力。

依赖 SDK 概述
蓝牙 Breeze SDK 是按照规范实现的手机端蓝牙 SDK,方便合作厂商在手机端快速接入蓝牙功能。Breeze SDK 包含的主要功能有:设备发现连接,设备通信,加密传输,大数据传输等。
日志 基础依赖 SDK,提供客户端统一日志打印,日志等级控制,分模块日志隔离等能力。
API 通道 提供 API 通道能力,和基础环境配置信息。

初始化

1.OTA SDK 的初始化依赖 API 通道的初始化,请参见:API 通道 - 初始化
2.在进行蓝牙设备 OTA 固件升级时,依赖蓝牙设备的连接绑定,需要使用到蓝牙 SDK(即BreezeSDK)初始化配置和绑定流程,蓝牙 SDK 详细使用请参见:蓝牙 SDK
3.OTA SDK 初始化:

#import <OtaBusinessSdk/OtaBusinessSdk.h>

self.otaBiz = [LKLinkOtaBusiness setupOtaBiz:self.breeze];

使用说明

OTA 基本流程是:用户先绑定设备(参见 蓝牙 SDK 文档),得到一个 iotId, 再上报版本,进行 OTA 升级,完成OTA 升级或者取消 OTA流程。
其中上报固件版本:开发者在上述蓝牙设备连接、绑定后调用云端提供的上传设备固件版本号即可,上传固件版本号请参见:固件升级服务-上报版本号

开始 OTA 升级流程

蓝牙 OTA 升级状态流转(回调)依次预检查事件(LKOTANotificationTypeCheck) -> 下载升级包事件(LKOTANotificationTypeDownload) -> 传输升级包事件(LKOTANotificationTypeTransmit) -> 重启升级事(LKOTANotificationTypeReboot) -> OTA 结束(LKOTANotificationTypeFinish)。

#import <OtaBusinessSdk/OtaBusinessSdk.h>

[self.otaBiz startUpgrade:self.iotId alcsOTA:NO  type:LKOTADeviceTypeBle lisener:^(LKOTANotificationType type, NSDictionary *result) {
    if (type == LKOTANotificationTypeCheck) {
        NSError * err = [result objectForKey:@"error"];
        if (err != nil) {
            NSString * descrip = err.localizedDescription;
            [self insertMsgWithColor:@"red" main:@"升级时预检查失败" detail:descrip];
        } else {
            [self insertMsgWithColor:@"blue" main:@"升级时预检查完成" detail:@"成功"];
        }
    } else if (type == LKOTANotificationTypeDownload) {
        NSDictionary * subResult = [result objectForKey:@"result"];
        NSError * err = [result objectForKey:@"error"];
        if (err != nil) {
            NSString * descrip = err.localizedDescription;
             [self insertMsgWithColor:@"red" main:@"下载OTA包失败" detail:descrip];
        } else {
            int progress = [[subResult valueForKey:@"progress"]intValue];
            [self updateProgressLabel:@"下载OTA包" withProgress:progress];
        }
    } else if (type == LKOTANotificationTypeTransmit) {
        NSDictionary * subResult = [result objectForKey:@"result"];
        NSError * err = [result objectForKey:@"error"];
        if (err != nil) {
            NSString * descrip = err.localizedDescription;
            [self insertMsgWithColor:@"red" main:@"传输OTA包失败" detail:descrip];
        } else {
            int progress = [[subResult valueForKey:@"progress"]intValue];
            [self updateProgressLabel:@"传输OTA包" withProgress:progress];
        }
    } else if (type == LKOTANotificationTypeReboot) {
        NSDictionary * subResult = [result objectForKey:@"result"];
        NSError * err = [result objectForKey:@"error"];
        if (err != nil) {
            NSString * descrip = err.localizedDescription;
            [self insertMsgWithColor:@"red" main:@"重启设备升级失败" detail:descrip];
        } else {
            int progress = [[subResult valueForKey:@"progress"]intValue];
            [self updateProgressLabel:@"重启设备升级" withProgress:progress];
        }
    } else if (type == LKOTANotificationTypeFinish) {
        //NSDictionary * subResult = [result objectForKey:@"result"];
        NSError * err = [result objectForKey:@"error"];
        if (err != nil) {
            NSString * descrip = err.localizedDescription;
            [self insertMsgWithColor:@"red" main:@"设备升级失败" detail:descrip];
        } else {
            [self insertMsgWithColor:@"yellow" main:@"设备升级成功" detail:nil];
        }
    }
}];

终止 OTA 流程

OTA 完成后,必须要通过 stopUpgrade 停止掉,可以停止正在进行中的 OTA 过程。

#import <OtaBusinessSdk/OtaBusinessSdk.h>

[self.otaBiz stopUpgrade];

results matching ""

    No results matching ""