From 54ca645c2031b68b777f0dea775d69a16099a7af Mon Sep 17 00:00:00 2001 From: Nunu Date: Sat, 3 Feb 2024 12:12:10 +0100 Subject: [PATCH] messenger rx, enc, ack menu options --- app/menu.c | 37 +++++++++++++++++++++++++++++++++++++ app/messenger.h | 29 +++++++++++++++++++++++++++++ board.c | 3 +++ docs/UV K5 EEPROM.xlsx | Bin 68493 -> 68549 bytes settings.c | 3 +++ settings.h | 6 ++++++ ui/menu.c | 21 ++++++++++++++++++++- ui/menu.h | 5 +++++ 8 files changed, 103 insertions(+), 1 deletion(-) diff --git a/app/menu.c b/app/menu.c index 7355c51..dab4758 100644 --- a/app/menu.c +++ b/app/menu.c @@ -245,6 +245,13 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax) case MENU_500TX: case MENU_350EN: case MENU_SCREN: +#ifdef ENABLE_ENCRYPTION + case MENU_MSG_ENC: +#endif +#ifdef ENABLE_MESSENGER + case MENU_MSG_RX: + case MENU_MSG_ACK: +#endif *pMin = 0; *pMax = ARRAY_SIZE(gSubMenu_OFF_ON) - 1; break; @@ -487,6 +494,20 @@ void MENU_AcceptSetting(void) memset(edit, 0, sizeof(edit)); gUpdateStatus = true; break; + + case MENU_MSG_ENC: + gEeprom.MESSENGER_CONFIG.data.encrypt = gSubMenuSelection; + break; + #endif + + #ifdef ENABLE_MESSENGER + case MENU_MSG_RX: + gEeprom.MESSENGER_CONFIG.data.receive = gSubMenuSelection; + break; + + case MENU_MSG_ACK: + gEeprom.MESSENGER_CONFIG.data.ack = gSubMenuSelection; + break; #endif case MENU_W_N: @@ -916,6 +937,22 @@ void MENU_ShowCurrentSetting(void) gSubMenuSelection = gEeprom.RX_OFFSET; break; + #ifdef ENABLE_ENCRYPTION + case MENU_MSG_ENC: + gSubMenuSelection = gEeprom.MESSENGER_CONFIG.data.encrypt; + break; + #endif + + #ifdef ENABLE_MESSENGER + case MENU_MSG_RX: + gSubMenuSelection = gEeprom.MESSENGER_CONFIG.data.receive; + break; + + case MENU_MSG_ACK: + gSubMenuSelection = gEeprom.MESSENGER_CONFIG.data.ack; + break; + #endif + #ifdef ENABLE_PWRON_PASSWORD case MENU_PASSWORD: gSubMenuSelection = gEeprom.POWER_ON_PASSWORD; diff --git a/app/messenger.h b/app/messenger.h index 1413481..6855c75 100644 --- a/app/messenger.h +++ b/app/messenger.h @@ -40,6 +40,22 @@ typedef enum PacketType { INVALID_PACKET } PacketType; +// Modem Modulation // 2024 kamilsss655 +typedef enum ModemModulation { + MOD_FSK, + MOD_AFSK, + MOD_NOAA_SAME +} ModemModulation; + +// Modem Baud Rate // 2024 kamilsss655 +// lower baud provides better reliability in bad conditions +typedef enum ModemBaudRate { + MOD_BAUD_1200, + MOD_BAUD_300, + MOD_BAUD_200, + MOD_BAUD_100 +} ModemBaudRate; + // Data Packet definition // 2024 kamilsss655 union DataPacket { @@ -53,6 +69,19 @@ union DataPacket uint8_t serializedArray[1+PAYLOAD_LENGTH+NONCE_LENGTH]; }; +// MessengerConfig // 2024 kamilsss655 +typedef union { + struct { + uint8_t + receive :1, // determines whether fsk modem will listen for new messages + ack :1, // determines whether the radio will automatically respond to messages with ACK + encrypt :1, // determines whether outgoing messages will be encrypted + unused :1, + modulation :2, // determines FSK modulation type + baud :2; // determines FSK baud rate + } data; + uint8_t __val; +} MessengerConfig; void MSG_EnableRX(const bool enable); void MSG_StorePacket(const uint16_t interrupt_bits); diff --git a/board.c b/board.c index 1037dfa..c98906e 100644 --- a/board.c +++ b/board.c @@ -593,6 +593,9 @@ void BOARD_EEPROM_Init(void) #ifdef ENABLE_PWRON_PASSWORD gEeprom.PASSWORD_WRONG_ATTEMPTS = (Data[2] > PASSWORD_MAX_RETRIES) ? PASSWORD_MAX_RETRIES : Data[2]; #endif + #ifdef ENABLE_MESSENGER + gEeprom.MESSENGER_CONFIG.__val = Data[3]; + #endif // 0EA8..0EAF EEPROM_ReadBuffer(0x0EA8, Data, 8); diff --git a/docs/UV K5 EEPROM.xlsx b/docs/UV K5 EEPROM.xlsx index 6d6b5dac22a2fb9aaf31857c64a951e2919618b7..c9aafa02cbb2638ae13374218116e3e027528127 100644 GIT binary patch literal 68549 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

