discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] prototype for make() does not match any in class


From: Hoang Ngo Khac
Subject: [Discuss-gnuradio] prototype for make() does not match any in class
Date: Thu, 19 Jun 2014 14:47:38 +0700

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:  address@hidden
Mobilephone:  +84.163.682.7874

reply via email to

[Prev in Thread] Current Thread [Next in Thread]