backing up partial progress
This commit is contained in:
parent
bcac6b570f
commit
2c7c604038
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
from bitarray import bitarray
|
from bitarray import bitarray
|
||||||
|
import hamming
|
||||||
|
|
||||||
# Does anybody read this stuff? There's a PEP somewhere that says I should do this.
|
# Does anybody read this stuff? There's a PEP somewhere that says I should do this.
|
||||||
__author__ = 'Cortney T. Buffington, N0MJS'
|
__author__ = 'Cortney T. Buffington, N0MJS'
|
||||||
@ -49,7 +50,11 @@ def deinterleave_19696(_data):
|
|||||||
|
|
||||||
# Applies BTPC error detection/correction routines (INCOMPLETE)
|
# Applies BTPC error detection/correction routines (INCOMPLETE)
|
||||||
def error_check_19696(_data):
|
def error_check_19696(_data):
|
||||||
checked = bitarray(196)
|
errors = False
|
||||||
|
count = 0
|
||||||
|
do:
|
||||||
|
pass
|
||||||
|
while errors && count < 5
|
||||||
|
|
||||||
# Returns useable LC data - 9 bytes info + 3 bytes RS(12,9) ECC
|
# Returns useable LC data - 9 bytes info + 3 bytes RS(12,9) ECC
|
||||||
def to_bytes_19696(_data):
|
def to_bytes_19696(_data):
|
||||||
@ -79,7 +84,7 @@ if __name__ == '__main__':
|
|||||||
t0 = time()
|
t0 = time()
|
||||||
bin_data = to_binary_19696(data)
|
bin_data = to_binary_19696(data)
|
||||||
deint_data = deinterleave_19696(bin_data)
|
deint_data = deinterleave_19696(bin_data)
|
||||||
#err_corrected = dec_error_check_19696(deint_data)
|
err_corrected = dec_error_check_19696(deint_data)
|
||||||
ext_data = to_bytes_19696(deint_data)
|
ext_data = to_bytes_19696(deint_data)
|
||||||
t1 = time()
|
t1 = time()
|
||||||
print('TIME: ', t1-t0, '\n')
|
print('TIME: ', t1-t0, '\n')
|
||||||
|
16
hamming.py
16
hamming.py
@ -23,7 +23,7 @@ __email__ = 'n0mjs@me.com'
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
# ENCODER- returns a bitarray object containing the hamming checksums
|
# ENCODER- returns a bitarray object containing the hamming checksums
|
||||||
def enc_hamming_15113(_data):
|
def enc_15113(_data):
|
||||||
csum = bitarray(4)
|
csum = bitarray(4)
|
||||||
csum[0] = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
csum[0] = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
||||||
csum[1] = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
csum[1] = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
||||||
@ -32,7 +32,7 @@ def enc_hamming_15113(_data):
|
|||||||
return csum
|
return csum
|
||||||
|
|
||||||
# DECODER - Returns a tuple of (decoded data, True if an error was corrected)
|
# DECODER - Returns a tuple of (decoded data, True if an error was corrected)
|
||||||
def dec_hamming_15113(_data):
|
def dec_15113(_data):
|
||||||
chk0 = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
chk0 = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
||||||
chk1 = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
chk1 = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
||||||
chk2 = _data[2] ^ _data[3] ^ _data[4] ^ _data[5] ^ _data[7] ^ _data[9] ^ _data[10]
|
chk2 = _data[2] ^ _data[3] ^ _data[4] ^ _data[5] ^ _data[7] ^ _data[9] ^ _data[10]
|
||||||
@ -71,7 +71,7 @@ def dec_hamming_15113(_data):
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
# ENCODER - returns a bitarray object containing the hamming checksums
|
# ENCODER - returns a bitarray object containing the hamming checksums
|
||||||
def enc_hamming_1393(_data):
|
def enc_1393(_data):
|
||||||
csum = bitarray(4)
|
csum = bitarray(4)
|
||||||
csum[0] = _data[0] ^ _data[1] ^ _data[3] ^ _data[5] ^ _data[6]
|
csum[0] = _data[0] ^ _data[1] ^ _data[3] ^ _data[5] ^ _data[6]
|
||||||
csum[1] = _data[0] ^ _data[1] ^ _data[2] ^ _data[4] ^ _data[6] ^ _data[7]
|
csum[1] = _data[0] ^ _data[1] ^ _data[2] ^ _data[4] ^ _data[6] ^ _data[7]
|
||||||
@ -80,7 +80,7 @@ def enc_hamming_1393(_data):
|
|||||||
return csum
|
return csum
|
||||||
|
|
||||||
# DECODER - Returns a tuple of (decoded data, True if an error was corrected)
|
# DECODER - Returns a tuple of (decoded data, True if an error was corrected)
|
||||||
def dec_hamming_1393(_data):
|
def dec_1393(_data):
|
||||||
chk0 = _data[0] ^ _data[1] ^ _data[3] ^ _data[5] ^ _data[6]
|
chk0 = _data[0] ^ _data[1] ^ _data[3] ^ _data[5] ^ _data[6]
|
||||||
chk1 = _data[0] ^ _data[1] ^ _data[2] ^ _data[4] ^ _data[6] ^ _data[7]
|
chk1 = _data[0] ^ _data[1] ^ _data[2] ^ _data[4] ^ _data[6] ^ _data[7]
|
||||||
chk2 = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
chk2 = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
||||||
@ -116,7 +116,7 @@ def dec_hamming_1393(_data):
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
# ENCODER - returns a bitarray object containing the hamming checksums
|
# ENCODER - returns a bitarray object containing the hamming checksums
|
||||||
def enc_hamming_16114(_data):
|
def enc_16114(_data):
|
||||||
csum = bitarray(5)
|
csum = bitarray(5)
|
||||||
csum[0] = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
csum[0] = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
||||||
csum[1] = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
csum[1] = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
||||||
@ -126,7 +126,7 @@ def enc_hamming_16114(_data):
|
|||||||
return csum
|
return csum
|
||||||
|
|
||||||
# DECODER - Returns a tuple of (decoded data, True if an error was corrected)
|
# DECODER - Returns a tuple of (decoded data, True if an error was corrected)
|
||||||
def dec_hamming_16114(_data):
|
def dec_16114(_data):
|
||||||
chk0 = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
chk0 = _data[0] ^ _data[1] ^ _data[2] ^ _data[3] ^ _data[5] ^ _data[7] ^ _data[8]
|
||||||
chk1 = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
chk1 = _data[1] ^ _data[2] ^ _data[3] ^ _data[4] ^ _data[6] ^ _data[8] ^ _data[9]
|
||||||
chk2 = _data[2] ^ _data[3] ^ _data[4] ^ _data[5] ^ _data[7] ^ _data[9] ^ _data[10]
|
chk2 = _data[2] ^ _data[3] ^ _data[4] ^ _data[5] ^ _data[7] ^ _data[9] ^ _data[10]
|
||||||
@ -179,12 +179,12 @@ if __name__ == '__main__':
|
|||||||
for row in rows:
|
for row in rows:
|
||||||
print('original data:', row[0:11], 'original parity:', row[11:15])
|
print('original data:', row[0:11], 'original parity:', row[11:15])
|
||||||
|
|
||||||
hamming_dec = dec_hamming_15113(row[0:15])
|
hamming_dec = dec_15113(row[0:15])
|
||||||
code = hamming_dec[0]
|
code = hamming_dec[0]
|
||||||
error = hamming_dec[1]
|
error = hamming_dec[1]
|
||||||
|
|
||||||
print('\tDECODE: data: ', code[0:11], 'parity: ', code[11:15], 'error:', error)
|
print('\tDECODE: data: ', code[0:11], 'parity: ', code[11:15], 'error:', error)
|
||||||
print('\tENCODE: calculated parity:', enc_hamming_15113(row[0:11]))
|
print('\tENCODE: calculated parity:', enc_15113(row[0:11]))
|
||||||
print()
|
print()
|
||||||
|
|
||||||
check_15113(good_data_15113)
|
check_15113(good_data_15113)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user