From 1053bc483f0e8f0021df271c24084e94ea1da96f Mon Sep 17 00:00:00 2001 From: WB2OSZ Date: Wed, 18 Nov 2015 08:09:45 -0500 Subject: [PATCH] Better duplicate checking for IGate and debug option to see what is going on. --- Makefile.linux | 21 +- Makefile.win | 3 +- ax25_pad.c | 174 +++++++-- ax25_pad.h | 3 +- config.c | 27 +- decode_aprs.c | 7 + dedupe.c | 11 + direwolf.c | 28 +- direwolf.conf => direwolf.conf.save | 16 +- doc/Raspberry-Pi-APRS-Tracker.pdf | Bin 720020 -> 721360 bytes dwgpsd.c | 2 +- igate.c | 526 ++++++++++++++++++++++------ igate.h | 13 +- man1/direwolf.1 | 2 + xmit.c | 3 +- 15 files changed, 663 insertions(+), 173 deletions(-) rename direwolf.conf => direwolf.conf.save (98%) diff --git a/Makefile.linux b/Makefile.linux index 2b4e42e..8bd5244 100644 --- a/Makefile.linux +++ b/Makefile.linux @@ -584,21 +584,21 @@ check : dtest ttest tttexttest pftest tlmtest lltest enctest kisstest check-mode # Can we encode and decode at popular data rates? check-modem1200 : gen_packets atest - gen_packets -n 100 -o /tmp/test1.wav - atest -F0 -PE -L70 -G71 /tmp/test1.wav - atest -F1 -PE -L73 -G75 /tmp/test1.wav + ./gen_packets -n 100 -o /tmp/test1.wav + ./atest -F0 -PE -L70 -G71 /tmp/test1.wav + ./atest -F1 -PE -L73 -G75 /tmp/test1.wav #rm /tmp/test1.wav check-modem300 : gen_packets atest - gen_packets -B300 -n 100 -o /tmp/test3.wav - atest -B300 -F0 -L68 -G69 /tmp/test3.wav - atest -B300 -F1 -L73 -G75 /tmp/test3.wav + ./gen_packets -B300 -n 100 -o /tmp/test3.wav + ./atest -B300 -F0 -L68 -G69 /tmp/test3.wav + ./atest -B300 -F1 -L73 -G75 /tmp/test3.wav rm /tmp/test3.wav check-modem9600 : gen_packets atest - gen_packets -B9600 -n 100 -o /tmp/test9.wav - atest -B9600 -F0 -L57 -G59 /tmp/test9.wav - atest -B9600 -F1 -L66 -G67 /tmp/test9.wav + ./gen_packets -B9600 -n 100 -o /tmp/test9.wav + ./atest -B9600 -F0 -L57 -G59 /tmp/test9.wav + ./atest -B9600 -F1 -L66 -G67 /tmp/test9.wav rm /tmp/test9.wav @@ -606,7 +606,8 @@ check-modem9600 : gen_packets atest # Unit test for inner digipeater algorithm .PHONY : dtest -dtest : digipeater.c pfilter.o ax25_pad.o dedupe.o fcs_calc.o tq.o textcolor.o \ +dtest : digipeater.c dedupe.c \ + pfilter.o ax25_pad.o fcs_calc.o tq.o textcolor.o \ decode_aprs.o dwgpsnmea.o dwgps.o dwgpsd.o serial_port.o latlong.o telemetry.o symbols.o tt_text.o misc.a $(CC) $(CFLAGS) -DDIGITEST -o $@ $^ $(LDFLAGS) ./dtest diff --git a/Makefile.win b/Makefile.win index 4fcda6f..a12ede8 100644 --- a/Makefile.win +++ b/Makefile.win @@ -283,7 +283,8 @@ atest9 : atest.c demod.c dsp.c demod_afsk.c demod_9600.c hdlc_rec.c hdlc_rec2.c # Unit test for inner digipeater algorithm .PHONY: dtest -dtest : digipeater.c pfilter.o ax25_pad.o dedupe.o fcs_calc.o tq.o textcolor.o \ +dtest : digipeater.c dedupe.c \ + pfilter.o ax25_pad.o fcs_calc.o tq.o textcolor.o \ decode_aprs.o dwgpsnmea.o dwgps.o serial_port.o latlong.o telemetry.o symbols.o tt_text.o misc.a regex.a $(CC) $(CFLAGS) -DDIGITEST -o $@ $^ ./dtest diff --git a/ax25_pad.c b/ax25_pad.c index 0d894ff..abaa617 100644 --- a/ax25_pad.c +++ b/ax25_pad.c @@ -476,7 +476,7 @@ packet_t ax25_from_text (char *monitor, int strict) return (NULL); } - if ( ! ax25_parse_addr (pa, strict, atemp, &ssid_temp, &heard_temp)) { + if ( ! ax25_parse_addr (AX25_SOURCE, pa, strict, atemp, &ssid_temp, &heard_temp)) { text_color_set(DW_COLOR_ERROR); dw_printf ("Failed to create packet from text. Bad source address\n"); ax25_delete (this_p); @@ -500,7 +500,7 @@ packet_t ax25_from_text (char *monitor, int strict) return (NULL); } - if ( ! ax25_parse_addr (pa, strict, atemp, &ssid_temp, &heard_temp)) { + if ( ! ax25_parse_addr (AX25_DESTINATION, pa, strict, atemp, &ssid_temp, &heard_temp)) { text_color_set(DW_COLOR_ERROR); dw_printf ("Failed to create packet from text. Bad destination address\n"); ax25_delete (this_p); @@ -524,7 +524,7 @@ packet_t ax25_from_text (char *monitor, int strict) // JWL 10:38 this_p->num_addr++; - if ( ! ax25_parse_addr (pa, strict, atemp, &ssid_temp, &heard_temp)) { + if ( ! ax25_parse_addr (k, pa, strict, atemp, &ssid_temp, &heard_temp)) { text_color_set(DW_COLOR_ERROR); dw_printf ("Failed to create packet from text. Bad digipeater address\n"); ax25_delete (this_p); @@ -582,12 +582,9 @@ packet_t ax25_from_frame_debug (unsigned char *fbuf, int flen, alevel_t alevel, packet_t ax25_from_frame (unsigned char *fbuf, int flen, alevel_t alevel) #endif { - //unsigned char *pf; packet_t this_p; - //int a; - //int addr_bytes; - + /* * First make sure we have an acceptable length: * @@ -687,7 +684,10 @@ packet_t ax25_dup (packet_t copy_from) * * Purpose: Parse address with optional ssid. * - * Inputs: in_addr - Input such as "WB2OSZ-15*" + * Inputs: position - AX25_DESTINATION, AX25_SOURCE, AX25_REPEATER_1... + * Used for more specific error message. -1 if not used. + * + * in_addr - Input such as "WB2OSZ-15*" * * strict - TRUE for strict checking (6 characters, no lower case, * SSID must be in range of 0 to 15). @@ -710,8 +710,12 @@ packet_t ax25_dup (packet_t copy_from) * *------------------------------------------------------------------------------*/ +static const char *position_name[1 + AX25_MAX_ADDRS] = { + "", "Destination ", "Source ", + "Digi1 ", "Digi2 ", "Digi3 ", "Digi4 ", + "Digi5 ", "Digi6 ", "Digi7 ", "Digi8 " }; -int ax25_parse_addr (char *in_addr, int strict, char *out_addr, int *out_ssid, int *out_heard) +int ax25_parse_addr (int position, char *in_addr, int strict, char *out_addr, int *out_ssid, int *out_heard) { char *p; char sstr[8]; /* Should be 1 or 2 digits for SSID. */ @@ -722,22 +726,33 @@ int ax25_parse_addr (char *in_addr, int strict, char *out_addr, int *out_ssid, i *out_ssid = 0; *out_heard = 0; + if (strict && strlen(in_addr) >= 2 && strncmp(in_addr, "qA", 2) == 0) { + + text_color_set(DW_COLOR_ERROR); + dw_printf ("%sAddress \"%s\" is a \"q-construct\" used for communicating\n", position_name[position], in_addr); + dw_printf ("with APRS Internet Servers. It was not expected here.\n"); + } + //dw_printf ("ax25_parse_addr in: %s\n", in_addr); + if (position < -1) position = -1; + if (position > AX25_REPEATER_8) position = AX25_REPEATER_8; + position++; /* Adjust for position_name above. */ + maxlen = strict ? 6 : (AX25_MAX_ADDR_LEN-1); p = in_addr; i = 0; for (p = in_addr; isalnum(*p); p++) { if (i >= maxlen) { text_color_set(DW_COLOR_ERROR); - dw_printf ("Address is too long. \"%s\" has more than %d characters.\n", in_addr, maxlen); + dw_printf ("%sAddress is too long. \"%s\" has more than %d characters.\n", position_name[position], in_addr, maxlen); return 0; } out_addr[i++] = *p; out_addr[i] = '\0'; if (strict && islower(*p)) { text_color_set(DW_COLOR_ERROR); - dw_printf ("Address has lower case letters. \"%s\" must be all upper case.\n", in_addr); + dw_printf ("%sAddress has lower case letters. \"%s\" must be all upper case.\n", position_name[position], in_addr); return 0; } } @@ -748,21 +763,21 @@ int ax25_parse_addr (char *in_addr, int strict, char *out_addr, int *out_ssid, i for (p++; isalnum(*p); p++) { if (j >= 2) { text_color_set(DW_COLOR_ERROR); - dw_printf ("SSID is too long. SSID part of \"%s\" has more than 2 characters.\n", in_addr); + dw_printf ("%sSSID is too long. SSID part of \"%s\" has more than 2 characters.\n", position_name[position], in_addr); return 0; } sstr[j++] = *p; sstr[j] = '\0'; if (strict && ! isdigit(*p)) { text_color_set(DW_COLOR_ERROR); - dw_printf ("SSID must be digits. \"%s\" has letters in SSID.\n", in_addr); + dw_printf ("%sSSID must be digits. \"%s\" has letters in SSID.\n", position_name[position], in_addr); return 0; } } k = atoi(sstr); if (k < 0 || k > 15) { text_color_set(DW_COLOR_ERROR); - dw_printf ("SSID out of range. SSID of \"%s\" not in range of 0 to 15.\n", in_addr); + dw_printf ("%sSSID out of range. SSID of \"%s\" not in range of 0 to 15.\n", position_name[position], in_addr); return 0; } *out_ssid = k; @@ -775,7 +790,7 @@ int ax25_parse_addr (char *in_addr, int strict, char *out_addr, int *out_ssid, i if (*p != '\0') { text_color_set(DW_COLOR_ERROR); - dw_printf ("Invalid character \"%c\" found in address \"%s\".\n", *p, in_addr); + dw_printf ("Invalid character \"%c\" found in %saddress \"%s\".\n", *p, position_name[position], in_addr); return 0; } @@ -786,6 +801,73 @@ int ax25_parse_addr (char *in_addr, int strict, char *out_addr, int *out_ssid, i } /* end ax25_parse_addr */ +/*------------------------------------------------------------------- + * + * Name: ax25_check_addresses + * + * Purpose: Check addresses of given packet and print message if any issues. + * We call this when receiving and transmitting. + * + * Inputs: pp - packet object pointer. + * + * Errors: Print error message. + * + * Returns: 1 for all valid. 0 if not. + * + * Examples: I was surprised to get this from an APRS-IS server with + * a lower case source address. + * + * n1otx>APRS,TCPIP*,qAC,THIRD:@141335z4227.48N/07111.73W_348/005g014t044r000p000h60b10075.wview_5_20_2 + * + * I haven't gotten to the bottom of this yet but it sounds + * like "q constructs" are somehow getting on to the air when + * they should only appear in conversations with IGate servers. + * + * https://groups.yahoo.com/neo/groups/direwolf_packet/conversations/topics/678 + * + * WB0VGI-7>APDW12,W0YC-5*,qAR,AE0RF-10:}N0DZQ-10>APWW10,TCPIP,WB0VGI-7*:;145.230MN*080306z4607.62N/09230.58WrKE0ACL/R 145.230- T146.2 (Pine County ARES) + * + * Typical result: + * + * Digipeater WIDE2 (probably N3LEE-4) audio level = 28(10/6) [NONE] __||||||| + * [0.5] VE2DJE-9>P_0_P?,VE2PCQ-3,K1DF-7,N3LEE-4,WIDE2*:'{S+l <0x1c>>/ + * Invalid character "_" in MIC-E destination/latitude. + * Invalid character "_" in MIC-E destination/latitude. + * Invalid character "?" in MIC-E destination/latitude. + * Invalid MIC-E N/S encoding in 4th character of destination. + * Invalid MIC-E E/W encoding in 6th character of destination. + * MIC-E, normal car (side view), Unknown manufacturer, Returning + * N 00 00.0000, E 005 55.1500, 0 MPH + * Invalid character "_" found in Destination address "P_0_P?". + * + * *** The origin and journey of this packet should receive some scrutiny. *** + * + *--------------------------------------------------------------------*/ + +int ax25_check_addresses (packet_t pp) +{ + int n; + char addr[AX25_MAX_ADDR_LEN]; + char ignore1[AX25_MAX_ADDR_LEN]; + int ignore2, ignore3; + int all_ok = 1; + + for (n = 0; n < ax25_get_num_addr(pp); n++) { + ax25_get_addr_with_ssid (pp, n, addr); + all_ok &= ax25_parse_addr (n, addr, 1, ignore1, &ignore2, &ignore3); + } + + if (! all_ok) { + text_color_set(DW_COLOR_ERROR); + dw_printf ("\n"); + dw_printf ("*** The origin and journey of this packet should receive some scrutiny. ***\n"); + dw_printf ("\n"); + } + + return (all_ok); +} /* end ax25_check_addresses */ + + /*------------------------------------------------------------------------------ * * Name: ax25_unwrap_third_party @@ -862,7 +944,7 @@ void ax25_set_addr (packet_t this_p, int n, char *ad) /* * Set existing address position. */ - ax25_parse_addr (ad, 0, atemp, &ssid_temp, &heard_temp); + ax25_parse_addr (n, ad, 0, atemp, &ssid_temp, &heard_temp); memset (this_p->frame_data + n*7, ' ' << 1, 6); @@ -951,7 +1033,11 @@ void ax25_insert_addr (packet_t this_p, int n, char *ad) SET_LAST_ADDR_FLAG; - ax25_parse_addr (ad, 0, atemp, &ssid_temp, &heard_temp); + // Why aren't we setting 'strict' here? + // Messages from IGate have q-constructs. + // We use this to parse it and later remove unwanted parts. + + ax25_parse_addr (n, ad, 0, atemp, &ssid_temp, &heard_temp); memset (this_p->frame_data + n*7, ' ' << 1, 6); for (i=0; i<6 && atemp[i] != '\0'; i++) { this_p->frame_data[n*7+i] = atemp[i] << 1; @@ -1160,8 +1246,9 @@ void ax25_get_addr_with_ssid (packet_t this_p, int n, char *station) if (ssid != 0) { snprintf (sstr, sizeof(sstr), "-%d", ssid); strlcat (station, sstr, 10); - } -} + } + +} /* end ax25_get_addr_with_ssid */ /*------------------------------------------------------------------------------ @@ -2064,6 +2151,27 @@ int ax25_get_pid (packet_t this_p) * There is a very very small probability that two unrelated * packets will result in the same checksum, and the * undesired dropping of the packet. + * + * There is a 1 / 65536 chance of getting a false positive match + * which is good enough for this application. + * We could reduce that with a 32 bit CRC instead of reusing + * code from the AX.25 frame CRC calculation. + * + * Version 1.3: We exclude any trailing CR/LF at the end of the info part + * so we can detect duplicates that are received only over the + * air and those which have gone thru an IGate where the process + * removes any trailing CR/LF. Example: + * + * Original via RF only: + * W1TG-1>APU25N,N3LEE-10*,WIDE2-1: + * + * When we get the same thing via APRS-IS: + * W1TG-1>APU25N,K1FFK,WIDE2*,qAR,WB2ZII-15:= 1 && (pinfo[info_len-1] == '\r' || + pinfo[info_len-1] == '\n' || + pinfo[info_len-1] == ' ')) { + + // Temporary for debugging! + + // if (pinfo[info_len-1] == ' ') { + // text_color_set(DW_COLOR_ERROR); + // dw_printf ("DEBUG: ax25_dedupe_crc ignoring trailing space.\n"); + // } + + info_len--; + } + crc = 0xffff; crc = crc16((unsigned char *)src, strlen(src), crc); crc = crc16((unsigned char *)dest, strlen(dest), crc); @@ -2159,6 +2281,11 @@ unsigned short ax25_m_m_crc (packet_t pp) * as hexadecimal for troubleshooting? Maybe an option so the * packet raw data is in hexadecimal but an extracted * comment displays UTF-8? Or a command line option for only ASCII? + * + * Trailing space: + * I recently noticed a case where a packet has space character + * at the end. If the last character of the line is a space, + * this will be displayed in hexadecimal to make it obvious. * *------------------------------------------------------------------*/ @@ -2184,7 +2311,12 @@ void ax25_safe_print (char *pstr, int len, int ascii_only) { ch = *((unsigned char *)pstr); - if (ch < ' ' || ch == 0x7f || ch == 0xfe || ch == 0xff || + if (ch == ' ' && (len == 1 || pstr[1] == '\0')) { + + snprintf (safe_str + safe_len, sizeof(safe_str)-safe_len, "<0x%02x>", ch); + safe_len += 6; + } + else if (ch < ' ' || ch == 0x7f || ch == 0xfe || ch == 0xff || (ascii_only && ch >= 0x80) ) { /* Control codes and delete. */ @@ -2192,7 +2324,7 @@ void ax25_safe_print (char *pstr, int len, int ascii_only) /* "Byte Order Mark" (BOM) at the beginning. */ snprintf (safe_str + safe_len, sizeof(safe_str)-safe_len, "<0x%02x>", ch); - safe_len += 6; + safe_len += 6; } else { /* Let everything else thru so we can handle UTF-8 */ diff --git a/ax25_pad.h b/ax25_pad.h index d133808..994a082 100644 --- a/ax25_pad.h +++ b/ax25_pad.h @@ -307,7 +307,8 @@ extern void ax25_delete (packet_t pp); #endif -extern int ax25_parse_addr (char *in_addr, int strict, char *out_addr, int *out_ssid, int *out_heard); +extern int ax25_parse_addr (int position, char *in_addr, int strict, char *out_addr, int *out_ssid, int *out_heard); +extern int ax25_check_addresses (packet_t pp); extern packet_t ax25_unwrap_third_party (packet_t from_pp); diff --git a/config.c b/config.c index 72e60c9..2cd172f 100644 --- a/config.c +++ b/config.c @@ -742,8 +742,8 @@ void config_init (char *fname, struct audio_s *p_audio_config, memset (p_igate_config, 0, sizeof(struct igate_config_s)); p_igate_config->t2_server_port = DEFAULT_IGATE_PORT; p_igate_config->tx_chan = -1; /* IS->RF not enabled */ - p_igate_config->tx_limit_1 = 6; - p_igate_config->tx_limit_5 = 20; + p_igate_config->tx_limit_1 = IGATE_TX_LIMIT_1_DEFAULT; + p_igate_config->tx_limit_5 = IGATE_TX_LIMIT_5_DEFAULT; /* People find this confusing. */ @@ -3165,7 +3165,7 @@ void config_init (char *fname, struct audio_s *p_audio_config, if (islower(*p)) *p = toupper(*p); } - if ( ! ax25_parse_addr(t, 1, method, &ssid, &heard)) { + if ( ! ax25_parse_addr(-1, t, 1, method, &ssid, &heard)) { continue; // function above prints any error message } @@ -3409,18 +3409,22 @@ void config_init (char *fname, struct audio_s *p_audio_config, continue; } - /* limits of 20 and 100 are unfriendly but not insane. */ - n = atoi(t); - if (n >= 1 && n <= 20) { + if (n < 1) { + p_igate_config->tx_limit_1 = 1; + } + else if (n <= IGATE_TX_LIMIT_1_MAX) { p_igate_config->tx_limit_1 = n; } else { + p_igate_config->tx_limit_1 = IGATE_TX_LIMIT_1_MAX; text_color_set(DW_COLOR_ERROR); - dw_printf ("Line %d: Invalid one minute transmit limit. Using %d.\n", + dw_printf ("Line %d: One minute transmit limit has been reduced to %d.\n", line, p_igate_config->tx_limit_1); + dw_printf ("You won't make friends by setting a limit this high.\n"); } + t = split(NULL,0); if (t == NULL) { text_color_set(DW_COLOR_ERROR); @@ -3429,13 +3433,18 @@ void config_init (char *fname, struct audio_s *p_audio_config, } n = atoi(t); - if (n >= 1 && n <= 100) { + if (n < 1) { + p_igate_config->tx_limit_5 = 1; + } + else if (n <= IGATE_TX_LIMIT_5_MAX) { p_igate_config->tx_limit_5 = n; } else { + p_igate_config->tx_limit_5 = IGATE_TX_LIMIT_5_MAX; text_color_set(DW_COLOR_ERROR); - dw_printf ("Line %d: Invalid one minute transmit limit. Using %d.\n", + dw_printf ("Line %d: Five minute transmit limit has been reduced to %d.\n", line, p_igate_config->tx_limit_5); + dw_printf ("You won't make friends by setting a limit this high.\n"); } } diff --git a/decode_aprs.c b/decode_aprs.c index 807dcd9..b259aa4 100644 --- a/decode_aprs.c +++ b/decode_aprs.c @@ -193,6 +193,7 @@ void decode_aprs (decode_aprs_t *A, packet_t pp, int quiet) A->g_footprint_radius = G_UNKNOWN; + /* * Extract source and destination including the SSID. */ @@ -4552,6 +4553,12 @@ int main (int argc, char *argv[]) decode_aprs_print (&A); + /* + * Perform validity check on each address. + * This should print an error message if any issues. + */ + (void)ax25_check_addresses(pp); + // Send to log file? // if (logdir != NULL && *logdir != '\0') { diff --git a/dedupe.c b/dedupe.c index d7c69d7..66a035f 100644 --- a/dedupe.c +++ b/dedupe.c @@ -108,6 +108,9 @@ #include "dedupe.h" #include "fcs_calc.h" #include "textcolor.h" +#ifndef DIGITEST +#include "igate.h" +#endif /*------------------------------------------------------------------------------ @@ -205,6 +208,14 @@ void dedupe_remember (packet_t pp, int chan) if (insert_next >= HISTORY_MAX) { insert_next = 0; } + + /* If we send something by digipeater, we don't */ + /* want to do it again if it comes from APRS-IS. */ + /* Not sure about the other way around. */ + +#ifndef DIGITEST + ig_to_tx_remember (pp, chan, 1); +#endif } diff --git a/direwolf.c b/direwolf.c index 51e531e..5e60a35 100644 --- a/direwolf.c +++ b/direwolf.c @@ -177,13 +177,14 @@ int main (int argc, char *argv[]) char input_file[80]; int t_opt = 1; /* Text color option. */ + int a_opt = 0; /* "-a n" interval, in seconds, for audio statistics report. 0 for none. */ + int d_k_opt = 0; /* "-d k" option for serial port KISS. Can be repeated for more detail. */ int d_n_opt = 0; /* "-d n" option for Network KISS. Can be repeated for more detail. */ int d_t_opt = 0; /* "-d t" option for Tracker. Can be repeated for more detail. */ int d_g_opt = 0; /* "-d g" option for GPS. Can be repeated for more detail. */ int d_o_opt = 0; /* "-d o" option for output control such as PTT and DCD. */ - int a_opt = 0; /* "-a n" interval, in seconds, for audio statistics report. 0 for none. */ - + int d_i_opt = 0; /* "-d i" option for IGate. Repeat for more detail */ strlcpy(l_opt, "", sizeof(l_opt)); @@ -233,6 +234,14 @@ int main (int argc, char *argv[]) dw_printf ("Dire Wolf DEVELOPMENT version %d.%d %s (%s)\n", MAJOR_VERSION, MINOR_VERSION, "G", __DATE__); //dw_printf ("Dire Wolf version %d.%d\n", MAJOR_VERSION, MINOR_VERSION); +#if defined(ENABLE_GPSD) // later or hamlib ... + dw_printf ("Includes optional support for: "); +#if defined(ENABLE_GPSD) + dw_printf (" gpsd"); +#endif + dw_printf ("\n"); +#endif + #if __WIN32__ SetConsoleCtrlHandler ((PHANDLER_ROUTINE)cleanup_win, TRUE); @@ -438,6 +447,7 @@ int main (int argc, char *argv[]) case 'w': nmea_set_debug (1); break; // not documented yet. case 'p': d_p_opt = 1; break; // TODO: packet dump for xmit side. case 'o': d_o_opt++; ptt_set_debug(d_o_opt); break; + case 'i': d_i_opt++; break; #if AX25MEMDEBUG case 'm': ax25memdebug_set(); break; // Track down memory leak. Not documented. #endif @@ -653,7 +663,7 @@ int main (int argc, char *argv[]) * Initialize the digipeater and IGate functions. */ digipeater_init (&audio_config, &digi_config); - igate_init (&audio_config, &igate_config, &digi_config); + igate_init (&audio_config, &igate_config, &digi_config, d_i_opt); /* * Provide the AGW & KISS socket interfaces for use by a client application. @@ -681,18 +691,19 @@ int main (int argc, char *argv[]) /* * Enable beaconing. + * Open log file first because "-dttt" (along with -l...) will + * log the tracker beacon transmissions with fake channel 999. */ + log_init(misc_config.logdir); beacon_init (&audio_config, &misc_config); - log_init(misc_config.logdir); /* * Get sound samples and decode them. * Use hot attribute for all functions called for every audio sample. */ - recv_init (&audio_config); recv_process (); @@ -898,6 +909,12 @@ void app_process_rec_packet (int chan, int subchan, packet_t pp, alevel_t alevel decode_aprs_print (&A); + /* + * Perform validity check on each address. + * This should print an error message if any issues. + */ + (void)ax25_check_addresses(pp); + // Send to log file. log_write (chan, &A, pp, alevel, retries); @@ -1038,6 +1055,7 @@ static void usage (char **argv) dw_printf (" g g = GPS interface.\n"); dw_printf (" t t = Tracker beacon.\n"); dw_printf (" o o = output controls such as PTT and DCD.\n"); + dw_printf (" i i = IGate.\n"); dw_printf (" -q Quiet (suppress output) options:\n"); dw_printf (" h h = Heard line with the audio level.\n"); dw_printf (" d d = Decoding of APRS packets.\n"); diff --git a/direwolf.conf b/direwolf.conf.save similarity index 98% rename from direwolf.conf rename to direwolf.conf.save index 1e1af46..9952702 100644 --- a/direwolf.conf +++ b/direwolf.conf.save @@ -318,7 +318,7 @@ TBEACON delay=0:30 every=0:20 SYMBOL=car FREQ=146.955 OFFSET=-0.600 TONE=74.4 # the "#" from the beginning of the line below. # -#DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE +DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE # See User Guide for more explanation of what this means and how # it can be customized for your particular needs. @@ -346,12 +346,12 @@ TBEACON delay=0:30 every=0:20 SYMBOL=car FREQ=146.955 OFFSET=-0.600 TONE=74.4 # asia.aprs2.net - for Asia # aunz.aprs2.net - for Oceania -#IGSERVER noam.aprs2.net +IGSERVER noam.aprs2.net # You also need to specify your login name and passcode. # Contact the author if you can't figure out how to generate the passcode. -#IGLOGIN WB2OSZ-5 123456 +IGLOGIN WB2OSZ-14 17845 # That's all you need for a receive only IGate which relays # messages from the local radio channel to the global servers. @@ -361,26 +361,28 @@ TBEACON delay=0:30 every=0:20 SYMBOL=car FREQ=146.955 OFFSET=-0.600 TONE=74.4 # forward it to an IGate server. This is done by using sendto=IG rather # than a radio channel number. Overlay R for receive only, T for two way. -#PBEACON sendto=IG delay=0:30 every=60:00 symbol="igate" overlay=R lat=42^37.14N long=071^20.83W +PBEACON sendto=IG delay=1:00 every=60:00 symbol="igate" overlay=R lat=42^37.14N long=071^20.83W #PBEACON sendto=IG delay=0:30 every=60:00 symbol="igate" overlay=T lat=42^37.14N long=071^20.83W # To relay messages from the Internet to radio, you need to add # one more option with the transmit channel number and a VIA path. -#IGTXVIA 0 WIDE1-1 +IGTXVIA 0 WIDE1-1 # You might want to apply a filter for what packets will be obtained from the server. # Read about filters here: http://www.aprs-is.net/javaprsfilter.aspx # Example, positions and objects within 50 km of my location: -#IGFILTER m/50 +IGFILTER m/100 # That is known as a server-side filter. It is processed by the IGate server. # You can also apply local filtering to limit what will be transmitted on the # RF side. For example, transmit only "messages" on channel 0 and weather # reports on channel 1. +filter 0 ig t/p + #FILTER IG 0 t/m #FILTER IG 1 t/wn @@ -389,7 +391,7 @@ TBEACON delay=0:30 every=0:20 SYMBOL=car FREQ=146.955 OFFSET=-0.600 TONE=74.4 # during 1 minute and 5 minute intervals. If a limit would # be exceeded, the packet is dropped and message is displayed in red. -IGTXLIMIT 6 10 +IGTXLIMIT 20 100 ############################################################# diff --git a/doc/Raspberry-Pi-APRS-Tracker.pdf b/doc/Raspberry-Pi-APRS-Tracker.pdf index edb2c22fd290efe1139be181ee0b9c4afe4ead91..60018d5a963c2da502e3e58001f0b8fd4f1448ba 100644 GIT binary patch delta 107796 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

