-
it would need a firmware modification
Yes and it is not the main espruino firmware but the DFU bootloader. It is of course possible but if you got that far with customizations I think you should get familiar with SWD debugger and a way how to recover when DFU is not working at all.
As for solution - what I tried for some devices in the past is to enter bootloader only if device is on charger, in your case it could simply ignore button at boot time when it is not on charger. So people could not enter it by mistake when wearing it. When battery is flat and you put it on charger the button would work when it starts booting but I guess that is not such big issue?
EDIT: The easiest way to do this quick hack could be changing the
get_btn1_state
here
https://github.com/espruino/Espruino/blob/master/targets/nrf5x_dfu/hardware.h#L76 to report button pressed only if also charger is attached. There already isget_charging_state
below it so you could just use in insideget_btn1_state
.
"Have you thought about increasing the duration required to enter the bootloader? Are they going to be likely to hold the button for 10 seconds eg.?"
If that is possible then it would be a great solution. But it would have to be an increased duration from the very start of the Bangle booting up (which seems like it would need a firmware modification).