Current stuff
-------------

- add spi_atben driver, for improved performance and to serve as an
  example for spi_atusb

  Resolution: done. Average frame buffer transfer speed increased from
  about 0.82 Mbps to 4.2 Mbps. Things still pending:

  - restore GPIOs in spi_atben
  - update unbinding procedure

- need to document fab workflow in makefiles/Makefile.kicad

- boot.hex is now bigger than 4 kB. Need to split USB stack build into
  "lean" and "fat" version.

  Work-around: those wishing to build their boot loader should use
  commit ce16a16.

  Resolution: should work now (after the stack split). Still needs
  testing.

- atusb/fw/ design flaw: we can send an interrupt queued in EP1 after
  a control transfer has happened that turns off the interrupt source

  Work-around: seems that waiting for 10 ms gets it most of the time

- atusb/fw/ should combine interrupts so that we don't have to read
  IRQ_STATUS (this goal may conflict with the synchronization
  requirement above, though)

  Resolution: do less instead of more - we now don't even touch
  IRQ_STATUS in the atusb firmware and just send a zero byte as an
  indication that something has happened.

- atusb/fw/: think of a better way to re-enable INT0 after ATUSB_GPIO

- atusb/fw/: remove obsolete atusb requests

- write GETTING-STARTED similar to what we had for gta02-core

- find out why "make dfu" doesn't work on my u1010

- make tools interruptible (^C) again when using atusb (the new
  interrupt code removed the timeout and usb_bulk_read seems to simply
  ignore signals)

- update OpenWrt cross-toolchain and check build. Also check if
  SDL_gfx is now available.

*** EVERYTHING BELOW NEEDS UPDATING ***

General
=======

Things not done yet
-------------------

- document directory hierarchy

- make sure all files have a copyright header or are listed in AUTHORS

- connect all the bits and pieces of the build system

- combine io-parts.h generation

- combine "standard" EP0 commands, such as *_ID and *_BUILD

- implement return to DFU in application's EP0 protocol

- consider removing *_ID and using bcdDevice instead


Bugs to fix
-----------

- builds fail if .version isn't there yet



atrf
====

AT86RF230-based IEEE 802.15.4 transceiver. Two variants: one to make a USB
dongle for use with any Linux host, and one that connects with SPI directly
inside a Ben.

Update: following Rikard Lindstrom's revelation that we can use the uSD slot
also just as general GPIOs, the variant that goes inside the Ben can wait a
bit and the atben board for insertion into the uSD slot is being worked on
first. We can verify most of the design of a fully integrated board with the
atben board and the latter will be of greater immediate use.


Things done
-----------

- verify that the Ben can output an a) 16 MHz clock, and b) with +/- 40 ppm

  Done, see ecn/ecn0005.txt. Works fine.

- replace discrete balun and filter with integrated solution, to reduce BOM
  size, maybe cost, insertion loss, and PCB space (see ATRF/ECN0003)

  Done for atben. At a first glamce, does not seem to affect performance.

- check if we really need three DC blocking caps in the RF path

  Reduced to two in atben without apparent ill effects.


Things not done yet
-------------------

- examine spectrum around carrier frequency and first harmonic to look for
  obvious distortions.  Vary transmit power.

- measure throughput as a function of placement/distance, carrier frequency,
  and transmit power

- atrf-txrx: suppport "extended mode" with IEEE 802.15.4 CSMA-CA for more
  realistic throughput figures

- measure full spectrum (ideally up to 25 GHz, but just 2nd and 3rd harmonic
  will already tell most of the story) with calibrated antenna for FCC/ETSI
  compliance assessment. Vary transmit power.

- use IEEE 802.15.4 stack from linux-zigbee. The linux-zigbee kernel is
  currently at 2.6.35. Once 2.6.36 is released, we should have Ben and
  IEEE 802.15.4 support in the same kernel without further ado.

- change layout of transceiver side of the board for placement inside Ben

- define EMI filters for placement inside Ben

- check USB standard for recommended USB dongle dimensions

- change layout for straight USB dongle

- generate proper BOM

- implement sleep mode

- (atben) verify SPI signal timing, particularly the data clock


ccrf
====

Board similar to the atrf, but with the TI/Chipcon CC2520.

Cancelled. The CC2520 falls under US export restrictions, apparently because
it contains an AES engine.


cntr
====

Simple USB-based counter to measure a clock's long-time accuracy with
arbitrarily high precision, by comparing it to an NTP time reference.


Things not done yet
-------------------

- measure duty cycle

- use the LED to display activity on clock input and duty cycle

- consider using a comparator and a DAC to allow for programmable logic levels

- evaluate termination resistance

- document circuit design

- record beats between 16 bit counter polls and use them for the estimate
  of lost cycles (2*1 is way too optimistic)

- include system clock resolution in accuracy calculation

- consider running shorter sliding windows to estimate drift

- consider detecting unusual half-periods

- consider using a reversed USB connector, to avoid having to cross D+/D- and,
  worse, VBUS and GND

- test input performance by counting a source that emits a known number of
  cycles

- consider using historical margins to sanity-check the current margin (if any
  old.max < curr.min or old.min > curr.max, we have a problem) and to further
  narrow the effective margin, thus achieving faster convergence. We would have
  to consider temperature drift of the frequency source in this case.

- find out why frequency measurements always seem to start high and then slowly
  drop