IOS-DFU-Library icon indicating copy to clipboard operation
IOS-DFU-Library copied to clipboard

Init Packet Dissection on iOS

Open Crudough opened this issue 2 years ago • 6 comments

DFU Bootloader version (please complete the following information):

  • SDK version: N/A
  • Bonding used: N/A
  • Library version: 4.11.1

Device information (please complete the following information):

  • Device: N/A
  • OS: N/A

Your question Waiting on PR#396 to expose the initPacket as public through the DFUFirmware class. In the meantime, I have forked the repo, made the change locally and continued my testing and development. I am unsure as to how best to dissect the information stored in the initPacket with my current interest being the type field.

I have been utilizing the protobuf message definitions listed in Nordic's nrfutil repo here. The current workflow I'm attempting is as follows, select my DFU Package -> create my DFUFirmware object in code through the DFUManager-> if successful then deserialize the initPacket into the InitCommand to find the packet type (**) -> continue with the rest of the DFU as normal.

(**) This deserialization into the protobuf structure is successful however I cannot seem to extract the type out of the initPacket which I have confirmed as .externalApplication through nrfutil pkg display command.

Crudough avatar Mar 01 '22 13:03 Crudough

Why do you want to get the type, if I may ask?

Also, why do you need #396 exactly? For sending the firmware to Flutter? Serializing to protobuf?

philips77 avatar Mar 02 '22 11:03 philips77

Hi @philips77,

Thank you for responding here! I need a way to programmatically detect the application type from the initPacket data to direct internal behaviour and sequencing. We use this in other ways but not through the iOS DFU Manager (ex. by using nrfutil pkg display as mentioned above).

As far as I'm aware #396 is the only way of accessing the initPacket from an incoming DFU package. After accessing the initPackage I am hoping to deserialize the data to protobuf using InitComand(serializedData: stream.initPacket from the Swift code generated from dfu_cc.proto. If there is an alternate way to access the type that does not drive a change please do let me know. Forking and manipulating the class to test has proven problematic with the Swift Package Manager.

Crudough avatar Mar 02 '22 13:03 Crudough

So you'll be more interested in getting the fw type than the data, right?

philips77 avatar Mar 02 '22 21:03 philips77

Correct, apologies for the slow response!

Crudough avatar Mar 07 '22 18:03 Crudough

I can see what can be done. Thank you for opening the issue.

philips77 avatar Mar 08 '22 07:03 philips77

Appreciate that @philips77! Looking forward to hearing back from you!

Crudough avatar Mar 14 '22 13:03 Crudough