Unlike the other products, usrp1 uses the DAC and not DSP
to perform baseband frequency shifting in the hardware.
Therefore this shifting occurs before I and Q swapping,
and so, the sign of the frequency needs to be inverted
on daughterboards which have inverted I and Q TX inputs.
We used to swap I and Q to share converter functions with the newer products.
Because of this, the sign on the cordic also had to be swapped.
Now that USRP1 has its own converter routines and I and Q are correct,
so should be the sign on the cordic. This was a bug introduced in master.
TX should not be an issue, because there is no cordic
and is adjusted digitally by the codec, after any potential swapping.
Moved the underflow/overflow polling into a thread and out of the fast-path.
Added an inline and async message queue into soft time control.
Error and status messages are actually generated now and enqueued.
Passes the async message test...
Scapped the old gnuradio code for information about VRQ_FPGA_SET_XX_ENABLE.
It turns out that we should disabled + restore state when changing muxes or rates.
The USRP seems to stream properly when receiving single and dual channel.
Prior to this commit, tx was accicentally always disabled from a few commits ago.
Created new type ref_vector for representing a vector of pointers.
Can be created from std::vector or a pointer.
Removes the convenience constrcutors for send/recv, its not needed.
Removes malloc/free overhead when using send/recv with pointer.
Leave the tx digital always enabled, flush with zeros is enough to turn it "off".
Fixed the flush routine to send something (when zero) to ensure zeros go out.
The max send spp is the frame size minus the alignment padding.
This allows us to copy a remainder into a new buffer and always
commit multiples of the alignment size (512 bytes).
Reworked the managed send buffer implementation to handle the above.
Uses only managed memory, and only mem-copied under the alignment.
- recv buffers have a release call
- safe make function for recv buffers (buff + release callback)
- send buffer commits now have a void return
- safe make function for send buffers (buff + commit callback)
The reason for the void return from commit is that ssize_t num_bytes was never returning anything of use.
That is for all of the zero copy implementations so far, commit cannot really error (being asynchronous).
libusb zero copy impl was reworked to support the new interface.
USRP1 io_impl with the psuedo managed buffer was replaced with safe_make.
Also, usrp1 io_impl was simplified greatly due to commit returning void now.
UDP zero copy asio was disabled (in this commit, until its reworked).
Phony send and recv interfaces were removed completely.
converted all size_t timeout_ms to double timeout
bounded and alignment buffer now take double timeout
added timeout to device::send and zero_copy_if::get_send_buff