Dear all,
I'm writing an out-of-tree C++ block performing some PSK mapping method
(BPSK, QPSK. 16PSK, 256PSK). I got this error when running make command:
/home/khachoang/gr-Hoang/lib/Digital_Mapper_impl.cc:36:5: error: prototype
> for ‘gr::Hoang::Digital_Mapper::sptr gr::Hoang::Digital_Mapper::make(int)’
> does not match any in class ‘gr::Hoang::Digital_Mapper’
> /home/khachoang/gr-Hoang/include/Hoang/Digital_Mapper.h:49:19: error:
> candidate is: static gr::Hoang::Digital_Mapper::sptr
> gr::Hoang::Digital_Mapper::make()
I have tried but still do not know where this error from. Could anyone help
me to fix it?
My header file:
#ifndef INCLUDED_HOANG_DIGITAL_MAPPER_IMPL_H
> #define INCLUDED_HOANG_DIGITAL_MAPPER_IMPL_H
> #include <Hoang/Digital_Mapper.h>
> #include <vector>
> #include <sys/time.h>
> #include <stdio.h>
> #include <unistd.h>
> namespace gr {
> namespace Hoang {
> class Digital_Mapper_impl : public Digital_Mapper
> {
> private:
> int d_mapping_mode;
> std::vector<gr_complex> d_symbols_psk;
> public:
> Digital_Mapper_impl(int mapping_mode);
> ~Digital_Mapper_impl();
> // Where all the action really happens
> void forecast (int noutput_items, gr_vector_int
> &ninput_items_required);
> int general_work(int noutput_items,
> gr_vector_int &ninput_items_v,
> gr_vector_const_void_star &input_items,
> gr_vector_void_star &output_items);
> };
> } // namespace Hoang
> } // namespace gr
> #endif /* INCLUDED_HOANG_DIGITAL_MAPPER_IMPL_H */
My implementation file:
#ifdef HAVE_CONFIG_H
> #include "config.h"
> #endif
> #include <gnuradio/io_signature.h>
> #include "Digital_Mapper_impl.h"
> #include <cstdio>
> #include <math.h>
> #include <vector>
> #include <sys/time.h>
> namespace gr {
> namespace Hoang {
> Digital_Mapper::sptr
> Digital_Mapper::make(int mapping_mode)
> {
> return gnuradio::get_initial_sptr
> (new Digital_Mapper_impl(mapping_mode));
> }
> Digital_Mapper_impl::Digital_Mapper_impl(int mapping_mode)
> : gr::block("Digital_Mapper",
> gr::io_signature::make(1, 1, sizeof(char)),
> gr::io_signature::make(1, 1, sizeof(gr_complex))),
> d_mapping_mode(mapping_mode), d_symbols_psk(mapping_mode,gr_complex(0,0))
> {
> printf("init::Digital_Mapper\n");
>
> int i = 0;
> int pi = 3.14159265359
> while (i < mapping_mode) {
> float theta = 2*pi*i/mapping_mode;
> d_symbols_psk[i] = gr_complex(cos(theta), sin(theta));
> i++;
> }
> set_output_multiple(mapping_mode);
> }
> /*
> * Our virtual destructor.
> */
> Digital_Mapper_impl::~Digital_Mapper_impl()
> {
> }
> void
> Digital_Mapper_impl::forecast (int noutput_items, gr_vector_int
> &ninput_items_required)
> {
> /* <+forecast+> e.g. ninput_items_required[0] = noutput_items */
> }
> int
> Digital_Mapper_impl::general_work (int noutput_items,
> gr_vector_int &ninput_items_v,
> gr_vector_const_void_star &input_items,
> gr_vector_void_star &output_items)
> {
> int ninput_items = ninput_items_v[0];
> unsigned char *in = (unsigned char *) input_items[0];
> gr_complex *out = (gr_complex *) output_items[0];
>
> int ni = 0;
> int no = 0;
> unsigned char byte = 0x0;
> unsigned char exceed = d_mapping_mode - 1;
> while (ni < ninput_items && no < noutput_items)
> {
> byte = in[ni];
> for (int i = 0;i <= 8*log(2)/log(d_mapping_mode)-1;i++) {
> int pos = i*log(d_mapping_mode)/log(2);
> /*if (mapping_mode == 0)*/ out[no + i] = d_symbols_psk[((byte >> pos) &
> exceed)];
> }
> ni++;
> no += 8/log(d_mapping_mode);
> }
> consume_each(ni);
> return no;
> }
> } /* namespace Hoang */
> } /* namespace gr */
My xml file:
<?xml version="1.0"?>
> <block>
> <name>Digital Mapper</name>
> <key>Hoang_Digital_Mapper</key>
> <category>Hoang</category>
> <import>import Hoang</import>
> <make>Hoang.Digital_Mapper($mapping_mode)</make>
> <param>
> <name>Mapping Mode</name>
> <key>mapping_mode</key>
> <value>2</value>
> <type>enum</type>
> <option>
> <name>BPSK</name>
> <key>2</key>
> </option>
> <option>
> <name>QPSK</name>
> <key>4</key>
> </option>
> <option>
> <name>16PSK</name>
> <key>16</key>
> </option>
> <option>
> <name>256PSK</name>
> <key>256</key>
> </option>
> </param>
> <sink>
> <name>byte_in</name>
> <type>byte</type>
> </sink>
> <source>
> <name>sym_out</name>
> <type>complex</type>
> </source>
> </block>
Many thanks.
Hoang
--
*Hoang Ngo-Khac*
Vietnam National University, Hanoi (VNU-H)
Univ. of Engineering and Technology (UET)
Faculty of Electronics and Telecommunications (FET)
Alternative email: [email protected]
Mobilephone: +84.163.682.7874
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio