1 from gnuradio import eng_notation
3 def pick_rx_bitrate(bitrate, bits_per_symbol,
4 converter_rate, possible_decims):
6 Given the 4 input parameters, return at configuration that matches
8 @param bitrate: desired bitrate or None
9 @type bitrate: number or None
10 @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3
11 @type bits_per_symbol: integer >= 1
12 @param converter_rate: converter sample rate in Hz
13 @type converter_rate: number
14 @param possible_decims: a list of possible rates
15 @type possible_decims: a list of integers
17 @returns tuple (bitrate, samples_per_symbol, decim_rate)
20 rates = list(possible_decims)
23 for i in xrange(len(rates)):
24 if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate):
29 sps = converter_rate / float(bits_per_symbol) / decim / bitrate
30 br = converter_rate / float(bits_per_symbol) / decim / sps
32 return (br, sps, int(decim))
35 def pick_tx_bitrate(bitrate, bits_per_symbol,
36 converter_rate, possible_interps):
38 Given the 4 input parameters, return at configuration that matches
40 @param bitrate: desired bitrate or None
41 @type bitrate: number or None
42 @param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3
43 @type bits_per_symbol: integer >= 1
44 @param converter_rate: converter sample rate in Hz
45 @type converter_rate: number
46 @param possible_interps: a list of possible rates
47 @type possible_interps: a list of integers
49 @returns tuple (bitrate, samples_per_symbol, interp_rate)
52 rates = list(possible_interps)
55 for i in xrange(len(rates)):
56 if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate):
61 sps = converter_rate / float(bits_per_symbol) / interp / bitrate
62 br = converter_rate / float(bits_per_symbol) / interp / sps
64 return (br, sps, int(interp))