GizDeviceOTA 类
GizDeviceOTA类提供设备固件升级功能。可升级设备的wifi模组固件以及mcu固件。
目录
属性访问
[delegate]
使用委托获取对应事件。GizDeviceOTA 对应的回调接口在 GizDeviceOTADelegate 定义。需要用到哪个接口,回调即可。
定义
@property (class, weak, nonatomic) id <GizDeviceOTADelegate> _Nullable delegate;
回调接口
以下是GizDeviceOTA类提供的所有回调接口:
- didCheckDeviceUpdate:检查固件更新的回调
- didUpgradeDevice:固件开始升级的回调
- didNotifyDeviceUpdate:设备固件有更新的主动通知
- didNotifyDeviceUpgradeStatus:固件升级状态的主动通知
[didCheckDeviceUpdate]
回调
检查设备更新的回调,调用检查更新接口checkDeviceUpdate时触发该回调
- (void)didCheckDeviceUpdate:(GizWifiDevice *)device result:(NSError*)result wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion;
回调说明
回调参数
属性名 | 描述 |
---|---|
device | 回调的 GizWifiDevice 对象 |
result | 接口执行结果,见GizWifiErrorCode定义。GIZ_SDK_SUCCESS表示成功,其他为失败。失败时参数wifiVersion和mcuVersion值为nil |
wifiVersion | 模组固件版本,字典格式:{"latest":"xxx", "current":"xxx"}。若此参数为nil,表示没有检查到模组固件更新信息 |
mcuVersion | mcu固件版本,字典格式:{"latest":"xxx", "current":"xxx"}。若此参数为nil,表示没有检查到mcu固件更新信息 |
代码示例
GizDeviceOTA.delegate = self;
// 实现回调
- (void)didCheckDeviceUpdate:(GizWifiDevice *)device result:(NSError*)result wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion {
if(result.code == GIZ_SDK_SUCCESS) {
// 成功处理,取最新版本号
} else {
// 失败处理
}
}
[didUpgradeDevice]
回调
设备开始升级的回调,调用开始升级接口upgradeDevice时触发该回调
- (void)didUpgradeDevice:(GizWifiDevice*)device result:(NSError*)result firmwareType:(GizOTAFirmwareType)firmwareType;
回调说明
回调参数
属性名 | 描述 |
---|---|
device | 回调的 GizWifiDevice 对象 |
result | 接口执行结果,见GizWifiErrorCode定义。GIZ_SDK_SUCCESS表示成功,其他为失败 |
firmwareType | 正在升级的固件类型 |
代码示例
GizDeviceOTA.delegate = self;
// 实现回调
- (void)didUpgradeDevice:(GizWifiDevice*)device result:(NSError*)result firmwareType:(GizOTAFirmwareType)firmwareType {
if(result.code == GIZ_SDK_SUCCESS) {
// 成功
} else {
// 失败
}
}
[didNotifyDeviceUpdate]
回调
设备固件有更新的主动通知。设备固件有新版本时触发该回调
- (void)didNotifyDeviceUpdate:(GizWifiDevice*)device wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion;
回调说明
回调参数
属性名 | 描述 |
---|---|
device | 回调的 GizWifiDevice 对象 |
wifiVersion | 模组固件版本,字典格式:{"latest":"xxx", "current":"xxx"}。若此参数为nil,表示没有检查到模组固件更新信息 |
mcuVersion | mcu固件版本,字典格式:{"latest":"xxx", "current":"xxx"}。若此参数为nil,表示没有检查到mcu固件更新信息 |
代码示例
GizDeviceOTA.delegate = self;
// 实现回调
- (void)didNotifyDeviceUpdate:(GizWifiDevice*)device wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion {
}
[didNotifyDeviceUpgradeStatus]
回调
设备升级状态的主动通知。设备在升级过程中会主动上报升级状态,此时会触发该回调
- (void)didNotifyDeviceUpgradeStatus:(GizWifiDevice*)device firmwareType:(GizOTAFirmwareType)firmwareType upgradeStatus:(NSError*)upgradeStatus;
回调说明
回调参数
属性名 | 描述 |
---|---|
device | 回调的 GizWifiDevice 对象 |
firmwareType | 正在升级的固件类型 |
upgradeStatus | 设备升级状态,见GizWifiErrorCode定义中枚举值范围[8350, 8360] |
代码示例
GizDeviceOTA.delegate = self;
// 实现回调
- (void)didNotifyDeviceUpdate:(GizWifiDevice*)device wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion {
}
API定义
[checkDeviceUpdate]
检查固件是否有更新
定义
+ (void)checkDeviceUpdate:(NSString*)uid token:(NSString*)token device:(GizWifiDevice*)device;
参数
属性名 | 描述 |
---|---|
uid | 用户uid |
token | 用户token |
device | 待检查固件版本的设备 |
代码示例
// 设置OTA委托
GizDeviceOTA.delegate = self;
// 检查固件版本是否有更新。mDevice为从设备列表中取到的待升级的设备
[GizDeviceOTA checkDeviceUpdate:@"your_uid" token: @"your_token" device:mDevice];
// 实现回调
- (void)didCheckDeviceUpdate:(GizWifiDevice *)device result:(NSError*)result wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion {
if(result.code == GIZ_SDK_SUCCESS) {
// 成功,比较固件版本号是否有更新
} else {
// 失败
}
}
[upgradeDevice]
开始升级
定义
+ (void)upgradeDevice:(NSString *)uid token:(NSString*)token device:(GizWifiDevice*)device firmwareType:(GizOTAFirmwareType)firmwareType;
参数
属性名 | 描述 |
---|---|
uid | 用户uid |
token | 用户token |
device | 要升级的设备 |
firmwareType | 要升级的固件类型,见GizOTAFirmwareType枚举定义 |
代码示例
// 设置OTA委托
[GizDeviceOTA setDelegate:self];
// 开始升级。mDevice为刚检查过版本信息待升级的设备
[GizDeviceOTA upgradeDevice:@"your_uid" token: @"your_token" device:mDevice firmwareType: GizOTAFirmareModule];
// 实现回调
- (void)didCheckDeviceUpdate:(GizWifiDevice *)device result:(NSError*)result wifiVersion:(NSDictionary*)wifiVersion mcuVersion:(NSDictionary*)mcuVersion {
if(result.code == GIZ_SDK_SUCCESS) {
// 成功
} else {
// 失败
}
}