/ web / src / pages / panels / flash_panel / state.rs
state.rs
  1  use dioxus::prelude::*;
  2  
  3  #[derive(Clone, Copy, PartialEq)]
  4  pub struct FlashDeviceState {
  5      pub is_connected: Signal<bool>,
  6      pub connecting: Signal<bool>,
  7      pub monitor_active: Signal<bool>,
  8      pub device_lost: Signal<bool>,
  9  }
 10  
 11  impl FlashDeviceState {
 12      pub fn new() -> Self {
 13          Self {
 14              is_connected: use_signal(|| false),
 15              connecting: use_signal(|| false),
 16              monitor_active: use_signal(|| false),
 17              device_lost: use_signal(|| false),
 18          }
 19      }
 20  }
 21  
 22  #[derive(Clone, Copy, PartialEq)]
 23  pub struct FlashChipInfo {
 24      pub chip_name: Signal<String>,
 25      pub chip_description: Signal<String>,
 26      pub chip_features: Signal<Vec<String>>,
 27      pub chip_mac: Signal<String>,
 28      pub chip_flash_sizes: Signal<Vec<String>>,
 29      pub chip_flash_freqs: Signal<Vec<String>>,
 30      pub bootloader_offset: Signal<u32>,
 31  }
 32  
 33  impl FlashChipInfo {
 34      pub fn new() -> Self {
 35          Self {
 36              chip_name: use_signal(String::new),
 37              chip_description: use_signal(String::new),
 38              chip_features: use_signal(Vec::new),
 39              chip_mac: use_signal(String::new),
 40              chip_flash_sizes: use_signal(Vec::new),
 41              chip_flash_freqs: use_signal(Vec::new),
 42              bootloader_offset: use_signal(|| 0u32),
 43          }
 44      }
 45  
 46      pub fn clear(&mut self) {
 47          self.chip_name.set(String::new());
 48          self.chip_description.set(String::new());
 49          self.chip_features.set(Vec::new());
 50          self.chip_mac.set(String::new());
 51          self.chip_flash_sizes.set(Vec::new());
 52          self.chip_flash_freqs.set(Vec::new());
 53          self.bootloader_offset.set(0);
 54      }
 55  }
 56  
 57  #[derive(Clone, Copy, PartialEq)]
 58  pub struct FlashFirmwareState {
 59      pub firmware_name: Signal<String>,
 60      pub firmware_size: Signal<usize>,
 61      pub flashing: Signal<bool>,
 62      pub progress: Signal<u8>,
 63  }
 64  
 65  impl FlashFirmwareState {
 66      pub fn new() -> Self {
 67          Self {
 68              firmware_name: use_signal(String::new),
 69              firmware_size: use_signal(|| 0usize),
 70              flashing: use_signal(|| false),
 71              progress: use_signal(|| 0u8),
 72          }
 73      }
 74  
 75      pub fn clear(&mut self) {
 76          self.firmware_name.set(String::new());
 77          self.firmware_size.set(0);
 78          self.flashing.set(false);
 79          self.progress.set(0);
 80      }
 81  }
 82  
 83  #[derive(Clone, Copy, PartialEq)]
 84  pub struct FlashConfig {
 85      pub baud: Signal<String>,
 86      pub mode: Signal<String>,
 87      pub freq: Signal<String>,
 88      pub size: Signal<String>,
 89      pub address: Signal<String>,
 90      pub compress: Signal<bool>,
 91      pub erase_first: Signal<bool>,
 92      pub wifi_ssid: Signal<String>,
 93      pub wifi_pass: Signal<String>,
 94  }
 95  
 96  impl FlashConfig {
 97      pub fn new() -> Self {
 98          Self {
 99              baud: use_signal(|| "921600".to_string()),
100              mode: use_signal(|| "keep".to_string()),
101              freq: use_signal(|| "keep".to_string()),
102              size: use_signal(|| "detect".to_string()),
103              address: use_signal(|| "0x10000".to_string()),
104              compress: use_signal(|| true),
105              erase_first: use_signal(|| false),
106              wifi_ssid: use_signal(String::new),
107              wifi_pass: use_signal(String::new),
108          }
109      }
110  }