p1YLhmjokOnP2T| z3|MejE&T^olqek@MGT~DlV!hj$72t zTh#r&%X^E8D=Lh;c-K4lj0gfoma{lIYb`3GX5LHIq$Q5sSx(RQ%PvJ{IioJtTzbjU zRp>_OKm}yZ$2V~vs_NUF`;Rx{!cNC4lr68OG(*N7^M1umKNXDZPR?^ZPx`yKs}b&6 z$jisB7fG#*=Qxq?FT~$J8?++2q}r{9X)CvpM4=`UB^B-=GI3+q4RI-+L=Tp?=8!nZ zU@1?O&XEg^?~>>tVr;NjdJYZoTPYl(M2rzVzi;7=lCct49HjIugCOVgyIJ^I(l!R0 z9wOoS>9;Wcaz{ydE+Im3QMybM>f~3;vutG)9d4~xGStmT-~xMGBAEBJ35PEII)qqx zQC#Z|1Ij6EN+}a?)qjtLAAbMtpYZtI=Kg#4 z{Il?di0C#sD41e`Kul06{1dne3Lo$Z*t7G%U_~+QqQF8>#0U_qt5WooMo-aRnw480 zlzzJtbJ<$jfP^p9036Cc*T(jeuxtDNojcb1?DzD-4N8fJL+&eQ(ANk+$(PC%Ajaq+ z5IgW5Yxm>54_J8M_wO96BfGs)J`;mtr$7~7s1#4oS1P{U+k3FmZ(bro6F{jB@Hbhd zG|ND#w1@8jAN=0IDtK#sLu&_Ux_IS5~z0gIl03wmoAJw}mvJopU-zzN0z8W8^jw2^bk diff --git a/settings.c b/settings.c index 6ffca73..1e613d8 100644 --- a/settings.c +++ b/settings.c @@ -112,6 +112,9 @@ void SETTINGS_SaveSettings(void) #endif State[1] = gEeprom.RX_AGC; State[2] = gEeprom.PASSWORD_WRONG_ATTEMPTS; + #ifdef ENABLE_MESSENGER + State[3] = gEeprom.MESSENGER_CONFIG.__val; + #endif EEPROM_WriteBuffer(0x0EA0, State, true); memset(State, 0xFF, sizeof(State)); diff --git a/settings.h b/settings.h index eb605f3..3df9354 100644 --- a/settings.h +++ b/settings.h @@ -24,6 +24,9 @@ #include #include "radio.h" #include +#ifdef ENABLE_MESSENGER + #include "app/messenger.h" +#endif enum POWER_OnDisplayMode_t { POWER_ON_DISPLAY_MODE_FULL_SCREEN = 0, @@ -242,6 +245,9 @@ typedef struct { #endif #ifdef ENABLE_ENCRYPTION char ENC_KEY[16]; +#endif +#ifdef ENABLE_MESSENGER + MessengerConfig MESSENGER_CONFIG; #endif uint16_t VOX1_THRESHOLD; uint16_t VOX0_THRESHOLD; diff --git a/ui/menu.c b/ui/menu.c index c18f1a0..cae3f24 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -115,7 +115,12 @@ const t_menu_item MenuList[] = {"Passwd", VOICE_ID_INVALID, MENU_PASSWORD }, // power on password #endif #ifdef ENABLE_ENCRYPTION - {"EncKey", VOICE_ID_INVALID, MENU_ENC_KEY }, // encryption key + {"EncKey", VOICE_ID_INVALID, MENU_ENC_KEY }, // encryption key + {"MsgEnc", VOICE_ID_INVALID, MENU_MSG_ENC }, // messenger encrypt outgoing messages +#endif +#ifdef ENABLE_MESSENGER + {"MsgRx", VOICE_ID_INVALID, MENU_MSG_RX }, // messenger rx + {"MsgAck", VOICE_ID_INVALID, MENU_MSG_ACK }, // messenger respond ACK #endif {"Sql", VOICE_ID_SQUELCH, MENU_SQL }, // hidden menu items from here on @@ -753,6 +758,20 @@ void UI_DisplayMenu(void) already_printed = true; break; } + + case MENU_MSG_ENC: + strcpy(String, gSubMenu_OFF_ON[gSubMenuSelection]); + break; + #endif + + #ifdef ENABLE_MESSENGER + case MENU_MSG_RX: + strcpy(String, gSubMenu_OFF_ON[gSubMenuSelection]); + break; + + case MENU_MSG_ACK: + strcpy(String, gSubMenu_OFF_ON[gSubMenuSelection]); + break; #endif case MENU_SAVE: diff --git a/ui/menu.h b/ui/menu.h index a4df3d6..cb79bea 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -64,6 +64,11 @@ enum #endif #ifdef ENABLE_ENCRYPTION MENU_ENC_KEY, + MENU_MSG_ENC, +#endif +#ifdef ENABLE_MESSENGER + MENU_MSG_RX, + MENU_MSG_ACK, #endif MENU_BEEP, #ifdef ENABLE_VOICE