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

Commit 5ac8aa41 authored by Haofan Wang's avatar Haofan Wang
Browse files

Return status for the setters API

Bug: 375472716
Test: atest VtsHalMediaQualityTargetTest
Flag: android.media.tv.flags.media_quality_fw
Change-Id: I6e163c464b86263c87b3a8050118ba1432894b41
parent 8a5368a6
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@ interface IMediaQuality {
     * device as configured before.
     *
     * @param enabled True to enable the ambient backlight detection, false to disable.
     *
     * @return Status::ok on success
     *         UNSUPPORTED_OPERATION if this functionality is unsupported.
     */
    void setAmbientBacklightDetectionEnabled(in boolean enabled);

@@ -88,6 +91,9 @@ interface IMediaQuality {
     * parameters depends on the current content playing.
     *
     * @param enable True to enable, false to disable.
     *
     * @return Status::ok on success
     *         UNSUPPORTED_OPERATION if this functionality is unsupported.
     */
    void setAutoPqEnabled(boolean enable);

@@ -112,6 +118,9 @@ interface IMediaQuality {
     * lower resolution image and invent the missing pixel to make the image looks sharper.
     *
     * @param enable True to enable, false to disable.
     *
     * @return Status::ok on success
     *         UNSUPPORTED_OPERATION if this functionality is unsupported.
     */
    void setAutoSrEnabled(boolean enable);

@@ -136,6 +145,9 @@ interface IMediaQuality {
     * adjust the sound parameters depends on the current content playing.
     *
     * @param enable True to enable, false to disable.
     *
     * @return Status::ok on success
     *         UNSUPPORTED_OPERATION if this functionality is unsupported.
     */
    void setAutoAqEnabled(boolean enable);

+60 −33
Original line number Diff line number Diff line
@@ -32,12 +32,14 @@ use android_hardware_tv_mediaquality::aidl::android::hardware::tv::mediaquality:
    VendorParameterIdentifier::VendorParameterIdentifier,
};
use binder::{Interface, Strong};
use binder::ExceptionCode;
use std::sync::{Arc, Mutex};
use std::thread;

/// Defined so we can implement the IMediaQuality AIDL interface.
pub struct MediaQualityService {
    callback: Arc<Mutex<Option<Strong<dyn IMediaQualityCallback>>>>,
    ambient_backlight_supported: Arc<Mutex<bool>>,
    ambient_backlight_enabled: Arc<Mutex<bool>>,
    ambient_backlight_detector_settings: Arc<Mutex<AmbientBacklightSettings>>,
    auto_pq_supported: Arc<Mutex<bool>>,
@@ -60,6 +62,7 @@ impl MediaQualityService {
    pub fn new() -> Self {
        Self {
            callback: Arc::new(Mutex::new(None)),
            ambient_backlight_supported: Arc::new(Mutex::new(false)),
            ambient_backlight_enabled: Arc::new(Mutex::new(true)),
            ambient_backlight_detector_settings:
                    Arc::new(Mutex::new(AmbientBacklightSettings::default())),
@@ -111,7 +114,10 @@ impl IMediaQuality for MediaQualityService {
    fn setAmbientBacklightDetectionEnabled(&self, enabled: bool) -> binder::Result<()> {
        println!("Received enabled: {}", enabled);
        let mut ambient_backlight_enabled = self.ambient_backlight_enabled.lock().unwrap();
        let ambient_backlight_supported = self.ambient_backlight_supported.lock().unwrap();
        *ambient_backlight_enabled = enabled;

        if *ambient_backlight_supported {
            if enabled {
                println!("Enable Ambient Backlight detection");
                thread::scope(|s| {
@@ -135,7 +141,10 @@ impl IMediaQuality for MediaQualityService {
                    });
                });
            }
        Ok(())
            return Ok(());
        } else {
            return Err(ExceptionCode::UNSUPPORTED_OPERATION.into());
        }
    }

    fn getAmbientBacklightDetectionEnabled(&self) -> binder::Result<bool> {
@@ -155,13 +164,19 @@ impl IMediaQuality for MediaQualityService {

    fn setAutoPqEnabled(&self, enabled: bool) -> binder::Result<()> {
        let mut auto_pq_enabled = self.auto_pq_enabled.lock().unwrap();
        let auto_pq_supported = self.auto_pq_supported.lock().unwrap();
        *auto_pq_enabled = enabled;

        if *auto_pq_supported {
            if enabled {
                println!("Enable auto picture quality");
            } else {
                println!("Disable auto picture quality");
            }
        Ok(())
            return Ok(());
        } else {
            return Err(ExceptionCode::UNSUPPORTED_OPERATION.into());
        }
    }

    fn isAutoSrSupported(&self) -> binder::Result<bool> {
@@ -176,13 +191,19 @@ impl IMediaQuality for MediaQualityService {

    fn setAutoSrEnabled(&self, enabled: bool) -> binder::Result<()> {
        let mut auto_sr_enabled = self.auto_sr_enabled.lock().unwrap();
        let auto_sr_supported = self.auto_sr_supported.lock().unwrap();
        *auto_sr_enabled = enabled;

        if *auto_sr_supported {
            if enabled {
                println!("Enable auto super resolution");
            } else {
                println!("Disable auto super resolution");
            }
        Ok(())
            return Ok(());
        } else {
            return Err(ExceptionCode::UNSUPPORTED_OPERATION.into());
        }
    }

    fn isAutoAqSupported(&self) -> binder::Result<bool> {
@@ -197,13 +218,19 @@ impl IMediaQuality for MediaQualityService {

    fn setAutoAqEnabled(&self, enabled: bool) -> binder::Result<()> {
        let mut auto_aq_enabled = self.auto_aq_enabled.lock().unwrap();
        let auto_aq_supported = self.auto_aq_supported.lock().unwrap();
        *auto_aq_enabled = enabled;

        if *auto_aq_supported {
            if enabled {
                println!("Enable auto audio quality");
            } else {
                println!("Disable auto audio quality");
            }
        Ok(())
            return Ok(());
        } else {
            return Err(ExceptionCode::UNSUPPORTED_OPERATION.into());
        }
    }

    fn getPictureProfileListener(&self) -> binder::Result<binder::Strong<dyn IPictureProfileChangedListener>> {