+ rf_asksin_task(void)
+ {
+@@ -77,15 +90,27 @@
+ uint8_t dec[MAX_ASKSIN_MSG];
+ uint8_t rssi;
+ uint8_t l;
++ uint8_t rxfifo_cnt;
+
+ if(!asksin_on)
+ return;
+
+- // see if a CRC OK pkt has been arrived
+- if (bit_is_set( CC1100_IN_PORT, CC1100_IN_PIN )) {
++ // see if there is data to be read
++ while (bit_is_set( CC1100_IN_PORT, CC1100_IN_PIN )) {
++ rxfifo_cnt = read_cc1100_rxbytes();
+
++ if (rxfifo_cnt & 0x80) // Overflow
++ break;
++
++ rxfifo_cnt &= 0x7f;
++
+ enc[0] = cc1100_readReg( CC1100_RXFIFO ) & 0x7f; // read len
+
++ while ((enc[0] + 2) < (rxfifo_cnt - 1)) { // Wait for more data
++ my_delay_ms(1);
++ rxfifo_cnt = (read_cc1100_rxbytes() & 0x7f) + 1;
++ }
++
+ if (enc[0]>=MAX_ASKSIN_MSG)
+ enc[0] = MAX_ASKSIN_MSG-1;
+
+@@ -97,13 +122,12 @@