Skip to content

Commit db95553

Browse files
authored
Merge pull request #73 from Neotron-Compute/better-mixer-info
Nicer formatting of mixer info.
2 parents bb6c81c + 1a4b3a7 commit db95553

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

src/commands/hardware.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,19 @@ fn lshw(_menu: &menu::Menu<Ctx>, _item: &menu::Item<Ctx>, _args: &[&str], _ctx:
114114
osprintln!("Audio Mixers:");
115115
for dev_idx in 0..=255u8 {
116116
if let bios::FfiOption::Some(device_info) = (api.audio_mixer_channel_get_info)(dev_idx) {
117-
osprintln!(" {}: {:?}", dev_idx, device_info);
117+
let dir = match device_info.direction {
118+
bios::audio::Direction::Input => "In",
119+
bios::audio::Direction::Output => "Out",
120+
bios::audio::Direction::Loopback => "Loop",
121+
};
122+
osprintln!(
123+
" {}: {:08} ({}) {}/{}",
124+
dev_idx,
125+
device_info.name,
126+
dir,
127+
device_info.current_level,
128+
device_info.max_level
129+
);
118130
found = true;
119131
}
120132
}

src/commands/sound.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,17 @@ fn mixer(_menu: &menu::Menu<Ctx>, item: &menu::Item<Ctx>, args: &[&str], _ctx: &
4747
None
4848
};
4949

50+
let mixer_int = selected_mixer.and_then(|n| n.parse::<u8>().ok());
51+
5052
let api = API.get();
5153

5254
if let (Some(selected_mixer), Some(level_int)) = (selected_mixer, level_int) {
5355
let mut found = false;
5456
for mixer_id in 0u8..=255u8 {
5557
match (api.audio_mixer_channel_get_info)(mixer_id) {
5658
bios::FfiOption::Some(mixer_info) => {
57-
if mixer_info.name.as_str() == selected_mixer {
59+
if (Some(mixer_id) == mixer_int) || (mixer_info.name.as_str() == selected_mixer)
60+
{
5861
if let Err(e) =
5962
(api.audio_mixer_channel_set_level)(mixer_id, level_int).into()
6063
{
@@ -90,9 +93,10 @@ fn mixer(_menu: &menu::Menu<Ctx>, item: &menu::Item<Ctx>, args: &[&str], _ctx: &
9093
bios::audio::Direction::Loopback => "Loop",
9194
bios::audio::Direction::Output => "Out",
9295
};
93-
if selected_mixer
94-
.and_then(|s| Some(s == mixer_info.name.as_str()))
95-
.unwrap_or(true)
96+
if (Some(mixer_id) == mixer_int)
97+
|| selected_mixer
98+
.map(|s| s == mixer_info.name.as_str())
99+
.unwrap_or(true)
96100
{
97101
osprintln!(
98102
"#{}: {} ({}) {}/{}",
@@ -136,14 +140,14 @@ fn play(_menu: &menu::Menu<Ctx>, _item: &menu::Item<Ctx>, args: &[&str], ctx: &m
136140

137141
let api = API.get();
138142

139-
let mut buffer = &mut scratch[0..4096];
143+
let buffer = &mut scratch[0..4096];
140144
let mut bytes = 0;
141145
let mut delta = 0;
142146

143147
let mut pause = false;
144148
'playback: while !file.eof() {
145149
if !pause {
146-
let bytes_read = mgr.read(&mut volume, &mut file, &mut buffer)?;
150+
let bytes_read = mgr.read(&volume, &mut file, buffer)?;
147151
let mut buffer = &buffer[0..bytes_read];
148152
while !buffer.is_empty() {
149153
let slice = bios::FfiByteSlice::new(buffer);

0 commit comments

Comments
 (0)