discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Problem processing BLOB type in a new block for I


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] Problem processing BLOB type in a new block for IEEE 802-11 transceiver
Date: Fri, 30 Jun 2017 18:52:01 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0

Hi Cristian,

a blob is not a string.

You MUST NOT

        const char *aux = reinterpret_cast<const char *>(pmt::blob_data(blob));
        pmt::pmt_t snrf2 = pmt::intern(std::string(aux));

ever. Blob data is *not* zero-terminated and it's absolutely legal to contain the zero byte.

While a std::string might actually contain zero bytes, there's nothing guaranteeing that for the pmt string type. Also: it doesn't really make sense to try and convert something that is not a string to a string type.

So, if your Tx App takes arbitrary data, it shouldn't be consuming PMT strings (which actually come with quite a performance hit, by the way, if used to transport info), and if it actually only accepts strings, then you can't just put arbitrary binary data through it.

Best regards,
Marcus

On 06/30/2017 06:13 PM, Cristian Rodríguez wrote:

Hi all.

I'm trying to convert a variable from BLOB to String.

I'm trying to do this.

Imágenes integradas 1

Before, the next block was instead of WiFi App.

Imágenes integradas 2
Message strobe sends a PMT message of STRING type (without car and cdr, just message_port_pub(pmt::mp("strobe"), pmt.intern("12345678")); ), then I need to send from the port Message out a PMT message of STRING type.

But I receive the message in a BLOB type. I was trying all types of methods, but I can't convert from BLOB to String If I send BLOB it doesn't work.

The message comes in the cdr of the PMT, so i tried with different versions of this code

        pmt::pmt_t blob(pmt::cdr(msg));
        const char *aux = reinterpret_cast<const char *>(pmt::blob_data(blob));

        pmt::pmt_t snrf2 = pmt::intern(std::string(aux));
        std::cout << "Es blob " <<std::string(aux)<< std::endl;
        message_port_pub(pmt::mp("message out"), snrf2);

There, i try to convert it to a char and later from char to String, but it doesn't work.

What do you think i can do? What i need is to take de data in BLOB format, convert it to String, save it in a PMT message and send it.

Thanks a lot for your time to read.

Best regards,

Cristian



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


reply via email to

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