1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-11-22 13:54:59 +02:00
Commit Graph

226 Commits

Author SHA1 Message Date
Werner Almesberger
7c12bf02c1 tools/atrf-xmit/atrf-xmit.c: cleaned up timeouts and interrupt polling
- 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
2011-06-23 13:21:25 -03:00
Werner Almesberger
d8363d853c tools/lib/misctxrx.c (wait_for_interrupt): enforce a minimum timeout of 10 ms
Seems that just one millisecond isn't enough to get a byte from
the USB device, even if the byte is already waiting in the endpoint
FIFO there.
2011-06-23 13:21:05 -03:00
Werner Almesberger
8a2d80a93c tools/lib/atusb-common.c: updated for new interrupt handling in firmware
- 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
2011-06-23 13:14:39 -03:00
Werner Almesberger
b0b04ed226 tools/atrf-gpio/atusb.c (restore_gpios): send ATUSB_GPIO_CLEANUP 2011-06-20 23:15:30 -03:00
Werner Almesberger
f8f2f890d9 tools/lib/atusb-common.c (atusb_interrupt_wait): don't try to pull more irqs
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.
2011-06-20 22:58:46 -03:00
Werner Almesberger
cb20c55231 tools/lib/misctxrx.c (wait_for_interrupt): don't fragment timeouts
usb_bulk_read may lose data when timing out. We therefore try to
minimize the number of times we time out.
2011-06-20 22:56:59 -03:00
Werner Almesberger
f4ca3aed63 tools/atrf-proxy/: make WAIT 0 wait forever
- PROTOCOL: corrected obsolete part of WAIT behaviour
- PROTOCOL: mention that WAIT 0 waits forever
- atrf-proxy.c (cmd_more): don't convert WAIT argument 0 to 1
2011-06-20 22:14:52 -03:00
Werner Almesberger
70715a15d9 tools/lib/atben.c (atben_interrupt_wait): don't time out if timeout_ms == 0 2011-06-20 22:11:29 -03:00
Werner Almesberger
10b6d88af9 libatrf: simplify use of atrf_interrupt_wait now this it is mandatory
- 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
2011-06-20 21:14:14 -03:00
Werner Almesberger
d0fb1a8992 tools/: the great removal of atrf_interrupt
- atrf-proxy/PROTOCOL, atrf-proxy/atrf-proxy.c (cmd_zero): removed the
  POLL command
- lib/atben.c (atben_driver): don't export atben_interrupt anymore (we
  still use it internally)
- lib/atnet.c (atnet_interrupt, atnet_driver): removed atnet_interrupt
- lib/atusb-common.h (atusb_interrupt), lib/atusb-common.h
  (atusb_interrupt), lib/atusb-spi.c (atusb_spi_driver),
  lib/atusb.c (atusb_driver): removed atusb_interrupt
- lib/driver.h (struct atrf_driver): removed "interrupt"
- include/atrf.h (atrf_interrupt), lib/atrf.c (atrf_interrupt): removed
2011-06-20 21:10:41 -03:00
Werner Almesberger
76707d6b37 tools/lib/misctxrx.c (flush_interrupts): don't fall back to reading IRQ_STATUS
We now implement atrf_interrupt_wait in all drivers and don't need
the dubious fallback anymore.
2011-06-20 20:48:15 -03:00
Werner Almesberger
9952a20fda tools/lib/atben.c (atben_interrupt_wait): complain about stray interrupts
If INT_RF is high but IRQ_STATUS is clear, something strange is
happening. We complain but continue waiting.
2011-06-20 20:46:52 -03:00
Werner Almesberger
b7276d282a atrf-xmit/atrf-xmit.c: updated to no longer use atrf_interrupt
- 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
2011-06-20 20:41:30 -03:00
Werner Almesberger
b4a6e8ef46 tools/: major overhaul of wait_for_interrupt; uses atrf_interrupt_wait now
- 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
2011-06-20 20:08:42 -03:00
Werner Almesberger
55354c7f91 tools/lib/atben.c: added support for interrupt_wait (polled)
- 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
2011-06-20 20:08:42 -03:00
Werner Almesberger
4d4cec6a67 tools/lib/timeout.h, tools/lib/timeout.c: added timeout/deadline functions 2011-06-20 19:11:51 -03:00
Werner Almesberger
106ef7ff7f tools/atrf-xmit/atrf-xmit.c: corrected title comment 2011-06-20 18:22:29 -03:00
Werner Almesberger
668d8c61cf tools/: added interrupt_wait support to atnet and atrf-proxy (untested)
- atrf-proxy/PROTOCOL: WAIT is now implemented and takes a timeout
  argument
