mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-29 10:23:08 +02:00
atrf-xmit: tightened checking of interrupt behaviour
- atrf-xmit.c (xfer_one): also check that also the sender has no pending interrupts before we start sending - atrf-xmit.c (xfer_one): interrupt poll loop (now disabled) checked the sender, not the receiver. oops. - atrf-xmit.c (xfer_one): upon reception, check that the sender has finished (IRQ_TRX_END) as well
This commit is contained in:
parent
256ac01ab2
commit
4d4e132f0a
@ -72,6 +72,10 @@ static int xfer_one(struct atrf_dsc *tx, struct atrf_dsc *rx)
|
|||||||
uint8_t buf[PSDU_SIZE+1]; /* +1 for LQI */
|
uint8_t buf[PSDU_SIZE+1]; /* +1 for LQI */
|
||||||
int n, i;
|
int n, i;
|
||||||
|
|
||||||
|
if (atrf_interrupt(tx)) {
|
||||||
|
fprintf(stderr, "unexpected sender interrupt\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
if (atrf_interrupt(rx)) {
|
if (atrf_interrupt(rx)) {
|
||||||
fprintf(stderr, "unexpected receiver interrupt\n");
|
fprintf(stderr, "unexpected receiver interrupt\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -87,10 +91,21 @@ static int xfer_one(struct atrf_dsc *tx, struct atrf_dsc *rx)
|
|||||||
* interrupt, at least for now.
|
* interrupt, at least for now.
|
||||||
*/
|
*/
|
||||||
usleep(5000);
|
usleep(5000);
|
||||||
irq = atrf_reg_read(tx, REG_IRQ_STATUS);
|
irq = atrf_reg_read(rx, REG_IRQ_STATUS);
|
||||||
#endif
|
#endif
|
||||||
if (!(irq & IRQ_TRX_END))
|
if (!(irq & IRQ_TRX_END))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!atrf_interrupt(tx)) {
|
||||||
|
fprintf(stderr, "missing sender interrupt\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
irq = atrf_reg_read(tx, REG_IRQ_STATUS);
|
||||||
|
if (!(irq & IRQ_TRX_END)) {
|
||||||
|
fprintf(stderr, "sender claims packet was not sent ?\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (atrf_reg_read(rx, REG_PHY_RSSI) & RX_CRC_VALID)
|
if (atrf_reg_read(rx, REG_PHY_RSSI) & RX_CRC_VALID)
|
||||||
return 1;
|
return 1;
|
||||||
n = atrf_buf_read(rx, buf, sizeof(buf));
|
n = atrf_buf_read(rx, buf, sizeof(buf));
|
||||||
|
Loading…
Reference in New Issue
Block a user