Merge branch 'leeroy_dev' into dev [ci skip]

This commit is contained in:
MX
2026-02-12 21:16:05 +03:00
2 changed files with 50 additions and 19 deletions

View File

@@ -110,25 +110,58 @@ void subghz_txrx_set_preset(
uint8_t* uint8_t*
subghz_txrx_set_tx_power(uint8_t* preset_data, size_t preset_data_size, uint8_t tx_power) { subghz_txrx_set_tx_power(uint8_t* preset_data, size_t preset_data_size, uint8_t tx_power) {
#define TX_POWER_OFFSET 7 #define PRESET_POWER_OFFSET_FM 8
#define TX_PRESET_POWER_COUNT 11 #define PRESET_POWER_OFFSET_AM 7
const uint8_t tx_power_value[TX_PRESET_POWER_COUNT] = { #define TX_PATABLE_OFFSET_AM 8
#define TX_PATABLE_COUNT 17
//I had to skip the +10dBM and -6dBm Values, use only ones AM/FM have in common.
//Highest Value is 12dBm for AM, 10 for FM. So Menu needs to reflect that.
const uint8_t tx_pa_table[TX_PATABLE_COUNT] = {
0, 0,
0xC0, 0xC0, //12dBm
0xC5, 0xCD, //7dBm
0xCD, 0x86, //5dBm
0x86, 0x50, //0dBm
0x50, 0x26, // -10dBm
0x37, 0x1D, // -15dBm
0x26, 0x17, //-20dBm
0x1D, 0x03, //-30dBm
0x17, 0xC0, // 10dBm
0x03, 0xC8, //7dBm
0x84, //5dBm
0x60, //0dBm
0x34, //-10dBm
0x1D, //-15dBm
0x0E, // -20dBm
0x12, //-30dBm
}; };
//Grab the AM and FM byte now, so we can do proper checks.
uint8_t fm_byte = preset_data[preset_data_size - PRESET_POWER_OFFSET_FM];
uint8_t am_byte = preset_data[preset_data_size - PRESET_POWER_OFFSET_AM];
//Set the TX Power Here in the CC1101 register... //Set the TX Power Here in the CC1101 register...
if(tx_power)
preset_data[preset_data_size - TX_POWER_OFFSET] = (uint8_t)tx_power_value[tx_power]; //If we have both bytes 1st bytes set or none, this isnt a preset we can deal with here.
if(fm_byte && !am_byte) {
//Use FM Table
if(tx_power) {
preset_data[preset_data_size - PRESET_POWER_OFFSET_FM] =
tx_pa_table[TX_PATABLE_OFFSET_AM + tx_power];
} else {
preset_data[preset_data_size - PRESET_POWER_OFFSET_FM] =
tx_pa_table[1]; //Max Power 0xC0 10dBm
}
} else if(am_byte && !fm_byte) {
//Use AM Table
if(tx_power) {
preset_data[preset_data_size - PRESET_POWER_OFFSET_AM] = tx_pa_table[tx_power];
} else {
preset_data[preset_data_size - PRESET_POWER_OFFSET_AM] =
tx_pa_table[1]; //Max Power 0xC0 12dBm
}
}
//Pass back the preset_so we can call one liners. //Pass back the preset_so we can call one liners.
return preset_data; return preset_data;

View File

@@ -67,15 +67,13 @@ const int32_t debug_counter_val[DEBUG_COUNTER_COUNT] = {
}; };
//TX Power //TX Power
#define TX_POWER_COUNT 11 #define TX_POWER_COUNT 9
const char* const tx_power_text[TX_POWER_COUNT] = { const char* const tx_power_text[TX_POWER_COUNT] = {
"Preset", "Preset",
"12dBm", "10dBm +",
"10dBm",
"7dBm", "7dBm",
"5dBm", "5dBm",
"0dBm", "0dBm",
"-6dBm",
"-10dBm", "-10dBm",
"-15dBm", "-15dBm",
"-20dBm", "-20dBm",