summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/packed_to_unpacked_impl.cc
diff options
context:
space:
mode:
authorMarcus Müller <mmueller@gnuradio.org>2019-08-07 21:45:12 +0200
committerMarcus Müller <marcus@hostalia.de>2019-08-09 23:04:28 +0200
commitf7bbf2c1d8d780294f3e016aff239ca35eb6516e (patch)
treee09ab6112e02b2215b2d59ac24d3d6ea2edac745 /gr-blocks/lib/packed_to_unpacked_impl.cc
parent78431dc6941e3acc67c858277dfe4a0ed583643c (diff)
Tree: clang-format without the include sorting
Diffstat (limited to 'gr-blocks/lib/packed_to_unpacked_impl.cc')
-rw-r--r--gr-blocks/lib/packed_to_unpacked_impl.cc202
1 files changed, 102 insertions, 100 deletions
diff --git a/gr-blocks/lib/packed_to_unpacked_impl.cc b/gr-blocks/lib/packed_to_unpacked_impl.cc
index 8b13371e58..f63e040b2a 100644
--- a/gr-blocks/lib/packed_to_unpacked_impl.cc
+++ b/gr-blocks/lib/packed_to_unpacked_impl.cc
@@ -30,123 +30,125 @@
#include <assert.h>
namespace gr {
- namespace blocks {
-
- template <class T>
- typename packed_to_unpacked<T>::sptr
- packed_to_unpacked<T>::make(unsigned int bits_per_chunk,
- endianness_t endianness)
- {
- return gnuradio::get_initial_sptr
- (new packed_to_unpacked_impl<T> (bits_per_chunk, endianness));
- }
-
- template <class T>
- packed_to_unpacked_impl<T> ::packed_to_unpacked_impl(unsigned int bits_per_chunk,
- endianness_t endianness)
+namespace blocks {
+
+template <class T>
+typename packed_to_unpacked<T>::sptr
+packed_to_unpacked<T>::make(unsigned int bits_per_chunk, endianness_t endianness)
+{
+ return gnuradio::get_initial_sptr(
+ new packed_to_unpacked_impl<T>(bits_per_chunk, endianness));
+}
+
+template <class T>
+packed_to_unpacked_impl<T>::packed_to_unpacked_impl(unsigned int bits_per_chunk,
+ endianness_t endianness)
: block("packed_to_unpacked",
- io_signature::make(1, -1, sizeof(T)),
- io_signature::make(1, -1, sizeof(T))),
- d_bits_per_chunk(bits_per_chunk), d_endianness(endianness), d_index(0)
- {
- assert(bits_per_chunk <= this->d_bits_per_type);
- assert(bits_per_chunk > 0);
-
- this->set_relative_rate((uint64_t)this->d_bits_per_type, (uint64_t)bits_per_chunk);
- }
-
- template <class T>
- packed_to_unpacked_impl<T> ::~packed_to_unpacked_impl()
- {
- }
-
- template <class T>
- void
- packed_to_unpacked_impl<T> ::forecast(int noutput_items,
- gr_vector_int &ninput_items_required)
- {
- int input_required = (int)ceil((d_index + noutput_items * d_bits_per_chunk)
- / (1.0 * this->d_bits_per_type));
- unsigned ninputs = ninput_items_required.size();
- for(unsigned int i = 0; i < ninputs; i++) {
+ io_signature::make(1, -1, sizeof(T)),
+ io_signature::make(1, -1, sizeof(T))),
+ d_bits_per_chunk(bits_per_chunk),
+ d_endianness(endianness),
+ d_index(0)
+{
+ assert(bits_per_chunk <= this->d_bits_per_type);
+ assert(bits_per_chunk > 0);
+
+ this->set_relative_rate((uint64_t)this->d_bits_per_type, (uint64_t)bits_per_chunk);
+}
+
+template <class T>
+packed_to_unpacked_impl<T>::~packed_to_unpacked_impl()
+{
+}
+
+template <class T>
+void packed_to_unpacked_impl<T>::forecast(int noutput_items,
+ gr_vector_int& ninput_items_required)
+{
+ int input_required = (int)ceil((d_index + noutput_items * d_bits_per_chunk) /
+ (1.0 * this->d_bits_per_type));
+ unsigned ninputs = ninput_items_required.size();
+ for (unsigned int i = 0; i < ninputs; i++) {
ninput_items_required[i] = input_required;
- //printf("Forecast wants %d needs %d\n",noutput_items,ninput_items_required[i]);
- }
+ // printf("Forecast wants %d needs %d\n",noutput_items,ninput_items_required[i]);
}
-
- template <class T>
- unsigned int
- packed_to_unpacked_impl<T>::get_bit_le(const T *in_vector, unsigned int bit_addr)
- {
- T x = in_vector[bit_addr >> this->d_log2_l_type];
- return (x >> (bit_addr & (this->d_bits_per_type-1))) & 1;
- }
-
- template <class T>
- unsigned int
- packed_to_unpacked_impl<T>::get_bit_be(const T *in_vector, unsigned int bit_addr)
- {
- T x = in_vector[bit_addr >> this->d_log2_l_type];
- return (x >> ((this->d_bits_per_type-1) - (bit_addr & (this->d_bits_per_type-1)))) & 1;
- }
-
- template <class T>
- int
- packed_to_unpacked_impl<T> ::general_work(int noutput_items,
- gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
- {
- unsigned int index_tmp = d_index;
-
- assert(input_items.size() == output_items.size());
- int nstreams = input_items.size();
-
- for (int m=0; m < nstreams; m++){
- const T *in = (T *)input_items[m];
- T *out = (T *)output_items[m];
+}
+
+template <class T>
+unsigned int packed_to_unpacked_impl<T>::get_bit_le(const T* in_vector,
+ unsigned int bit_addr)
+{
+ T x = in_vector[bit_addr >> this->d_log2_l_type];
+ return (x >> (bit_addr & (this->d_bits_per_type - 1))) & 1;
+}
+
+template <class T>
+unsigned int packed_to_unpacked_impl<T>::get_bit_be(const T* in_vector,
+ unsigned int bit_addr)
+{
+ T x = in_vector[bit_addr >> this->d_log2_l_type];
+ return (x >>
+ ((this->d_bits_per_type - 1) - (bit_addr & (this->d_bits_per_type - 1)))) &
+ 1;
+}
+
+template <class T>
+int packed_to_unpacked_impl<T>::general_work(int noutput_items,
+ gr_vector_int& ninput_items,
+ gr_vector_const_void_star& input_items,
+ gr_vector_void_star& output_items)
+{
+ unsigned int index_tmp = d_index;
+
+ assert(input_items.size() == output_items.size());
+ int nstreams = input_items.size();
+
+ for (int m = 0; m < nstreams; m++) {
+ const T* in = (T*)input_items[m];
+ T* out = (T*)output_items[m];
index_tmp = d_index;
// per stream processing
- switch(d_endianness) {
+ switch (d_endianness) {
case GR_MSB_FIRST:
- for(int i = 0; i < noutput_items; i++) {
- //printf("here msb %d\n",i);
- T x = 0;
- for(unsigned int j = 0; j < d_bits_per_chunk; j++, index_tmp++)
- x = (x<<1) | get_bit_be(in, index_tmp);
- out[i] = x;
- }
- break;
+ for (int i = 0; i < noutput_items; i++) {
+ // printf("here msb %d\n",i);
+ T x = 0;
+ for (unsigned int j = 0; j < d_bits_per_chunk; j++, index_tmp++)
+ x = (x << 1) | get_bit_be(in, index_tmp);
+ out[i] = x;
+ }
+ break;
case GR_LSB_FIRST:
- for(int i = 0; i < noutput_items; i++) {
- //printf("here lsb %d\n",i);
- T x = 0;
- for(unsigned int j = 0; j < d_bits_per_chunk; j++, index_tmp++)
- x = (x<<1) | get_bit_le(in, index_tmp);
- out[i] = x;
- }
- break;
+ for (int i = 0; i < noutput_items; i++) {
+ // printf("here lsb %d\n",i);
+ T x = 0;
+ for (unsigned int j = 0; j < d_bits_per_chunk; j++, index_tmp++)
+ x = (x << 1) | get_bit_le(in, index_tmp);
+ out[i] = x;
+ }
+ break;
default:
- assert(0);
+ assert(0);
}
- //printf("almost got to end\n");
- assert(ninput_items[m] >= (int)((d_index+(this->d_bits_per_type-1)) >> this->d_log2_l_type));
- }
-
- d_index = index_tmp;
- this->consume_each(d_index >> this->d_log2_l_type);
- d_index = d_index & (this->d_bits_per_type-1);
- //printf("got to end\n");
- return noutput_items;
+ // printf("almost got to end\n");
+ assert(ninput_items[m] >=
+ (int)((d_index + (this->d_bits_per_type - 1)) >> this->d_log2_l_type));
}
+ d_index = index_tmp;
+ this->consume_each(d_index >> this->d_log2_l_type);
+ d_index = d_index & (this->d_bits_per_type - 1);
+ // printf("got to end\n");
+ return noutput_items;
+}
+
template class packed_to_unpacked<std::uint8_t>;
template class packed_to_unpacked<std::int16_t>;
template class packed_to_unpacked<std::int32_t>;
- } /* namespace blocks */
+} /* namespace blocks */
} /* namespace gr */