The unselect() method, liberally called directly and indirectly
from the interrupt handler, always reenables interrupts after it's
done. In ISRs, interrupts are disabled by default, and although
reenabling is allowed, the interrupt handler doesn't seem to have
reentrant code. Therefore, only reenable when not in an ISR.
This was causing problems in certain circumstances, e.g. with
an Arduino Ethernet shield, most packet receptions would cause
resets.
Integrate TomWS1's virtualized changes, and virtual interruptHook().
Set ACK_REQUESTED = 0 in sendACK() to avoid ACK infinite looping.
Protect while(true) calls against infinite looping.
This is a major patch release that should address the rx deadlocks which
cause hangs in multiple nodes networks. Thread on this is here:
https://lowpowerlab.com/forum/index.php/topic,736.0.html
Also updated node/gateway examples, and wireless programming sketches.
Sometimes (especially 433Mhz versions) are too sensitive or there is more noise in the channel than usual. Touching the antenna or coiling it helps a lot but a more permanent fix is to adjust the sensitivity.
This addresses the issue when send sensitivity is too high and the radio will spend a lot of time reading RSSI to make sure channel is clear, resulting in dropped ACKs.