minimodem --txstopbits M.N variable stop bits
This commit is contained in:
parent
1b764faa5b
commit
27bc5f5ca7
|
@ -77,6 +77,7 @@ static void fsk_transmit_stdin(
|
||||||
float bfsk_mark_f,
|
float bfsk_mark_f,
|
||||||
float bfsk_space_f,
|
float bfsk_space_f,
|
||||||
int n_data_bits,
|
int n_data_bits,
|
||||||
|
float bfsk_txstopbits,
|
||||||
int (*framebits_encoder)( unsigned int *databits_outp, char char_out )
|
int (*framebits_encoder)( unsigned int *databits_outp, char char_out )
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -102,7 +103,8 @@ static void fsk_transmit_stdin(
|
||||||
float tone_freq = bit == 1 ? bfsk_mark_f : bfsk_space_f;
|
float tone_freq = bit == 1 ? bfsk_mark_f : bfsk_space_f;
|
||||||
simpleaudio_tone(sa_out, tone_freq, bit_nsamples);
|
simpleaudio_tone(sa_out, tone_freq, bit_nsamples);
|
||||||
}
|
}
|
||||||
simpleaudio_tone(sa_out, bfsk_mark_f, bit_nsamples); // stop
|
simpleaudio_tone(sa_out, bfsk_mark_f,
|
||||||
|
bit_nsamples * bfsk_txstopbits); // stop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
simpleaudio_tone(sa_out, bfsk_mark_f, bit_nsamples); // 2.0 bit tail
|
simpleaudio_tone(sa_out, bfsk_mark_f, bit_nsamples); // 2.0 bit tail
|
||||||
|
@ -150,6 +152,7 @@ usage()
|
||||||
" -b, --bandwidth {rx_bandwidth}\n"
|
" -b, --bandwidth {rx_bandwidth}\n"
|
||||||
" -M, --mark {mark_freq}\n"
|
" -M, --mark {mark_freq}\n"
|
||||||
" -S, --space {space_freq}\n"
|
" -S, --space {space_freq}\n"
|
||||||
|
" -T, --txstopbits {m.n}\n"
|
||||||
" {baudmode}\n"
|
" {baudmode}\n"
|
||||||
" 1200 : Bell202 1200 bps --ascii\n"
|
" 1200 : Bell202 1200 bps --ascii\n"
|
||||||
" 300 : Bell103 300 bps --ascii (auto-rx-carrier)\n"
|
" 300 : Bell103 300 bps --ascii (auto-rx-carrier)\n"
|
||||||
|
@ -168,6 +171,7 @@ main( int argc, char*argv[] )
|
||||||
float band_width = 0;
|
float band_width = 0;
|
||||||
unsigned int bfsk_mark_f = 0;
|
unsigned int bfsk_mark_f = 0;
|
||||||
unsigned int bfsk_space_f = 0;
|
unsigned int bfsk_space_f = 0;
|
||||||
|
float bfsk_txstopbits = 0;
|
||||||
unsigned int bfsk_n_data_bits = 0;
|
unsigned int bfsk_n_data_bits = 0;
|
||||||
unsigned int autodetect_shift;
|
unsigned int autodetect_shift;
|
||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
|
@ -196,9 +200,10 @@ main( int argc, char*argv[] )
|
||||||
{ "bandwidth", 1, 0, 'b' },
|
{ "bandwidth", 1, 0, 'b' },
|
||||||
{ "mark", 1, 0, 'M' },
|
{ "mark", 1, 0, 'M' },
|
||||||
{ "space", 1, 0, 'S' },
|
{ "space", 1, 0, 'S' },
|
||||||
|
{ "txstopbits", 1, 0, 'T' },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
c = getopt_long(argc, argv, "tr85f:b:M:S:",
|
c = getopt_long(argc, argv, "tr85f:b:M:S:T:",
|
||||||
long_options, &option_index);
|
long_options, &option_index);
|
||||||
if ( c == -1 )
|
if ( c == -1 )
|
||||||
break;
|
break;
|
||||||
|
@ -234,6 +239,10 @@ main( int argc, char*argv[] )
|
||||||
bfsk_space_f = atoi(optarg);
|
bfsk_space_f = atoi(optarg);
|
||||||
assert( bfsk_space_f > 0 );
|
assert( bfsk_space_f > 0 );
|
||||||
break;
|
break;
|
||||||
|
case 'T':
|
||||||
|
bfsk_txstopbits = atof(optarg);
|
||||||
|
assert( bfsk_txstopbits > 0 );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
|
@ -324,6 +333,9 @@ main( int argc, char*argv[] )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( bfsk_txstopbits == 0 )
|
||||||
|
bfsk_txstopbits = 1.0;
|
||||||
|
|
||||||
/* restrict band_width to <= data rate (FIXME?) */
|
/* restrict band_width to <= data rate (FIXME?) */
|
||||||
if ( band_width > bfsk_data_rate )
|
if ( band_width > bfsk_data_rate )
|
||||||
band_width = bfsk_data_rate;
|
band_width = bfsk_data_rate;
|
||||||
|
@ -351,6 +363,7 @@ main( int argc, char*argv[] )
|
||||||
bfsk_data_rate,
|
bfsk_data_rate,
|
||||||
bfsk_mark_f, bfsk_space_f,
|
bfsk_mark_f, bfsk_space_f,
|
||||||
bfsk_n_data_bits,
|
bfsk_n_data_bits,
|
||||||
|
bfsk_txstopbits,
|
||||||
bfsk_framebits_encode
|
bfsk_framebits_encode
|
||||||
);
|
);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue