mirror of https://github.com/wb2osz/direwolf.git
Fix IL2P for 9600 bps.
This commit is contained in:
parent
6442466a5d
commit
049614d16c
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
### New Features: ###
|
### New Features: ###
|
||||||
|
|
||||||
- Improved Layer 2 Protocol [(IL2P)](https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction). Use "-I 1" to enable transmit for first channel.
|
- Improved Layer 2 Protocol [(IL2P)](https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction). Use "-I 1" on command line to enable transmit for first channel. Compatible with Nino TNC for 1200 and 9600 bps.
|
||||||
|
|
||||||
- Limited support for CM109/CM119 GPIO PTT on Windows.
|
- Limited support for CM109/CM119 GPIO PTT on Windows.
|
||||||
|
|
||||||
|
|
|
@ -1094,6 +1094,8 @@ int audio_get (int a)
|
||||||
dw_printf ("This is most likely caused by the CPU being too slow to keep up with the audio stream.\n");
|
dw_printf ("This is most likely caused by the CPU being too slow to keep up with the audio stream.\n");
|
||||||
dw_printf ("Use the \"top\" command, in another command window, to look at CPU usage.\n");
|
dw_printf ("Use the \"top\" command, in another command window, to look at CPU usage.\n");
|
||||||
dw_printf ("This might be a temporary condition so we will attempt to recover a few times before giving up.\n");
|
dw_printf ("This might be a temporary condition so we will attempt to recover a few times before giving up.\n");
|
||||||
|
dw_printf ("If using a very slow CPU, try reducing the CPU load by using -P- command\n");
|
||||||
|
dw_printf ("line option for 9600 bps or -D3 for slower AFSK .\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
audio_stats (a,
|
audio_stats (a,
|
||||||
|
|
|
@ -102,7 +102,9 @@
|
||||||
*
|
*
|
||||||
* RR note: It seems that some implementations put a hint
|
* RR note: It seems that some implementations put a hint
|
||||||
* in the "RR" reserved bits.
|
* in the "RR" reserved bits.
|
||||||
* http://www.tapr.org/pipermail/ax25-layer2/2005-October/000297.html
|
* http://www.tapr.org/pipermail/ax25-layer2/2005-October/000297.html (now broken)
|
||||||
|
* https://elixir.bootlin.com/linux/latest/source/net/ax25/ax25_addr.c#L237
|
||||||
|
*
|
||||||
* The RR bits can also be used for "DAMA" which is
|
* The RR bits can also be used for "DAMA" which is
|
||||||
* some sort of channel access coordination scheme.
|
* some sort of channel access coordination scheme.
|
||||||
* http://internet.freepage.de/cgi-bin/feets/freepage_ext/41030x030A/rewrite/hennig/afu/afudoc/afudama.html
|
* http://internet.freepage.de/cgi-bin/feets/freepage_ext/41030x030A/rewrite/hennig/afu/afudoc/afudama.html
|
||||||
|
|
|
@ -4522,6 +4522,7 @@ void config_init (char *fname, struct audio_s *p_audio_config,
|
||||||
*
|
*
|
||||||
* In version 1.2 we allow 0 to disable listening.
|
* In version 1.2 we allow 0 to disable listening.
|
||||||
*/
|
*/
|
||||||
|
// FIXME: complain if extra parameter e.g. port as in KISSPORT
|
||||||
|
|
||||||
else if (strcasecmp(t, "AGWPORT") == 0) {
|
else if (strcasecmp(t, "AGWPORT") == 0) {
|
||||||
int n;
|
int n;
|
||||||
|
|
|
@ -431,11 +431,17 @@ void demod_afsk_init (int samples_per_sec, int baud, int mark_freq,
|
||||||
|
|
||||||
TUNE("TUNE_PRE_FILTER_TAPS", D->pre_filter_taps, "pre_filter_taps", "%d")
|
TUNE("TUNE_PRE_FILTER_TAPS", D->pre_filter_taps, "pre_filter_taps", "%d")
|
||||||
|
|
||||||
|
// TODO: Size comes out to 417 for 1200 bps with 48000 sample rate.
|
||||||
|
// The message is upsetting. Can we handle this better?
|
||||||
|
|
||||||
if (D->pre_filter_taps > MAX_FILTER_SIZE) {
|
if (D->pre_filter_taps > MAX_FILTER_SIZE) {
|
||||||
text_color_set (DW_COLOR_ERROR);
|
text_color_set (DW_COLOR_ERROR);
|
||||||
dw_printf ("Calculated pre filter size of %d is too large.\n", D->pre_filter_taps);
|
dw_printf ("Warning: Calculated pre filter size of %d is too large.\n", D->pre_filter_taps);
|
||||||
dw_printf ("Decrease the audio sample rate or increase the decimation factor or\n");
|
dw_printf ("Decrease the audio sample rate or increase the decimation factor.\n");
|
||||||
dw_printf ("recompile the application with MAX_FILTER_SIZE larger than %d.\n", MAX_FILTER_SIZE);
|
dw_printf ("You can use -D2 or -D3, on the command line, to down-sample the audio rate\n");
|
||||||
|
dw_printf ("before demodulating. This greatly decreases the CPU requirements with little\n");
|
||||||
|
dw_printf ("impact on the decoding performance. This is useful for a slow ARM processor,\n");
|
||||||
|
dw_printf ("such as with a Raspberry Pi model 1.\n");
|
||||||
D->pre_filter_taps = (MAX_FILTER_SIZE - 1) | 1;
|
D->pre_filter_taps = (MAX_FILTER_SIZE - 1) | 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -360,7 +360,10 @@ void tone_gen_put_bit (int chan, int dat)
|
||||||
bit_count[chan] = 0;
|
bit_count[chan] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (save_audio_config_p->achan[chan].modem_type == MODEM_SCRAMBLE) {
|
// Would be logical to have MODEM_BASEBAND for IL2P rather than checking here. But...
|
||||||
|
// That would mean putting in at least 3 places and testing all rather than just one.
|
||||||
|
if (save_audio_config_p->achan[chan].modem_type == MODEM_SCRAMBLE &&
|
||||||
|
save_audio_config_p->achan[chan].layer2_xmit != LAYER2_IL2P) {
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
x = (dat ^ (lfsr[chan] >> 16) ^ (lfsr[chan] >> 11)) & 1;
|
x = (dat ^ (lfsr[chan] >> 16) ^ (lfsr[chan] >> 11)) & 1;
|
||||||
|
|
|
@ -20,6 +20,7 @@ set(TEST_CHECK-MODEM1200_FILE "check-modem1200")
|
||||||
set(TEST_CHECK-MODEM1200_IL2P_FILE "check-modem1200-i")
|
set(TEST_CHECK-MODEM1200_IL2P_FILE "check-modem1200-i")
|
||||||
set(TEST_CHECK-MODEM300_FILE "check-modem300")
|
set(TEST_CHECK-MODEM300_FILE "check-modem300")
|
||||||
set(TEST_CHECK-MODEM9600_FILE "check-modem9600")
|
set(TEST_CHECK-MODEM9600_FILE "check-modem9600")
|
||||||
|
set(TEST_CHECK-MODEM9600_IL2P_FILE "check-modem9600-i")
|
||||||
set(TEST_CHECK-MODEM19200_FILE "check-modem19200")
|
set(TEST_CHECK-MODEM19200_FILE "check-modem19200")
|
||||||
set(TEST_CHECK-MODEM2400-a_FILE "check-modem2400-a")
|
set(TEST_CHECK-MODEM2400-a_FILE "check-modem2400-a")
|
||||||
set(TEST_CHECK-MODEM2400-b_FILE "check-modem2400-b")
|
set(TEST_CHECK-MODEM2400-b_FILE "check-modem2400-b")
|
||||||
|
@ -64,6 +65,12 @@ configure_file(
|
||||||
@ONLY
|
@ONLY
|
||||||
)
|
)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
"${CUSTOM_TEST_SCRIPTS_DIR}/${TEST_CHECK-MODEM9600_IL2P_FILE}"
|
||||||
|
"${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM9600_IL2P_FILE}${CUSTOM_SCRIPT_SUFFIX}"
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
"${CUSTOM_TEST_SCRIPTS_DIR}/${TEST_CHECK-MODEM19200_FILE}"
|
"${CUSTOM_TEST_SCRIPTS_DIR}/${TEST_CHECK-MODEM19200_FILE}"
|
||||||
"${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM19200_FILE}${CUSTOM_SCRIPT_SUFFIX}"
|
"${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM19200_FILE}${CUSTOM_SCRIPT_SUFFIX}"
|
||||||
|
@ -485,6 +492,7 @@ add_test(check-modem1200 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM1200_FILE}
|
||||||
add_test(check-modem1200-i "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM1200_IL2P_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
add_test(check-modem1200-i "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM1200_IL2P_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
add_test(check-modem300 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM300_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
add_test(check-modem300 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM300_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
add_test(check-modem9600 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM9600_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
add_test(check-modem9600 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM9600_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
|
add_test(check-modem9600-i "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM9600_IL2P_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
add_test(check-modem19200 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM19200_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
add_test(check-modem19200 "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM19200_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
add_test(check-modem2400-a "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM2400-a_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
add_test(check-modem2400-a "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM2400-a_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
add_test(check-modem2400-b "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM2400-b_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
add_test(check-modem2400-b "${CUSTOM_TEST_BINARY_DIR}/${TEST_CHECK-MODEM2400-b_FILE}${CUSTOM_SCRIPT_SUFFIX}")
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
@CUSTOM_SHELL_SHABANG@
|
||||||
|
|
||||||
|
@GEN_PACKETS_BIN@ -B9600 -I1 -n 100 -o test96-il2p-I1.wav
|
||||||
|
@ATEST_BIN@ -B9600 -L72 -G76 test96-il2p-I1.wav
|
||||||
|
@ATEST_BIN@ -B9600 -P+ -L76 -G80 test96-il2p-I1.wav
|
||||||
|
|
||||||
|
@GEN_PACKETS_BIN@ -B9600 -I0 -n 100 -o test96-il2p-I0.wav
|
||||||
|
@ATEST_BIN@ -B9600 -L64 -G68 test96-il2p-I0.wav
|
||||||
|
|
||||||
|
|
||||||
|
@GEN_PACKETS_BIN@ -B9600 -i1 -n 100 -o test96-il2p-i1.wav
|
||||||
|
@ATEST_BIN@ -B9600 -L70 -G74 test96-il2p-i1.wav
|
||||||
|
@ATEST_BIN@ -B9600 -P+ -L73 -G77 test96-il2p-i1.wav
|
||||||
|
|
||||||
|
@GEN_PACKETS_BIN@ -B9600 -i0 -n 100 -o test96-il2p-i0.wav
|
||||||
|
@ATEST_BIN@ -B9600 -L67 -G71 test96-il2p-i0.wav
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue