X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fkernel%2Fao_radio_cmac.c;h=bff848f6d249fd797bfd02198619e5f366fe68e8;hb=HEAD;hp=92b365a28569020825d4fdc201183813d24d21b6;hpb=1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a;p=fw%2Faltos diff --git a/src/kernel/ao_radio_cmac.c b/src/kernel/ao_radio_cmac.c index 92b365a2..b7aceef6 100644 --- a/src/kernel/ao_radio_cmac.c +++ b/src/kernel/ao_radio_cmac.c @@ -19,9 +19,9 @@ #include #include -static __xdata uint8_t ao_radio_cmac_mutex; -__pdata int8_t ao_radio_cmac_rssi; -static __xdata uint8_t cmac_data[AO_CMAC_MAX_LEN + AO_CMAC_KEY_LEN + 2 + AO_CMAC_KEY_LEN]; +static uint8_t ao_radio_cmac_mutex; +int8_t ao_radio_cmac_rssi; +static uint8_t cmac_data[AO_CMAC_MAX_LEN + AO_CMAC_KEY_LEN + 2 + AO_CMAC_KEY_LEN]; static uint8_t round_len(uint8_t len) @@ -37,7 +37,7 @@ round_len(uint8_t len) len = AO_CMAC_KEY_LEN; rem = len % AO_CMAC_KEY_LEN; if (rem != 0) - len += (AO_CMAC_KEY_LEN - rem); + len += (uint8_t) (AO_CMAC_KEY_LEN - rem); return len; } @@ -45,7 +45,7 @@ round_len(uint8_t len) * Sign and deliver the data sitting in the cmac buffer */ static void -radio_cmac_send(uint8_t len) __reentrant +radio_cmac_send(uint8_t len) { uint8_t i; @@ -76,8 +76,10 @@ radio_cmac_send(uint8_t len) __reentrant * Receive and validate an incoming packet */ +int8_t ao_radio_cmac_last_rssi; + static int8_t -radio_cmac_recv(uint8_t len, uint16_t timeout) __reentrant +radio_cmac_recv(uint8_t len, AO_TICK_TYPE timeout) { uint8_t i; @@ -92,6 +94,8 @@ radio_cmac_recv(uint8_t len, uint16_t timeout) __reentrant return AO_RADIO_CMAC_TIMEOUT; } + ao_radio_cmac_last_rssi = ao_radio_rssi; + if (!(cmac_data[len + AO_CMAC_KEY_LEN +1] & AO_RADIO_STATUS_CRC_OK)) return AO_RADIO_CMAC_CRC_ERROR; @@ -127,12 +131,12 @@ radio_cmac_recv(uint8_t len, uint16_t timeout) __reentrant } int8_t -ao_radio_cmac_send(__xdata void *packet, uint8_t len) __reentrant +ao_radio_cmac_send(void *packet, uint8_t len) { if (len > AO_CMAC_MAX_LEN) return AO_RADIO_CMAC_LEN_ERROR; ao_mutex_get(&ao_radio_cmac_mutex); - ao_xmemcpy(cmac_data, packet, len); + memcpy(cmac_data, packet, len); #if AO_LED_TX ao_led_on(AO_LED_TX); #endif @@ -145,7 +149,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 +ao_radio_cmac_recv(void *packet, uint8_t len, AO_TICK_TYPE timeout) { int8_t i; if (len > AO_CMAC_MAX_LEN) @@ -159,7 +163,7 @@ ao_radio_cmac_recv(__xdata void *packet, uint8_t len, uint16_t timeout) __reentr ao_led_off(AO_LED_RX); #endif if (i == AO_RADIO_CMAC_OK) - ao_xmemcpy(packet, cmac_data, len); + memcpy(packet, cmac_data, len); ao_mutex_put(&ao_radio_cmac_mutex); return i; }