ausb_bulk_read may lose data when timing out. We therefore try to
minimize the number of times we time out. Reading until no more
interrupts arrive may have looked like a good idea, but it just
causes trouble for now.
- lib/atrf.c (atrf_interrupt_wait): interrupt_wait is no longer
optional
- atrf-proxy/atrf-proxy.c (cmd_more): we no longer need to handle
atrf_interrupt_wait being unsupported
- lib/atusb-common.c (atusb_interrupt_wait): clarify what we don't
want to return -1 on error
- atrf-xmit.c (xfer_one): use atrf_interrupt_wait instead of
atrf_interrupt to pull the interrupt line
- atrf-xmit.c (xfer_one): removed delay-based wait to interrupt
- atrf-xmit.c (xfer_one): use atrf_interrupt_wait instead of reading
REG_IRQ_STATUS directly
- include/misctxrx.h (wait_for_interrupt), lib/misctxrx.c
(wait_for_interrupt): replaced sleep_us*timeout limiting mechanism
with a single timeout value in milliseconds
- lib/misctxrx.c (wait_for_interrupt): use atrf_interrupt_wait instead
of polling
- lib/misctxrx.c (wait_for_interrupt): cleaned up control flow
- lib/misctxrx.c (run, die, wait_for_interrupt): renamed variable "run"
to more specific "sigint"
- atrf-txrx/atrf-txrx.c (ping_rx, ping): pass timeout in milliseconds,
not deciseconds
- atrf-rssi/atrf-rssi.c (sweep), atrf-rssi/gui.c (sweep),
atrf-txrx/atrf-txrx.c (init_txrx, receive_message, receive_pcap,
receive, transmit, transmit_pattern, ping_tx, ping_rx),
atrf-xmit/atrf-xmit.c (init_tx, init_rx, xfer_one),
lib/cwtest.c (enter_test_mode_230, start_test_mode_231):
updated use of wait_for_interrupt
- atben.c (atben_interrupt_wait): loop until either the timeout has
been reached or an interrupt has occurred
- atben.c (atben_driver): added atben_interrupt_wait
- atusb-common.c (atusb_open): claim interface, so that we can do bulk
I/O without complaints from the kernel
- atusb-common.h (atusb_interrupt_wait), atusb-common.c: blocking read
for interrupt status byte on EP1
- atusb.c (atusb_driver), atusb-spi.c (atusb_spi_driver): provide the
interrupt_wait operation
- tools/lib/driver.h (struct atrf_driver): new driver operation
interrupt_wait
- include/atrf.h (atrf_interrupt_wait), atrf.c: new function to
wait for a transceiver interrupt without polling
- dirtpan.c: changed control byte from innovative 7 bit layout to the
more common 8 bits. My, haven't we had our morning coffee yet ?
- dirtpan.c: added explanation that the two highest bits of the
control byte have to be zero, to avoid conflicting with RFC4944
- include/cwtest.h (cw_test_needs_reset), lib/cwtest.c
(cw_test_needs_reset): new function to indicate all cases where the
transceiver needs to be reset (instead of using SLP_TR)
- lib/cwtest.c (cw_test_end): use cw_test_needs_reset instead of
open-coding the decision
- lib/cwtest.c (enter_test_mode_230, start_test_mode_231): always wait
for the PLL to lock. Contrary to the assumption in the previous
commit, we should always see this interrupt.
- atrf-path/atrf-path.c (sample): initialize the transceiver if we had
to reset it
- atrf-path/atrf-path.c (sample), atrf-path/atrf-path.c (do_half_sweep):
moved the tTR19 delay to "sweep", so that all branches share it and it
is taken only once
We seem to have a path where the PLL is already locked when we get
there. We thus never get an interrupt and hang.
Pending further investigation, just use a timeout that is longer
than the worst-case PLL lock time.
- 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
- gui.c (old_term, restore_term, raw, get_key): raw and non-blocking
console input
- gui,c (gui): accept console input in addition to keypressed in the
SDL window
- atrf-gpio.c (usage): added newline after synopsis
- atrf-gpio.c (usage): description of option -p was missing
- atrf-gpio.c (main): invocation without patterns/commands is now an
error
- atrf-gpio.c: added section titles
- atrf-gpio.c (DEFAULT_DELAY_MS, reg_op, usage): the "delay" command
now accept an optional delay argument
- atrf-gpio.c (old_term, restore_term, raw, pass_fail): make standard
input non-blocking and raw, and poll for pass/fail input
- atrf-gpio.c (usage, main): new option -c to cycle through the
pattern sequence, waiting for pass/fail input
- atrf-gpio.c (reg_op, usage): new command "delay" to add a 10 ms
delay
- atrf-gpio.c (reg_op, usage): new command "frame" to write one
byte to the frame buffer
- atrf-gpio.c (reg_op, usage): new command "reset" to reset the
transceiver (via atrf_reset_rf)
- atrf-gpio.c (reg_op, usage): new command "slp_tr" to pulse SLP_TR
(via atrf_slp_tr)
- atrf-gpio.c (reg_op, usage): register read can now be followed by a
mask value
ATUSB can't use sleep mode because that would cut the AVR's clock.
The old SiLabs-based boards would not have that issue, but there,
the SLP_TR method is unproven. Besides, reset is as fast on USB.
This, while being slightly unsystematic, reduces the risk of confusing
"1" (one) and "l" (lower-case ell).
- tools/atrf-gpio/atben.c (do_atben), tools/atrf-gpio/atusb.c
(do_atusb): treat 'o' as an alias of 'l'
- tools/atrf-gpio/atrf-gpio.c (usage): list 'o' as alternative for 'l'
- atusb.c (name): clarified that PC3 is unconnected
- atusb.c (gpio): "dir" and "data" were swapped
- atusb.c (gpio): complain if ATUSB_GPIO returns the wrong amount of data
- atusb.c (dump, main): show the pin configuration as well
- atusb.c (dump): show "-" for values where we don't expect a specific
result
- atusb.c (dump): removed extra newline on mismatch
- Makefile: removed limitation to Ben and added host build
- atusb.c: atusb-specific acquisition and calculations
- atrf-xtal.h (do_atusb): interface to atusb.c
- atrf-xtal.c (atben, atusb, main): added switch to board-specific driver
- atrf-xtal.c (usage, main): added support for atusb