Bug bounty: Kill the 'Cyan flash of death'

Yep. I'm going to check out your code in a sec because I've also been writing code to correct the watchdog.

EDIT: Ok I see you are kicking the dog at the top of the main() loop. But the reload timer is still 3 seconds. This is bad because it will not allow user code to block for more than 3 seconds. Also, if the code gets stuck in some kind of OFFLINE mode, it will constantly loop in the main() loop keeping the system alive.

It's also very hard to tell how all of the other software timers you've implemented are working together with the IWDG watchdog... have you sketched out any kind of flow chart or timing diagram for all of these timeouts and loops? If not I think it's going to be very hard to know what various outcomes will be based on hypothetical blocking of user code or long delays in connecting to the internet/wlan. Personally I have not done this myself either, because I just haven't dived into all of the background code yet.

Please see our discussion here about the watchdog timer and my code that is currently being tested: