#if HAS_MONITOR
ao_monitor_set(0);
#endif
- if (timeout)
- ao_alarm(timeout);
-
- i = ao_radio_recv(cmac_data, len + AO_CMAC_KEY_LEN + 2);
- ao_clear_alarm();
+ i = ao_radio_recv(cmac_data, len + AO_CMAC_KEY_LEN + 2, timeout);
if (!i) {
ao_radio_cmac_rssi = 0;
return AO_RADIO_CMAC_TIMEOUT;
}
- ao_radio_cmac_rssi = (int8_t) (((int8_t) cmac_data[len + AO_CMAC_KEY_LEN]) >> 1) - 74;
+ ao_radio_cmac_rssi = ao_radio_rssi;
if (!(cmac_data[len + AO_CMAC_KEY_LEN +1] & AO_RADIO_STATUS_CRC_OK))
return AO_RADIO_CMAC_CRC_ERROR;
int8_t
ao_radio_cmac_recv(__xdata void *packet, uint8_t len, uint16_t timeout) __reentrant
{
- uint8_t i;
+ int8_t i;
if (len > AO_CMAC_MAX_LEN)
return AO_RADIO_CMAC_LEN_ERROR;
ao_mutex_get(&ao_radio_cmac_mutex);