diff options
author | Marcus Müller <mmueller@gnuradio.org> | 2019-08-07 21:45:12 +0200 |
---|---|---|
committer | Marcus Müller <marcus@hostalia.de> | 2019-08-09 23:04:28 +0200 |
commit | f7bbf2c1d8d780294f3e016aff239ca35eb6516e (patch) | |
tree | e09ab6112e02b2215b2d59ac24d3d6ea2edac745 /gr-blocks/lib/packed_to_unpacked_impl.cc | |
parent | 78431dc6941e3acc67c858277dfe4a0ed583643c (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.cc | 202 |
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 */ |