From c38a37c49e4173660840f39239423b3e1d64216c Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Fri, 5 Sep 2014 12:37:30 +0300 Subject: [PATCH] PEP8 fixes --- amodem/dsp.py | 4 +-- amodem/recv.py | 11 ++++--- amodem/send.py | 1 + scripts/amodem | 81 +++++++++++++++++++++++++++++++------------------- 4 files changed, 60 insertions(+), 37 deletions(-) diff --git a/amodem/dsp.py b/amodem/dsp.py index 99609b0..c39fda3 100644 --- a/amodem/dsp.py +++ b/amodem/dsp.py @@ -74,8 +74,8 @@ class QAM(object): bits_per_symbol = int(bits_per_symbol) for i, v in enumerate(symbols): - bits = tuple(int(i & (1 << j) != 0) for j in range(bits_per_symbol)) - self._enc[bits] = v + bits = [int(i & (1 << j) != 0) for j in range(bits_per_symbol)] + self._enc[tuple(bits)] = v self._dec = {v: k for k, v in self._enc.items()} self.symbols = symbols diff --git a/amodem/recv.py b/amodem/recv.py index 95e686b..89c22be 100644 --- a/amodem/recv.py +++ b/amodem/recv.py @@ -142,7 +142,10 @@ class Receiver(object): order=order, lookahead=lookahead ) - log.debug('Equalization filter: [%s]', ', '.join('{:.2f}'.format(c) for c in coeffs)) + log.debug( + 'Equalization filter: [%s]', + ', '.join('{:.2f}'.format(c) for c in coeffs) + ) equalization_filter = dsp.FIR(h=coeffs) equalized = list(equalization_filter(signal)) equalized = equalized[prefix+lookahead:-postfix+lookahead] @@ -201,12 +204,12 @@ class Receiver(object): if i > 0 and i % config.baud == 0: err = np.array([e for v in errors.values() for e in v]) - correction = np.mean(np.angle(err))/(2*np.pi) if len(err) else 0 + err = np.mean(np.angle(err))/(2*np.pi) if len(err) else 0 errors.clear() duration = time.time() - self.stats['rx_start'] - sampler.freq -= 0.01 * correction / config.Fc - sampler.offset -= correction + sampler.freq -= 0.01 * err / config.Fc + sampler.offset -= err log.debug('%10.1f kB, CPU: %6.2f%%, drift: %+5.2f ppm', self.stats['rx_bits'] / 8e3, duration * 100.0 / (i*config.Tsym), diff --git a/amodem/send.py b/amodem/send.py index c571f38..7ec890e 100644 --- a/amodem/send.py +++ b/amodem/send.py @@ -57,6 +57,7 @@ class Writer(object): if all(symbols == 0): # EOF marker break + def main(args): log.info('Running MODEM @ {:.1f} kbps'.format(modem.modem_bps / 1e3)) diff --git a/scripts/amodem b/scripts/amodem index f16ffa2..8bdccaf 100755 --- a/scripts/amodem +++ b/scripts/amodem @@ -23,6 +23,7 @@ from functools import partial null = open('/dev/null', 'wb') + def FileType(mode, process=None): def opener(fname): assert 'r' in mode or 'w' in mode @@ -30,48 +31,75 @@ def FileType(mode, process=None): fname = '-' if fname is None: - if 'r' in mode: return process(stdout=wave.sp.PIPE, stderr=null).stdout - if 'w' in mode: return process(stdin=wave.sp.PIPE, stderr=null).stdin + if 'r' in mode: + return process(stdout=wave.sp.PIPE, stderr=null).stdout + if 'w' in mode: + return process(stdin=wave.sp.PIPE, stderr=null).stdin if fname == '-': - if 'r' in mode: return _stdin - if 'w' in mode: return _stdout + if 'r' in mode: + return _stdin + if 'w' in mode: + return _stdout return open(fname, mode) return opener +def _run(args, process): + p = process(fname=args.filename) + exitcode = 0 + try: + exitcode = p.wait() + except KeyboardInterrupt: + p.kill() + exitcode = p.wait() + sys.exit(exitcode) + + def main(): p = argparse.ArgumentParser() subparsers = p.add_subparsers() # Modulator - sender = subparsers.add_parser('send', help='modulate binary data into audio signal.') - sender.add_argument('-i', '--input', help='input file (use "-" for stdin).') - sender.add_argument('-o', '--output', help='output file (use "-" for stdout).' + sender = subparsers.add_parser( + 'send', help='modulate binary data into audio signal.') + sender.add_argument( + '-i', '--input', help='input file (use "-" for stdin).') + sender.add_argument( + '-o', '--output', help='output file (use "-" for stdout).' ' if not specified, `aplay` tool will be used.') - sender.add_argument('--silence-start', type=float, default=1.0, - help='seconds of silence before transmission starts') - sender.add_argument('--silence-stop', type=float, default=1.0, - help='seconds of silence after transmission stops') + sender.add_argument( + '--silence-start', type=float, default=1.0, + help='seconds of silence before transmission starts') + sender.add_argument( + '--silence-stop', type=float, default=1.0, + help='seconds of silence after transmission stops') - sender.set_defaults(main=send.main, + sender.set_defaults( + main=send.main, input_type=FileType('rb'), output_type=FileType('wb', wave.play) ) # Demodulator - receiver = subparsers.add_parser('recv', help='demodulate audio signal into binary data.') - receiver.add_argument('-i', '--input', help='input file (use "-" for stdin).' + receiver = subparsers.add_parser( + 'recv', help='demodulate audio signal into binary data.') + receiver.add_argument( + '-i', '--input', help='input file (use "-" for stdin).' ' if not specified, `arecord` tool will be used.') - receiver.add_argument('-o', '--output', help='output file (use "-" for stdout).') - receiver.add_argument('--skip', type=int, default=128, - help='skip initial N samples, due to spurious spikes') - receiver.add_argument('--plot', dest='plt', action='store_true', default=False, - help='plot results using pylab module') - receiver.set_defaults(main=recv.main, + receiver.add_argument( + '-o', '--output', help='output file (use "-" for stdout).') + receiver.add_argument( + '--skip', type=int, default=128, + help='skip initial N samples, due to spurious spikes') + receiver.add_argument( + '--plot', dest='plt', action='store_true', default=False, + help='plot results using pylab module') + receiver.set_defaults( + main=recv.main, input_type=FileType('rb', wave.record), output_type=FileType('wb') ) @@ -82,14 +110,14 @@ def main(): recorder.add_argument( 'filename', default='-', help='path to the audio file to record (otherwise, use stdout)') - recorder.set_defaults(main=partial(run, process=wave.record)) + recorder.set_defaults(main=partial(_run, process=wave.record)) # Audio playing tool player = subparsers.add_parser('play', help='play ' + fmt) player.add_argument( 'filename', default='-', help='path to the audio file to play (otherwise, use stdin)') - player.set_defaults(main=partial(run, process=wave.play)) + player.set_defaults(main=partial(_run, process=wave.play)) # Parsing and execution args = p.parse_args() @@ -104,15 +132,6 @@ def main(): log.debug('MODEM settings: %r', config.settings) args.main(args) -def run(args, process): - p = process(fname=args.filename) - exitcode = 0 - try: - exitcode = p.wait() - except KeyboardInterrupt: - p.kill() - exitcode = p.wait() - sys.exit(exitcode) if __name__ == '__main__': main()