aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/convert
diff options
context:
space:
mode:
authorBen Hilburn <ben.hilburn@ettus.com>2014-02-04 11:04:07 -0800
committerBen Hilburn <ben.hilburn@ettus.com>2014-02-04 11:04:07 -0800
commit178ac3f1c9950d383c8f64b3df464c0f943c4a23 (patch)
tree318ed621a7b59b7d34d4ce6e4a92f73f0bcef509 /host/lib/convert
parent2718ac110fa931cc29daf7cb3dc5ab6230ee02ab (diff)
downloaduhd-178ac3f1c9950d383c8f64b3df464c0f943c4a23.tar.gz
uhd-178ac3f1c9950d383c8f64b3df464c0f943c4a23.tar.bz2
uhd-178ac3f1c9950d383c8f64b3df464c0f943c4a23.zip
Merging USRP X300 and X310 support!!
Diffstat (limited to 'host/lib/convert')
-rw-r--r--host/lib/convert/convert_pack_sc12.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/host/lib/convert/convert_pack_sc12.cpp b/host/lib/convert/convert_pack_sc12.cpp
index 92cd5d152..081f60a89 100644
--- a/host/lib/convert/convert_pack_sc12.cpp
+++ b/host/lib/convert/convert_pack_sc12.cpp
@@ -80,13 +80,26 @@ struct convert_star_1_to_sc12_item32_1 : public converter
void operator()(const input_type &inputs, const output_type &outputs, const size_t nsamps)
{
const std::complex<type> *input = reinterpret_cast<const std::complex<type> *>(inputs[0]);
- item32_sc12_3x *output = reinterpret_cast<item32_sc12_3x *>(size_t(outputs[0]) & ~0x3);
+
+ /*
+ * Effectively outputs will point to a managed_buffer instance. These buffers are 32 bit aligned.
+ * For a detailed description see comments in 'convert_unpack_sc12.cpp'.
+ */
+ const size_t head_samps = size_t(inputs[0]) & 0x3;
+ size_t rewind = 0;
+ switch(head_samps)
+ {
+ case 0: break;
+ case 1: rewind = 9; break;
+ case 2: rewind = 6; break;
+ case 3: rewind = 3; break;
+ }
+ item32_sc12_3x *output = reinterpret_cast<item32_sc12_3x *>(size_t(outputs[0]) - rewind);
//helper variables
size_t i = 0, o = 0;
//handle the head case
- const size_t head_samps = size_t(outputs[0]) & 0x3;
switch (head_samps)
{
case 0: break; //no head