Esempio n. 1
0
            int SendSyncPreamble()
            {
                int NumSent = 0;

                int[] DCBits = new int[6];
                DCBits[0] = D1;
                DCBits[1] = D2;
                DCBits[5] = 0;
                PreambleScrambler.Init();
                for (SyncSymbolCounter = PreambleSize - 1; SyncSymbolCounter >= 0; SyncSymbolCounter--)
                {
                    NumSent += SendSyncString(SyncPreamble);
                    // This is how the counter is formed - bits 5:4, 3:2 and 1:0 are mapped into tribits
                    DCBits[2] = ((SyncSymbolCounter >> 4) & 0x3) | 0x4;
                    DCBits[3] = ((SyncSymbolCounter >> 2) & 0x3) | 0x4;
                    DCBits[4] = ((SyncSymbolCounter >> 0) & 0x3) | 0x4;
                    NumSent  += SendSyncString(DCBits);
                }
                return(NumSent);
            }
Esempio n. 2
0
            void FillSyncPatterns()
            {
                IQEncoder     Enc       = new IQEncoder(BITS_PER_SYMBOL, Constellation.Table_1_to_1, Constellation.ITable_8PSK, Constellation.QTable_8PSK, EncodingType.SCRAMBLE_ADD);
                SyncScrambler scrambler = new SyncScrambler();

                int SyncSymbolCounter = 0;

                foreach (int BitChanSymb in SyncPreamble)
                {
                    int[] sequence = ChanSymbToTribit[BitChanSymb];
                    scrambler.Init();
                    // repeat sequence 4 times
                    for (int i = 0; i < 4; i++)
                    {
                        foreach (int tribit in sequence)
                        {
                            Enc.Process(tribit, scrambler.DataNext(), SCRAMBLE_MASK, out PreamblePattern[SyncSymbolCounter]);
                            SyncSymbolCounter++;
                        }
                    }
                }

                IQ[] symb75 = new IQ[32];
                foreach (int[] sequence in ChanSymbToTribit)
                {
                    SyncSymbolCounter = 0;
                    scrambler.Init();
                    for (int i = 0; i < 4; i++)
                    {
                        foreach (int tribit in sequence)
                        {
                            Enc.Process(tribit, scrambler.DataNext(), SCRAMBLE_MASK, out symb75[SyncSymbolCounter]);
                            SyncSymbolCounter++;
                        }
                    }
                    SymbDetector.AddTarget(symb75);
                }
            }