I suppose airprobe handled that sort of thing for GSM reception, back in
the 3.6 days.

But disturbing is your mention of frequency hopping, since that would
require some real-time performance between the software and hardware, if it
requires changing the center frequency (PLL synth) of SDR source/sink
hardware.   I'm would assume such latency is not guaranteed even slightly.


On Thu, Dec 19, 2013 at 11:05 AM, Sylvain Munaut <246...@gmail.com> wrote:

> Hi,
>
> So I've wanted for a while to use GR more for TDMA systems I'm working
> with like GSM and GMR and I'm having a bit of trouble figuring out
> what the best way to do that.
>
> Back when I started osmo-gmr, GR didn't have many features to deal
> with packets and so I rolled my own hack to go from channelized IQ
> stream from Gnuradio to my demodulator function that takes sliced
> 'windows' of IQ samples of known length and ideally I'd like to
> replace most of it with GR. I'll try to explain below exactly what the
> current code does and what it must deal with and hopefully someone
> familiar with all the new packet feature of GR can guide me how to
> implement it in GR.
>
> The input comes from GR currently. It's basically a group of
> channelized IQ streams that correspond to the various channels. They
> don't necessarely have the same sample-rate, some can be N times
> larger (N being an integer). All those streams are synchronized and
> must be kept in sync (for example it's needed for hopping, or channel
> assignements, ...).
>
> Once the process is started, a "sync detection" task is started on
> each channel that will try to acquire initial alignement. This
> essentially captures a chunk of each channel long enough and give it
> as a big sample array to a function that will find sync pattern for
> whatever protocol it's configured for. Once it finds that pattern, it
> will initialize a TDMA context that basically knows how to slice the
> input into frames. Once those initial frames boundaries are known, the
> main TDMA scheduler can be started for each context that was created.
> This scheduler basically keeps a list of active / running "tasks". An
> example of such a task would be a BCCH task that will slice the BCCH
> IQ samples (purely based on the samples number and acquired alignement
> and the known/specified TDMA scheduling) and hand them off to the BCCH
> demodulator function. Each of those task can spawn new tasks, possibly
> on other (or dynamic) channels. So if we see an "IMMEDIATE
> ASSIGNEMENT" command in the BCCH/CCCH for example, it will create a
> new 'SDCCH task' for example that will go and follow this channel with
> it's own state ...
>
> Now of course when starting a new task (after having demodulated /
> processed the IQ data), it's sometime important to know where in the
> IQ stream that command originated and it's important that the TDMA
> slicer didn't take too much advance because if it did, we might miss
> some of the TCH frames of the newly assigned channel. In the current
> code, everything is done in a single thread so I'm sure that the
> slicer didn't avance at all while I was processing the current packet.
>
> So, how would you implement this (architecture wise I mean) with PDUs
> / tagged stream / ...
>
> Cheers,
>
>     Sylvain
>
> _______________________________________________
> 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

Reply via email to