1use crate::{DependencyConfig, KeyboardTomlConfig};
2
3#[derive(Clone, Debug)]
5pub struct Basic {
6 pub name: String,
8 pub vendor_id: u16,
10 pub product_id: u16,
12 pub manufacturer: String,
14 pub product_name: String,
16 pub serial_number: String,
18}
19
20impl Default for Basic {
21 fn default() -> Self {
22 Self {
23 name: "RMK Keyboard".to_string(),
24 vendor_id: 0xE118,
25 product_id: 0x0001,
26 manufacturer: "RMK".to_string(),
27 product_name: "RMK Keyboard".to_string(),
28 serial_number: "vial:f64c2b3c:000001".to_string(),
29 }
30 }
31}
32
33impl KeyboardTomlConfig {
34 pub fn get_device_config(&self) -> Basic {
35 let default = Basic::default();
36 let keyboard = self.keyboard.as_ref().unwrap();
37 Basic {
38 name: keyboard.name.clone(),
39 vendor_id: keyboard.vendor_id,
40 product_id: keyboard.product_id,
41 manufacturer: keyboard.manufacturer.clone().unwrap_or(default.manufacturer),
42 product_name: keyboard.product_name.clone().unwrap_or(default.product_name),
43 serial_number: keyboard.serial_number.clone().unwrap_or(default.serial_number),
44 }
45 }
46
47 pub fn get_dependency_config(&self) -> DependencyConfig {
48 if let Some(dependency) = &self.dependency {
49 dependency.clone()
50 } else {
51 DependencyConfig::default()
52 }
53 }
54}