mirror of
https://github.com/romanz/amodem.git
synced 2026-04-21 05:36:42 +08:00
rename module ecc->framing
This commit is contained in:
@@ -15,7 +15,7 @@ from . import sampling
|
|||||||
from . import train
|
from . import train
|
||||||
from . import common
|
from . import common
|
||||||
from . import config
|
from . import config
|
||||||
from . import ecc
|
from . import framing
|
||||||
from . import equalizer
|
from . import equalizer
|
||||||
|
|
||||||
modem = dsp.MODEM(config)
|
modem = dsp.MODEM(config)
|
||||||
@@ -220,7 +220,7 @@ class Receiver(object):
|
|||||||
self.bits = itertools.chain.from_iterable(data_bits)
|
self.bits = itertools.chain.from_iterable(data_bits)
|
||||||
|
|
||||||
def decode(self, output):
|
def decode(self, output):
|
||||||
chunks = ecc.decode(_blocks(self.bits))
|
chunks = framing.decode(_blocks(self.bits))
|
||||||
self.size = 0
|
self.size = 0
|
||||||
for chunk in chunks:
|
for chunk in chunks:
|
||||||
output.write(chunk)
|
output.write(chunk)
|
||||||
@@ -260,7 +260,7 @@ class Receiver(object):
|
|||||||
def _blocks(bits):
|
def _blocks(bits):
|
||||||
while True:
|
while True:
|
||||||
block = bitarray.bitarray(endian='little')
|
block = bitarray.bitarray(endian='little')
|
||||||
block.extend(itertools.islice(bits, 8 * ecc.BLOCK_SIZE))
|
block.extend(itertools.islice(bits, 8 * framing.BLOCK_SIZE))
|
||||||
if not block:
|
if not block:
|
||||||
break
|
break
|
||||||
yield bytearray(block.tobytes())
|
yield bytearray(block.tobytes())
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from . import common
|
|||||||
from . import config
|
from . import config
|
||||||
from . import dsp
|
from . import dsp
|
||||||
from . import stream
|
from . import stream
|
||||||
from . import ecc
|
from . import framing
|
||||||
from . import equalizer
|
from . import equalizer
|
||||||
|
|
||||||
modem = dsp.MODEM(config)
|
modem = dsp.MODEM(config)
|
||||||
@@ -73,7 +73,7 @@ def main(args):
|
|||||||
|
|
||||||
reader = stream.Reader(args.input, bufsize=(64 << 10), eof=True)
|
reader = stream.Reader(args.input, bufsize=(64 << 10), eof=True)
|
||||||
data = itertools.chain.from_iterable(reader)
|
data = itertools.chain.from_iterable(reader)
|
||||||
encoded = itertools.chain.from_iterable(ecc.encode(data))
|
encoded = itertools.chain.from_iterable(framing.encode(data))
|
||||||
writer.modulate(bits=common.to_bits(encoded))
|
writer.modulate(bits=common.to_bits(encoded))
|
||||||
|
|
||||||
data_size = writer.offset - training_size
|
data_size = writer.offset - training_size
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from amodem import ecc
|
from amodem import framing
|
||||||
import random
|
import random
|
||||||
import itertools
|
import itertools
|
||||||
import reedsolo
|
import reedsolo
|
||||||
@@ -11,22 +11,22 @@ def concat(chunks):
|
|||||||
def test_random():
|
def test_random():
|
||||||
r = random.Random(0)
|
r = random.Random(0)
|
||||||
x = bytearray(r.randrange(0, 256) for i in range(64 * 1024))
|
x = bytearray(r.randrange(0, 256) for i in range(64 * 1024))
|
||||||
y = ecc.encode(x)
|
y = framing.encode(x)
|
||||||
x_ = concat(ecc.decode(y))
|
x_ = concat(framing.decode(y))
|
||||||
assert x_ == x
|
assert x_ == x
|
||||||
|
|
||||||
|
|
||||||
def test_errors():
|
def test_errors():
|
||||||
data = bytearray(range(244))
|
data = bytearray(range(244))
|
||||||
blocks = list(ecc.encode(data))
|
blocks = list(framing.encode(data))
|
||||||
assert len(blocks) == 2
|
assert len(blocks) == 2
|
||||||
for i in range(ecc.DEFAULT_NSYM // 2):
|
for i in range(framing.DEFAULT_NSYM // 2):
|
||||||
blocks[0][i] = blocks[0][i] ^ 0xFF
|
blocks[0][i] = blocks[0][i] ^ 0xFF
|
||||||
|
|
||||||
i = ecc.DEFAULT_NSYM // 2
|
i = framing.DEFAULT_NSYM // 2
|
||||||
try:
|
try:
|
||||||
blocks[0][i] = blocks[0][i] ^ 0xFF
|
blocks[0][i] = blocks[0][i] ^ 0xFF
|
||||||
concat(ecc.decode(blocks))
|
concat(framing.decode(blocks))
|
||||||
assert False
|
assert False
|
||||||
except reedsolo.ReedSolomonError as e:
|
except reedsolo.ReedSolomonError as e:
|
||||||
assert e.args == ('Too many errors to correct',)
|
assert e.args == ('Too many errors to correct',)
|
||||||
Reference in New Issue
Block a user