[Discuss-gnuradio] Command terminated by signal 11
Hello I am running my code in Python using Gnuradio and USRPs. The program is supposed to work continuously till an interrupt is given. The code works well for 10-15 iterations and then terminates stating command terminated by signal 11. What could be the possible reason behind it. I tried to google this error but the explanation given there was difficult to understand. Also how can I get rid of this error? Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] looping with work() function
Hi Activecat The description that you have given matches quite closely to my requirements. Kindly send me the sample code. I will try it out with my setup. We need to set_max_noutput_items() to a small value, so that the block response fast enough to the ACK signal. This block should continuously consuming input from USRP (to detect ACK) while sending output (either data packets, or a series of zero) to the USRP. I think these two ports (the input and output connecting to USRP) should have the same data rate as they are connecting to the same USRP. What should be done to make all these settings? When PC#1 transmit packets, PC#2 may miss the few packets before detecting the first one. That's why you want PC#1 to count the number of packets transmitted before receiving ACK. But have you ever think that, the ACK sent by PC#2 may also be missed out by PC#1. Then how would you handle this ..? I am trying to start my experiment from the transmitter side first. I'll handle the missed ACKs later. Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] looping with work() function
My top_block class represents the whole flowgraph. The class test_demo is one of the blocks of this flowgraph for which its own work() function is defined. The test_demo checks for a start sign(given by the user) and participates in data transmission process and upon receiving an ACK for success should stop further transmission. At this point, the flowgraph should stop and start again with a new start sign for next iteration and so on. I am planning to plot the number of packets transmitted before receiving an ACK against this start sign. Therefore, I need my flowgraph to execute several times. I hope this description explains my intention. I am not very familiar with scheduler. How can I use the scheduler to do this? On Tue, Mar 11, 2014 at 3:12 PM, Activecat active...@gmail.com wrote: On Tue, Mar 11, 2014 at 5:04 PM, Martin Braun martin.br...@ettus.comwrote: On 03/11/2014 06:10 AM, Sumedha Goyal wrote: Hello I am executing a flowgraph where I pass different parameters to the work() function of my block in every iteration. If the parameters could be fed into work() as input elements, than that is possible. Please describe the parameters in details. 1. I would like my flowgraph to execute once with a certain set of parameters and on satisfying a certain condition, it should stop execution (even if the queue/buffer of the block is not empty). 2. The control should come back to the main() function and the next iteration should start with a new set of parameters and again upon satisfying a certain condition the flowgraph should exit. In flow-graph there is no main() function, but only the scheduler in the background. Please give specific examples of what you are trying to accomplish. Regards, Activecat ___ Discuss-gnuradio mailing list 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
[Discuss-gnuradio] how to limit the size of buffer/queue for a block?
Hello The flowgraph of my top_block has test_demo as one of the blocks. The work() function associated with it has only one print statement. When I execute the flowgraph, the statement keeps on printing the statement I AM IN WORK on the screen. Why does it happen? My flowgraph is : File source---stream to datagram---test_demodatagram to stream-file sink test_demo.py is : import timing import numpy import gras import Queue import thread from gnuradio import gr from gnuradio import digital from gnuradio import uhd import grextras class test_demo(gras.Block): def __init__(self, threshold): gras.Block.__init__(self,name=test_demo, in_sig = [numpy.uint8,numpy.uint8,numpy.uint8], out_sig = [numpy.uint8,numpy.uint8]) self.input_config(0).reserve_items = 0 self.input_config(1).reserve_items = 0 self.output_config(1).reserve_items = 4096 self.output_config(0).reserve_items = 4096 self.threshold=threshold print inside test_demo def work(self,ins,outs): print I AM IN WORK If it is due to the size of buffer/queue of the block then how can I limit it? I understand that work() keeps on executing till the block receives something at its input ports. I want work() to return the control to main flowgraph upon satisfying a user specified condition such as if (i=5): self.mark_done() It should ignore all the pending packets of the buffer/queue. I want to start my flowgraph fresh after this process. ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] looping with work() function
1. There is a file source that frames data packets for the test_demo. This is part of a transmitter USRP. 2. I have another USRP as receiver that sends an ACK upon reception of data packets to the transmitter. 3. Start sign is a threshold value. If the packet information (calculated by some method) exceeds this threshold, transmission starts and upon receiving an ACK stops. 4. I change this threshold value for every new iteration and count how many packets were transmitted before receiving a success ACK. I can do this manually for every iteration but how to automate it for say some 1000 iterations? I hope it explains everything. On Mar 11, 2014 7:28 PM, Activecat active...@gmail.com wrote: Dear Sumedha Goyal, The test_demo checks for a start sign(given by the user) and participates in data transmission process and upon receiving an ACK for success should stop further transmission. Q1: What do you mean by participates in data transmission process? Does it just send out what it receives, or insert any new data? Q2: For upon receiving an ACK:- from where the ACK will comes from, from upstream, downstream, or somewhere else? At this point, the flowgraph should stop and start again with a new start sign for next iteration and so on. I am planning to plot the number of packets transmitted before receiving an ACK against this start sign. If I understand you requirement correctly, you need a block that continuously getting input from somewhere. This input contains start sign and later followed by ACK. Upon receiving start sign, this block will pass through all it receives to its output port. Upon receiving ACK, this block will stop the pass through (means no output), until it receive another start sign again. Meanwhile, you want the block to count the number of inputs between the start sign and ACK, and use this number to plot graph. Is this what you want? If yes then I am able to help you. Let's clarify your requirements first. Regards, Activecat ___ Discuss-gnuradio mailing list 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
[Discuss-gnuradio] looping with work() function
Hello I am executing a flowgraph where I pass different parameters to the work() function of my block in every iteration. 1. I would like my flowgraph to execute once with a certain set of parameters and on satisfying a certain condition, it should stop execution (even if the queue/buffer of the block is not empty). 2. The control should come back to the main() function and the next iteration should start with a new set of parameters and again upon satisfying a certain condition the flowgraph should exit. *The work() function is of the block test_demo:* *new_test_tx.py#* class test_demo(gras.Block): def__init__(self,parameters): gras.Block.__init__(self,name=test, in_sig = [numpy.uint8,numpy.uint8,numpy.uint8], out_sig = [numpy.uint8,numpy.uint8]) def work(self, ins, outs): --some process here *The top_block is as following and has code for all the connections(not shown here):* class top_block(grc_wxgui.top_block_gui): def __init__(self,options,llr): grc_wxgui.top_block_gui.__init__(self, title=Top Block) _icon_path = /usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) self.=new_test_tx.test_demo(options.parameters) def main(): parser = OptionParser(option_class=eng_option, conflict_handler=resolve) parser.add_option(, --args,default=, help=set the address of usrp_device [default='']) (options, args) = parser.parse_args () # build the graph tb=top_block(options,param) tb.Run(True) if __name__==__main__: main() I am able to execute the flowgraph once and then the main() function exits. I would like to perform this action for some 1000 iterations. It is a kind of for loop that I use during C/Python programming. How can I use it with GNURadio and Python. Thanks and Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Discuss-gnuradio] Using both antennas of USRP as Receivers
Is it possible to use both the antennas of USRP as receive antennas? For example TX/RX should work on frequency f1 as a receive antenna and RX2 should work on frequency f2 as another receive antenna. Also, USRP should be able to collect data from both the antennas simultaneously. How can I approach this problem Thanks and Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] Fwd: problem with top_block.stop()
Hi Tom, I have removed tb.wait(). Now the sequence is tb=top_block(options,0.8) tb.start() sleep(3) tb.stop() I want my program to stop here and take new values which is not happening right now. It executes till sleep(3) and then hangs somewhere. You have asked to stop the flowgraph internally, kindly suggest a way to do that. As I have mentioned earlier too, I have an event in the work() function which when occurs the flowgraph should be terminated. I tried using thread.exit in work function but unfortunately it is terminating the whole program. Kindly suggest a way to bring the control back to main loop. Regards, Sumedha On Wed, Dec 18, 2013 at 8:43 PM, Tom Rondeau t...@trondeau.com wrote: On Wed, Dec 18, 2013 at 1:39 AM, Sumedha Goyal sumedha1...@gmail.com wrote: -- Forwarded message -- From: Sumedha Goyal sumedha1...@gmail.com Date: Wed, Dec 18, 2013 at 10:50 AM Subject: Re: [Discuss-gnuradio] problem with top_block.stop() To: Tom Rondeau t...@trondeau.com Hi My flowgraph does not stop naturally. I want to stop and start it again using different value for a parameter as shown in my above question. There is an event in my program where the flowgraph finishes it's job with first parameter value (which is 0.8 here), at the occurrence of that event I want the control of flowgraph to come back to the main(). Then I want to restart the flowgraph with a new parameter value (which is 0.4 here). Kindly guide me on this. Also, can I forcibly bring the control back to main() even when the flowgraph doesn't have anything to stop its execution? Thanks and Regards, Sumedha As I said, tb.wait() is a blocking call. If there is nothing to stop your flowgraph, you will continue to block at the tb.wait() line forever. If it helps, the top_block is implemented as a multi-threaded application where each block is in its own thread. The tb.wait() performs a thread join() on all threads in the flowgraph. So the flowgraph must exit before wait will exit. You have to stop your flowgraph internally somehow to continue. Tom On Tue, Dec 17, 2013 at 11:24 PM, Tom Rondeau t...@trondeau.com wrote: On Tue, Dec 17, 2013 at 12:23 PM, Sumedha Goyal sumedha1...@gmail.com wrote: I am trying to pass two different parameters to my top_block class I m not able to do this please help. The control of program gets stuck at tb.stop() and doesn't go beyond that. tb=top_block(options,0.8) tb.start() tb.wait() tb.stop() sleep(5) print I AM BACK tb1=top_block(options,0.4) tb1.start() tb1.wait() tb1.stop() sleep() Regards, Sumedha Does your flowgraph in tb naturally stop? The tb.wait() is a blocking call and will halt the main loop there until all threads (blocks) in tb are done. If your flowgraph doesn't have something that stops execution (like a finite file or a blocks.head block), then it will continue to process forever and your tb.wait() will continue to block. Tom ___ Discuss-gnuradio mailing list 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
Re: [Discuss-gnuradio] Fwd: problem with top_block.stop()
Hi I used a blank work() function as follows def work(self,ins,outs): print i m in work self.mark_done() using mark_done(), I got the control back in the main loop. When I use my specific work() function with mark_done() after a successful event, I get following error message: ASSERT FAIL /usr/local/software/gnuradio-3.6.4.2/gras/lib/gras_impl/output_buffer_queues.hpp:60 not this-empty(i) Traceback (most recent call last): File /usr/local/lib/python2.7/dist-packages/gras/GRAS_PyBlock.py, line 230, in _Py_work ret = self.work(input_arrays, output_arrays) File /usr/local/software/working_TRANS_19/new_split_tx.py, line 304, in work self.send_pkt_phy(self.outgoing_msg,self.arq_expected_sequence_no,self.h,DATA_PKT) File /usr/local/software/working_TRANS_19/new_split_tx.py, line 324, in send_pkt_phy buff = self.get_output_buffer(PHY_PORT) File /usr/local/lib/python2.7/dist-packages/gras/GRAS_Block.py, line 231, in get_output_buffer def get_output_buffer(self, *args, **kwargs): return _GRAS_Block.Block_get_output_buffer(self, *args, **kwargs) RuntimeError: ASSERT FAIL not this-empty(i) Could you help me in sorting this out? Regards, Sumedha On Wed, Dec 18, 2013 at 10:23 PM, Tom Rondeau t...@trondeau.com wrote: On Wed, Dec 18, 2013 at 11:29 AM, Sumedha Goyal sumedha1...@gmail.com wrote: Hi Tom, I have removed tb.wait(). Now the sequence is tb=top_block(options,0.8) tb.start() sleep(3) tb.stop() I want my program to stop here and take new values which is not happening right now. It executes till sleep(3) and then hangs somewhere. Sounds like an internal problem with your block. You have asked to stop the flowgraph internally, kindly suggest a way to do that. As I have mentioned earlier too, I have an event in the work() function which when occurs the flowgraph should be terminated. I tried using thread.exit in work function but unfortunately it is terminating the whole program. Kindly suggest a way to bring the control back to main loop. Regards, Sumedha Don't use thread.exit (pretty much ever). This sounds like you have something wrong with the threading model in your block. You a source block from GNU Radio (analog.sig_source_c or something) just to make sure the rest of the flowgraph is behaving properly. That is, that tb.stop is actually stopping the flowgraph. Then go back and try and debug your block. Tom On Wed, Dec 18, 2013 at 8:43 PM, Tom Rondeau t...@trondeau.com wrote: On Wed, Dec 18, 2013 at 1:39 AM, Sumedha Goyal sumedha1...@gmail.com wrote: -- Forwarded message -- From: Sumedha Goyal sumedha1...@gmail.com Date: Wed, Dec 18, 2013 at 10:50 AM Subject: Re: [Discuss-gnuradio] problem with top_block.stop() To: Tom Rondeau t...@trondeau.com Hi My flowgraph does not stop naturally. I want to stop and start it again using different value for a parameter as shown in my above question. There is an event in my program where the flowgraph finishes it's job with first parameter value (which is 0.8 here), at the occurrence of that event I want the control of flowgraph to come back to the main(). Then I want to restart the flowgraph with a new parameter value (which is 0.4 here). Kindly guide me on this. Also, can I forcibly bring the control back to main() even when the flowgraph doesn't have anything to stop its execution? Thanks and Regards, Sumedha As I said, tb.wait() is a blocking call. If there is nothing to stop your flowgraph, you will continue to block at the tb.wait() line forever. If it helps, the top_block is implemented as a multi-threaded application where each block is in its own thread. The tb.wait() performs a thread join() on all threads in the flowgraph. So the flowgraph must exit before wait will exit. You have to stop your flowgraph internally somehow to continue. Tom On Tue, Dec 17, 2013 at 11:24 PM, Tom Rondeau t...@trondeau.com wrote: On Tue, Dec 17, 2013 at 12:23 PM, Sumedha Goyal sumedha1...@gmail.com wrote: I am trying to pass two different parameters to my top_block class I m not able to do this please help. The control of program gets stuck at tb.stop() and doesn't go beyond that. tb=top_block(options,0.8) tb.start() tb.wait() tb.stop() sleep(5) print I AM BACK tb1=top_block(options,0.4) tb1.start() tb1.wait() tb1.stop() sleep() Regards, Sumedha Does your flowgraph in tb naturally stop? The tb.wait() is a blocking call and will halt the main loop there until all threads (blocks) in tb are done. If your flowgraph doesn't have something that stops execution (like a finite file or a blocks.head block), then it will continue to process forever and your tb.wait() will continue to block. Tom
[Discuss-gnuradio] problem with top_block.stop()
I am trying to pass two different parameters to my top_block class I m not able to do this please help. The control of program gets stuck at tb.stop() and doesn't go beyond that. tb=top_block(options,0.8) tb.start() tb.wait() tb.stop() sleep(5) print I AM BACK tb1=top_block(options,0.4) tb1.start() tb1.wait() tb1.stop() sleep() Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Discuss-gnuradio] Fwd: problem with top_block.stop()
-- Forwarded message -- From: Sumedha Goyal sumedha1...@gmail.com Date: Wed, Dec 18, 2013 at 10:50 AM Subject: Re: [Discuss-gnuradio] problem with top_block.stop() To: Tom Rondeau t...@trondeau.com Hi My flowgraph does not stop naturally. I want to stop and start it again using different value for a parameter as shown in my above question. There is an event in my program where the flowgraph finishes it's job with first parameter value (which is 0.8 here), at the occurrence of that event I want the control of flowgraph to come back to the main(). Then I want to restart the flowgraph with a new parameter value (which is 0.4 here). Kindly guide me on this. Also, can I forcibly bring the control back to main() even when the flowgraph doesn't have anything to stop its execution? Thanks and Regards, Sumedha On Tue, Dec 17, 2013 at 11:24 PM, Tom Rondeau t...@trondeau.com wrote: On Tue, Dec 17, 2013 at 12:23 PM, Sumedha Goyal sumedha1...@gmail.com wrote: I am trying to pass two different parameters to my top_block class I m not able to do this please help. The control of program gets stuck at tb.stop() and doesn't go beyond that. tb=top_block(options,0.8) tb.start() tb.wait() tb.stop() sleep(5) print I AM BACK tb1=top_block(options,0.4) tb1.start() tb1.wait() tb1.stop() sleep() Regards, Sumedha Does your flowgraph in tb naturally stop? The tb.wait() is a blocking call and will halt the main loop there until all threads (blocks) in tb are done. If your flowgraph doesn't have something that stops execution (like a finite file or a blocks.head block), then it will continue to process forever and your tb.wait() will continue to block. Tom ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Discuss-gnuradio] Fwd: problem with top_block.stop()
-- Forwarded message -- From: Sumedha Goyal sumedha1...@gmail.com Date: Wed, Dec 18, 2013 at 12:04 PM Subject: Re: [Discuss-gnuradio] problem with top_block.stop() To: Tom Rondeau t...@trondeau.com Hi Following is my gdb backtrace output. Could this be of any help? What should I look for in this backtrace to locate the problem? Also, how should I specify breakpoints? I tried to give (gdb) break tb.start() but this says Function tb.start() not defined. (gdb) thread apply all backtrace Thread 10 (Thread 0x7f004e7fc700 (LWP 17803)): #0 0x7f00813ea763 in select () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x7f007301149d in ?? () from /usr/local/lib/libuhd.so.003 #2 0x7f00731a1a01 in ?? () from /usr/local/lib/libuhd.so.003 #3 0x7f00731ab0b1 in ?? () from /usr/local/lib/libuhd.so.003 #4 0x7f007322fa93 in ?? () from /usr/local/lib/libuhd.so.003 #5 0x7f007e9edda9 in ?? () from /usr/lib/libboost_thread.so.1.48.0 #6 0x7f0082617e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #7 0x7f00813f13fd in clone () from /lib/x86_64-linux-gnu/libc.so.6 #8 0x in ?? () Thread 9 (Thread 0x7f004effd700 (LWP 17802)): #0 0x7f008261c0fe in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x7f007e9f0668 in boost::this_thread::sleep(boost::posix_time::ptime const) () from /usr/lib/libboost_thread.so.1.48.0 #2 0x7f00731b533e in ?? () from /usr/local/lib/libuhd.so.003 #3 0x7f007322fa93 in ?? () from /usr/local/lib/libuhd.so.003 #4 0x7f007e9edda9 in ?? () from /usr/lib/libboost_thread.so.1.48.0 #5 0x7f0082617e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #6 0x7f00813f13fd in clone () from /lib/x86_64-linux-gnu/libc.so.6 #7 0x in ?? () Thread 8 (Thread 0x7f004f7fe700 (LWP 17801)): #0 0x7f008261bd84 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x7f007fa54be7 in Theron::Detail::ThreadPoolTheron::Detail::MailboxQueueTheron::Detail::BlockingMonitor, Theron::Detail::WorkerContext, Theron::Detail::MailboxProcessor::ThreadEntryPoint(void*) () from /usr/local/lib/libgras.so.0.0.0 #2 0x7f007e9edda9 in ?? () from /usr/lib/libboost_thread.so.1.48.0 #3 0x7f0082617e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #4 0x7f00813f13fd in clone () from /lib/x86_64-linux-gnu/libc.so.6 #5 0x in ?? () Thread 7 (Thread 0x7f004700 (LWP 17800)): #0 0x7f008261bd84 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x7f007fa54be7 in Theron::Detail::ThreadPoolTheron::Detail::MailboxQueueTheron::Detail::BlockingMonitor, Theron::Detail::WorkerContext, Theron::Detail::MailboxProcessor::ThreadEntryPoint(void*) () from /usr/local/lib/libgras.so.0.0.0 #2 0x7f007e9edda9 in ?? () from /usr/lib/libboost_thread.so.1.48.0 #3 0x7f0082617e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #4 0x7f00813f13fd in clone () from /lib/x86_64-linux-gnu/libc.so.6 #5 0x in ?? () Thread 6 (Thread 0x7f0064b62700 (LWP 17799)): #0 0x7f00813ea763 in select () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00449ed3 in ?? () #2 0x00486614 in PyEval_EvalFrameEx () #3 0x00486e02 in PyEval_EvalFrameEx () #4 0x0048d930 in PyEval_EvalCodeEx () #5 0x004243f0 in ?? () #6 0x004f7496 in PyObject_Call () #7 0x0046762a in ?? () #8 0x004f7496 in PyObject_Call () #9 0x004f9032 in PyObject_CallMethodObjArgs () #10 0x7f0075bb2664 in SwigDirector_BlockPython::_Py_work(std::vectorvoid*, std::allocatorvoid* const, std::vectorunsigned long, std::allocatorunsigned long const, std::vectorvoid*, std::allocatorvoid* const, std::vectorunsigned long, std::allocatorunsigned long const) () from /usr/local/lib/python2.7/dist-packages/gras/_GRAS_PyBlock.so #11 0x7f0075bb5458 in gras::BlockPython::work(gras::WorkBufferArrayvoid con st* const, gras::WorkBufferArrayvoid* const) () from /usr/local/lib/python2.7/dist-packages/gras/_GRAS_PyBlock.so #12 0x7f007faa114c in gras::BlockActor::task_main() () from /usr/local/lib/libgras.so.0.0.0 #13 0x7f007fa93a19 in Theron::Detail::MessageHandlergras::BlockActor, gras::SelfKickMessage::Handle(Theron::Actor*, Theron::Detail::IMessage const*) () from /usr/local/lib/libgras.so.0.0.0 #14 0x7f007fa548bf in Theron::Detail::ThreadPoolTheron::Detail::MailboxQueueTheron::Detail::BlockingMonitor, Theron::Detail::WorkerContext, Theron::Detail::MailboxProcessor::ThreadEntryPoint(void*) () from /usr/local/lib/libgras.so.0.0.0 #15 0x7f007e9edda9 in ?? () from /usr/lib/libboost_thread.so.1.48.0 #16 0x7f0082617e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #17 0x7f00813f13fd in clone () from /lib/x86_64-linux-gnu/libc.so.6 #18
Re: [Discuss-gnuradio] How to detect collision when two packets are transmitted simultaneously from two transmitters.
Hello Aditya, 1. I tried checking for the average power but that doesn't work. Even with two transmitters transmitting at the same time the energy detected by the receiver doesn't change much. It remains in the same order. 2. Is there any other simpler way of detecting collisions other than the mentioned paper? Regards, Sumedha On Fri, Nov 8, 2013 at 8:32 PM, Aditya Dhananjay adi...@cs.nyu.edu wrote: Hi Sumedha, 1. You could perhaps look at the average power received over that time slot. If there is a collision, the receive power would ostensibly be higher. 2. Traditionally, a collision implied that nothing could be done, and the data was lost (unless one transmitter overwhelmed the other transmitter's signal, leading to the capture effect). However over the past couple of years, there have been techniques developed to recover packets from collisions. You could read the Zig-Zag decoding paper by Shyamnath Gollakota and Dina Katabi from SIGCOMM 2008. http://groups.csail.mit.edu/netmit/wordpress/wp-content/themes/netmit/papers/ZigZag.pdf Aditya On Fri, Nov 8, 2013 at 8:44 AM, Sumedha Goyal sumedha1...@gmail.comwrote: I have a setup of one receiver and two transmitters. I am implementing a TDMA structure (using USRPs and GNURADIO) where only one packet is sent in each slot. When both transmitters try to transmit in the same slot, collision occurs. I would like to know 1. How can the receiver detect whether a collision has occurred or not? 2. What happens to the collided packets? Regards, Sumedha ___ Discuss-gnuradio mailing list 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
[Discuss-gnuradio] How to collect the complex data of a dpsk modulator in a text file
I am experimenting with the one of the flowgraph examples uhd_tx_dpsk.grc. I am able to see the complex number output in WX GUI NUMBER SINK block but I want to collect this output in a text file. If I use a FILE SINK block, it shows some symbols but nothing in the form of x+jy. Kindly suggest some technique to do this. Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Discuss-gnuradio] How to detect collision when two packets are transmitted simultaneously from two transmitters.
I have a setup of one receiver and two transmitters. I am implementing a TDMA structure (using USRPs and GNURADIO) where only one packet is sent in each slot. When both transmitters try to transmit in the same slot, collision occurs. I would like to know 1. How can the receiver detect whether a collision has occurred or not? 2. What happens to the collided packets? Regards, Sumedha ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio