Skip to content

Commit 0a4cf44

Browse files
committed
Add command-line arguments for setting flash parameters
1 parent e3b65bf commit 0a4cf44

File tree

3 files changed

+42
-18
lines changed

3 files changed

+42
-18
lines changed

cargo-espflash/src/main.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ use clap::Parser;
1010
use espflash::{
1111
cli::{
1212
board_info, connect, flash_elf_image, monitor::monitor, save_elf_as_image, ConnectOpts,
13-
FlashOpts,
13+
FlashConfigOpts, FlashOpts,
1414
},
15-
Chip, Config, FlashFrequency, FlashMode, FlashSize, ImageFormatId,
15+
Chip, Config, ImageFormatId,
1616
};
1717
use miette::{IntoDiagnostic, Result, WrapErr};
1818

@@ -81,6 +81,8 @@ pub struct BuildOpts {
8181
/// Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details
8282
#[clap(short = 'Z')]
8383
pub unstable: Option<Vec<String>>,
84+
#[clap(flatten)]
85+
pub flash_config_opts: FlashConfigOpts,
8486
}
8587

8688
#[derive(Parser)]
@@ -154,16 +156,15 @@ fn flash(
154156
.transpose()?
155157
.or(metadata.format);
156158

157-
// FIXME
158159
flash_elf_image(
159160
&mut flasher,
160161
&elf_data,
161162
bootloader,
162163
partition_table,
163164
image_format,
164-
None,
165-
None,
166-
None,
165+
opts.build_opts.flash_config_opts.flash_mode,
166+
opts.build_opts.flash_config_opts.flash_size,
167+
opts.build_opts.flash_config_opts.flash_freq,
167168
)?;
168169
}
169170

@@ -317,8 +318,15 @@ fn save_image(
317318
.transpose()?
318319
.or(metadata.format);
319320

320-
// FIXME
321-
save_elf_as_image(chip, &elf_data, opts.file, image_format, None, None, None)?;
321+
save_elf_as_image(
322+
chip,
323+
&elf_data,
324+
opts.file,
325+
image_format,
326+
opts.build_opts.flash_config_opts.flash_mode,
327+
opts.build_opts.flash_config_opts.flash_size,
328+
opts.build_opts.flash_config_opts.flash_freq,
329+
)?;
322330

323331
Ok(())
324332
}

espflash/src/cli/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use clap::Parser;
1111
use config::Config;
1212
use miette::{IntoDiagnostic, Result, WrapErr};
1313
use serialport::{FlowControl, SerialPortType};
14+
use strum::VariantNames;
1415

1516
use crate::{
1617
cli::serial::get_serial_port_info,
@@ -51,6 +52,19 @@ pub struct FlashOpts {
5152
pub monitor: bool,
5253
}
5354

55+
#[derive(Parser)]
56+
pub struct FlashConfigOpts {
57+
/// Flash mode to use
58+
#[clap(short = 'm', long, possible_values = FlashMode::VARIANTS, value_name = "MODE")]
59+
pub flash_mode: Option<FlashMode>,
60+
/// Flash size of the target
61+
#[clap(short = 's', long, possible_values = FlashSize::VARIANTS, value_name = "SIZE")]
62+
pub flash_size: Option<FlashSize>,
63+
/// Flash frequency
64+
#[clap(short = 'f', long, possible_values = FlashFrequency::VARIANTS, value_name = "FREQUENCY")]
65+
pub flash_freq: Option<FlashFrequency>,
66+
}
67+
5468
pub fn connect(opts: &ConnectOpts, config: &Config) -> Result<Flasher> {
5569
let port_info = get_serial_port_info(opts, config)?;
5670

espflash/src/main.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ use clap::{IntoApp, Parser};
44
use espflash::{
55
cli::{
66
board_info, connect, flash_elf_image, monitor::monitor, save_elf_as_image, ConnectOpts,
7-
FlashOpts,
7+
FlashConfigOpts, FlashOpts,
88
},
9-
Chip, Config, FlashFrequency, FlashMode, FlashSize, ImageFormatId,
9+
Chip, Config, ImageFormatId,
1010
};
1111
use miette::{IntoDiagnostic, Result, WrapErr};
1212

@@ -17,6 +17,8 @@ struct Opts {
1717
#[clap(long, possible_values = &["bootloader", "direct-boot"])]
1818
pub format: Option<String>,
1919
#[clap(flatten)]
20+
pub flash_config_opts: FlashConfigOpts,
21+
#[clap(flatten)]
2022
flash_opts: FlashOpts,
2123
#[clap(flatten)]
2224
connect_opts: ConnectOpts,
@@ -36,6 +38,8 @@ pub enum SubCommand {
3638

3739
#[derive(Parser)]
3840
pub struct SaveImageOpts {
41+
#[clap(flatten)]
42+
pub flash_config_opts: FlashConfigOpts,
3943
/// Image format to flash
4044
#[clap(long, possible_values = &["bootloader", "direct-boot"])]
4145
format: Option<String>,
@@ -108,16 +112,15 @@ fn flash(opts: Opts, config: Config) -> Result<()> {
108112
.map(ImageFormatId::from_str)
109113
.transpose()?;
110114

111-
// FIXME
112115
flash_elf_image(
113116
&mut flasher,
114117
&elf_data,
115118
bootloader,
116119
partition_table,
117120
image_format,
118-
None,
119-
None,
120-
None,
121+
opts.flash_config_opts.flash_mode,
122+
opts.flash_config_opts.flash_size,
123+
opts.flash_config_opts.flash_freq,
121124
)?;
122125
}
123126

@@ -139,15 +142,14 @@ fn save_image(opts: SaveImageOpts) -> Result<()> {
139142
.map(ImageFormatId::from_str)
140143
.transpose()?;
141144

142-
// FIXME
143145
save_elf_as_image(
144146
opts.chip,
145147
&elf_data,
146148
opts.file,
147149
image_format,
148-
None,
149-
None,
150-
None,
150+
opts.flash_config_opts.flash_mode,
151+
opts.flash_config_opts.flash_size,
152+
opts.flash_config_opts.flash_freq,
151153
)?;
152154

153155
Ok(())

0 commit comments

Comments
 (0)