Wednesday, April 12, 2017

Re: [Discuss-gnuradio] Sync short in gr-ieee802-11

Oh yes it does! But how does MIN_GAP come into the picture? Is it the minimum gap required between 2 frames for the second to be detected as well?
Also if I'm not wrong the first frame is simply discarded when the one coming after is detected because there seems to be no provision for keeping the stronger frame and discarding the weaker one?

On Apr 12, 2017 3:53 PM, "Marcus Müller" <marcus.mueller@ettus.com> wrote:

Hi Nikita,

I'll jump into the general_work method here, directly:


	switch(d_state) {  	case SEARCH: {  		int i;  		for(i = 0; i < ninput; i++) {  			if(in_cor[i] > d_threshold) {  				if(d_plateau < MIN_PLATEAU) {  					d_plateau++;    				} else {  					d_state = COPY;  …					break;  				}  …		}  		consume_each(i);  		return 0;  	}  	case COPY: {  		int o = 0;  		while( o < ninput && o < noutput && d_copied < MAX_SAMPLES) {  			if(in_cor[o] > d_threshold) {  				if(d_plateau < MIN_PLATEAU) {  					d_plateau++;    				// there's another frame  				} else if(d_copied > MIN_GAP) {  					d_copied = 0;  					d_plateau = 0;  …					break;  				}  …  			out[o] = in[o] * exp(gr_complex(0, -d_freq_offset * d_copied));  			o++;  			d_copied++;  		}    		if(d_copied == MAX_SAMPLES) {  			d_state = SEARCH;  		}  …  		consume_each(o);  		return o;  	}  	}    
So, this is a pretty classical state machine approach: at every call of general_work, the block is in either the COPY or the SEARCH state. We only care about whether COPY also does a search operation, and, lo:
			if(d_plateau < MIN_PLATEAU) {  					d_plateau++;    				// there's another frame  				} else if(d_copied > MIN_GAP) {  					d_copied = 0;  					d_plateau = 0;
is exactly that.

Best regards,
Marcus


On 12.04.2017 12:12, Nikita Airee wrote:
Hello everyone,

I was trying to understand how the synchronization in gr-ieee802-11 actually works and went through:

Bastian BloesslMichele SegataChristoph Sommer and Falko Dressler, "An IEEE 802.11a/g/p OFDM Receiver for GNU Radio

However, it seems that the Short Sync and many other blocks have developed further since then.

From what I understand, the current sync_short.cc does the following:

1) searches for the peak normalized correlator o/p and compares with the set threshold
2) as enough number of simultaneous peaks are detected in correlator o/p, it moves onto the copy stage

Here is where my doubt lies. Does the block keep looking for new frames while the old one is being copied? Also, what is MIN_GAP's function in the code and how is its value decided upon?

Could you please clear up these doubts a little?

Bests,
Nikita Airee




_______________________________________________  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

No comments:

Post a Comment