Hi,
I'm trying to create a Node application (using Noble) that acts as a DFU controller so that I can automate DFU'ing hundreds of devices (nRF52 using SDK 15.0.0). I've been referencing this documentation. I have several questions that I can't seem to find the answers to.
First, I start with the SD BL init packet. The responses I get from the DFU Control Point are exactly similar to the sequence flow chart. I compare the CRC and image size and confirm they are correct. I am rather confused why this works, since in the sequence diagram it states that I can only send up to 20 bytes at the time. I instead send 137 bytes at once. Also, for whatever reason the "Response PRN success" (btw, what does PRN mean?) never occurs. After sending the data to the data point, I send <3> to the data control point, and I get back the CRC and length which are correct. I then assume that this process has worked (has it?) and move to the SD BL image.
Now I begin the same process as above, but when I send the create command (<01, 02, C8>, where 0xC8 = 200 bytes), I get the response <60, 01, 03>. I cannot seem to find anywhere in the documentation what 03 means. I then begin sending to the data point and when this is finished, I send the CRC command and get the response <Buffer 60 03 01 00 00 00 00 00 00 00 00>. This looks clearly wrong as the CRC and length are both 0.
To reiterate in a better format:
SD BL INIT PACKET: CMD SENT (hex) | RESPONSE (hex) <06 01> | <60 06 01 00 00 00 00 0 00 00 00 00 00 00 00> <01 01 89 00 00 00> | <60 01 01> <0x89 bytes> to DP | NOTHING <3> | <60 03 01 89 00 00 00 2a 9c fe 44> <4> | <60 4 1> SD BL IMAGE CMD SENT (hex) | RESPONSE (hex) <06 02> | <60 06 01 00 10 00 00 00 00 00 00 00 00 00 00> <01 02 C8 00 00 00> | <60 01 03> <0xC8 bytes> to DP | NOTHING ... <0xC8 bytes> to DP | NOTHING <3> | <60 03 01 00 00 00 00 00 00 00 00> (Stop since CRC failed.)
Is there further documentation that I'm missing here? Am I misunderstanding something in the linked documentation?
Thanks