CSMA: simplify routine that waits for ACK
This commit is contained in:
parent
b80d113253
commit
4097883229
|
@ -196,14 +196,10 @@ send_one_packet(void *ptr)
|
||||||
if(is_broadcast) {
|
if(is_broadcast) {
|
||||||
ret = MAC_TX_OK;
|
ret = MAC_TX_OK;
|
||||||
} else {
|
} else {
|
||||||
rtimer_clock_t wt;
|
|
||||||
|
|
||||||
/* Check for ack */
|
/* Check for ack */
|
||||||
wt = RTIMER_NOW();
|
|
||||||
watchdog_periodic();
|
/* Wait for max CSMA_ACK_WAIT_TIME */
|
||||||
while(RTIMER_CLOCK_LT(RTIMER_NOW(), wt + CSMA_ACK_WAIT_TIME)) {
|
RTIMER_BUSYWAIT_UNTIL(NETSTACK_RADIO.pending_packet(), CSMA_ACK_WAIT_TIME);
|
||||||
watchdog_periodic();
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = MAC_TX_NOACK;
|
ret = MAC_TX_NOACK;
|
||||||
if(NETSTACK_RADIO.receiving_packet() ||
|
if(NETSTACK_RADIO.receiving_packet() ||
|
||||||
|
@ -212,14 +208,8 @@ send_one_packet(void *ptr)
|
||||||
int len;
|
int len;
|
||||||
uint8_t ackbuf[CSMA_ACK_LEN];
|
uint8_t ackbuf[CSMA_ACK_LEN];
|
||||||
|
|
||||||
if(CSMA_AFTER_ACK_DETECTED_WAIT_TIME > 0) {
|
/* Wait an additional CSMA_AFTER_ACK_DETECTED_WAIT_TIME to complete reception */
|
||||||
wt = RTIMER_NOW();
|
RTIMER_BUSYWAIT_UNTIL(NETSTACK_RADIO.pending_packet(), CSMA_AFTER_ACK_DETECTED_WAIT_TIME);
|
||||||
watchdog_periodic();
|
|
||||||
while(RTIMER_CLOCK_LT(RTIMER_NOW(),
|
|
||||||
wt + CSMA_AFTER_ACK_DETECTED_WAIT_TIME)) {
|
|
||||||
watchdog_periodic();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(NETSTACK_RADIO.pending_packet()) {
|
if(NETSTACK_RADIO.pending_packet()) {
|
||||||
len = NETSTACK_RADIO.read(ackbuf, CSMA_ACK_LEN);
|
len = NETSTACK_RADIO.read(ackbuf, CSMA_ACK_LEN);
|
||||||
|
|
Loading…
Reference in New Issue