Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e8399fd authored by En-Shuo Hsu's avatar En-Shuo Hsu Committed by En-Shuo Hsu
Browse files

topshim: avrcp - Expose SetVolume method to dbus

Expose SetVolume for audio server

Bug: 189497479
Test: dbus-send --system  --type=method_call \
--print-reply --dest=org.chromium.bluetooth \
/org/chromium/bluetooth/media \
org.chromium.bluetooth.BluetoothMedia.SetVolume  int32:100

Change-Id: I8e06eb05edc1d6d218ad41843013c76680574f1b
parent 8d7de87e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -68,6 +68,9 @@ impl IBluetoothMedia for IBluetoothMediaDBus {
        true
    }

    #[dbus_method("SetVolume")]
    fn set_volume(&mut self, volume: i32) {}

    #[dbus_method("StartAudioRequest")]
    fn start_audio_request(&mut self) {}

+8 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ pub trait IBluetoothMedia {
        bits_per_sample: i32,
        channel_mode: i32,
    ) -> bool;
    fn set_volume(&mut self, volume: i32);
    fn start_audio_request(&mut self);
    fn stop_audio_request(&mut self);
}
@@ -198,6 +199,13 @@ impl IBluetoothMedia for BluetoothMedia {
        true
    }

    fn set_volume(&mut self, volume: i32) {
        let i8v = i8::try_from(volume);
        if i8v.is_ok() {
            self.avrcp.as_mut().unwrap().set_volume(i8::try_from(volume).ok().unwrap());
        }
    }

    fn start_audio_request(&mut self) {
        self.a2dp.as_mut().unwrap().start_audio_request();
    }
+3 −0
Original line number Diff line number Diff line
@@ -255,6 +255,9 @@ int AvrcpIntf::disconnect(RustRawAddress bt_addr) {
  return intf_->DisconnectDevice(addr);
}

void AvrcpIntf::set_volume(int8_t volume) {
  return mVolumeInterface.SetVolume(volume);
}
}  // namespace rust
}  // namespace topshim
}  // namespace bluetooth
+3 −0
Original line number Diff line number Diff line
@@ -66,6 +66,9 @@ class AvrcpIntf {
  int connect(RustRawAddress bt_addr);
  int disconnect(RustRawAddress bt_addr);

  // interface for Audio server
  void set_volume(int8_t volume);

 private:
  bluetooth::avrcp::ServiceInterface* intf_;
};
+5 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ pub mod ffi {

        fn init(self: Pin<&mut AvrcpIntf>);
        fn cleanup(self: Pin<&mut AvrcpIntf>);
        fn set_volume(self: Pin<&mut AvrcpIntf>, volume: i8);

    }
    extern "Rust" {}
@@ -43,4 +44,8 @@ impl Avrcp {
        self.internal.pin_mut().cleanup();
        true
    }

    pub fn set_volume(&mut self, volume: i8) {
        self.internal.pin_mut().set_volume(volume);
    }
}