@@ -30,7 +30,7 @@ pub struct LoRaConfig {
3030 /// Power amplifier output selection (defaults to PA_BOOST output)
3131 pub pa_output : PaSelect ,
3232 /// Output power in dBm (defaults to 10dBm)
33- pub power : u8 ,
33+ pub power : i8 ,
3434 /// IQ inversion configuration (defaults to disabled)
3535 pub invert_iq : bool ,
3636}
@@ -169,37 +169,35 @@ where
169169 type Error = Error < CommsError , PinError > ;
170170
171171 /// Set LoRa mode transmit power
172- fn set_power ( & mut self , power : u8 ) -> Result < ( ) , Error < CommsError , PinError > > {
173- let mut power = power;
174-
172+ fn set_power ( & mut self , power : i8 ) -> Result < ( ) , Error < CommsError , PinError > > {
175173 // Limit to viable input range
176- let power = core:: cmp:: min ( power, 15 ) ;
174+ let power = core:: cmp:: max ( power, 0 ) ;
177175
178176 // Read from config to determine PA mode
179177 let config = self . read_reg ( regs:: Common :: PACONFIG ) ?;
180178
181179 match config & PASELECT_MASK {
182180 PASELECT_RFO => {
183- let max = ( config & MAXPOWER_MASK ) >> MAXPOWER_SHIFT ;
181+ let max = ( ( config & MAXPOWER_MASK ) >> MAXPOWER_SHIFT ) as i8 ;
184182
185- let power = core:: cmp:: min ( power, 17u8 ) ;
183+ let power = core:: cmp:: min ( power, 17i8 ) ;
186184 let value = power - max + 15 ;
187185
188- let v = self . update_reg ( regs:: Common :: PACONFIG , OUTPUTPOWER_MASK , value) ?;
186+ let v = self . update_reg ( regs:: Common :: PACONFIG , OUTPUTPOWER_MASK , value as u8 ) ?;
189187
190- debug ! ( "Updated RFO PA_CONFIG to: {:b}" , v) ;
188+ debug ! ( "Updated RFO PA_CONFIG for: {} dBm to: {:b}" , power , v) ;
191189 } ,
192190 PASELECT_PA_BOOST => {
193191
194- let power = core:: cmp:: min ( power, 20u8 ) ;
192+ let power = core:: cmp:: min ( power, 20i8 ) ;
195193 let value = power - 17 + 15 ;
196194
197- self . update_reg ( regs:: Common :: PACONFIG , OUTPUTPOWER_MASK , value) ?;
195+ self . update_reg ( regs:: Common :: PACONFIG , OUTPUTPOWER_MASK , value as u8 ) ?;
198196
199197 let pa_dac_enable = if power > 17 { PADAC_20DBM_ON } else { PADAC_20DBM_OFF } ;
200198 let v = self . update_reg ( regs:: Common :: PADAC , PADAC_MASK , pa_dac_enable) ?;
201199
202- debug ! ( "Updated BOOST PA_CONFIG to: {:b}" , v) ;
200+ debug ! ( "Updated BOOST PA_CONFIG for: {} dBm to: {:b}" , power , v) ;
203201 } ,
204202 _ => ( )
205203 }
0 commit comments