This function set isn't really usable for real communication. Its main
purpose is to help with testing the firmware.
- tools/lib/driver.h (struct atrf_driver): added driver functions for
HardMAC access
- tools/include/atrf.h (atrf_rx_mode, atrf_rx, atrf_tx),
tools/lib/atrf.c: functions to enable/disable HardMAC mode and to
send/receive frames
This reverts commit 391c37f587.
The log isn't so useful in its present state because we may have to
unplug/replug to get out of a troublesome condition.
- atben.c (MMC_PATH, AT86RF230_PATH, find_file, slot_in_use): check
if the MMC or AT86RF230 kernel driver uses the 8:10 card slot and
print a detailed error message if it is
- atben.c (atben_open): fail if the 8:10 card slot is busy
The old "raw" function becomes get_key_init. Calling get_key_init is
only necessary if one wants to control the moment standard input is
switched to raw mode. If get_key is invoked without a prior call to
get_key_init, it will initialize automatically.
- atrf-path/gui.c (raw, main): renamed "raw" to get_key_init
- atrf-path/gui.c (old_term, restore_term, get_key_init, get_key):
moved to include/getkey.h and lib/getkey.c
- lib/getkey.c (get_key_init, get_key): made calling get_key_init
optional
- lib/Makefile (OBJS): added getkey.o
- install/INSTALL-PC: updated build process of lowpan-tools to
use the git repository
- tools/dirtpan/Makefile (CFLAGS): added include path for lowpan
tools from git
- dirtpan.c (stats, send_frame, send_more, send_ack, rx_pck, tx_pck,
ack_timeout, reass_timeout): gather extensive statistics
- dirtpan.c (handle_usr1, main): if running in the foreground, dump
statistics on standard error on SIGUSR1
- dirtpan.c (handle_usr2, main): if running in the foreground, reset
statistics to zero on SIGUSR2
- gui.c (area_off, gui): don't show a regulation area by default
- letter.h, letter.c: drawing of limited character set
- Makefile (OBJS_host, OBJS_ben_jlime): added letter.o
- gui.c (print, area_selector, gui): show regulation area selector
- gui.c (wlan_area): the currently displayed regulation domain
- gui.c (wlan_channels): return the number of WLAN channels
- gui.c (show_wlan_channel): determine whether the specified channel
should be used in the currently displayed regulation domain
- gui.c (label_wlan_channels): show WLAN channel numbers and their
width
- gui.c (gui): switch regulation domain with E (Europe), J (Japan),
and U (US)
- gui.c (gui): quit now only if Q is pressed instead of any key
- gui.c (gui): call label_wlan_channels to display the WLAN channels
- atrf-xmit.c (xfer_one): wait 10 ms for the packet to be sent (1 ms
was clearly too short)
- atrf-xmit.c (xfer_one): use wait_for_interrupt instead of
atrf_interrupt_wait, so that the retry logic can do its work
- atusb-common.c (atusb_interrupt_wait): the atusb firmware no longer
reads and accumulates IRQs for us. We now just wait for the
notification, then read IRQ_STATUS. Let higher layers take care of
retries and all that.
- atusb-common.c (atusb_open): clear any pending interrupts
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.