@@ -47,6 +47,25 @@ internal enum DFUOpCode : UInt8 {
47
47
}
48
48
}
49
49
50
+ extension DFUOpCode : CustomStringConvertible {
51
+
52
+ var description : String {
53
+ switch self {
54
+ case . startDfu: return " Start DFU "
55
+ case . initDfuParameters: return " Initialize DFU Parameters "
56
+ case . receiveFirmwareImage: return " Receive Firmware Image "
57
+ case . validateFirmware: return " Validate Firmware "
58
+ case . activateAndReset: return " Activate and Reset "
59
+ case . reset: return " Reset "
60
+ case . reportReceivedImageSize: return " Report Received Image Size "
61
+ case . packetReceiptNotificationRequest: return " Package Receipt Notification Request "
62
+ case . responseCode: return " Response Code "
63
+ case . packetReceiptNotification: return " Packet Receipt Notification "
64
+ }
65
+ }
66
+
67
+ }
68
+
50
69
internal enum InitDfuParametersRequest : UInt8 {
51
70
case receiveInitPacket = 0
52
71
case initPacketComplete = 1
@@ -56,6 +75,16 @@ internal enum InitDfuParametersRequest : UInt8 {
56
75
}
57
76
}
58
77
78
+ extension InitDfuParametersRequest : CustomStringConvertible {
79
+
80
+ var description : String {
81
+ switch self {
82
+ case . receiveInitPacket: return " Begin "
83
+ case . initPacketComplete: return " Complete "
84
+ }
85
+ }
86
+ }
87
+
59
88
internal enum Request {
60
89
case jumpToBootloader
61
90
case startDfu( type: UInt8 )
@@ -94,14 +123,18 @@ internal enum Request {
94
123
return data
95
124
}
96
125
}
126
+ }
127
+
128
+ extension Request : CustomStringConvertible {
97
129
98
130
var description : String {
99
131
switch self {
100
132
case . jumpToBootloader: return " Jump to bootloader (Op Code = 1, Upload Mode = 4) "
101
133
case . startDfu( let type) : return " Start DFU (Op Code = 1, Upload Mode = \( type) ) "
102
134
case . startDfu_v1: return " Start DFU (Op Code = 1) "
103
- case . initDfuParameters( _) : return " Initialize DFU Parameters "
104
- case . initDfuParameters_v1: return " Initialize DFU Parameters "
135
+ case . initDfuParameters( let req) :
136
+ return " Initialize DFU Parameters (Op Code = 2, Type = \( req) ) "
137
+ case . initDfuParameters_v1: return " Initialize DFU Parameters (Op Code = 2) "
105
138
case . receiveFirmwareImage: return " Receive Firmware Image (Op Code = 3) "
106
139
case . validateFirmware: return " Validate Firmware (Op Code = 4) "
107
140
case . activateAndReset: return " Activate and Reset (Op Code = 5) "
@@ -110,6 +143,7 @@ internal enum Request {
110
143
return " Packet Receipt Notif Req (Op Code = 8, Value = \( number) ) "
111
144
}
112
145
}
146
+
113
147
}
114
148
115
149
internal enum DFUResultCode : UInt8 {
@@ -130,6 +164,9 @@ internal enum DFUResultCode : UInt8 {
130
164
var error : DFUError {
131
165
return DFURemoteError . legacy. with ( code: code)
132
166
}
167
+ }
168
+
169
+ extension DFUResultCode : CustomStringConvertible {
133
170
134
171
var description : String {
135
172
switch self {
@@ -141,6 +178,7 @@ internal enum DFUResultCode : UInt8 {
141
178
case . operationFailed: return " Operation failed "
142
179
}
143
180
}
181
+
144
182
}
145
183
146
184
internal struct Response {
@@ -161,10 +199,14 @@ internal struct Response {
161
199
self . requestOpCode = requestOpCode
162
200
self . status = status
163
201
}
202
+ }
203
+
204
+ extension Response : CustomStringConvertible {
164
205
165
206
var description : String {
166
- return " Response (Op Code = \( requestOpCode. rawValue ) , Status = \( status. rawValue ) ) "
207
+ return " Response (Op Code = \( requestOpCode) , Status = \( status) ) "
167
208
}
209
+
168
210
}
169
211
170
212
internal struct PacketReceiptNotification {
@@ -190,6 +232,14 @@ internal struct PacketReceiptNotification {
190
232
}
191
233
}
192
234
235
+ extension PacketReceiptNotification : CustomStringConvertible {
236
+
237
+ var description : String {
238
+ return " Packet Receipt Notification (Offset = \( bytesReceived) ) "
239
+ }
240
+
241
+ }
242
+
193
243
@objc internal class DFUControlPoint : NSObject , CBPeripheralDelegate , DFUCharacteristic {
194
244
195
245
internal var characteristic : CBCharacteristic
@@ -270,10 +320,10 @@ internal struct PacketReceiptNotification {
270
320
switch request {
271
321
case . initDfuParameters( let req) :
272
322
if req == InitDfuParametersRequest . receiveInitPacket {
273
- logger. a ( " Writing \( request. description ) ... " )
323
+ logger. a ( " Writing \( request) ... " )
274
324
}
275
325
case . initDfuParameters_v1:
276
- logger. a ( " Writing \( request. description ) ... " )
326
+ logger. a ( " Writing \( request) ... " )
277
327
case . jumpToBootloader, . activateAndReset, . reset:
278
328
// Those three requests may not be confirmed by the remote DFU target.
279
329
// The device may be restarted before sending the ACK.
@@ -374,7 +424,7 @@ internal struct PacketReceiptNotification {
374
424
// When a 'JumpToBootloader', 'Activate and Reset' or 'Reset'
375
425
// command is sent the device may reset before sending the acknowledgement.
376
426
// This is not a blocker, as the device did disconnect and reset successfully.
377
- logger. a ( " \( request. description ) request sent " )
427
+ logger. a ( " \( request) request sent " )
378
428
logger. w ( " Device disconnected before sending ACK " )
379
429
logger. w ( error)
380
430
success ? ( )
@@ -386,10 +436,10 @@ internal struct PacketReceiptNotification {
386
436
387
437
switch request {
388
438
case . startDfu( _) , . startDfu_v1, . validateFirmware:
389
- logger. a ( " \( request. description ) request sent " )
439
+ logger. a ( " \( request) request sent " )
390
440
// do not call success until we get a notification
391
441
case . jumpToBootloader, . activateAndReset, . reset, . packetReceiptNotificationRequest( _) :
392
- logger. a ( " \( request. description ) request sent " )
442
+ logger. a ( " \( request) request sent " )
393
443
// there will be no notification send after these requests, call
394
444
// `success()` immediatelly (for `.receiveFirmwareImage` the notification
395
445
// will be sent after firmware upload is complete)
@@ -438,7 +488,7 @@ internal struct PacketReceiptNotification {
438
488
// Parse response received.
439
489
let response = Response ( characteristicValue)
440
490
if let response = response {
441
- logger. a ( " \( response. description ) received " )
491
+ logger. a ( " \( response) received " )
442
492
443
493
if response. status == . success {
444
494
switch response. requestOpCode {
@@ -452,7 +502,7 @@ internal struct PacketReceiptNotification {
452
502
}
453
503
success ? ( )
454
504
} else {
455
- logger. e ( " Error \( response. status. code) : \( response. status. description ) " )
505
+ logger. e ( " Error \( response. status. code) : \( response. status) " )
456
506
report ? ( response. status. error, response. status. description)
457
507
}
458
508
} else {
0 commit comments