蓝牙 OTA SDK
更新时间:2019-01-10 14:18:16
概述
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
//self.breeze如何得到请参见[蓝牙 SDK]的初始化部分
self.otaBiz = [LKLinkOtaBusiness setupOtaBiz:self.breeze];
使用说明
OTA 基本流程是:用户先绑定设备(参见 蓝牙 SDK 文档),得到一个 iotId, 再上报版本,进行 OTA 升级,完成OTA 升级或者取消 OTA流程。
其中上报固件版本:开发者在上述蓝牙设备连接、绑定后调用云端提供的上传设备固件版本号即可,上传固件版本号请参见:固件升级服务-上报版本号。
开始 OTA 升级流程
蓝牙 OTA 升级状态流转(回调)依次预检查事件(LKOTANotificationTypeCheck) -> 下载升级包事件(LKOTANotificationTypeDownload) -> 传输升级包事件(LKOTANotificationTypeTransmit) -> 重启升级事(LKOTANotificationTypeReboot) -> OTA 结束(LKOTANotificationTypeFinish)。
#import
[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
[self.otaBiz stopUpgrade];