From d1cf5af7fab8c9e4706c807c97b8fc77d8667923 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sat, 22 Aug 2026 10:05:34 +0200 Subject: [PATCH] firmware: add 'sony' category (rsync-style, like rockbox) - New Firmware::Sony mapped from firmware = "sony"; behaves like rockbox/android (rsync to mounted volume, no fatsort) - Green badge on dashboard; config parsing test included - Real config: Sony NW-A55 + Walkman WM1 switched to firmware = "sony" --- README.md | 6 +++--- src/config.rs | 27 +++++++++++++++++++++++++++ src/ui/tabs/dashboard.rs | 3 ++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f4d56df..db40ab9 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,9 @@ mount_point = "/media/sebastian/IPOD" music_folder = "Music" ``` -Firmware types: `apple` (podkit command), `rockbox`, `android` (rsync), -`mlove` (rsync + `fatsort`). Devices with `content_type = "hoerspiele"` sync -against the hoerspiele library. +Firmware types: `apple` (podkit command), `rockbox`, `android`, `sony` +(rsync to a mounted volume), `mlove` (rsync + `fatsort`). Devices with +`content_type = "hoerspiele"` sync against the hoerspiele library. ## How the sync pipeline works diff --git a/src/config.rs b/src/config.rs index b60dc53..cc956e8 100644 --- a/src/config.rs +++ b/src/config.rs @@ -70,6 +70,7 @@ pub enum Firmware { Rockbox, Android, Mlove, + Sony, } impl Firmware { @@ -78,6 +79,7 @@ impl Firmware { "rockbox" => Firmware::Rockbox, "android" => Firmware::Android, "mlove" => Firmware::Mlove, + "sony" => Firmware::Sony, _ => Firmware::Apple, } } @@ -87,6 +89,7 @@ impl Firmware { Firmware::Rockbox => "rockbox", Firmware::Android => "android", Firmware::Mlove => "mlove", + Firmware::Sony => "sony", } } } @@ -375,4 +378,28 @@ music_folder = "Music" assert_eq!(cfg.storagebox_excludes, vec![".DS_Store"]); assert_eq!(cfg.local_music_dir, dirs::home_dir().unwrap().join("Music")); } + + #[test] + fn loads_sony_firmware_as_rockbox_style() { + let dir = std::env::temp_dir().join("dap-tui-sony-test"); + let _ = std::fs::create_dir_all(&dir); + let path = dir.join("config.toml"); + std::fs::write( + &path, + r#" +[[devices]] +name = "Sony NW-A55" +firmware = "sony" +mount_point = "/media/SD_CARD" +music_folder = "MUSIC" +"#, + ) + .unwrap(); + let cfg = load(Some(path.display().to_string())).unwrap(); + assert_eq!(cfg.devices.len(), 1); + let d = &cfg.devices[0]; + assert_eq!(d.firmware, Firmware::Sony); + assert_eq!(d.music_folder, "MUSIC"); + assert_eq!(d.preserve_fat_order, false); + } } diff --git a/src/ui/tabs/dashboard.rs b/src/ui/tabs/dashboard.rs index 989f558..4709c17 100644 --- a/src/ui/tabs/dashboard.rs +++ b/src/ui/tabs/dashboard.rs @@ -33,7 +33,8 @@ fn firmware_color(fw: &Firmware) -> ratatui::style::Color { Firmware::Rockbox => theme::MAGENTA, Firmware::Android => theme::CYAN, Firmware::Mlove => theme::ORANGE, - Firmware::Apple => theme::GREEN, + Firmware::Sony => theme::GREEN, + Firmware::Apple => theme::YELLOW, } }