Skip to content

Commit 35b3713

Browse files
committed
integrate into subcommand
1 parent cdc5bef commit 35b3713

File tree

3 files changed

+27
-54
lines changed

3 files changed

+27
-54
lines changed

src/commands/control.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -160,22 +160,26 @@ impl Command for OptEnd {
160160
}
161161

162162
/// Set Power, from pow3v3, pow5v fn
163-
#[derive(Debug)]
163+
#[derive(clap::Subcommand, PartialEq, Clone, Copy, Debug)]
164164
pub enum SetPower {
165-
Enable3V3,
166-
Disable3V3,
167-
Enable5V,
168-
Disable5V,
165+
/// Enable 3.3V output
166+
Enable3v3,
167+
/// Disable 3.3V output
168+
Disable3v3,
169+
/// Enable 5V output
170+
Enable5v,
171+
/// Disable 5V output
172+
Disable5v,
169173
}
170174
impl Command for SetPower {
171175
type Response = ();
172176
const COMMAND_ID: u8 = 0x0d;
173177
fn payload(&self) -> Vec<u8> {
174178
match self {
175-
SetPower::Enable3V3 => vec![0x09],
176-
SetPower::Disable3V3 => vec![0x0A],
177-
SetPower::Enable5V => vec![0x0B],
178-
SetPower::Disable5V => vec![0x0C],
179+
SetPower::Enable3v3 => vec![0x09],
180+
SetPower::Disable3v3 => vec![0x0A],
181+
SetPower::Enable5v => vec![0x0B],
182+
SetPower::Disable5v => vec![0x0C],
179183
}
180184
}
181185
}

src/main.rs

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,11 @@ enum Commands {
148148
},
149149
/// List probes
150150
List {},
151-
/// Enable 3.3V output
152-
Enable3v3 {},
153-
/// Disable 3.3V output
154-
Disable3v3 {},
155-
/// Enable 5V output
156-
Enable5v {},
157-
/// Disable 5V output
158-
Disable5v {},
151+
/// Enable or disable power output
152+
SetPower {
153+
#[command(subcommand)]
154+
cmd: commands::control::SetPower,
155+
},
159156
/// SDI virtual serial port,
160157
#[command(subcommand)]
161158
SdiPrint(SdiPrint),
@@ -212,17 +209,8 @@ fn main() -> Result<()> {
212209
Some(Commands::List {}) => {
213210
WchLink::list_probes()?;
214211
}
215-
Some(Commands::Enable3v3 {}) => {
216-
WchLink::set_3v3_output_enabled(device_index, true)?;
217-
}
218-
Some(Commands::Disable3v3 {}) => {
219-
WchLink::set_3v3_output_enabled(device_index, false)?;
220-
}
221-
Some(Commands::Enable5v {}) => {
222-
WchLink::set_5v_output_enabled(device_index, true)?;
223-
}
224-
Some(Commands::Disable5v {}) => {
225-
WchLink::set_5v_output_enabled(device_index, false)?;
212+
Some(Commands::SetPower { cmd }) => {
213+
WchLink::set_power_output_enabled(device_index, cmd)?;
226214
}
227215

228216
Some(Commands::Erase { method }) if method != EraseMode::Default => {

src/probe.rs

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ impl WchLink {
173173
Ok(())
174174
}
175175

176-
pub fn set_3v3_output_enabled(nth: usize, enable: bool) -> Result<()> {
176+
pub fn set_power_output_enabled(nth: usize, cmd: commands::control::SetPower) -> Result<()> {
177177
let mut probe = Self::open_nth(nth)?;
178178

179179
if !probe.info.variant.support_power_funcs() {
@@ -182,32 +182,13 @@ impl WchLink {
182182
));
183183
}
184184

185-
if enable {
186-
log::info!("Enable 3.3V Output");
187-
probe.send_command(commands::control::SetPower::Enable3V3)?;
188-
} else {
189-
log::info!("Disable 3.3V Output");
190-
probe.send_command(commands::control::SetPower::Disable3V3)?;
191-
}
192-
193-
Ok(())
194-
}
195-
196-
pub fn set_5v_output_enabled(nth: usize, enable: bool) -> Result<()> {
197-
let mut probe = Self::open_nth(nth)?;
185+
probe.send_command(cmd)?;
198186

199-
if !probe.info.variant.support_power_funcs() {
200-
return Err(Error::Custom(
201-
"Probe doesn't support power control".to_string(),
202-
));
203-
}
204-
205-
if enable {
206-
log::info!("Enable 5V Output");
207-
probe.send_command(commands::control::SetPower::Enable5V)?;
208-
} else {
209-
log::info!("Disable 5V Output");
210-
probe.send_command(commands::control::SetPower::Disable5V)?;
187+
match cmd {
188+
commands::control::SetPower::Enable3v3 => log::info!("Enable 3.3V Output"),
189+
commands::control::SetPower::Disable3v3 => log::info!("Disable 3.3V Output"),
190+
commands::control::SetPower::Enable5v => log::info!("Enable 5V Output"),
191+
commands::control::SetPower::Disable5v => log::info!("Disable 5V Output"),
211192
}
212193

213194
Ok(())

0 commit comments

Comments
 (0)