diff --git a/Makefile b/Makefile index fea9d9d..9ccede1 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,7 @@ ENABLE_BYP_RAW_DEMODULATORS ?= 0 ENABLE_BLMIN_TMP_OFF ?= 0 ENABLE_SCAN_RANGES ?= 1 ENABLE_FEAT_F4HWN ?= 1 +ENABLE_FEAT_F4HWN_FIXED_PWR ?= 0 # ---- DEBUGGING ---- ENABLE_AM_FIX_SHOW_DATA ?= 0 @@ -399,6 +400,9 @@ ifeq ($(ENABLE_FEAT_F4HWN),1) CFLAGS += -DAUTHOR_STRING_1=\"$(AUTHOR_STRING_1)\" -DVERSION_STRING_1=\"$(VERSION_STRING_1)\" CFLAGS += -DAUTHOR_STRING_2=\"$(AUTHOR_STRING_2)\" -DVERSION_STRING_2=\"$(VERSION_STRING_2)\" endif +ifeq ($(ENABLE_FEAT_F4HWN_FIXED_PWR),1) + CFLAGS += -DENABLE_FEAT_F4HWN_FIXED_PWR +endif LDFLAGS = LDFLAGS += -z noexecstack -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld -Wl,--gc-sections diff --git a/archive/f4hwn.fixed.packed.v2.4.bin b/archive/f4hwn.fixed.packed.v2.4.bin new file mode 100644 index 0000000..6fb2086 Binary files /dev/null and b/archive/f4hwn.fixed.packed.v2.4.bin differ diff --git a/archive/f4hwn.unfixed.packed.v2.4.bin b/archive/f4hwn.unfixed.packed.v2.4.bin new file mode 100644 index 0000000..1223352 Binary files /dev/null and b/archive/f4hwn.unfixed.packed.v2.4.bin differ diff --git a/radio.c b/radio.c index 1d0db46..16ffc7a 100644 --- a/radio.c +++ b/radio.c @@ -473,105 +473,111 @@ void RADIO_ConfigureSquelchAndOutputPower(VFO_Info_t *pInfo) EEPROM_ReadBuffer(0x1ED0 + (Band * 16) + (pInfo->OUTPUT_POWER * 3), Txp, 3); #ifdef ENABLE_FEAT_F4HWN - // make low and mid even lower - // and fix values - // because of toxic fucking closed firmwares + #ifdef ENABLE_FEAT_F4HWN_FIXED_PWR + // make low and mid even lower + // and fix values + // because of toxic fucking closed firmwares - uint8_t shift[] = {0, 0, 0, 0, 0, 0, 0}; + uint8_t shift[] = {0, 0, 0, 0, 0, 0, 0}; - if(Band == 5) - { - shift[0] = 2; - shift[1] = 1; - shift[2] = 2; - shift[3] = 2; - shift[4] = 2; - shift[5] = 2; - shift[6] = 2; - } - - if (pInfo->OUTPUT_POWER == OUTPUT_POWER_LOW) { - for(uint8_t p = 0; p < 3; p++ ) + if(Band == 5) { - switch (gSetting_set_low) { - case 0: - Txp[p] = 16 - shift[gSetting_set_low]; - break; - case 1: - Txp[p] = 21 + shift[gSetting_set_low]; - break; - case 2: - Txp[p] = 29 + shift[gSetting_set_low]; - break; - case 3: - Txp[p] = 37 + shift[gSetting_set_low]; - break; - case 4: - Txp[p] = 50 + shift[gSetting_set_low]; - break; - } - + shift[0] = 2; + shift[1] = 1; + shift[2] = 2; + shift[3] = 2; + shift[4] = 2; + shift[5] = 2; + shift[6] = 2; } - } - else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_MID){ - Txp[0] = 77 + shift[5]; - Txp[1] = 77 + shift[5]; - Txp[2] = 77 + shift[5]; - } - // increase high - else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_HIGH){ - Txp[0] = 165 + shift[6]; - Txp[1] = 165 + shift[6]; - Txp[2] = 165 + shift[6]; - } - // uint8_t shift[] = {0, 0, 0, 0, 0}; + if (pInfo->OUTPUT_POWER == OUTPUT_POWER_LOW) { + for(uint8_t p = 0; p < 3; p++ ) + { + switch (gSetting_set_low) { + case 0: + Txp[p] = 16 - shift[gSetting_set_low]; + break; + case 1: + Txp[p] = 21 + shift[gSetting_set_low]; + break; + case 2: + Txp[p] = 29 + shift[gSetting_set_low]; + break; + case 3: + Txp[p] = 37 + shift[gSetting_set_low]; + break; + case 4: + Txp[p] = 50 + shift[gSetting_set_low]; + break; + } - // /* - // if(Band == 5) - // { - // shift[0] = 3; - // shift[1] = 3; - // shift[2] = 4; - // shift[3] = 7; - // shift[4] = 8; - // } - // */ - - // if (pInfo->OUTPUT_POWER == OUTPUT_POWER_LOW) { - // for(uint8_t p = 0; p < 3; p++ ) - // { - // switch (gSetting_set_low) { - // case 0: - // Txp[p] = (Txp[p] * 4) / 25 + shift[gSetting_set_low]; - // break; - // case 1: - // Txp[p] = (Txp[p] * 4) / 19 + shift[gSetting_set_low]; - // break; - // case 2: - // Txp[p] = (Txp[p] * 4) / 13 + shift[gSetting_set_low]; - // break; - // case 3: - // Txp[p] = (Txp[p] * 4) / 10 + shift[gSetting_set_low]; - // break; - // case 4: - // Txp[p] = (Txp[p] * 4) / 7 + shift[gSetting_set_low]; - // break; - // } + } + } + else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_MID){ + Txp[0] = 77 + shift[5]; + Txp[1] = 77 + shift[5]; + Txp[2] = 77 + shift[5]; + } + // increase high + else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_HIGH){ + Txp[0] = 165 + shift[6]; + Txp[1] = 165 + shift[6]; + Txp[2] = 165 + shift[6]; + } + #else + // make low and mid even lower + // and use calibration values + // be aware with toxic fucking closed firmwares - // } - // } - // else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_MID){ - // Txp[0] = (Txp[0] * 3) / 4; - // Txp[1] = (Txp[1] * 3) / 4; - // Txp[2] = (Txp[2] * 3) / 4; - // } - // // increase high - // else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_HIGH){ - // Txp[0] = Txp[0] + 30; - // Txp[1] = Txp[1] + 30; - // Txp[2] = Txp[2] + 30; - // } + uint8_t shift[] = {0, 0, 0, 0, 0}; + + /* + if(Band == 5) // UHF + { + shift[0] = 0; + shift[1] = 0; + shift[2] = 0; + shift[3] = 0; + shift[4] = 0; + } + */ + + if (pInfo->OUTPUT_POWER == OUTPUT_POWER_LOW) { + for(uint8_t p = 0; p < 3; p++ ) + { + switch (gSetting_set_low) { + case 0: + Txp[p] = (Txp[p] * 4) / 25 + shift[gSetting_set_low]; + break; + case 1: + Txp[p] = (Txp[p] * 4) / 19 + shift[gSetting_set_low]; + break; + case 2: + Txp[p] = (Txp[p] * 4) / 13 + shift[gSetting_set_low]; + break; + case 3: + Txp[p] = (Txp[p] * 4) / 10 + shift[gSetting_set_low]; + break; + case 4: + Txp[p] = (Txp[p] * 4) / 7 + shift[gSetting_set_low]; + break; + } + + } + } + else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_MID){ + Txp[0] = (Txp[0] * 3) / 4; + Txp[1] = (Txp[1] * 3) / 4; + Txp[2] = (Txp[2] * 3) / 4; + } + // increase high + else if (pInfo->OUTPUT_POWER == OUTPUT_POWER_HIGH){ + Txp[0] = Txp[0] + 30; + Txp[1] = Txp[1] + 30; + Txp[2] = Txp[2] + 30; + } + #endif #else #ifdef ENABLE_REDUCE_LOW_MID_TX_POWER // make low and mid even lower