U17W6dj@E%OLTLs}wCTnDtrq@G7| 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 z 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 delta 106820 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%0A3@hv?sYiqytkM9fWX5Bl#w10??QGn)^3-A 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 diff --git a/dwgpsd.c b/dwgpsd.c index a3f4835..d970a88 100644 --- a/dwgpsd.c +++ b/dwgpsd.c @@ -171,7 +171,7 @@ int dwgpsd_init (struct misc_config_s *pconfig, int debug) dwgps_info_t info; text_color_set(DW_COLOR_ERROR); - dw_printf ("Unable to connect to GPSD stream.\n"); + dw_printf ("Unable to connect to GPSD stream at %s:%s.\n", pconfig->gpsd_host, sport); dw_printf ("%s\n", gps_errstr(errno)); return (-1); diff --git a/igate.c b/igate.c index b126a9b..4373857 100644 --- a/igate.c +++ b/igate.c @@ -107,16 +107,15 @@ static void * connnect_thread (void *arg); static void * igate_recv_thread (void *arg); #endif -static void send_msg_to_server (char *msg); -static void xmit_packet (char *message); +static void send_msg_to_server (const char *msg); +static void xmit_packet (char *message, int chan); static void rx_to_ig_init (void); static void rx_to_ig_remember (packet_t pp); static int rx_to_ig_allow (packet_t pp); static void ig_to_tx_init (void); -static void ig_to_tx_remember (packet_t pp); -static int ig_to_tx_allow (packet_t pp); +static int ig_to_tx_allow (packet_t pp, int chan); /* @@ -256,7 +255,7 @@ int main (int argc, char *argv[]) SLEEP_SEC (20); text_color_set(DW_COLOR_INFO); dw_printf ("Send received packet\n"); - send_msg_to_server ("W1ABC>APRS:?\r\n"); + send_msg_to_server ("W1ABC>APRS:?"); } #endif return 0; @@ -277,6 +276,8 @@ int main (int argc, char *argv[]) static struct audio_s *save_audio_config_p; static struct igate_config_s *save_igate_config_p; static struct digi_config_s *save_digi_config_p; +static int s_debug; + /* * Statistics. @@ -359,6 +360,13 @@ static int stats_rf_xmit_packets; /* Number of packets passed along to radio */ * p_digi_config - Digipeater configuration. * All we care about here is the packet filtering options. * + * debug_level - 0 print packets FROM APRS-IS, + * establishing connection with sergver, and + * and anything rejected by client side filtering. + * 1 plus packets sent TO server or why not. + * 2 plus duplicate detection overview. + * 3 plus duplicate detection details. + * * Description: This starts two threads: * * * to establish and maintain a connection to the server. @@ -367,7 +375,7 @@ static int stats_rf_xmit_packets; /* Number of packets passed along to radio */ *--------------------------------------------------------------------*/ -void igate_init (struct audio_s *p_audio_config, struct igate_config_s *p_igate_config, struct digi_config_s *p_digi_config) +void igate_init (struct audio_s *p_audio_config, struct igate_config_s *p_igate_config, struct digi_config_s *p_digi_config, int debug_level) { #if __WIN32__ HANDLE connnect_th; @@ -377,6 +385,7 @@ void igate_init (struct audio_s *p_audio_config, struct igate_config_s *p_igate_ pthread_t cmd_listen_tid; int e; #endif + s_debug = debug_level; #if DEBUGx text_color_set(DW_COLOR_DEBUG); @@ -738,7 +747,6 @@ static void * connnect_thread (void *arg) strlcat (stemp, " filter ", sizeof(stemp)); strlcat (stemp, save_igate_config_p->t2_filter, sizeof(stemp)); } - strlcat (stemp, "\r\n", sizeof(stemp)); send_msg_to_server (stemp); /* Delay until it is ok to start sending packets. */ @@ -766,7 +774,7 @@ static void * connnect_thread (void *arg) char heartbeat[10]; - strlcpy (heartbeat, "#\r\n", sizeof(heartbeat)); + strlcpy (heartbeat, "#", sizeof(heartbeat)); /* This will close the socket if any error. */ send_msg_to_server (heartbeat); @@ -800,13 +808,15 @@ static void * connnect_thread (void *arg) * *--------------------------------------------------------------------*/ +#define IGATE_MAX_MSG 520 /* Message to IGate max 512 characters. */ + void igate_send_rec_packet (int chan, packet_t recv_pp) { packet_t pp; int n; unsigned char *pinfo; char *p; - char msg[520]; /* Message to IGate max 512 characters. */ + char msg[IGATE_MAX_MSG]; int info_len; @@ -826,11 +836,9 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) if (pfilter(chan, MAX_CHANS, save_digi_config_p->filter_str[chan][MAX_CHANS], recv_pp) != 1) { -// TODO1.2: take out debug message. -//#if DEBUG - text_color_set(DW_COLOR_DEBUG); + text_color_set(DW_COLOR_INFO); dw_printf ("Packet from channel %d to IGate was rejected by filter: %s\n", chan, save_digi_config_p->filter_str[chan][MAX_CHANS]); -//#endif + return; } } @@ -862,19 +870,22 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) strcmp(via, "TCPXX") == 0 || strcmp(via, "RFONLY") == 0 || strcmp(via, "NOGATE") == 0) { -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Do not relay with TCPIP etc. in path.\n"); -#endif + + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Do not relay with %s in path.\n", via); + } + ax25_delete (pp); return; } } -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Unwrap third party message.\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Unwrap third party message.\n"); + } + inner_pp = ax25_unwrap_third_party(pp); if (inner_pp == NULL) { ax25_delete (pp); @@ -896,10 +907,12 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) strcmp(via, "TCPXX") == 0 || strcmp(via, "RFONLY") == 0 || strcmp(via, "NOGATE") == 0) { -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Do not relay with TCPIP etc. in path.\n"); -#endif + + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Do not relay with %s in path.\n", via); + } + ax25_delete (pp); return; } @@ -909,10 +922,10 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) * Do not relay generic query. */ if (ax25_get_dti(pp) == '?') { -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Do not relay generic query.\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Do not relay generic query.\n"); + } ax25_delete (pp); return; } @@ -926,18 +939,18 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) (void)(info_len); if ((p = strchr ((char*)pinfo, '\r')) != NULL) { -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Truncated information part at CR.\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Truncated information part at CR.\n"); + } *p = '\0'; } if ((p = strchr ((char*)pinfo, '\n')) != NULL) { -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Truncated information part at LF.\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Truncated information part at LF.\n"); + } *p = '\0'; } @@ -947,10 +960,10 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) */ if (strlen((char*)pinfo) == 0) { -#if DEBUGx - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Information part length is zero.\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Information part length is zero.\n"); + } ax25_delete (pp); return; } @@ -962,10 +975,10 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) */ if ( ! rx_to_ig_allow(pp)) { -#if DEBUG - text_color_set(DW_COLOR_DEBUG); - dw_printf ("Rx IGate: Drop duplicate of same packet seen recently.\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("Rx IGate: Drop duplicate of same packet seen recently.\n"); + } ax25_delete (pp); return; } @@ -980,7 +993,6 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) strlcat (msg, save_audio_config_p->achan[chan].mycall, sizeof(msg)); strlcat (msg, ":", sizeof(msg)); strlcat (msg, (char*)pinfo, sizeof(msg)); - strlcat (msg, "\r\n", sizeof(msg)); send_msg_to_server (msg); stats_rx_igate_packets++; @@ -1006,7 +1018,7 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) * This one function should be used for login, hearbeats, * and packets. * - * Inputs: msg - Message. Should end with CR/LF. + * Inputs: imsg - Message. We will add CR/LF. * * * Description: Send message to IGate Server if connected. @@ -1015,26 +1027,30 @@ void igate_send_rec_packet (int chan, packet_t recv_pp) *--------------------------------------------------------------------*/ -static void send_msg_to_server (char *msg) +static void send_msg_to_server (const char *imsg) { int err; - + char stemp[IGATE_MAX_MSG]; if (igate_sock == -1) { return; /* Silently discard if not connected. */ } - stats_uplink_bytes += strlen(msg); + strlcpy(stemp, imsg, sizeof(stemp)); -#if DEBUG - text_color_set(DW_COLOR_XMIT); - dw_printf ("[ig] "); - ax25_safe_print (msg, strlen(msg), 0); - dw_printf ("\n"); -#endif + if (s_debug >= 1) { + text_color_set(DW_COLOR_XMIT); + dw_printf ("[rx>ig] "); + ax25_safe_print (stemp, strlen(stemp), 0); + dw_printf ("\n"); + } + + strlcat (stemp, "\r\n", sizeof(stemp)); + + stats_uplink_bytes += strlen(stemp); #if __WIN32__ - err = send (igate_sock, msg, strlen(msg), 0); + err = send (igate_sock, stemp, strlen(stemp), 0); if (err == SOCKET_ERROR) { text_color_set(DW_COLOR_ERROR); @@ -1045,7 +1061,7 @@ static void send_msg_to_server (char *msg) WSACleanup(); } #else - err = write (igate_sock, msg, strlen(msg)); + err = write (igate_sock, stemp, strlen(stemp)); if (err <= 0) { text_color_set(DW_COLOR_ERROR); @@ -1169,7 +1185,31 @@ static void * igate_recv_thread (void *arg) /* * We have a complete message terminated by LF. + * + * Remove CR LF from end. + * This is a record separator for the protocol, not part of the data. + * Should probably have an error if we don't have this. */ + if (len >=2 && message[len-1] == '\n') { message[len-1] = '\0'; len--; } + if (len >=1 && message[len-1] == '\r') { message[len-1] = '\0'; len--; } + +/* + * I've seen a case where the original RF packet had a trailing CR but + * after someone else sent it to the server and it came back to me, that + * CR was now a trailing space. + * At first I was tempted to trim a trailing space as well. + * By fixing this one case it might corrupt the data in other cases. + * We compensate for this by ignoring trailing spaces when performing + * the duplicate detection and removal. + */ + +/* + * I've also seen a multiple trailing spaces like this. + * Notice how safe_print shows a trailing space in hexadecimal to make it obvious. + * + * W1CLA-1>APVR30,TCPIP*,qAC,T2TOKYO3:;IRLP-4942*141503z4218.46NI07108.24W0446325-146IDLE <0x20> + */ + if (len == 0) { /* @@ -1184,35 +1224,33 @@ static void * igate_recv_thread (void *arg) * That way we can see login confirmation but not * be bothered by the heart beat messages. */ -#ifndef DEBUG + if ( ! ok_to_send) { -#endif text_color_set(DW_COLOR_REC); dw_printf ("[ig] "); ax25_safe_print ((char *)message, len, 0); dw_printf ("\n"); -#ifndef DEBUG } -#endif } else { /* * Convert to third party packet and transmit. + * + * Future: might have ability to configure multiple transmit + * channels, each with own client side filtering and via path. + * Loop here over all configured channels. */ - text_color_set(DW_COLOR_REC); - dw_printf ("\n[ig] "); + dw_printf ("\n[ig>tx] "); // formerly just [ig] ax25_safe_print ((char *)message, len, 0); dw_printf ("\n"); -/* - * Remove CR LF from end. - */ - if (len >=2 && message[len-1] == '\n') { message[len-1] = '\0'; len--; } - if (len >=1 && message[len-1] == '\r') { message[len-1] = '\0'; len--; } + int to_chan = save_igate_config_p->tx_chan; - xmit_packet ((char*)message); + if (to_chan >= 0) { + xmit_packet ((char*)message, to_chan); + } } } /* while (1) */ @@ -1229,31 +1267,43 @@ static void * igate_recv_thread (void *arg) * packet and send to transmit queue. * * Inputs: message - As sent by the server. + * Any trailing CRLF should have been removed. + * Typical examples: + * + * KA1BTK-5>APDR13,TCPIP*,qAC,T2IRELAND:=4237.62N/07040.68W$/A=-00054 http://aprsdroid.org/ + * N1HKO-10>APJI40,TCPIP*,qAC,N1HKO-JS:APWW10,WIDE1-1,WIDE2-1,qAS,K1RI:/221700h/9AmAT3PQ3S,WIDE1-1,WIDE2-1,qAR,W1TG-1:`c)@qh\>/"50}TinyTrak4 Mobile + * + * Notice how the final address in the header might not + * be a valid AX.25 address. We see a 9 character address + * (with no ssid) and an ssid of two letters. + * We don't care because we end up discarding them before + * repackaging to go over the radio. + * + * The "q construct" ( http://www.aprs-is.net/q.aspx ) provides + * a clue about the journey taken but I don't think we care here. + * + * to_chan - Radio channel for transmitting. * *--------------------------------------------------------------------*/ -static void xmit_packet (char *message) +static void xmit_packet (char *message, int to_chan) { packet_t pp3; char payload[AX25_MAX_PACKET_LEN]; /* what is max len? */ char *pinfo = NULL; int info_len; - int to_chan = save_igate_config_p->tx_chan; /* Should be -1 if not configured for xmit!!! */ - /* Future: Array of boolean to allow multiple xmit channels? */ - -/* - * Is IGate to Radio direction enabled? - */ - if (to_chan == -1) { - return; - } - - stats_tx_igate_packets++; assert (to_chan >= 0 && to_chan < MAX_CHANS); + /* * Try to parse it into a packet object. + * This will contain "q constructs" and we might see an address + * with two alphnumeric characters in the SSID so we must use + * the non-strict parsing. + * * Bug: Up to 8 digipeaters are allowed in radio format. * There is a potential of finding a larger number here. */ @@ -1268,6 +1318,9 @@ static void xmit_packet (char *message) /* * Apply our own packet filtering if configured. + * Do we want to do this before or after removing the VIA path? + * I suppose by doing it first, we have the possibility of + * filtering by stations along the way or the q construct. */ assert (to_chan >= 0 && to_chan < MAX_CHANS); @@ -1276,35 +1329,37 @@ static void xmit_packet (char *message) if (pfilter(MAX_CHANS, to_chan, save_digi_config_p->filter_str[MAX_CHANS][to_chan], pp3) != 1) { -// TODO1.2: take out debug message. One person liked it as a confirmation of what was going on. -// Maybe it should be part of a more comprehensive debug facility? -//#if DEBUG - text_color_set(DW_COLOR_DEBUG); + text_color_set(DW_COLOR_INFO); dw_printf ("Packet from IGate to channel %d was rejected by filter: %s\n", to_chan, save_digi_config_p->filter_str[MAX_CHANS][to_chan]); -//#endif + ax25_delete (pp3); return; } } -/* - * TODO: Discard if qAX in path??? others? - */ /* * Remove the VIA path. + * + * For example, we might get something like this from the server. + * K1USN-1>APWW10,TCPIP*,qAC,N5JXS-F1:T#479,100,048,002,500,000,10000000<0x0d><0x0a> + * + * We want to reduce it to this before wrapping it as third party traffic. + * K1USN-1>APWW10:T#479,100,048,002,500,000,10000000<0x0d><0x0a> */ + while (ax25_get_num_repeaters(pp3) > 0) { ax25_remove_addr (pp3, AX25_REPEATER_1); } + /* * Replace the VIA path with TCPIP and my call. * Mark my call as having been used. */ ax25_set_addr (pp3, AX25_REPEATER_1, "TCPIP"); ax25_set_h (pp3, AX25_REPEATER_1); - ax25_set_addr (pp3, AX25_REPEATER_2, save_audio_config_p->achan[save_igate_config_p->tx_chan].mycall); + ax25_set_addr (pp3, AX25_REPEATER_2, save_audio_config_p->achan[to_chan].mycall); ax25_set_h (pp3, AX25_REPEATER_2); /* @@ -1324,12 +1379,12 @@ static void xmit_packet (char *message) /* * Encapsulate for sending over radio if no reason to drop it. */ - if (ig_to_tx_allow (pp3)) { + if (ig_to_tx_allow (pp3, to_chan)) { char radio [500]; packet_t pradio; snprintf (radio, sizeof(radio), "%s>%s%d%d%s:}%s", - save_audio_config_p->achan[save_igate_config_p->tx_chan].mycall, + save_audio_config_p->achan[to_chan].mycall, APP_TOCALL, MAJOR_VERSION, MINOR_VERSION, save_igate_config_p->tx_via, payload); @@ -1341,16 +1396,18 @@ static void xmit_packet (char *message) if (pradio != NULL) { + stats_tx_igate_packets++; + #if ITEST text_color_set(DW_COLOR_XMIT); dw_printf ("Xmit: %s\n", radio); ax25_delete (pradio); #else /* This consumes packet so don't reference it again! */ - tq_append (save_igate_config_p->tx_chan, TQ_PRIO_1_LO, pradio); + tq_append (to_chan, TQ_PRIO_1_LO, pradio); #endif stats_rf_xmit_packets++; - ig_to_tx_remember (pp3); + ig_to_tx_remember (pp3, save_igate_config_p->tx_chan, 0); // correct. version before encapsulating it. } else { text_color_set(DW_COLOR_ERROR); @@ -1381,7 +1438,8 @@ static void xmit_packet (char *message) * * Name: rx_to_ig_allow * - * Purpose: Check whether this is a duplicate of another sent recently. + * Purpose: Check whether this is a duplicate of another + * recently received from RF and sent to the Server * * Input: pp - Pointer to packet object. * @@ -1427,9 +1485,28 @@ static void rx_to_ig_init (void) static void rx_to_ig_remember (packet_t pp) { + rx2ig_time_stamp[rx2ig_insert_next] = time(NULL); rx2ig_checksum[rx2ig_insert_next] = ax25_dedupe_crc(pp); + if (s_debug >= 3) { + char src[AX25_MAX_ADDR_LEN]; + char dest[AX25_MAX_ADDR_LEN]; + unsigned char *pinfo; + int info_len; + + ax25_get_addr_with_ssid(pp, AX25_SOURCE, src); + ax25_get_addr_with_ssid(pp, AX25_DESTINATION, dest); + info_len = ax25_get_info (pp, &pinfo); + + text_color_set(DW_COLOR_DEBUG); + dw_printf ("rx_to_ig_remember [%d] = %d %d \"%s>%s:%s\"\n", + rx2ig_insert_next, + (int)(rx2ig_time_stamp[rx2ig_insert_next]), + rx2ig_checksum[rx2ig_insert_next], + src, dest, pinfo); + } + rx2ig_insert_next++; if (rx2ig_insert_next >= RX2IG_HISTORY_MAX) { rx2ig_insert_next = 0; @@ -1442,11 +1519,35 @@ static int rx_to_ig_allow (packet_t pp) time_t now = time(NULL); int j; + if (s_debug >= 2) { + char src[AX25_MAX_ADDR_LEN]; + char dest[AX25_MAX_ADDR_LEN]; + unsigned char *pinfo; + int info_len; + + ax25_get_addr_with_ssid(pp, AX25_SOURCE, src); + ax25_get_addr_with_ssid(pp, AX25_DESTINATION, dest); + info_len = ax25_get_info (pp, &pinfo); + + text_color_set(DW_COLOR_DEBUG); + dw_printf ("rx_to_ig_allow? %d \"%s>%s:%s\"\n", crc, src, dest, pinfo); + } + for (j=0; j= now - RX2IG_DEDUPE_TIME && rx2ig_checksum[j] == crc) { + if (rx2ig_checksum[j] == crc && rx2ig_time_stamp[j] >= now - RX2IG_DEDUPE_TIME) { + if (s_debug >= 2) { + text_color_set(DW_COLOR_DEBUG); + // could be multiple entries and this might not be the most recent. + dw_printf ("rx_to_ig_allow? NO. Seen %d seconds ago.\n", (int)(now - rx2ig_time_stamp[j])); + } return 0; } } + + if (s_debug >= 2) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("rx_to_ig_allow? YES\n"); + } return 1; } /* end rx_to_ig_allow */ @@ -1462,6 +1563,12 @@ static int rx_to_ig_allow (packet_t pp) * * Inputs: pp - Pointer to a packet object. * + * chan - Channel number where it is being transmitted. + * Duplicate detection needs to be separate for each radio channel. + * + * bydigi - True if transmitted by digipeater function. False for IGate. + * Why do we care about digpeating here? See discussion below. + * *------------------------------------------------------------------------------ * * Name: ig_to_tx_allow @@ -1470,6 +1577,8 @@ static int rx_to_ig_allow (packet_t pp) * or if we exceed the transmit rate limits. * * Input: pp - Pointer to packet object. + * + * chan - Radio channel number where we want to transmit. * * Returns: True if it is OK to send. * @@ -1488,8 +1597,8 @@ static int rx_to_ig_allow (packet_t pp) * This is the essentially the same as the pair of functions * above with one addition restriction. * - * The typical residential Internet connection is about 10,000 - * times faster than the radio links we are using. It would + * The typical residential Internet connection is around 10,000 + * to 50,000 times faster than the radio links we are using. It would * be easy to completely saturate the radio channel if we are * not careful. * @@ -1497,26 +1606,155 @@ static int rx_to_ig_allow (packet_t pp) * number of packets sent during the past minute and past 5 * minutes and stop sending if a limit is reached. * - * Future? We might also want to avoid transmitting if the same packet - * was heard on the radio recently. If everything is kept in - * the same table, we'd need to distinguish between those from - * the IGate server and those heard on the radio. - * Those heard on the radio would not count toward the - * 1 and 5 minute rate limiting. - * Maybe even provide informative information such as - - * Tx IGate: Same packet heard recently from W1ABC and W9XYZ. + * More Discussion: * - * Of course, the radio encapsulation would need to be removed - * and only the 3rd party packet inside compared. + * Consider the following example. + * I hear a packet from W1TG-1 three times over the radio then get the + * (almost) same thing twice from APRS-IS. * + * + * Digipeater N3LEE-10 audio level = 23(10/6) [NONE] __||||||| + * [0.5] W1TG-1>APU25N,N3LEE-10*,WIDE2-1: + * Station Capabilities, Ambulance, UIview 32 bit apps + * IGATE,MSG_CNT=30,LOC_CNT=61 + * + * [0H] W1TG-1>APU25N,N3LEE-10,WB2OSZ-14*: + * + * Digipeater WIDE2 (probably N3LEE-4) audio level = 22(10/6) [NONE] __||||||| + * [0.5] W1TG-1>APU25N,N3LEE-10,N3LEE-4,WIDE2*: + * Station Capabilities, Ambulance, UIview 32 bit apps + * IGATE,MSG_CNT=30,LOC_CNT=61 + * + * Digipeater WIDE2 (probably AB1OC-10) audio level = 31(14/11) [SINGLE] ____:____ + * [0.4] W1TG-1>APU25N,N3LEE-10,AB1OC-10,WIDE2*: + * Station Capabilities, Ambulance, UIview 32 bit apps + * IGATE,MSG_CNT=30,LOC_CNT=61 + * + * [ig] W1TG-1>APU25N,WIDE2-2,qAR,W1GLO-11:APDW13,WIDE1-1:}W1TG-1>APU25N,TCPIP,WB2OSZ-14*:APU25N,K1FFK,WIDE2*,qAR,WB2ZII-15: + * [0L] WB2OSZ-14>APDW13,WIDE1-1:}W1TG-1>APU25N,TCPIP,WB2OSZ-14*: + * + * + * The first one gets retransmitted by digipeating. + * + * Why are we getting the same thing twice from APRS-IS? Shouldn't remove duplicates? + * Look closely. The original packet, on RF, had a CR character at the end. + * At first I thought duplicate removal was broken but it turns out they + * are not exactly the same. + * + * The receive IGate spec says a packet should be cut at a CR. + * In one case it is removed as expected In another case, it is replaced by a trailing + * space character. Maybe someone thought non printable characters should be + * replaced by spaces??? + * + * At first I was tempted to remove any trailing spaces to make up for the other + * IGate adding it. Two wrongs don't make a right. Trailing spaces are not that + * rare and removing them would corrupt the data. My new strategy is for + * the duplicate detection compare to ignore trailing space, CR, and LF. + * + * We already transmitted the same thing by the digipeater function so this should + * also go into memory for avoiding duplicates out of the transmit IGate. + * + * Future: + * Should the digipeater function avoid transmitting something if it + * was recently transmitted by the IGate funtion? + * This code is pretty much the same as dedupe.c. Maybe it could all + * be combined into one. Need to ponder this some more. + * *--------------------------------------------------------------------*/ +/* +Here is another complete example, with the "-diii" debugging option to show details. + + +We receive the signal directly from the source: (zzz.log 1011) + + N1ZKO-7 audio level = 33(16/10) [NONE] ___|||||| + [0.5] N1ZKO-7>T2TS7X,WIDE1-1,WIDE2-1:`c6wl!i[/>"4]}[scanning]=<0x0d> + MIC-E, Human, Kenwood TH-D72, In Service + N 42 43.7800, W 071 26.9100, 0 MPH, course 177, alt 230 ft + [scanning] + +We did not send it to the IS server recently. + + Rx IGate: Truncated information part at CR. + rx_to_ig_allow? 57185 "N1ZKO-7>T2TS7X:`c6wl!i[/>"4]}[scanning]=" + rx_to_ig_allow? YES + +Send it now and remember that fact. + + [rx>ig] N1ZKO-7>T2TS7X,WIDE1-1,WIDE2-1,qAR,WB2OSZ-14:`c6wl!i[/>"4]}[scanning]= + rx_to_ig_remember [21] = 1447683040 57185 "N1ZKO-7>T2TS7X:`c6wl!i[/>"4]}[scanning]=" + +Digipeat it. Notice how it has a trailing CR. +TODO: Why is the CRC different? Content looks the same. + + ig_to_tx_remember [38] = ch0 d1 1447683040 27598 "N1ZKO-7>T2TS7X:`c6wl!i[/>"4]}[scanning]= " + [0H] N1ZKO-7>T2TS7X,WB2OSZ-14*,WIDE2-1:`c6wl!i[/>"4]}[scanning]=<0x0d> + +Now we hear it again, thru a digipeater. +Not sure who. Was it UNCAN or was it someone else who doesn't use tracing? +See my rant in the User Guide about this. + + Digipeater WIDE2 (probably UNCAN) audio level = 30(15/10) [NONE] __|||::__ + [0.4] N1ZKO-7>T2TS7X,KB1POR-2,UNCAN,WIDE2*:`c6wl!i[/>"4]}[scanning]=<0x0d> + MIC-E, Human, Kenwood TH-D72, In Service + N 42 43.7800, W 071 26.9100, 0 MPH, course 177, alt 230 ft + [scanning] + +Was sent to server recently so don't do it again. + + Rx IGate: Truncated information part at CR. + rx_to_ig_allow? 57185 "N1ZKO-7>T2TS7X:`c6wl!i[/>"4]}[scanning]=" + rx_to_ig_allow? NO. Seen 1 seconds ago. + Rx IGate: Drop duplicate of same packet seen recently. + +We hear it a third time, by a different digipeater. + + Digipeater WIDE1 (probably N3LEE-10) audio level = 23(12/6) [NONE] __||||||| + [0.5] N1ZKO-7>T2TS7X,N3LEE-10,WIDE1*,WIDE2-1:`c6wl!i[/>"4]}[scanning]=<0x0d> + MIC-E, Human, Kenwood TH-D72, In Service + N 42 43.7800, W 071 26.9100, 0 MPH, course 177, alt 230 ft + [scanning] + +It's a duplicate, so don't send to server. + + Rx IGate: Truncated information part at CR. + rx_to_ig_allow? 57185 "N1ZKO-7>T2TS7X:`c6wl!i[/>"4]}[scanning]=" + rx_to_ig_allow? NO. Seen 2 seconds ago. + Rx IGate: Drop duplicate of same packet seen recently. + Digipeater: Drop redundant packet to channel 0. + +The server sends it to us. +NOTICE: The CR at the end has been replaced by a space. + + [ig>tx] N1ZKO-7>T2TS7X,K1FFK,WA2MJM-15*,qAR,WB2ZII-15:`c6wl!i[/>"4]}[scanning]=<0x20> + +Should we transmit it? +No, we sent it recently by the digipeating function (note "bydigi=1"). + + DEBUG: ax25_dedupe_crc ignoring trailing space. + ig_to_tx_allow? ch0 27598 "N1ZKO-7>T2TS7X:`c6wl!i[/>"4]}[scanning]= " + ig_to_tx_allow? NO. Sent 4 seconds ago. bydigi=1 + Tx IGate: Drop duplicate packet transmitted recently. + [0L] WB2OSZ-14>APDW13,WIDE1-1:}W1AST>TRPR4T,TCPIP,WB2OSZ-14*:`d=Ml!3>/"4N} + [rx>ig] # +*/ + + #define IG2TX_DEDUPE_TIME 60 /* Do not send duplicate within 60 seconds. */ #define IG2TX_HISTORY_MAX 50 /* Remember the last 50 sent from server to radio. */ +/* Ideally this should be a critical region because */ +/* it is being written by two threads but I'm not that concerned. */ + static int ig2tx_insert_next; static time_t ig2tx_time_stamp[IG2TX_HISTORY_MAX]; static unsigned short ig2tx_checksum[IG2TX_HISTORY_MAX]; +static unsigned char ig2tx_chan[IG2TX_HISTORY_MAX]; +static unsigned short ig2tx_bydigi[IG2TX_HISTORY_MAX]; static void ig_to_tx_init (void) { @@ -1524,15 +1762,40 @@ static void ig_to_tx_init (void) for (n=0; n= 3) { + char src[AX25_MAX_ADDR_LEN]; + char dest[AX25_MAX_ADDR_LEN]; + unsigned char *pinfo; + int info_len; + + ax25_get_addr_with_ssid(pp, AX25_SOURCE, src); + ax25_get_addr_with_ssid(pp, AX25_DESTINATION, dest); + info_len = ax25_get_info (pp, &pinfo); + + text_color_set(DW_COLOR_DEBUG); + dw_printf ("ig_to_tx_remember [%d] = ch%d d%d %d %d \"%s>%s:%s\"\n", + ig2tx_insert_next, + chan, bydigi, + (int)(now), crc, + src, dest, pinfo); + } + + ig2tx_time_stamp[ig2tx_insert_next] = now; + ig2tx_checksum[ig2tx_insert_next] = crc; + ig2tx_chan[ig2tx_insert_next] = chan; + ig2tx_bydigi[ig2tx_insert_next] = bydigi; ig2tx_insert_next++; if (ig2tx_insert_next >= IG2TX_HISTORY_MAX) { @@ -1540,25 +1803,51 @@ static void ig_to_tx_remember (packet_t pp) } } -static int ig_to_tx_allow (packet_t pp) +static int ig_to_tx_allow (packet_t pp, int chan) { unsigned short crc = ax25_dedupe_crc(pp); time_t now = time(NULL); int j; int count_1, count_5; + if (s_debug >= 2) { + char src[AX25_MAX_ADDR_LEN]; + char dest[AX25_MAX_ADDR_LEN]; + unsigned char *pinfo; + int info_len; + + ax25_get_addr_with_ssid(pp, AX25_SOURCE, src); + ax25_get_addr_with_ssid(pp, AX25_DESTINATION, dest); + info_len = ax25_get_info (pp, &pinfo); + + text_color_set(DW_COLOR_DEBUG); + dw_printf ("ig_to_tx_allow? ch%d %d \"%s>%s:%s\"\n", chan, crc, src, dest, pinfo); + } + + /* Consider transmissions on this channel only by either digi or IGate. */ + for (j=0; j= now - IG2TX_DEDUPE_TIME && ig2tx_checksum[j] == crc) { + if (ig2tx_checksum[j] == crc && ig2tx_chan[j] == chan && ig2tx_time_stamp[j] >= now - IG2TX_DEDUPE_TIME) { + if (s_debug >= 2) { + text_color_set(DW_COLOR_DEBUG); + // could be multiple entries and this might not be the most recent. + dw_printf ("ig_to_tx_allow? NO. Sent %d seconds ago. bydigi=%d\n", (int)(now - ig2tx_time_stamp[j]), ig2tx_bydigi[j]); + } text_color_set(DW_COLOR_INFO); dw_printf ("Tx IGate: Drop duplicate packet transmitted recently.\n"); return 0; } } + + /* IGate transmit counts must not include digipeater transmissions. */ + count_1 = 0; count_5 = 0; for (j=0; j= now - 60) count_1++; - if (ig2tx_time_stamp[j] >= now - 300) count_5++; + if (ig2tx_chan[j] == chan && ig2tx_bydigi[j] == 0) { + if (ig2tx_time_stamp[j] >= now - 60) count_1++; + if (ig2tx_time_stamp[j] >= now - 300) count_5++; + } } if (count_1 >= save_igate_config_p->tx_limit_1) { @@ -1572,6 +1861,11 @@ static int ig_to_tx_allow (packet_t pp) return 0; } + if (s_debug >= 2) { + text_color_set(DW_COLOR_DEBUG); + dw_printf ("ig_to_tx_allow? YES\n"); + } + return 1; } /* end ig_to_tx_allow */ diff --git a/igate.h b/igate.h index 58f2649..1736d04 100644 --- a/igate.h +++ b/igate.h @@ -55,13 +55,24 @@ struct igate_config_s { int tx_limit_5; /* Max. packets to transmit in 5 minutes. */ }; + +#define IGATE_TX_LIMIT_1_DEFAULT 6 +#define IGATE_TX_LIMIT_1_MAX 20 + +#define IGATE_TX_LIMIT_5_DEFAULT 20 +#define IGATE_TX_LIMIT_5_MAX 80 + + /* Call this once at startup */ -void igate_init (struct audio_s *p_audio_config, struct igate_config_s *p_igate_config, struct digi_config_s *p_digi_config); +void igate_init (struct audio_s *p_audio_config, struct igate_config_s *p_igate_config, struct digi_config_s *p_digi_config, int debug_level); /* Call this with each packet received from the radio. */ void igate_send_rec_packet (int chan, packet_t recv_pp); +/* This when digipeater transmits. Set bydigi to 1 . */ + +void ig_to_tx_remember (packet_t pp, int chan, int bydigi); #endif diff --git a/man1/direwolf.1 b/man1/direwolf.1 index b78f70a..8f9acc7 100644 --- a/man1/direwolf.1 +++ b/man1/direwolf.1 @@ -82,6 +82,8 @@ g = GPS interface. t = Tracker beacon. .P o = Output controls such as PTT and DCD. +.P +i = IGate .RE .RE .PD diff --git a/xmit.c b/xmit.c index bfacfcb..21d4b67 100644 --- a/xmit.c +++ b/xmit.c @@ -289,7 +289,6 @@ void xmit_init (struct audio_s *p_modem, int debug_xmit_packet) - /*------------------------------------------------------------------- * * Name: xmit_set_txdelay @@ -606,6 +605,7 @@ static void xmit_ax25_frames (int c, int p, packet_t pp) dw_printf ("%s", stemp); /* stations followed by : */ ax25_safe_print ((char *)pinfo, info_len, ! ax25_is_aprs(pp)); dw_printf ("\n"); + (void)ax25_check_addresses (pp); /* Optional hex dump of packet. */ @@ -669,6 +669,7 @@ static void xmit_ax25_frames (int c, int p, packet_t pp) dw_printf ("%s", stemp); /* stations followed by : */ ax25_safe_print ((char *)pinfo, info_len, ! ax25_is_aprs(pp)); dw_printf ("\n"); + (void)ax25_check_addresses (pp); if (g_debug_xmit_packet) { text_color_set(DW_COLOR_DEBUG);