55 lines
1.6 KiB
Ruby
55 lines
1.6 KiB
Ruby
# generate a table of error correction codewords
|
|
|
|
RS_BLOCK_TABLE = [
|
|
[ 26, 1, 26, 19],
|
|
[ 44, 1, 44, 34],
|
|
[ 70, 1, 70, 55],
|
|
[ 100, 1, 100, 80],
|
|
[ 134, 1, 134, 108],
|
|
[ 172, 2, 86, 68],
|
|
[ 196, 2, 98, 78],
|
|
[ 242, 2, 121, 97],
|
|
[ 292, 2, 146, 116],
|
|
[ 346, 2, 86, 68, 2, 87, 69],
|
|
[ 404, 4, 101, 81],
|
|
[ 466, 2, 116, 92, 2, 117, 93],
|
|
[ 532, 4, 133, 107],
|
|
[ 581, 3, 145, 115, 1, 146, 116],
|
|
[ 655, 5, 109, 87, 1, 110, 88],
|
|
[ 733, 5, 122, 98, 1, 123, 99],
|
|
[ 815, 1, 135, 107, 5, 136, 108],
|
|
[ 901, 5, 150, 120, 1, 151, 121],
|
|
[ 991, 3, 141, 113, 4, 142, 114],
|
|
[1085, 3, 135, 107, 5, 136, 108],
|
|
[1156, 4, 144, 116, 4, 145, 117],
|
|
[1258, 2, 139, 111, 7, 140, 112],
|
|
[1364, 4, 151, 121, 5, 152, 122],
|
|
[1474, 6, 147, 117, 4, 148, 118],
|
|
[1588, 8, 132, 106, 4, 133, 107],
|
|
[1706, 10, 142, 114, 2, 143, 115],
|
|
[1828, 8, 152, 122, 4, 153, 123],
|
|
[1921, 3, 147, 117, 10, 148, 118],
|
|
[2051, 7, 146, 116, 7, 147, 117],
|
|
[2185, 5, 145, 115, 10, 146, 116],
|
|
[2323, 13, 145, 115, 3, 146, 116],
|
|
[2465, 17, 145, 115],
|
|
[2611, 17, 145, 115, 1, 146, 116],
|
|
[2761, 13, 145, 115, 6, 146, 116],
|
|
[2876, 12, 151, 121, 7, 152, 122],
|
|
[3034, 6, 151, 121, 14, 152, 122],
|
|
[3196, 17, 152, 122, 4, 153, 123],
|
|
[3362, 4, 152, 122, 18, 153, 123],
|
|
[3532, 20, 147, 117, 4, 148, 118],
|
|
[3706, 19, 148, 118, 6, 149, 119],
|
|
]
|
|
|
|
s = ""
|
|
RS_BLOCK_TABLE.each.with_index(1) do |a, v|
|
|
size_1 = 4 * v + 16
|
|
|
|
total_codes, n1, c1, k1, n2, c2, k2 = *a
|
|
s << (total_codes * 54 / 265 - (n2 ? n1 + n2 : n1) * (c1 - k1) + 43)
|
|
end
|
|
|
|
p s
|