diff --git a/CHANGELOG.md b/CHANGELOG.md index 4987187..1b9f3e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +# 1.2.6 (2023-08-29) +## New features +* Added ```nonaprs [on/off]``` command that enables reception of non-APRS frames, e.g. for full Packet Radio use +## Bug fixes +* Beacons not being send fixed +## Other +* none +## Known bugs +* none +# 1.2.5 (2022-11-05) +## New features +* Added ```dest
``` command that enables setting own destination address +## Bug fixes +* none +## Other +* PWM defaulting to 50% +## Known bugs +* none # 1.2.4 (2022-08-30) ## New features * Added ```monkiss [on/off]``` command that enables sending own and digipeated frames to KISS ports diff --git a/Inc/ax25.h b/Inc/ax25.h index b87741b..62cb223 100644 --- a/Inc/ax25.h +++ b/Inc/ax25.h @@ -38,6 +38,7 @@ typedef struct uint16_t txDelayLength; //TXDelay length in ms uint16_t txTailLength; //TXTail length in ms uint16_t quietTime; //Quiet time in ms + uint8_t allowNonAprs; //allow non-APRS packets } Ax25_config; diff --git a/Inc/config.h b/Inc/config.h index a8b3cf5..2c1a4a7 100644 --- a/Inc/config.h +++ b/Inc/config.h @@ -87,7 +87,8 @@ along with VP-Digi. If not, see . #define CONFIG_PWM_FLAT 1206 #define CONFIG_KISSMONITOR 1208 #define CONFIG_DEST 1210 -#define CONFIG_XXX 1216 //next address (not used) +#define CONFIG_ALLOWNONAPRS 1216 +#define CONFIG_XXX 1218 //next address (not used) /** * @brief Store configuration from RAM to Flash diff --git a/Src/ax25.c b/Src/ax25.c index d08bc75..de8666a 100644 --- a/Src/ax25.c +++ b/Src/ax25.c @@ -140,10 +140,9 @@ void Ax25_bitParse(uint8_t bit, uint8_t modemNo) break; } - //check if this frame has control=0x03 and PID=0xF0 - //if not, it's not a correct APRS frame, even if it has correct CRC + //if non-APRS frames are not allowed, check if this frame has control=0x03 and PID=0xF0 - if(!((rx->frame[i + 1] == 0x03) && (rx->frame[i + 2] == 0xf0))) + if(!ax25Cfg.allowNonAprs && ((rx->frame[i + 1] != 0x03) || (rx->frame[i + 2] != 0xf0))) { rx->recByte = 0; rx->rBitIdx = 0; diff --git a/Src/common.c b/Src/common.c index 7b1f44f..cd12458 100644 --- a/Src/common.c +++ b/Src/common.c @@ -27,7 +27,7 @@ uint8_t callSsid = 0; uint8_t dest[7] = {130, 160, 156, 172, 96, 98, 96}; //destination address: APNV01-0 by default. SSID MUST remain 0. -const uint8_t *versionString = (const uint8_t*)"VP-Digi v. 1.2.5\r\nThe open-source standalone APRS digipeater controller and KISS TNC\r\n"; +const uint8_t *versionString = (const uint8_t*)"VP-Digi v. 1.2.6\r\nThe open-source standalone APRS digipeater controller and KISS TNC\r\n"; uint8_t autoReset = 0; uint32_t autoResetTimer = 0; diff --git a/Src/config.c b/Src/config.c index 8f13393..7369740 100644 --- a/Src/config.c +++ b/Src/config.c @@ -191,6 +191,7 @@ void Config_write(void) flash_write(CONFIG_AUTORST, autoReset); flash_write(CONFIG_PWM_FLAT, afskCfg.usePWM | (afskCfg.flatAudioIn << 1)); flash_write(CONFIG_KISSMONITOR, kissMonitor); + flash_write(CONFIG_ALLOWNONAPRS, ax25Cfg.allowNonAprs); flash_write(CONFIG_FLAG, FLAG_CONFIG_WRITTEN); @@ -281,6 +282,7 @@ uint8_t Config_read(void) afskCfg.usePWM = t & 1; afskCfg.flatAudioIn = (t & 2) > 0; kissMonitor = (flash_read(CONFIG_KISSMONITOR) == 1); + ax25Cfg.allowNonAprs = (flash_read(CONFIG_ALLOWNONAPRS) == 1); return 1; } diff --git a/Src/terminal.c b/Src/terminal.c index 1d9268b..361bd1e 100644 --- a/Src/terminal.c +++ b/Src/terminal.c @@ -515,6 +515,8 @@ void term_parse(uint8_t *cmd, uint16_t len, Terminal_stream src, Uart_data_type term_sendBuf(src); term_sendString((uint8_t*)"monkiss [on/off] - send own and digipeated frames to KISS ports\r\n", 0); term_sendBuf(src); + term_sendString((uint8_t*)"nonaprs [on/off] - enable reception of non-APRS frames\r\n", 0); + term_sendBuf(src); return; } if(checkcmd(cmd, 7, (uint8_t*)"version")) @@ -723,6 +725,11 @@ void term_parse(uint8_t *cmd, uint16_t len, Terminal_stream src, Uart_data_type term_sendString((uint8_t*)"On\r\n", 0); else term_sendString((uint8_t*)"Off\r\n", 0); + term_sendString((uint8_t*)"Allow non-APRS frames: ", 0); + if(ax25Cfg.allowNonAprs == 1) + term_sendString((uint8_t*)"On\r\n", 0); + else + term_sendString((uint8_t*)"Off\r\n", 0); term_sendBuf(src); return; } @@ -1798,7 +1805,27 @@ void term_parse(uint8_t *cmd, uint16_t len, Terminal_stream src, Uart_data_type term_sendBuf(src); return; } + if(checkcmd(cmd, 8, (uint8_t*)"nonaprs ")) + { + uint8_t err = 0; + if(checkcmd(&cmd[8], 2, (uint8_t*)"on")) + ax25Cfg.allowNonAprs = 1; + else if(checkcmd(&cmd[8], 3, (uint8_t*)"off")) + ax25Cfg.allowNonAprs = 0; + else + err = 1; + if(err) + { + term_sendString((uint8_t*)"Incorrect command!\r\n", 0); + } + else + { + term_sendString((uint8_t*)"OK\r\n", 0); + } + term_sendBuf(src); + return; + } term_sendString((uint8_t*)"Unknown command. For command list type \"help\"\r\n", 0); term_sendBuf(src);