Hi,
We area working on an iOS Application using nRF Toolbox as a reference. We are currently implementing OTA DFU over BLE and are able to update the nRF52 devKit from the iOS application by using the DFU Secure Bootloader project.
On the other hand we have added the Device Information Service (0x180A) to our devKit/firmware software to obtain information such as Hardware Revision and Firmware Revision.
We are now trying to implement the following use case:
1st step: Have the DFU mode always available (as a GATT service?) together with the rest of our services: DIS (this one specially), Health Thermometer, Proximity, etc.
2nd step: when the user selects the 'update DFU' feature in the iOS app, obtain the HW and FW revision numbers from the DIS
3rd step: Obtain the latest firmware package from a backend
4th step: update the devKit's firmware without having to enter DFU mode
We are already performing 2nd and 3rd steps but we are not sure 1st and 4th make sense
Questions:
Q1) Is it possible to have DFU always available, or the alternative we have is to enter in DFU mode (using the buttonless approach for example) after obtaining the firmware from backend (3rd step)?
Q2) Instead of using the DIS should we instead obtain the HW and FW versions using a different approach: for example by sending the corresponding DFU requests:
0x0A -> Hardware Version
0x0B -> Firmware Version
when the device is in DFU Mode?