-+ l = 50;
-+ while (l-- && ((enc[0] + 2) < rxfifo_cnt)) { // Wait for more data
-+ my_delay_ms(1);
-+ rxfifo_cnt = (read_cc1100_rxbytes() & 0x7f);
-+ }
++ if ((enc[0] + 2) > rxfifo_cnt) {
++ timeout = RX_TIMEOUT_MS * ((enc[0] + 2) - rxfifo_cnt);
++ while (timeout-- && ((enc[0] + 2) > rxfifo_cnt)) { // Wait for more data
++ my_delay_ms(1);
++ rxfifo_cnt = read_cc1100_rxbytes();