- atrf-proxy/atrf-proxy.c (cmd_more): implemented WAIT command using
  atrf_interrupt_wait
- lib/atnet.c (atnet_interrupt_wait, atnet_driver): added
  interrupt_wait (using WAIT)
2011-06-20 17:42:48 -03:00
Werner Almesberger
b0dd5ced20 tools/: updated tools to use flush_interrupts
- atrf-txrx/atrf-txrx.c (init_txrx), atrf-xmit/atrf-xmit.c
  (init_common): instead of reading REG_IRQ_STATUS, use
  flush_interrupts to flush interrupts
2011-06-20 17:27:19 -03:00
Werner Almesberger
620709a20a libatrf: new function to reliably flush interrupts
- misctxrx.h (flush_interrupts), misctxrx.c: reliably flush interrupts
  on all drivers (with the exception of atnet talking to an atusb)
2011-06-20 17:21:40 -03:00
Werner Almesberger
110ecf67a1 tools/lib/: added interrupt_wait support to atusb and atusb-spi driver
- 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
2011-06-20 17:10:29 -03:00
Werner Almesberger
e6f0a1d410 libatrf: new function atrf_interrupt_wait for interrupt-driven wait for interrupt
- 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
2011-06-20 17:10:29 -03:00
Werner Almesberger
a37bba8755 tools/lib: added USB-SPI driver for ATUSB
- atusb-spi.c: ATUSB driver that uses the ATUSB_SPI_* functions instead
  of ATUSB_{REG,BUF,SRAM}_*
- driver.h, atrf.c (drivers, atrf_usb_handle): added atusb_spi_driver
- Makefile (OBJS): added atusb-spi.o
2011-06-19 15:50:50 -03:00
Werner Almesberger
13f031be25 tools/lib/: split non-SPI code from atusb.c in preparation for SPI-based driver
- atusb.c (atusb_error, atusb_clear_error, atusb_open, atusb_close,
  atusb_reset, atusb_reset_rf, atusb_test_mode, atusb_slp_tr,
  atusb_interrupt, atusb_set_clkm, atusb_dev_handle): moved to
  atusb-common.c
- atusb-common.c (atusb_set_clkm): pass atusb_reg_write via
  atusb_driver.reg_write instead
- atusb.c (FROM_DEV, TO_DEV, struct atusb_dsc): moved to atusb-common.h
- Makefile (OBJS): added atusb-common.o
2011-06-19 14:06:00 -03:00
Werner Almesberger
9746205fd9 tools/lib/atusb.c: added missing standard #includes 2011-06-19 13:09:45 -03:00
Werner Almesberger
e77658fe26 tools/dirtpan/dirtpan.c: cleaned up embarrassing explanation of control byte
- 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
2011-06-19 08:40:56 -03:00
Werner Almesberger
a800eb8794 tools/dirtpan/dirtpan.c: added missing #include "daemon.h", oops 2011-06-13 20:01:31 -03:00
Werner Almesberger
9ef447865b tools/: rearranged cwtest/atrf-path to be more clear about reset and do re-init
- 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
2011-06-13 14:24:59 -03:00
Werner Almesberger
8c00833542 lib/cwtest.c (start_test_mode_231): don't insist on IRQ_PLL_LOCK
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.
2011-06-13 12:37:42 -03:00
Werner Almesberger
4d4e132f0a 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
2011-06-09 21:08:14 -03:00
Werner Almesberger
78ab017990 tools/atrf-proxy/atrf-proxy.c (cmd_zero): reduce poll delay from 100 ms to 2 ms
The overly generous delay has the effect of encouraging dubious
optimizations elsewhere. Not a good idea.
2011-06-09 20:54:07 -03:00
Werner Almesberger
abe923d2ef atrf-xmit: use receive interrupt instead of polling
- atrf-xmit.c (xfer_one): use wait_for_interrupt instead of polling
- atrf-xmit.c (xfer_one): fail if there's an unexpected receiver
  interrupt
2011-06-09 20:49:36 -03:00
Werner Almesberger
703ce81dfc atrf-xmit.c (xfer_one): pulse SLP_TR instead of sending TRX_CMD_TX_START
This makes sure we use SLP_TR just like the kernel does.
2011-06-09 20:39:24 -03:00
Werner Almesberger
6ca63fc6e7 atrf-path: accept keyboard input both from stdin and SDL
- 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
2011-06-06 20:22:57 -03:00
Werner Almesberger
8f20b1fb87 atrf-gpio: cleaned up usage
- 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
2011-06-06 19:42:31 -03:00
Werner Almesberger
533dc58824 atrf-gpio.c: rename anything "reg_op" to "command"
- atrf-gpio.c (bad_reg_op, reg_op): renamed "bad_reg_op" to
  "bad_command"
