|
From: | Manu T S |
Subject: | Re: [Discuss-gnuradio] Some doubts in using gr_modtool |
Date: | Sun, 8 Sep 2013 18:50:59 +0530 |
Hi,I have a block which copies a block of input to output. The constructor is defined as shown below.
#######################################################################
copy_bb_impl::copy_bb_impl(int block_length)
{
d_block_length = block_length;
set_input_signature(gr::io_signature::make(1, 1, sizeof(char) * d_block_length));
set_output_signature(gr::io_signature::make(1, 1, sizeof(char) * d_block_length));
}
#######################################################################
make runs. Given below is the output for ctest -V
----------------------------------------------------------------------------------------------------------------------------
address@hidden build $ ctest -V
UpdateCTestConfiguration from :/home/manu/gr-ldpc/build/DartConfiguration.tcl
UpdateCTestConfiguration from :/home/manu/gr-ldpc/build/DartConfiguration.tcl
Test project /home/manu/gr-ldpc/build
Constructing a list of tests
Done constructing a list of tests
Checking test dependency graph...
Checking test dependency graph end
test 1
Start 1: test_ldpc
1: Test command: /bin/sh "/home/manu/gr-ldpc/build/lib/test_ldpc_test.sh"
1: Test timeout computed to be: 9.99988e+06
1:
1:
1/2 Test #1: test_ldpc ........................ Passed 0.00 sec
test 2
Start 2: qa_copy_bb
2: Test command: /bin/sh "/home/manu/gr-ldpc/build/python/qa_copy_bb_test.sh"
2: Test timeout computed to be: 9.99988e+06
2: gr::vmcircbuf_sysv_shm: shmget(1): Invalid argument
2: gr::buffer::allocate_buffer: failed to allocate buffer of size 5894500 KB
2: terminate called after throwing an instance of 'std::bad_alloc'
2: what(): std::bad_alloc
2: Aborted
2/2 Test #2: qa_copy_bb .......................***Failed 0.22 sec
50% tests passed, 1 tests failed out of 2
Total Test time (real) = 0.23 sec
The following tests FAILED:
2 - qa_copy_bb (Failed)
Errors while running CTest
---------------------------------------------------------------------------------------------------------------------------------While if I define the constructor as given below, ctest run without failures.
#########################################################################
copy_bb_impl::copy_bb_impl(int block_length)
: gr::sync_block("copy_bb",
gr::io_signature::make(1, 1, sizeof(char) * block_length),
gr::io_signature::make(1, 1, sizeof(char) * block_length)), d_block_length(block_length)
{
}
#########################################################################Any suggestion why the first constructor is running into errors?
--On Sun, Sep 8, 2013 at 3:02 PM, Manu T S <address@hidden> wrote:
Hey Marcus,Thanks a lot.On Sun, Sep 8, 2013 at 1:28 PM, Marcus Müller <address@hidden> wrote:
Hi Manu!Yes, that's possible *inside the constructor only*. See the gr::basic_block::set_{in,out}put_signature(gr::io_signature::sptr) doxygen.
Suppose I don't know the block size before hand, and I want to pass a parameter "x" to toe constructor such that block size can be obtained from x using certain computation (that will be defined inside the constructor). Can I do this? If so how?
That worked!Yes, that would be the correct structure.
When I add a new block "encoder", to the module "ldpc", modtool add files "include/ldpc/encoder.h", "lib/encoder_impl.cc", and "lib/encoder_impl.h". And the work function is to be declared and defined in encoder_impl.h and encoder_impl.cc respectively. Consider that I have the function "encode" defined and declared in ldpc.h and ldpc.cc respectively. ldpc.* does not define any signal processing block, so I don't add them using modtool. But they are required as they have the definition for the "encode" function and inside the work function in encoder_impl.cc I just want to call the encode function defined inside this ldpc class.
Am I supposed to put ldpc.h in inlclude/ldpc/ and ldpc.cc in lib/? Or should I put both of them inside lib/ ? Which section of CMakeLists.txt am I supposed to modify?
Just add ldpc.cc to lib/CMakeLists.txt:It is not clear which option you meant. Both ldpc.h and ldpc.cc inside lib OR should I put .h inside include/ldpc/ ?
list_append (APPEND projectname_sources
encoder_impl.cc
...
ldpc.cc )
Happy Hacking!
PS:You should also the include_directuries(${library_INCLUDE_DIR}) for each external library you use to that file if you haven't done so; same applies for target_link_libraries)
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
--
Manu T S
Manu T S
[Prev in Thread] | Current Thread | [Next in Thread] |