Skip to content

Commit dd025b6

Browse files
committed
another output power fix
1 parent 325914c commit dd025b6

3 files changed

Lines changed: 12 additions & 14 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ log = { version = "0.4.6" }
1515
bitflags = "1.0.4"
1616
embedded-hal = { version = "0.2.3", features = ["unproven"] }
1717
embedded-spi = "0.5.1"
18-
radio = "0.2.0"
18+
radio = "0.3.0"
1919

2020
structopt = { version = "0.2.15", optional = true }
2121
linux-embedded-hal = { version = "0.2.2", optional = true }

src/lora.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

src/util/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ pub struct Transmit {
9797

9898
/// Power in dBm
9999
#[structopt(long = "power", default_value="13")]
100-
power: u8,
100+
power: i8,
101101

102102
/// Specify period for transmission
103103
#[structopt(long = "period", default_value="1s")]

0 commit comments

Comments
 (0)