mirror of
https://github.com/romanz/amodem.git
synced 2026-03-18 07:36:02 +08:00
amodem: fix logging on rx/tx
This commit is contained in:
@@ -152,6 +152,12 @@ class MODEM(object):
|
||||
for freq in self.freqs
|
||||
])
|
||||
|
||||
def __repr__(self):
|
||||
return '<{:.3f} kbps, {:d}-QAM, {:d} carriers>'.format(
|
||||
self.modem_bps / 1e3, len(self.qam.symbols), len(self.carriers))
|
||||
|
||||
__str__ = __repr__
|
||||
|
||||
|
||||
def exp_iwt(freq, n):
|
||||
iwt = 2j * np.pi * freq * np.arange(n) * Ts
|
||||
|
||||
@@ -5,8 +5,6 @@ import functools
|
||||
import collections
|
||||
import time
|
||||
|
||||
import bitarray
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from . import stream
|
||||
@@ -196,7 +194,7 @@ class Receiver(object):
|
||||
self.stats['rx_bits'] = 0
|
||||
self.stats['rx_start'] = time.time()
|
||||
|
||||
log.info('Demodulation started')
|
||||
log.info('Starting demodulation: %s', modem)
|
||||
for i, block in enumerate(izip(streams)): # block per frequency
|
||||
for bits in block:
|
||||
self.stats['rx_bits'] = self.stats['rx_bits'] + len(bits)
|
||||
@@ -273,8 +271,6 @@ def izip(streams):
|
||||
|
||||
|
||||
def main(args):
|
||||
log.info('Running MODEM @ {:.1f} kbps'.format(modem.modem_bps / 1e3))
|
||||
|
||||
reader = stream.Reader(args.input, data_type=common.loads)
|
||||
signal = itertools.chain.from_iterable(reader)
|
||||
|
||||
@@ -286,6 +282,7 @@ def main(args):
|
||||
receiver = Receiver(args.plt)
|
||||
success = False
|
||||
try:
|
||||
log.info('Waiting for carrier tone: %.1f kHz', config.Fc / 1e3)
|
||||
signal, amplitude = detect(signal, config.Fc)
|
||||
receiver.start(signal, modem.freqs, gain=1.0/amplitude)
|
||||
receiver.run(args.output)
|
||||
|
||||
@@ -57,8 +57,6 @@ class Writer(object):
|
||||
|
||||
|
||||
def main(args):
|
||||
log.info('Running MODEM @ {:.1f} kbps'.format(modem.modem_bps / 1e3))
|
||||
|
||||
writer = Writer(args.output)
|
||||
|
||||
# pre-padding audio with silence
|
||||
@@ -68,17 +66,17 @@ def main(args):
|
||||
|
||||
training_size = writer.offset
|
||||
training_duration = training_size / wave.bytes_per_second
|
||||
log.info('%.3f seconds of training audio', training_duration)
|
||||
log.info('Sending %.3f seconds of training audio', training_duration)
|
||||
|
||||
reader = stream.Reader(args.input, bufsize=(64 << 10), eof=True)
|
||||
data = list(itertools.chain.from_iterable(reader))
|
||||
bits = list(framing.encode(data))
|
||||
data_ = list(framing.decode(bits))
|
||||
data = itertools.chain.from_iterable(reader)
|
||||
bits = framing.encode(data)
|
||||
log.info('Starting modulation: %s', modem)
|
||||
writer.modulate(bits=bits)
|
||||
|
||||
data_size = writer.offset - training_size
|
||||
log.info('%.3f seconds of data audio, for %.3f kB of data',
|
||||
data_size / wave.bytes_per_second, reader.total / 1e3)
|
||||
log.info('Sent %.3f kB @ %.3f seconds',
|
||||
reader.total / 1e3, data_size / wave.bytes_per_second)
|
||||
|
||||
# post-padding audio with silence
|
||||
writer.write(np.zeros(int(config.Fs * args.silence_stop)))
|
||||
|
||||
@@ -17,8 +17,10 @@ from amodem import recv
|
||||
from amodem import send
|
||||
from amodem import wave
|
||||
from amodem import calib
|
||||
from amodem import dsp
|
||||
|
||||
|
||||
modem = dsp.MODEM(config)
|
||||
null = open('/dev/null', 'wb')
|
||||
|
||||
|
||||
@@ -46,7 +48,11 @@ def FileType(mode, process=None):
|
||||
|
||||
|
||||
def main():
|
||||
p = argparse.ArgumentParser()
|
||||
description = 'Audio MODEM @ {:.1f} kB/s'.format(modem.modem_bps / 1e3)
|
||||
p = argparse.ArgumentParser(description=description)
|
||||
g = p.add_mutually_exclusive_group()
|
||||
g.add_argument('-v', '--verbose', default=0, action='count')
|
||||
g.add_argument('-q', '--quiet', default=False, action='store_true')
|
||||
subparsers = p.add_subparsers()
|
||||
|
||||
# Modulator
|
||||
@@ -99,10 +105,16 @@ def main():
|
||||
)
|
||||
|
||||
args = p.parse_args()
|
||||
logging.basicConfig(
|
||||
level='DEBUG', filename='amodem.log',
|
||||
format=('%(asctime)s %(levelname)-10s %(message)-100s '
|
||||
'%(filename)s:%(lineno)d'))
|
||||
if args.verbose == 0:
|
||||
level, format = 'INFO', '%(message)s'
|
||||
elif args.verbose == 1:
|
||||
level, format = 'DEBUG', '%(message)s'
|
||||
elif args.verbose >= 2:
|
||||
level, format = ('DEBUG', '%(asctime)s %(levelname)-10s %(message)-100s '
|
||||
'%(filename)s:%(lineno)d')
|
||||
if args.quiet:
|
||||
level, format = 'WARNING', '%(message)s'
|
||||
logging.basicConfig(level=level, format=format)
|
||||
|
||||
# Parsing and execution
|
||||
log.debug('MODEM settings: %r', config.settings)
|
||||
|
||||
Reference in New Issue
Block a user