From 7f1afd715f0aadbd656a3471499be47118de33d5 Mon Sep 17 00:00:00 2001 From: NekoCWD Date: Sun, 27 Oct 2024 20:08:20 +0300 Subject: [PATCH] Proxy WIP --- src/callaudiod.vala | 24 ++++++++++++++++++++++++ src/main.vala | 14 ++++++++++++-- src/meson.build | 2 ++ src/q6meowd.vala | 17 +++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/callaudiod.vala create mode 100644 src/q6meowd.vala diff --git a/src/callaudiod.vala b/src/callaudiod.vala new file mode 100644 index 0000000..927f0e9 --- /dev/null +++ b/src/callaudiod.vala @@ -0,0 +1,24 @@ +using GLib; + + +[DBus(name = "org.mobian_project.CallAudio", timeout = 120000)] +public interface CallAudioD : GLib.Object { + + [DBus(name = "SelectMode")] + public abstract bool select_mode(uint mode) throws DBusError, IOError; + + [DBus(name = "AudioMode")] + public abstract uint audio_mode { get; } + + [DBus(name = "EnableSpeaker")] + public abstract bool enable_speaker(bool enable) throws DBusError, IOError; + + [DBus(name = "SpeakerState")] + public abstract uint speaker_state { get; } + + [DBus(name = "MuteMic")] + public abstract bool mute_mic(bool mute) throws DBusError, IOError; + + [DBus(name = "MicState")] + public abstract uint mic_state { get; } +} \ No newline at end of file diff --git a/src/main.vala b/src/main.vala index c31b5d3..4e50461 100644 --- a/src/main.vala +++ b/src/main.vala @@ -17,8 +17,18 @@ * * SPDX-License-Identifier: GPL-3.0-or-later */ - int main (string[] args) { - stdout.printf ("Hello World\n"); + Q6MeowD q6meowd_proxy = Bus.get_proxy_sync (BusType.SYSTEM, "org.postmarketos.q6meowd", "/org/postmarketos/q6meowd", DBusProxyFlags.NONE); + CallAudioD callaudiod_proxy = Bus.get_proxy_sync (BusType.SESSION, "org.mobian_project.CallAudio", "/org/mobian_project/CallAudio", DBusProxyFlags.NONE); + ((DBusProxy) callaudiod_proxy).g_properties_changed.connect ((props, inv) => { + foreach (var prop in props) { + var name = prop.get_child_value (0).get_string (); + if (name == "SpeakerState") { + q6meowd_proxy.stop_stream (); + q6meowd_proxy.start_stream (); + } + } + }); + new MainLoop ().run (); return 0; } \ No newline at end of file diff --git a/src/meson.build b/src/meson.build index be7dc31..faa19c1 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,5 +1,7 @@ q6meow_output_switcher_sources = [ 'main.vala', + 'q6meowd.vala', + 'callaudiod.vala', ] q6meow_output_switcher_deps = [ diff --git a/src/q6meowd.vala b/src/q6meowd.vala new file mode 100644 index 0000000..fe1707c --- /dev/null +++ b/src/q6meowd.vala @@ -0,0 +1,17 @@ +using GLib; + +[DBus(name = "org.postmarketos.q6meowd", timeout = 120000)] +public interface Q6MeowD : GLib.Object { + + [DBus(name = "StartStream")] + public abstract bool start_stream() throws DBusError, IOError; + + [DBus(name = "StopStream")] + public abstract bool stop_stream() throws DBusError, IOError; + + [DBus(name = "State")] + public abstract bool state { get; } + + [DBus(name = "Device")] + public abstract string device { owned get; } +} \ No newline at end of file