Just a very rough merge to get off the ground. Major parts are not yet
implemented. The mixer intergration is in a messed up state. Part which
need work have been marked with XXX
Conflicts:
firmware/common/hackrf_core.c
firmware/common/hackrf_core.h
firmware/common/max2837.c
firmware/common/max2837.h
firmware/common/rf_path.c
firmware/common/rffc5071.c
firmware/common/rffc5071.h
firmware/common/sgpio.c
firmware/common/si5351c.c
firmware/common/tuning.c
firmware/common/w25q80bv.c
firmware/common/w25q80bv.h
firmware/common/xapp058/ports.c
firmware/hackrf-common.cmake
firmware/hackrf_usb/hackrf_usb.c
firmware/hackrf_usb/usb_api_register.c
firmware/hackrf_usb/usb_api_transceiver.c
host/hackrf-tools/src/hackrf_transfer.c
hackrf_usb firmware does not run from SPI flash once the ROM bootloader is done. Simplify assumptions by initializing SPI flash once, early. Do not initialize it every 256 bytes that are read from or written to the device.
Among the TODOs:
* Refactor obtaining LPC serial number and chip ID into separate API and header/source files. Remove from main().
* Create a usb_set_serial_number_descriptor() or similar function to be called before USB stack is started.
* Ensure USB serial number descriptor is valid even if code forgets to initialize the serial number before the USB stack is started. May be as simple as providing default initializer for usb_descriptor_string_serial_number[].
* Create a #define/constant for the usb_descriptor_string_serial_number length.
* Identify what's causing intermittent crashes in hackrf_transfer when no serial number is specified. I'm probably misusing getopt.
* Permit serial number without leading zeros so you don't have to type as much.
* Add support for serial number argument in other hackrf_* tools.
* Provide libhackrf support for enumerating multiple HackRFs, so that hackrf_info can list all devices. May require an additional libhackrf function, outside of hackrf_open().
...and anything else that makes this less of a hack.