altos/stm: Create per-product flash loaders
[fw/altos] / src / core / ao_radio_cmac.c
index fc0ca8b1310382912895f25d7f6e023525f1c0e2..3ca3c313fd7c1826a3c7a9f468adb0fb5677bc52 100644 (file)
@@ -85,18 +85,14 @@ radio_cmac_recv(uint8_t len, uint16_t timeout) __reentrant
 #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;
 
@@ -150,7 +146,7 @@ ao_radio_cmac_send(__xdata void *packet, uint8_t len) __reentrant
 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);