- atrf-gpio.c (bad_command): error message is now "invalid command"
- atrf-gpio.c (reg_op, main): renamed "reg_op" to "command"
2011-06-06 19:38:42 -03:00
Werner Almesberger
7a2e09187f atrf-gpio: option -c to cycle through the pattern sequence with pass/fail input
- 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
2011-06-06 19:33:11 -03:00
Werner Almesberger
14215f5b12 atrf-gpio: added control commands; register read can now be masked
- 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
2011-06-06 00:27:41 -03:00
Werner Almesberger
2a4f7a155f tools/lib/cwtest.c (cw_test_end): use reset also on USB devices
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.
2011-06-05 23:00:40 -03:00
Werner Almesberger
52657edf38 lib/atusb.c (atusb_slp_tr, atusb_driver): implemented SLP_TR pulse 2011-06-05 22:37:03 -03:00
Werner Almesberger
33b0400e53 atrf-gpio: accept 'o' as an alias for 'l'
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'
2011-06-05 21:47:02 -03:00
Werner Almesberger
e9debdd4ab tools/atrf-gpio/atusb.c (gpio): _exit after USB error, to avoid futile cleanup 2011-06-05 21:37:46 -03:00
Werner Almesberger
a73a8a2044 tools/atrf-gpio/atusb.c: if ATUSB_GPIO fails, show the attempted setting
- atusb.c (dump_port, gpio): dump the attempted setting if ATUSB_GPIO
  fails (assuming it is that setting that caused the failure)
2011-06-05 21:32:14 -03:00
Werner Almesberger
1a3f169e89 libatrf: add option to send a pulse with atrf_slp_tr
- include/atrf.h (atrf_slp_tr), lib/atrf.c (atrf_slp_tr): added pulse
  argument
- atrf-proxy/PROTOCOL, atrf-proxy/atrf-proxy.c (cmd_two, cmd_more):
  added second argument to SLP_TR command
- atrf-xtal/atben.c (atben_sample), lib/cwtest.c (cw_test_end): updated
  for API change
- lib/driver.h (struct atrf_driver): added "pulse" argument to slp_tr
- lib/atben.c (atben_slp_tr), lib/atnet.c (atnet_slp_tr): added support
  for pulse mode
2011-06-05 21:08:48 -03:00
Werner Almesberger
87e06b4e4e tools/atrf-gpio/atusb.c: various bug fixes and improvements
- 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
2011-06-05 18:30:13 -03:00
Werner Almesberger
6bf03fe0a6 tools/atrf-gpio/atben.c: made error report easier to read
- atben.c (decode_cfg): report pull-up as "R" instead of "P"
- atben.c (dump_pd): show "-" for values where we don't expect a
  specific result
2011-06-04 10:53:44 -03:00
Werner Almesberger
b0f3cb099b tools/atrf-gpio/atusb.c: ATUSB driver (using ATUSB_GPIO) 2011-06-04 10:29:10 -03:00
Werner Almesberger
4924755a15 atrf-gpio: new utility to directly access GPIOs (for now atben-only)
- tools/atrf-gpio/: new utility to directly access GPIOs
- tools/Makefile (BEN_DIRS): added atrf-gpio
2011-06-04 09:50:27 -03:00
Werner Almesberger
565fadf258 tools/lib/atusb.c: added SRAM access to atusb driver
- tools/atrf-proxy/PROTOCOL: documented new commands GETRAM and SETRAM
  for SRAM access
- tools/atrf-proxy/atrf-proxy.c (cmd_two, cmd_more): added "setram"
  command
- tools/atrf-proxy/atrf-proxy.c (cmd_more): added "getram" command
- tools/lib/atnet.c (atnet_sram_write, atnet_sram_read): SRAM access
  functions
- tools/lub/atnet.c (atnet_driver): added new functions to driver
  operations
2011-06-03 14:35:21 -03:00
Werner Almesberger
4aff7af370 tools/lib/atusb.c: added SRAM access to atusb driver
- atusb.c (atusb_sram_write, atusb_sram_read): SRAM access functions
- atusb.c (atusb_driver): added new functions to driver operations
2011-06-03 14:26:47 -03:00