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); } }
int SendSyncString(int[] syncChanSymbArray) { int NumSent = 0; foreach (int BitChanSymb in syncChanSymbArray) { int[] sequence = ChanSymbToTribit[BitChanSymb]; // repeat sequence 4 times for (int j = 0; j < 4; j++) { foreach (int tribit in sequence) { SendSymbol(tribit, PreambleScrambler.DataNext()); NumSent++; } } } return(NumSent); }