1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
//
// DFUController.h
// iHealthSDKStatic
//
// Created by Lei Bao on 2017/7/17.
// Copyright © 2017年 daiqingquan. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "DFUMacro.h"
/**
DFU Controller
*/
@interface DFUController : NSObject
/**
Get instance
@return DFUController object
*/
+ (instancetype)shareInstance;
/**
Query device firmware information in Flash
@param deviceType DFUDeviceType enum
@param uuid device UUID
@param successBlock success block
@param errorBlock DFUError enum(DFUError_InUpgradeCannotExecuteCommand,DFUError_UnsupportedDeviceType,DFUError_InvalidUUID,DFUError_NoConnectedDevice,DFUError_CommandTimeOut,DFUError_DeviceDisconnect)
@note The method should be called when device is connected.
*/
- (void)queryDeviceFirmwareInfoWithDeviceType:(DFUDeviceType)deviceType
uuid:(NSString *)uuid
successBlock:(QueryDeviceFirmwareInfoSuccessBlock)successBlock
errorBlock:(DFUErrorBlock)errorBlock;
/**
Query the latest firmware information from server
@param deviceType DFUDeviceType enum
@param productModel Model Number(you can get from IDPS or device object's property)
@param currentFirmwareVersion current firmware version (you can get from IDPS or device object's property)
@param hardwareVersion hardware version (you can get from IDPS or device object's property)
@param successBlock success block
@param errorBlock DFUError enum(DFUError_UnsupportedDeviceType,DFUError_InvalidFirmwareVersion,DFUError_InvalidHardwareVersion,DFUError_NetworkError,DFUError_ServerError)
@note No need to connect but IDPS should be known.
*/
- (void)queryServerFirmwareInfoWithDeviceType:(DFUDeviceType)deviceType
productModel:(NSString *)productModel
currentFirmwareVersion:(NSString *)currentFirmwareVersion
hardwareVersion:(NSString *)hardwareVersion
successBlock:(QueryServerFirmwareInfoSuccessBlock)successBlock
errorBlock:(DFUErrorBlock)errorBlock;
/**
Download firmware file
@param deviceType DFUDeviceType enum
@param productModel Model Number(you can get from IDPS or device object's property)
@param firmwareVersion firmware version you want to download (the latest version you can get from "queryServerFirmwareInfoWithDeviceType:")
@param hardwareVersion hardware version (you can get from IDPS or device object's property)
@param startBlock download start block
@param downloadFirmwareProgressBlock download progress block [0-100]
@param successBlock success block (firmwareIdentifier is used to in "startUpgradeWithDeviceType:")
@param errorBlock DFUError enum(DFUError_UnsupportedDeviceType,DFUError_InvalidFirmwareVersion,DFUError_InvalidHardwareVersion,DFUError_FileSaveError,DFUError_NetworkError,DFUError_ServerError,DFUError_RequestedFileNotExist,DFUError_InfoFileCheckNotPass,DFUError_firmwareFileCheckNotPass)
*/
- (void)downloadFirmwareWithDeviceType:(DFUDeviceType)deviceType
productModel:(NSString *)productModel
firmwareVersion:(NSString *)firmwareVersion
hardwareVersion:(NSString *)hardwareVersion
downloadStartBlock:(DownloadFirmwareStartBlock)startBlock
downloadFirmwareProgressBlock:(DownloadFirmwareProgressBlock)downloadFirmwareProgressBlock
successblock:(DownloadFirmwareSuccessBlock)successBlock
errorBlock:(DFUErrorBlock)errorBlock;
/**
Cancel downloading firmware file
@param deviceType DFUDeviceType enum
@param successBlock success block
*/
- (void)cancelDownloadFirmwareWithDeviceType:(DFUDeviceType)deviceType
successBlock:(CancelDownloadFirmwareSuccessBlock)successBlock;
/**
Start update
@param deviceType DFUDeviceType enum
@param productModel Model Number(you can get from IDPS or device object's property)
@param uuid device UUID
@param firmwareIdentifier firmware identifier
@param firmwareVersion destination firmware version
@param hardwareVersion hardware version (you can get from IDPS or device object's property)
@param deviceReplyCannotUpgradeBlock cannot upgrade and return reason
@param transferBeginBlock transfer begin
@param transferProgressBlock transfer progress block [0-100]
@param transferSuccessBlock transfer success block (return write MCU speed, unit:Byte/s, only support AM3S,AM4,PO3,HS2,HS4,ECG)
@param transferResultBlock transfer result block (return result type, pasue reason, pause length,only support BG5S,BP5S,ABPM)
@param upgradeSuccessBlock upgrade success block(only support AM3)
@param upgradeFailBlock upgrade fail block
@param upgradeErrorBlock upgrade error blcok (DFUError enum(DFUError_InUpgradeCannotExecuteCommand,DFUError_UnsupportedDeviceType,DFUError_InvalidUUID,DFUError_NoConnectedDevice,DFUError_NoFirmwareFile,DFUError_InvalidFirmwareInfoFile,DFUError_CommandTimeOut,DFUError_DeviceDisconnect))
*/
- (void)startUpgradeWithDeviceType:(DFUDeviceType)deviceType
productModel:(NSString *)productModel
uuid:(NSString *)uuid
firmwareVersion:(NSString *)firmwareVersion
hardwareVersion:(NSString *)hardwareVersion
firmwareIdentifier:(NSString *)firmwareIdentifier
deviceReplyCannotUpgradeBlock:(DeviceReplyCannotUpgradeBlock)deviceReplyCannotUpgradeBlock
transferBeginBlock:(TransferBeginBlock)transferBeginBlock
transferProgressBlock:(TransferProgressBlock)transferProgressBlock
transferSuccessBlock:(TransferSuccessBlock)transferSuccessBlock
transferResultBlock:(TransferResultBlock)transferResultBlock
upgradeSuccessBlock:(UpgradeSuccessBlock)upgradeSuccessBlock
upgradeFailBlock:(UpgradeFailBlock)upgradeFailBlock
upgradeErrorBlock:(DFUErrorBlock)upgradeErrorBlock;
/**
Stop update
@param deviceType DFUDeviceType enum
@param uuid device UUID
@param successBlock success block
@param failBlock fail block, DFUError enum:(DFUError_UnsupportedDeviceType,DFUError_InvalidUUID,DFUError_CommandTimeOut)
*/
- (void)stopUpgradeWithDeviceType:(DFUDeviceType)deviceType
uuid:(NSString *)uuid
successBlock:(StopUpgradeSuccessBlock)successBlock
failBlock:(DFUErrorBlock)failBlock;
/**
Delete firmware file
@param firmwareIdentifier firmware identifier
@param successBlock success block
@param errorBlock error block DFUError enum:DFUError_DeleteError
*/
- (void)deleteFirmwareWithIdentifier:(NSString *)firmwareIdentifier
successBlock:(DeleteFirmwareSuccessBlock)successBlock
errorBlock:(DFUErrorBlock)errorBlock;
/**
Query DFU state
@return Busy or Free
*/
- (DFUState)queryDFUState;
/**
Query Device UUID in updating
@return Device UUID
*/
- (NSString *)UUIDInDFU;
- (void)openSesame:(NSInteger)number;
@end
|