@@ -109,7 +109,7 @@ void subghz_txrx_set_preset(
109109}
110110
111111uint8_t *
112- subghz_txrx_set_tx_power (uint8_t * preset_data , size_t preset_data_size , uint32_t tx_power ) {
112+ subghz_txrx_set_tx_power (uint8_t * preset_data , size_t preset_data_size , uint8_t tx_power ) {
113113#define PRESET_POWER_OFFSET_FM 8
114114#define PRESET_POWER_OFFSET_AM 7
115115#define TX_PATABLE_OFFSET_AM 8
@@ -137,20 +137,29 @@ uint8_t*
137137 0x12 , //-30dBm
138138 };
139139
140+ //Grab the AM and FM byte now, so we can do proper checks.
141+ uint8_t fm_byte = preset_data [preset_data_size - PRESET_POWER_OFFSET_FM ];
142+ uint8_t am_byte = preset_data [preset_data_size - PRESET_POWER_OFFSET_AM ];
143+
140144 //Set the TX Power Here in the CC1101 register...
141- if (tx_power ) {
142- //Grab the AM and FM byte now, so we can do proper checks.
143- uint8_t fm_byte = preset_data [preset_data_size - PRESET_POWER_OFFSET_FM ];
144- uint8_t am_byte = preset_data [preset_data_size - PRESET_POWER_OFFSET_AM ];
145-
146- //If we have both bytes 1st bytes set or none, this isnt a preset we can deal with here.
147- if (fm_byte & !am_byte ) {
148- //Use FM Table
149- preset_data [preset_data_size - PRESET_POWER_OFFSET_FM ] = tx_pa_table [tx_power ];
150- } else if (am_byte & !fm_byte ) {
151- //Use AM Table
152- preset_data [preset_data_size - PRESET_POWER_OFFSET_AM ] =
145+
146+ //If we have both bytes 1st bytes set or none, this isnt a preset we can deal with here.
147+ if (fm_byte && !am_byte ) {
148+ //Use FM Table
149+ if (tx_power ) {
150+ preset_data [preset_data_size - PRESET_POWER_OFFSET_FM ] =
153151 tx_pa_table [TX_PATABLE_OFFSET_AM + tx_power ];
152+ } else {
153+ preset_data [preset_data_size - PRESET_POWER_OFFSET_FM ] =
154+ tx_pa_table [1 ]; //Max Power 0xC0 10dBm
155+ }
156+ } else if (am_byte && !fm_byte ) {
157+ //Use AM Table
158+ if (tx_power ) {
159+ preset_data [preset_data_size - PRESET_POWER_OFFSET_AM ] = tx_pa_table [tx_power ];
160+ } else {
161+ preset_data [preset_data_size - PRESET_POWER_OFFSET_AM ] =
162+ tx_pa_table [1 ]; //Max Power 0xC0 12dBm
154163 }
155164 }
156165
0 commit comments