@@ -18,7 +18,6 @@ class DFUUpdater: ObservableObject, DFUServiceDelegate, DFUProgressDelegate, Log
1818
1919 @Published var dfuState : String = " "
2020 @Published var transferCompleted = false
21- @Published var isUpdating = false
2221 @Published var isUpdatingResources = false
2322 @Published var percentComplete : Double = 0
2423
@@ -31,36 +30,12 @@ class DFUUpdater: ObservableObject, DFUServiceDelegate, DFUProgressDelegate, Log
3130
3231 @AppStorage ( " updateResourcesWithFirmware " ) var updateResourcesWithFirmware = true
3332
34- func transfer( ) {
35- guard let url = firmwareURL else { return }
36- guard url. startAccessingSecurityScopedResource ( ) else { return }
37- guard let selectedFirmware = try ? DFUFirmware ( urlToZipFile: url) else {
38- log ( " Failed to load firmware. " , caller: " DFUUpdater " )
39- return
40- }
41- let initiator = DFUServiceInitiator ( ) . with ( firmware: selectedFirmware)
42-
43- // Optional:
44- // initiator.forceDfu = true/false // default false
45- initiator. packetReceiptNotificationParameter = 20
46- initiator. logger = self // - to get log info
47- initiator. delegate = self // - to be informed about current state and errors
48- initiator. progressDelegate = self // - to show progress bar
49- // initiator.peripheralSelector = ... // the default selector is used
50- if bleManager. infiniTime != nil {
51- dfuController = initiator. start ( target: bleManager. infiniTime)
52- }
53- url. stopAccessingSecurityScopedResource ( )
54- }
55-
5633 func updateFirmware( ) {
5734 guard let selectedFirmware = try ? DFUFirmware ( urlToZipFile: firmwareURL) else {
5835 log ( " Failed to load firmware. " , caller: " DFUUpdater " )
5936 return
6037 }
6138
62- self . isUpdating = true
63-
6439 let initiator = DFUServiceInitiator ( ) . with ( firmware: selectedFirmware)
6540
6641 // Optional:
@@ -89,43 +64,41 @@ class DFUUpdater: ObservableObject, DFUServiceDelegate, DFUProgressDelegate, Log
8964 }
9065 }
9166
92- func stopTransfer( ) {
93- if dfuController != nil {
67+ func stopTransfer( abort : Bool ) {
68+ if abort {
9469 _ = dfuController. abort ( )
95- dfuController = nil
9670 }
71+
72+ firmwareURL? . stopAccessingSecurityScopedResource ( )
73+
74+ dfuController = nil
9775 dfuState = " "
98- transferCompleted = false
99- isUpdating = false
76+
10077 percentComplete = 0
78+
79+ downloadManager. updateAvailable = false
80+ downloadManager. updateStarted = false
81+ firmwareSelected = false
82+ transferCompleted = false
10183 }
10284
10385 func dfuStateDidChange( to state: DFUState ) {
10486 dfuState = state. description
10587
10688 switch state {
10789 case . completed:
108- transferCompleted = true
109- isUpdating = false
110- firmwareSelected = false
111-
112- downloadManager. updateAvailable = false
113- downloadManager. updateStarted = false
114-
115- dfuController = nil
116- percentComplete = 0
90+ stopTransfer ( abort: false )
11791 case . disconnecting:
11892 bleManager. hasDisconnectedForUpdate = true
11993 case . aborted:
120- dfuController = nil
121- percentComplete = 0
94+ log ( " DFU upload successfully aborted " , caller: " DFUUpdater " , target: . dfu)
12295 default :
12396 break
12497 }
12598 }
12699
127100 func dfuError( _ error: DFUError , didOccurWithMessage message: String ) {
128- self . stopTransfer ( )
101+ stopTransfer ( abort : false )
129102 }
130103
131104 func dfuProgressDidChange( for part: Int , outOf totalParts: Int , to progress: Int , currentSpeedBytesPerSecond: Double , avgSpeedBytesPerSecond: Double ) {
0 commit comments