Skip to content

Commit c899c50

Browse files
authored
Merge pull request #487 from NordicSemiconductor/feature/logging-improvements
Logging improvements
2 parents 6980968 + 28953ed commit c899c50

File tree

8 files changed

+147
-30
lines changed

8 files changed

+147
-30
lines changed

Example/iOSDFULibrary/View Controllers/DFUViewController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ class DFUViewController: UIViewController, CBCentralManagerDelegate, DFUServiceD
287287
stopProcessButton.isEnabled = true
288288
}
289289

290-
dfuStatusLabel.text = state.description()
291-
print("State changed to: \(state.description())")
290+
dfuStatusLabel.text = state.description
291+
print("State changed to: \(state)")
292292

293293
// Forget the controller when DFU is done
294294
if state == .completed {

iOSDFULibrary/Classes/Implementation/DFUServiceDelegate.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,11 @@ internal enum DFURemoteError : Int {
163163
case disconnecting
164164
case completed
165165
case aborted
166+
}
167+
168+
extension DFUState : CustomStringConvertible {
166169

167-
public func description() -> String {
170+
public var description: String {
168171
switch self {
169172
case .connecting: return "Connecting"
170173
case .starting: return "Starting"
@@ -176,6 +179,7 @@ internal enum DFURemoteError : Int {
176179
case .aborted: return "Aborted"
177180
}
178181
}
182+
179183
}
180184

181185
/**

iOSDFULibrary/Classes/Implementation/GenericDFU/DFUPeripheral.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ internal class BaseCommonDFUPeripheral<TD : DFUPeripheralDelegate, TS : DFUServi
715715

716716
logger.v("Scanning for the DFU Bootloader...")
717717
let requiredServices = peripheralSelector.filterBy(hint: DFUServiceType.serviceUuid(from: uuidHelper))
718-
logger.d("centralManager.scanForPeripherals(withServices, \(requiredServices?.description ?? "nil")")
718+
logger.d("centralManager.scanForPeripherals(withServices, \(requiredServices?.description ?? "nil"))")
719719
centralManager.scanForPeripherals(withServices: requiredServices)
720720
}
721721

iOSDFULibrary/Classes/Implementation/LegacyDFU/Characteristics/DFUControlPoint.swift

+60-10
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,25 @@ internal enum DFUOpCode : UInt8 {
4747
}
4848
}
4949

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+
5069
internal enum InitDfuParametersRequest : UInt8 {
5170
case receiveInitPacket = 0
5271
case initPacketComplete = 1
@@ -56,6 +75,16 @@ internal enum InitDfuParametersRequest : UInt8 {
5675
}
5776
}
5877

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+
5988
internal enum Request {
6089
case jumpToBootloader
6190
case startDfu(type: UInt8)
@@ -94,14 +123,18 @@ internal enum Request {
94123
return data
95124
}
96125
}
126+
}
127+
128+
extension Request : CustomStringConvertible {
97129

98130
var description : String {
99131
switch self {
100132
case .jumpToBootloader: return "Jump to bootloader (Op Code = 1, Upload Mode = 4)"
101133
case .startDfu(let type): return "Start DFU (Op Code = 1, Upload Mode = \(type))"
102134
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)"
105138
case .receiveFirmwareImage: return "Receive Firmware Image (Op Code = 3)"
106139
case .validateFirmware: return "Validate Firmware (Op Code = 4)"
107140
case .activateAndReset: return "Activate and Reset (Op Code = 5)"
@@ -110,6 +143,7 @@ internal enum Request {
110143
return "Packet Receipt Notif Req (Op Code = 8, Value = \(number))"
111144
}
112145
}
146+
113147
}
114148

115149
internal enum DFUResultCode : UInt8 {
@@ -130,6 +164,9 @@ internal enum DFUResultCode : UInt8 {
130164
var error: DFUError {
131165
return DFURemoteError.legacy.with(code: code)
132166
}
167+
}
168+
169+
extension DFUResultCode : CustomStringConvertible {
133170

134171
var description: String {
135172
switch self {
@@ -141,6 +178,7 @@ internal enum DFUResultCode : UInt8 {
141178
case .operationFailed: return "Operation failed"
142179
}
143180
}
181+
144182
}
145183

146184
internal struct Response {
@@ -161,10 +199,14 @@ internal struct Response {
161199
self.requestOpCode = requestOpCode
162200
self.status = status
163201
}
202+
}
203+
204+
extension Response : CustomStringConvertible {
164205

165206
var description: String {
166-
return "Response (Op Code = \(requestOpCode.rawValue), Status = \(status.rawValue))"
207+
return "Response (Op Code = \(requestOpCode), Status = \(status))"
167208
}
209+
168210
}
169211

170212
internal struct PacketReceiptNotification {
@@ -190,6 +232,14 @@ internal struct PacketReceiptNotification {
190232
}
191233
}
192234

235+
extension PacketReceiptNotification : CustomStringConvertible {
236+
237+
var description: String {
238+
return "Packet Receipt Notification (Offset = \(bytesReceived))"
239+
}
240+
241+
}
242+
193243
@objc internal class DFUControlPoint : NSObject, CBPeripheralDelegate, DFUCharacteristic {
194244

195245
internal var characteristic: CBCharacteristic
@@ -270,10 +320,10 @@ internal struct PacketReceiptNotification {
270320
switch request {
271321
case .initDfuParameters(let req):
272322
if req == InitDfuParametersRequest.receiveInitPacket {
273-
logger.a("Writing \(request.description)...")
323+
logger.a("Writing \(request)...")
274324
}
275325
case .initDfuParameters_v1:
276-
logger.a("Writing \(request.description)...")
326+
logger.a("Writing \(request)...")
277327
case .jumpToBootloader, .activateAndReset, .reset:
278328
// Those three requests may not be confirmed by the remote DFU target.
279329
// The device may be restarted before sending the ACK.
@@ -374,7 +424,7 @@ internal struct PacketReceiptNotification {
374424
// When a 'JumpToBootloader', 'Activate and Reset' or 'Reset'
375425
// command is sent the device may reset before sending the acknowledgement.
376426
// 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")
378428
logger.w("Device disconnected before sending ACK")
379429
logger.w(error)
380430
success?()
@@ -386,10 +436,10 @@ internal struct PacketReceiptNotification {
386436

387437
switch request {
388438
case .startDfu(_), .startDfu_v1, .validateFirmware:
389-
logger.a("\(request.description) request sent")
439+
logger.a("\(request) request sent")
390440
// do not call success until we get a notification
391441
case .jumpToBootloader, .activateAndReset, .reset, .packetReceiptNotificationRequest(_):
392-
logger.a("\(request.description) request sent")
442+
logger.a("\(request) request sent")
393443
// there will be no notification send after these requests, call
394444
// `success()` immediatelly (for `.receiveFirmwareImage` the notification
395445
// will be sent after firmware upload is complete)
@@ -438,7 +488,7 @@ internal struct PacketReceiptNotification {
438488
// Parse response received.
439489
let response = Response(characteristicValue)
440490
if let response = response {
441-
logger.a("\(response.description) received")
491+
logger.a("\(response) received")
442492

443493
if response.status == .success {
444494
switch response.requestOpCode {
@@ -452,7 +502,7 @@ internal struct PacketReceiptNotification {
452502
}
453503
success?()
454504
} else {
455-
logger.e("Error \(response.status.code): \(response.status.description)")
505+
logger.e("Error \(response.status.code): \(response.status)")
456506
report?(response.status.error, response.status.description)
457507
}
458508
} else {

iOSDFULibrary/Classes/Implementation/SecureDFU/Characteristics/ButtonlessDFU.swift

+33-4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ internal enum ButtonlessDFUOpCode : UInt8 {
4343
}
4444
}
4545

46+
extension ButtonlessDFUOpCode : CustomStringConvertible {
47+
48+
var description: String {
49+
switch self {
50+
case .enterBootloader: return "Enter Bootloader"
51+
case .setName: return "Set Name"
52+
case .responseCode: return "Response Code"
53+
}
54+
}
55+
}
4656

4757
internal enum ButtonlessDFUResultCode : UInt8 {
4858
/// The operation completed successfully.
@@ -69,6 +79,9 @@ internal enum ButtonlessDFUResultCode : UInt8 {
6979
func error(ofType remoteError: DFURemoteError) -> DFUError {
7080
return remoteError.with(code: code)
7181
}
82+
}
83+
84+
extension ButtonlessDFUResultCode : CustomStringConvertible {
7285

7386
var description: String {
7487
switch self {
@@ -80,6 +93,7 @@ internal enum ButtonlessDFUResultCode : UInt8 {
8093
case .notBonded: return "Device not bonded"
8194
}
8295
}
96+
8397
}
8498

8599
internal enum ButtonlessDFURequest {
@@ -99,6 +113,17 @@ internal enum ButtonlessDFURequest {
99113
}
100114
}
101115

116+
extension ButtonlessDFURequest : CustomStringConvertible {
117+
118+
var description: String {
119+
switch self {
120+
case .enterBootloader: return "Enter Bootloder"
121+
case .set(let name): return "Set Name (Name = \(name))"
122+
}
123+
}
124+
125+
}
126+
102127
internal struct ButtonlessDFUResponse {
103128
let opCode : ButtonlessDFUOpCode
104129
let requestOpCode : ButtonlessDFUOpCode
@@ -119,10 +144,14 @@ internal struct ButtonlessDFUResponse {
119144
self.requestOpCode = requestOpCode
120145
self.status = status
121146
}
122-
147+
}
148+
149+
extension ButtonlessDFUResponse : CustomStringConvertible {
150+
123151
var description: String {
124-
return "Response (Op Code = \(requestOpCode.rawValue), Status = \(status.rawValue))"
152+
return "Response (Op Code = \(requestOpCode), Status = \(status))"
125153
}
154+
126155
}
127156

128157
internal class ButtonlessDFU : NSObject, CBPeripheralDelegate, DFUCharacteristic {
@@ -314,15 +343,15 @@ internal class ButtonlessDFU : NSObject, CBPeripheralDelegate, DFUCharacteristic
314343
}
315344

316345
guard dfuResponse.status == .success else {
317-
logger.e("Error \(dfuResponse.status.code): \(dfuResponse.status.description)")
346+
logger.e("Error \(dfuResponse.status.code): \(dfuResponse.status)")
318347
let type = isExperimental ?
319348
DFURemoteError.experimentalButtonless :
320349
DFURemoteError.buttonless
321350
report?(dfuResponse.status.error(ofType: type), dfuResponse.status.description)
322351
return
323352
}
324353

325-
logger.a("\(dfuResponse.description) received")
354+
logger.a("\(dfuResponse) received")
326355
success?()
327356
}
328357
}

0 commit comments

Comments
 (0)