From feff689e332bea956b63837dc0c6d93d6cdba3b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Ryb=C3=A1rsky?= Date: Wed, 12 Nov 2025 22:28:21 +0100 Subject: [PATCH] Test adding new mods --- Makefile | 4 +--- app/fskmodem.c | 8 ++++++-- driver/bk4819.c | 4 +++- driver/bk4819.h | 3 ++- radio.c | 51 ++++++++++++++++++++++++++++++++++++++++++++----- radio.h | 13 +++++++++++-- settings.c | 2 -- ui/main.c | 2 +- ui/menu.c | 3 ++- ui/menu.h | 2 +- 10 files changed, 73 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index ebf8c08..15b5093 100644 --- a/Makefile +++ b/Makefile @@ -394,9 +394,7 @@ endif ifeq ($(ENABLE_REDUCE_LOW_MID_TX_POWER),1) CFLAGS += -DENABLE_REDUCE_LOW_MID_TX_POWER endif -ifeq ($(ENABLE_BYP_RAW_DEMODULATORS),1) - CFLAGS += -DENABLE_BYP_RAW_DEMODULATORS -endif + ifeq ($(ENABLE_BLMIN_TMP_OFF),1) CFLAGS += -DENABLE_BLMIN_TMP_OFF endif diff --git a/app/fskmodem.c b/app/fskmodem.c index 6e2e7b7..262d900 100644 --- a/app/fskmodem.c +++ b/app/fskmodem.c @@ -223,9 +223,10 @@ void MSG_ConfigureFSK(bool rx) { (1U << 15) | (1U << 14) | (1U << 8)); } else { - BK4819_WriteRegister(BK4819_REG_2B, (1u << 2) | (1u << 0)); + //BK4819_WriteRegister(BK4819_REG_2B, (1u << 2) | (1u << 0)); } + // set the FM deviation level const uint16_t dev_val = BK4819_ReadRegister(BK4819_REG_40); @@ -257,7 +258,10 @@ void MSG_ConfigureFSK(bool rx) { deviation = 750; // safe fallback break; } - BK4819_WriteRegister(BK4819_REG_40, (dev_val & 0xf000) | (deviation & 0x0fff)); + if (gCurrentVfo->CHANNEL_BANDWIDTH == BK4819_FILTER_BW_FSK_OFFLOAD) { + BK4819_WriteRegister(BK4819_REG_40, (dev_val & 0xf000) | (deviation & 0x0fff)); + } + // restore FM deviation level //BK4819_WriteRegister(BK4819_REG_40, dev_val); diff --git a/driver/bk4819.c b/driver/bk4819.c index 275e792..b5ce6c6 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -676,7 +676,9 @@ void BK4819_SetFilterBandwidth(const BK4819_FilterBandwidth_t Bandwidth, const b */ } - BK4819_WriteRegister(BK4819_REG_43, val); + if (Bandwidth != BK4819_FILTER_BW_FSK_OFFLOAD) { + BK4819_WriteRegister(BK4819_REG_43, val); + } } void BK4819_SetupPowerAmplifier(const uint8_t bias, const uint32_t frequency) diff --git a/driver/bk4819.h b/driver/bk4819.h index 65121b1..9a4f7a3 100644 --- a/driver/bk4819.h +++ b/driver/bk4819.h @@ -48,7 +48,8 @@ enum BK4819_FilterBandwidth_t { BK4819_FILTER_BW_WIDE = 0, BK4819_FILTER_BW_NARROW, - BK4819_FILTER_BW_NARROWER + BK4819_FILTER_BW_NARROWER, + BK4819_FILTER_BW_FSK_OFFLOAD }; typedef enum BK4819_FilterBandwidth_t BK4819_FilterBandwidth_t; diff --git a/radio.c b/radio.c index 805ef02..51d1ee0 100644 --- a/radio.c +++ b/radio.c @@ -50,10 +50,19 @@ const char gModulationStr[MODULATION_UKNOWN][4] = { [MODULATION_AM]="AM", [MODULATION_USB]="USB", -#ifdef ENABLE_BYP_RAW_DEMODULATORS [MODULATION_BYP]="BYP", - [MODULATION_RAW]="RAW" -#endif + [MODULATION_RAW]="RAW", + + [MODULATION_ALAM]="ALM", + [MODULATION_BEEP]="BEE", + [MODULATION_CTCO]="CTC", + [MODULATION_FSK]="FSA", + [MODULATION_UNK4]="UN4", + [MODULATION_UNK5]="UN5", + [MODULATION_UNK6]="UN6", + [MODULATION_UNK7]="UN7", + [MODULATION_UNK8]="UN8", + [MODULATION_UNK9]="UN9", }; bool RADIO_CheckValidChannel(uint16_t channel, bool checkScanList, uint8_t scanList) { @@ -799,6 +808,7 @@ void RADIO_SetTxParameters(void) { case BK4819_FILTER_BW_WIDE: case BK4819_FILTER_BW_NARROW: case BK4819_FILTER_BW_NARROWER: + case BK4819_FILTER_BW_FSK_OFFLOAD: #ifdef ENABLE_AM_FIX // BK4819_SetFilterBandwidth(Bandwidth, gCurrentVfo->Modulation == MODULATION_AM && gSetting_AM_fix); BK4819_SetFilterBandwidth(Bandwidth, true); @@ -859,14 +869,45 @@ void RADIO_SetModulation(ModulationMode_t modulation) { mod = BK4819_AF_BASEBAND2; break; -#ifdef ENABLE_BYP_RAW_DEMODULATORS case MODULATION_BYP: mod = BK4819_AF_UNKNOWN3; break; case MODULATION_RAW: mod = BK4819_AF_BASEBAND1; break; -#endif + + case MODULATION_ALAM: + mod = BK4819_AF_ALAM; + break; + case MODULATION_BEEP: + mod = BK4819_AF_BEEP; + break; + case MODULATION_CTCO: + mod = BK4819_AF_CTCO; + break; + case MODULATION_FSK: + mod = BK4819_AF_FSKO; + break; + case MODULATION_UNK4: + mod = BK4819_AF_UNKNOWN4; + break; + case MODULATION_UNK5: + mod = BK4819_AF_UNKNOWN5; + break; + case MODULATION_UNK6: + mod = BK4819_AF_UNKNOWN6; + break; + case MODULATION_UNK7: + mod = BK4819_AF_UNKNOWN7; + break; + case MODULATION_UNK8: + mod = BK4819_AF_UNKNOWN8; + break; + case MODULATION_UNK9: + mod = BK4819_AF_UNKNOWN9; + break; + + } BK4819_SetAF(mod); diff --git a/radio.h b/radio.h index 29a12cf..5cc33dc 100644 --- a/radio.h +++ b/radio.h @@ -59,10 +59,19 @@ typedef enum { MODULATION_AM, MODULATION_USB, -#ifdef ENABLE_BYP_RAW_DEMODULATORS MODULATION_BYP, MODULATION_RAW, -#endif + + MODULATION_ALAM, + MODULATION_BEEP, + MODULATION_CTCO, + MODULATION_FSK, + MODULATION_UNK4, + MODULATION_UNK5, + MODULATION_UNK6, + MODULATION_UNK7, + MODULATION_UNK8, + MODULATION_UNK9, MODULATION_UKNOWN } ModulationMode_t; diff --git a/settings.c b/settings.c index 1790b03..9ff464e 100644 --- a/settings.c +++ b/settings.c @@ -876,9 +876,7 @@ void SETTINGS_WriteBuildOptions(void) { #ifdef ENABLE_WIDE_RX | (1 << 1) #endif - #ifdef ENABLE_BYP_RAW_DEMODULATORS | (1 << 2) - #endif #ifdef ENABLE_BLMIN_TMP_OFF | (1 << 3) #endif diff --git a/ui/main.c b/ui/main.c index df6f163..29db0ed 100644 --- a/ui/main.c +++ b/ui/main.c @@ -987,7 +987,7 @@ void UI_DisplayMain(void) { #if ENABLE_FEAT_F4HWN - const char *bandWidthNames[] = {"WID", "NAR", "NR+"}; + const char *bandWidthNames[] = {"WID", "NAR", "NR+", "FSK"}; UI_PrintStringSmallNormal(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH], LCD_WIDTH + 30, 0, line); diff --git a/ui/menu.c b/ui/menu.c index 39660c1..092373a 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -168,7 +168,8 @@ const char gSubMenu_W_N[][5] = { "WIDE", "NARR", - "NAR+" + "NAR+", + "FSKQ" }; const char gSubMenu_OFF_ON[][4] = diff --git a/ui/menu.h b/ui/menu.h index 84c4c8e..8a79f82 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -126,7 +126,7 @@ extern const t_menu_item MenuList[]; extern const char gSubMenu_TXP[7][5]; extern const char gSubMenu_SFT_D[3][4]; -extern const char gSubMenu_W_N[3][5]; +extern const char gSubMenu_W_N[4][5]; extern const char gSubMenu_OFF_ON[2][4]; extern const char gSubMenu_NA[4]; extern const char *const gSubMenu_RXMode[4];