Sorry, forgot about that; also, to make matters worse: "different blocks" also means "different threads", so this is not only a data integrity, but especially a multithreading horror.
On 06.01.2016 17:30, Tom Rondeau wrote: > On Wed, Jan 6, 2016 at 11:23 AM, Marcus Müller > <marcus.muel...@ettus.com <mailto:marcus.muel...@ettus.com>> wrote: > > Ah, so it's a uniform vector of _u_signed _8_bit integers. > Try pmt::u8vector_ref(VECT, k), where k is the index of the > element you want to get. To modify, use pmt::u8vector_set(pmt_t, > index,value). > > Since your pmt is really just a wrapper around memory-contiguous > uint8_ts , you can also "cheat" and directly use the uint8_t* > pmt::u8vector_writable_elements(pmt_t v, size_t & len) method, > that will give you a C-array/pointer to the first element. > > > > This is not recommended, though. Vectors are unique in the PMT world > as they are actually writable. However, if multiple blocks have access > to the same PMT vector, you can have thread contention issues when > reading and writing. > > Better to get the elements as a copy using "std::vector<uint8_t> v > = pmt::u8vector_elements(VECT)", manipulate that, and create a new > PMT. It's less efficient, but safer. > > Tom > > > > > All these functions are described on > > https://gnuradio.org/doc/doxygen/namespacepmt.html#a73605a64c44ec7f12f5f84bb98e2cae3 > as linked from the page I mentioned below. > > Best regards, > Marcus > > > On 06.01.2016 17:13, Gabriel Pechiarovich wrote: >> I'm using message strobe to send the data in the Message PMt >> parameter I used: >> >> pmt.cons(pmt.make_dict(), pmt.make_u8vector(8,0x42 )) >> >> then comes my block, and to read the output i'm using Message >> Debug block. >> >> >> >> 2016-01-06 10:55 GMT-05:00 Marcus Müller >> <marcus.muel...@ettus.com <mailto:marcus.muel...@ettus.com>>: >> >> Hi Gabriel, >> >> do you know what kind of PMT VECT is? pmt_t is a container, >> and might contain a lot of different things. >> Is it a pmt::vector, or a pmt::uniform_vector, or a list, or >> something else? >> >> For an overview, I'd like to point you to the polymorphic >> types page in the GNU Radio manual [1]. >> >> Best regards, >> Marcus >> >> [1] https://gnuradio.org/doc/doxygen/page_pmt.html >> >> >> On 06.01.2016 16:10, Gabriel Pechiarovich wrote: >>> Hi, I've been working in oot modules in gnuradio for a >>> while, but recently I've been trying to program blocks who >>> can handle messages. >>> >>> I've extracted the input data and replicated it at the >>> output, like this: >>> >>> pmt::pmt_t META = pmt::car(PDU); >>> pmt::pmt_t VECT = pmt::cdr(PDU); >>> std::cout << "Vect: " << VECT<< '\n'; >>> message_port_pub(pmt::mp("out_pdu"), pmt::cons(META, VECT)); >>> >>> But I can't understand how to handle VECT, I want to change >>> the VECT values; add some values, basicaly operate this VECT. >>> >>> If anyone can help me I'll be gratefull. >>> >>> -- >>> Gabriel Pechiarovich Salas >>> >>> >>> >>> _______________________________________________ >>> Discuss-gnuradio mailing list >>> Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org> >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> >> >> _______________________________________________ >> Discuss-gnuradio mailing list >> Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org> >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >> >> >> >> >> -- >> Gabriel Pechiarovich Salas >> Red Dragon Games >> Designers and game developers > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio