Hi,

here is a simple photo representing my block. The block is hierarchical and
consists of a few deframers. When deframers decode correct message, they
are supposed to send message to db_logger who write information from the
message into a database. Deframers are written in c++ while db_logger is
written in python. All deframers have output port whose name is hardcoded
to "out_port", while db_logger has input port whose name was hardcoded as
"in_port"

In previous case, self is db_logger. I have shown there how the message
port inside that block was defined.

Inside hier block where everything is packed I have lines like this
self.msg_connect(self.SFL_90518279_pkt_def, out_port, self.db_logger,
in_port)
here self references hier block.

Cheers,
Nemanja

On Wed, Nov 4, 2015 at 10:49 PM, Marcus Müller <[email protected]>
wrote:

> I've lost oversight.. is self a hier block, in this case?
>
>
> On 11/04/2015 06:49 PM, Nemanja Savic wrote:
>
> So, a block called db_logger is written in python and port is defined in
> following way:
> self.message_port_register_in(pmt.pmt_intern(in_port))
>
> Well, I am not sure, this works fine in older version.
>
> On Wed, Nov 4, 2015 at 6:41 PM, Marcus Müller <[email protected]>
> wrote:
>
>> What does your message_port_register_in call look like?
>> Or is it a message_port_register_hier_in call? (should it be?)
>>
>> Cheers,
>> Marcus
>>
>>
>> On 11/04/2015 06:37 PM, Nemanja Savic wrote:
>>
>> Hi,
>>
>> ok thanks. Does it matter how I everything is declared, but it is clear
>> that something changed since 3.6.5.1.
>> So i have hier block written in python where i define
>> in_port = 'in_port'
>> out_port='out_port'
>>
>> These arguments are passed in the following way:
>> in_port is receiving port of a block that receives messages from blocks
>> which have registered out_block as their transmitting port.
>> out_port is passed to constructors of all transmitting blocks. They are
>> passed as type const char*. Blocks have member d_msg_out_port defined as
>> string. So something like this:
>> d_msg_out_port(msg_out_port)
>> ...
>> body of constructor:
>> message_port_register_out(pmt::mp(d_msg_out_port));
>>
>> So, later on, at the end of hier block I call:
>> self.msg_connect(self.SFL_90518279_pkt_def, out_port, self.db_logger,
>> in_port)
>>
>> Could it be that problem is something with strings (I am not sure is null
>> character is passed, no idea)?
>>
>> Nemanja
>>
>> On Wed, Nov 4, 2015 at 6:26 PM, Marcus Müller <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> not really, what it says is really "I can't find <element> in <list of
>>> elements>", with that list being the names of the registered ports.
>>> So, the interesting thing is that seemingly,comparin
>>> pmt::symbol("in_port") with pmt::symbol("in_port") doesn't quite work well.
>>>
>>> I'd have to look into what pmt::comparator looks like; it's my first
>>> suspect for why that might fail.
>>>
>>> Best regards,
>>> Marcus
>>>
>>>
>>>
>>> On 11/04/2015 06:20 PM, Nemanja Savic wrote:
>>>
>>> Hi,
>>>
>>> hm, could just tell me if I am thinking wrong, but this looks like some
>>> of my blocks is also called in_port?
>>>
>>> Nemanja
>>>
>>> On Wed, Nov 4, 2015 at 6:14 PM, Marcus Müller <[email protected]>
>>> wrote:
>>>
>>>> Hi Nemanja,
>>>>
>>>> a blind suspicion: as "system" is a port that should be registered by
>>>> the runtime for each block, there might be some confusion happening.
>>>> Does it work better when you rename your block to something else?
>>>>
>>>> Best regards,
>>>> Marcus
>>>>
>>>> On 11/04/2015 06:05 PM, Nemanja Savic wrote:
>>>>
>>>> Hi all guys,
>>>>
>>>> I recently installed 3.7.8, and before that I had 3.6.5.1.
>>>> I was using message passing in some of my blocks, but now I get error
>>>> which is following:
>>>>
>>>> Could not find port: in_port in:
>>>> in_port
>>>> system
>>>>
>>>> Traceback (most recent call last):
>>>>   File "./top_block.py", line 178, in <module>
>>>>     tb = top_block()
>>>>   File "./top_block.py", line 124, in __init__
>>>>     self.TPMS_univ_TPMS_rec2_0 = TPMS.univ_TPMS_rec2("WBX_proba",
>>>> samp_rate, 0.5, 45, "localhost", 2, "TEST_TRACK_TPMS", "nemanja",
>>>> "nemanja", "det_id_proba", "detectors")
>>>>   File
>>>> "/scr1/nemanja/install/lib64/python2.6/site-packages/TPMS/univ_TPMS_rec2.py",
>>>> line 145, in __init__
>>>>     self.msg_connect(self.SEL_90518407_pkt_def.SCHRADER_def, out_port,
>>>> self.db_logger, in_port)
>>>>   File
>>>> "/scr1/nemanja/install/lib64/python2.6/site-packages/gnuradio/gr/hier_block2.py",
>>>> line 59, in wrapped
>>>>     func(self, src.to_basic_block(), srcport, dst.to_basic_block(),
>>>> dstport)
>>>>   File
>>>> "/scr1/nemanja/install/lib64/python2.6/site-packages/gnuradio/gr/hier_block2.py",
>>>> line 131, in msg_connect
>>>>     self.primitive_msg_connect(*args)
>>>>   File
>>>> "/scr1/nemanja/install/lib64/python2.6/site-packages/gnuradio/gr/runtime_swig.py",
>>>> line 3043, in primitive_msg_connect
>>>>     return _runtime_swig.hier_block2_sptr_primitive_msg_connect(self,
>>>> *args)
>>>> RuntimeError: invalid msg port in connect() or disconnect()
>>>>
>>>> I see that there is a function for checking whether the ports are
>>>> valid, but don't get what's wrong with my ports. Namely, I have hier block
>>>> and a few blocks are sending messages to a single blocks where the messages
>>>> are decoded and written to darabase. I tried to hardcode names of the
>>>> blocks and that also didn't help.
>>>>
>>>> Thanx,
>>>>
>>>> --
>>>> Nemanja Savić
>>>>
>>>>
>>>> _______________________________________________
>>>> Discuss-gnuradio mailing 
>>>> [email protected]https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Discuss-gnuradio mailing list
>>>> [email protected]
>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>
>>>>
>>>
>>>
>>> --
>>> Nemanja Savić
>>>
>>>
>>>
>>
>>
>> --
>> Nemanja Savić
>>
>>
>>
>
>
> --
> Nemanja Savić
>
>
>


-- 
Nemanja Savić
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to