mirror of
https://github.com/aicodix/modem.git
synced 2026-04-27 14:30:34 +00:00
added rattlegram modes
This commit is contained in:
parent
88e8a3ad94
commit
c597ac3398
4 changed files with 75 additions and 1 deletions
31
decode.cc
31
decode.cc
|
|
@ -289,6 +289,8 @@ struct Decoder
|
|||
}
|
||||
void shuffle(code_type *c)
|
||||
{
|
||||
if (oper_mode < 25)
|
||||
return;
|
||||
switch (code_order) {
|
||||
case 11:
|
||||
shuffle_2048(c);
|
||||
|
|
@ -368,7 +370,7 @@ struct Decoder
|
|||
continue;
|
||||
}
|
||||
oper_mode = md & 255;
|
||||
if (oper_mode && (oper_mode < 23 || oper_mode > 28)) {
|
||||
if (oper_mode && (oper_mode < 14 || (oper_mode > 16 && oper_mode < 23) || oper_mode > 28)) {
|
||||
std::cerr << "operation mode " << oper_mode << " unsupported." << std::endl;
|
||||
continue;
|
||||
}
|
||||
|
|
@ -393,6 +395,33 @@ struct Decoder
|
|||
int comb_cols = 0;
|
||||
int code_cols = 0;
|
||||
switch (oper_mode) {
|
||||
case 14:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
comb_cols = 0;
|
||||
code_order = 11;
|
||||
code_cols = 256;
|
||||
data_bits = 1360;
|
||||
frozen_bits = frozen_2048_1392;
|
||||
break;
|
||||
case 15:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
comb_cols = 0;
|
||||
code_order = 11;
|
||||
code_cols = 256;
|
||||
data_bits = 1024;
|
||||
frozen_bits = frozen_2048_1056;
|
||||
break;
|
||||
case 16:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
comb_cols = 0;
|
||||
code_order = 11;
|
||||
code_cols = 256;
|
||||
data_bits = 680;
|
||||
frozen_bits = frozen_2048_712;
|
||||
break;
|
||||
case 23:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
|
|
|
|||
41
encode.cc
41
encode.cc
|
|
@ -226,6 +226,8 @@ struct Encoder
|
|||
}
|
||||
void shuffle(code_type *c)
|
||||
{
|
||||
if (oper_mode < 25)
|
||||
return;
|
||||
switch (code_order) {
|
||||
case 11:
|
||||
shuffle_2048(c);
|
||||
|
|
@ -259,6 +261,36 @@ struct Encoder
|
|||
case 0:
|
||||
code_cols = 256;
|
||||
break;
|
||||
case 14:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
comb_cols = 0;
|
||||
code_order = 11;
|
||||
code_cols = 256;
|
||||
data_bits = 1360;
|
||||
reserved_tones = 0;
|
||||
frozen_bits = frozen_2048_1392;
|
||||
break;
|
||||
case 15:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
comb_cols = 0;
|
||||
code_order = 11;
|
||||
code_cols = 256;
|
||||
data_bits = 1024;
|
||||
reserved_tones = 0;
|
||||
frozen_bits = frozen_2048_1056;
|
||||
break;
|
||||
case 16:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
comb_cols = 0;
|
||||
code_order = 11;
|
||||
code_cols = 256;
|
||||
data_bits = 680;
|
||||
reserved_tones = 0;
|
||||
frozen_bits = frozen_2048_712;
|
||||
break;
|
||||
case 23:
|
||||
mod_bits = 2;
|
||||
cons_rows = 4;
|
||||
|
|
@ -439,6 +471,15 @@ int main(int argc, char **argv)
|
|||
case 0:
|
||||
data_bits = 0;
|
||||
break;
|
||||
case 14:
|
||||
data_bits = 1360;
|
||||
break;
|
||||
case 15:
|
||||
data_bits = 1024;
|
||||
break;
|
||||
case 16:
|
||||
data_bits = 680;
|
||||
break;
|
||||
case 23:
|
||||
data_bits = 1024;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ int main()
|
|||
code<12>(4096, 3072+32);
|
||||
code<12>(4096, 2048+32);
|
||||
code<11>(2048, 1536+32);
|
||||
code<11>(2048, 1360+32);
|
||||
code<11>(2048, 1024+32);
|
||||
code<11>(2048, 680+32);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,4 +3,6 @@ static const uint32_t frozen_8192_5472[256] = { 0xffffffff, 0xffffffff, 0xffffff
|
|||
static const uint32_t frozen_4096_3104[128] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x1173fff, 0x11717ff, 0x10117, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x11717ff, 0x177fffff, 0x17177f, 0x1077f, 0x1, 0x177f7fff, 0x1017f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0x17ffffff, 0x177f7fff, 0x1037f, 0x13f7fff, 0x10117, 0x10117, 0x1, 0x11717ff, 0x10117, 0x10117, 0x0, 0x17, 0x0, 0x0, 0x0, 0x117177f, 0x17, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0x13f7fff, 0x1171fff, 0x10117, 0x117177f, 0x117, 0x7, 0x0, 0x7177f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1017f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
|
||||
static const uint32_t frozen_4096_2080[128] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x77f7fff, 0x7fffffff, 0x1173fff, 0x11717ff, 0x117, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x11f7fff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177fffff, 0x1077f, 0x1013f, 0x1, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1013f, 0x11f7fff, 0x10117, 0x10117, 0x1, 0x11717ff, 0x117, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x17ffffff, 0x177fffff, 0x1077f, 0xffffffff, 0x177f7fff, 0x11f7fff, 0x10117, 0x11717ff, 0x10117, 0x17, 0x0, 0x7fffffff, 0x1171fff, 0x117177f, 0x17, 0x3177f, 0x1, 0x1, 0x0, 0x1017f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x177fffff, 0x7177f, 0x1037f, 0x1, 0x1011f, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
|
||||
static const uint32_t frozen_2048_1568[64] = { 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1017f, 0x7fffffff, 0x37f7fff, 0x1173fff, 0x10117, 0x11717ff, 0x17, 0x3, 0x0, 0x7fffffff, 0x11717ff, 0x17177f, 0x3, 0x1077f, 0x1, 0x1, 0x0, 0x1011f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x177fffff, 0x3077f, 0x1013f, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
|
||||
static const uint32_t frozen_2048_1392[64] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x11f7fff, 0xffffffff, 0x7fffffff, 0x17ffffff, 0x117177f, 0x177f7fff, 0x1037f, 0x1011f, 0x1, 0xffffffff, 0x177fffff, 0x77f7fff, 0x1011f, 0x1173fff, 0x10117, 0x10117, 0x0, 0x117177f, 0x17, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7fffffff, 0x11f7fff, 0x11717ff, 0x117, 0x17177f, 0x3, 0x1, 0x0, 0x1037f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1011f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
|
||||
static const uint32_t frozen_2048_1056[64] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1017f, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x13f7fff, 0x1171fff, 0x117, 0x3fffffff, 0x11717ff, 0x7177f, 0x1, 0x1017f, 0x1, 0x1, 0x0, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1171fff, 0x17ffffff, 0x7177f, 0x1037f, 0x1, 0x77f7fff, 0x1013f, 0x10117, 0x1, 0x10117, 0x0, 0x0, 0x0, 0x1173fff, 0x10117, 0x117, 0x0, 0x7, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };
|
||||
static const uint32_t frozen_2048_712[64] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x11f7fff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x17177f, 0x177fffff, 0x1037f, 0x1011f, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x1fffffff, 0x177fffff, 0x1077f, 0xffffffff, 0x177f7fff, 0x13f7fff, 0x10117, 0x1171fff, 0x117, 0x7, 0x0, 0x7fffffff, 0x1173fff, 0x11717ff, 0x7, 0x3077f, 0x1, 0x1, 0x0, 0x1013f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue