From 349a06aecf51d319158aa4b4cae4833ea528a0ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nidecki?= Date: Thu, 18 Feb 2021 19:37:53 +0100 Subject: [PATCH] Bugfix: do not decode C bit in SSID src/dst in ax.25 fields as has been digipited --- lib/KISS_TO_TNC2/KISS_TO_TNC2.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/KISS_TO_TNC2/KISS_TO_TNC2.cpp b/lib/KISS_TO_TNC2/KISS_TO_TNC2.cpp index 1b915f1..82e8c65 100644 --- a/lib/KISS_TO_TNC2/KISS_TO_TNC2.cpp +++ b/lib/KISS_TO_TNC2/KISS_TO_TNC2.cpp @@ -3,7 +3,7 @@ bool validateTNC2Frame(const String &tnc2FormattedFrame); String encode_address_ax25(String tnc2Address); -String decode_address_ax25(const String& ax25Address, bool &isLast); +String decode_address_ax25(const String &ax25Address, bool &isLast, bool isRelay); bool validateKISSFrame(const String &kissFormattedFrame); @@ -113,12 +113,12 @@ String decode_kiss(const String& kissFormattedFrame) { if (validateKISSFrame(kissFormattedFrame)){ String ax25Frame = decapsulateKISS(kissFormattedFrame); bool isLast = false; - String dst_addr = decode_address_ax25(ax25Frame.substring(0, 7), isLast); - String src_addr = decode_address_ax25(ax25Frame.substring(7, 14), isLast); + String dst_addr = decode_address_ax25(ax25Frame.substring(0, 7), isLast, false); + String src_addr = decode_address_ax25(ax25Frame.substring(7, 14), isLast, false); TNC2Frame = src_addr + ">" + dst_addr; int digi_info_index = 14; while (!isLast && digi_info_index + 7 < ax25Frame.length()){ - String digi_addr = decode_address_ax25(ax25Frame.substring(digi_info_index, digi_info_index+7), isLast); + String digi_addr = decode_address_ax25(ax25Frame.substring(digi_info_index, digi_info_index + 7), isLast, true); TNC2Frame += ',' + digi_addr; digi_info_index += 7; } @@ -162,7 +162,7 @@ String encode_address_ax25(String tnc2Address) { * @param ax25Address * @return */ -String decode_address_ax25(const String& ax25Address, bool &isLast) { +String decode_address_ax25(const String &ax25Address, bool &isLast, bool isRelay) { String TNCAddress = ""; for (int i = 0; i < 6; ++i) { uint8_t currentCharacter = ax25Address.charAt(i); @@ -181,7 +181,7 @@ String decode_address_ax25(const String& ax25Address, bool &isLast) { TNCAddress += '-'; TNCAddress += ssid; } - if (hasBeenDigipited){ + if (isRelay && hasBeenDigipited){ TNCAddress += '*'; } return TNCAddress;