Update ANBR Apis
- remove setAnbrEnabled and setAnbrEnabledResponse
- change qosSessionId to mediaType

Bug: 224905346
Test: Build
Change-Id: I2e944c8068b26727d4c437c1f5aa38d1fb79b034
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioIms.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioIms.aidl
index 8a0c210..f774555 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioIms.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioIms.aidl
@@ -39,6 +39,5 @@
   oneway void startImsTraffic(int serial, in String token, android.hardware.radio.ims.ImsTrafficType imsTrafficType, android.hardware.radio.AccessNetwork accessNetworkType);
   oneway void stopImsTraffic(int serial, in String token);
   oneway void setResponseFunctions(in android.hardware.radio.ims.IRadioImsResponse radioImsResponse, in android.hardware.radio.ims.IRadioImsIndication radioImsIndication);
-  oneway void setAnbrEnabled(int serial, int qosSessionId, boolean isEnabled);
-  oneway void sendAnbrQuery(int serial, int qosSessionId, android.hardware.radio.ims.ImsStreamDirection direction, int bitsPerSecond);
+  oneway void sendAnbrQuery(int serial, android.hardware.radio.ims.ImsStreamType mediaType, android.hardware.radio.ims.ImsStreamDirection direction, int bitsPerSecond);
 }
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsIndication.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsIndication.aidl
index d91fb0b..f6d5bc4 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsIndication.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsIndication.aidl
@@ -35,6 +35,6 @@
 @VintfStability
 interface IRadioImsIndication {
   oneway void onConnectionSetupFailure(in android.hardware.radio.RadioIndicationType type, in String token, in android.hardware.radio.ims.ConnectionFailureInfo info);
-  oneway void notifyAnbr(in android.hardware.radio.RadioIndicationType type, int qosSessionId, android.hardware.radio.ims.ImsStreamDirection direction, int bitsPerSecond);
+  oneway void notifyAnbr(in android.hardware.radio.RadioIndicationType type, in android.hardware.radio.ims.ImsStreamType mediaType, in android.hardware.radio.ims.ImsStreamDirection direction, int bitsPerSecond);
   oneway void triggerImsDeregistration(in android.hardware.radio.RadioIndicationType type);
 }
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsResponse.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsResponse.aidl
index c75c7ea..6f6b446 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsResponse.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/IRadioImsResponse.aidl
@@ -38,6 +38,5 @@
   oneway void updateImsRegistrationInfoResponse(in android.hardware.radio.RadioResponseInfo info);
   oneway void startImsTrafficResponse(in android.hardware.radio.RadioResponseInfo info, in @nullable android.hardware.radio.ims.ConnectionFailureInfo failureInfo);
   oneway void stopImsTrafficResponse(in android.hardware.radio.RadioResponseInfo info);
-  oneway void setAnbrEnabledResponse(in android.hardware.radio.RadioResponseInfo info);
   oneway void sendAnbrQueryResponse(in android.hardware.radio.RadioResponseInfo info);
 }
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsStreamType.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsStreamType.aidl
new file mode 100644
index 0000000..10c477f
--- /dev/null
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims/current/android/hardware/radio/ims/ImsStreamType.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package android.hardware.radio.ims;
+@Backing(type="int") @VintfStability
+enum ImsStreamType {
+  AUDIO = 1,
+  VIDEO = 2,
+}
diff --git a/radio/aidl/android/hardware/radio/ims/IRadioIms.aidl b/radio/aidl/android/hardware/radio/ims/IRadioIms.aidl
index 77b6c9a..ea7bc04 100644
--- a/radio/aidl/android/hardware/radio/ims/IRadioIms.aidl
+++ b/radio/aidl/android/hardware/radio/ims/IRadioIms.aidl
@@ -23,6 +23,8 @@
 import android.hardware.radio.ims.IRadioImsIndication;
 import android.hardware.radio.ims.IRadioImsResponse;
 import android.hardware.radio.ims.SrvccCall;
+import android.hardware.radio.ims.ImsStreamDirection;
+import android.hardware.radio.ims.ImsStreamType;
 
 /**
  * This interface is used by IMS telephony layer to talk to cellular radio.
@@ -102,32 +104,16 @@
             in IRadioImsIndication radioImsIndication);
 
     /**
-     * Access Network Bitrate Recommendation (ANBR), see 3GPP TS 26.114.
-     * This API is used to enable or disable the ANBR feature
-     * for the bearer corresponding to the qosSessionId
-     * This will be invoked when both parties in a call support the ANBR feature
-     * In case of video call, the modem shall use qosSessionId to identify
-     * appropriate media stream
-     *
-     * @param serial Serial number of request
-     * @param qosSessionId QoS session ID is used to identify media stream such as audio or video
-     * @param isEnabled True if Anbr feature is enabled, false otherwise
-     *
-     * Response function is IRadioImsResponse.setAnbrEnabledResponse()
-     */
-    void setAnbrEnabled(int serial, int qosSessionId, boolean isEnabled);
-
-    /**
      * Access Network Bitrate Recommendation Query (ANBRQ), see 3GPP TS 26.114.
      * This API triggers radio to send ANBRQ message
      * to the access network to query the desired bitrate.
      *
      * @param serial Serial number of request
-     * @param qosSessionId QoS session ID is used to identify media stream such as audio or video
+     * @param mediaType Media type is used to identify media stream such as audio or video
      * @param direction Direction of this packet stream (e.g. uplink or downlink)
      * @param bitsPerSecond The bit rate requested by the opponent UE
      *
      * Response function is IRadioImsResponse.sendAnbrQueryResponse()
      */
-    void sendAnbrQuery(int serial, int qosSessionId, ImsStreamDirection direction, int bitsPerSecond);
+    void sendAnbrQuery(int serial, ImsStreamType mediaType, ImsStreamDirection direction, int bitsPerSecond);
 }
diff --git a/radio/aidl/android/hardware/radio/ims/IRadioImsIndication.aidl b/radio/aidl/android/hardware/radio/ims/IRadioImsIndication.aidl
index 74a2107..7a8cc0e 100644
--- a/radio/aidl/android/hardware/radio/ims/IRadioImsIndication.aidl
+++ b/radio/aidl/android/hardware/radio/ims/IRadioImsIndication.aidl
@@ -19,6 +19,7 @@
 import android.hardware.radio.RadioIndicationType;
 import android.hardware.radio.ims.ConnectionFailureInfo;
 import android.hardware.radio.ims.ImsStreamDirection;
+import android.hardware.radio.ims.ImsStreamType;
 
 /**
  * Interface declaring unsolicited radio indications for ims APIs.
@@ -42,13 +43,13 @@
      * Notifies the bit rate received from the network via ANBR message
      *
      * @param type Type of radio indication
-     * @param qosSessionId QoS session ID is used to identify media stream such as audio or video
+     * @param mediaType Media type is used to identify media stream such as audio or video
      * @param direction Direction of this packet stream (e.g. uplink or downlink)
      * @param bitsPerSecond The recommended bit rate for the UE
      * for a specific logical channel and a specific direction by NW
      */
-     void notifyAnbr(in RadioIndicationType type, int qosSessionId, ImsStreamDirection direction,
-            int bitsPerSecond);
+     void notifyAnbr(in RadioIndicationType type, in ImsStreamType mediaType,
+            in ImsStreamDirection direction, int bitsPerSecond);
 
     /**
      * Fired by radio when a graceful IMS deregistration needs to be performed by telephony
diff --git a/radio/aidl/android/hardware/radio/ims/IRadioImsResponse.aidl b/radio/aidl/android/hardware/radio/ims/IRadioImsResponse.aidl
index e5a3a6c..f15b422 100644
--- a/radio/aidl/android/hardware/radio/ims/IRadioImsResponse.aidl
+++ b/radio/aidl/android/hardware/radio/ims/IRadioImsResponse.aidl
@@ -110,22 +110,5 @@
      *   RadioError:REQUEST_NOT_SUPPORTED
      *   RadioError:NO_RESOURCES
      */
-    void setAnbrEnabledResponse(in RadioResponseInfo info);
-
-    /**
-     * @param info Response info struct containing response type, serial no. and error
-     *
-     * Valid errors returned:
-     *   RadioError:NONE
-     *   RadioError:RADIO_NOT_AVAILABLE
-     *   RadioError:INVALID_STATE
-     *   RadioError:NO_MEMORY
-     *   RadioError:SYSTEM_ERR
-     *   RadioError:MODEM_ERR
-     *   RadioError:INTERNAL_ERR
-     *   RadioError:INVALID_ARGUMENTS
-     *   RadioError:REQUEST_NOT_SUPPORTED
-     *   RadioError:NO_RESOURCES
-     */
     void sendAnbrQueryResponse(in RadioResponseInfo info);
 }
diff --git a/radio/aidl/android/hardware/radio/ims/ImsStreamType.aidl b/radio/aidl/android/hardware/radio/ims/ImsStreamType.aidl
new file mode 100644
index 0000000..c12a0c1
--- /dev/null
+++ b/radio/aidl/android/hardware/radio/ims/ImsStreamType.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.radio.ims;
+
+@VintfStability
+@Backing(type="int")
+enum ImsStreamType {
+    /** Media Stream Type - Audio **/
+    AUDIO = 1,
+    /** Media Stream Type - Video **/
+    VIDEO = 2,
+}
diff --git a/radio/aidl/vts/radio_ims_indication.cpp b/radio/aidl/vts/radio_ims_indication.cpp
index 9c821ff..0637813 100644
--- a/radio/aidl/vts/radio_ims_indication.cpp
+++ b/radio/aidl/vts/radio_ims_indication.cpp
@@ -24,7 +24,7 @@
 }
 
 ndk::ScopedAStatus RadioImsIndication::notifyAnbr(RadioIndicationType /*type*/,
-        int /*qosSessionId*/, ImsStreamDirection /*direction*/, int /*bitsPerSecond*/) {
+        ImsStreamType /*mediaType*/, ImsStreamDirection /*direction*/, int /*bitsPerSecond*/) {
     return ndk::ScopedAStatus::ok();
 }
 
diff --git a/radio/aidl/vts/radio_ims_response.cpp b/radio/aidl/vts/radio_ims_response.cpp
index fa34dc1..7a90ebd 100644
--- a/radio/aidl/vts/radio_ims_response.cpp
+++ b/radio/aidl/vts/radio_ims_response.cpp
@@ -45,12 +45,6 @@
     return ndk::ScopedAStatus::ok();
 }
 
-ndk::ScopedAStatus RadioImsResponse::setAnbrEnabledResponse(const RadioResponseInfo& info) {
-    rspInfo = info;
-    parent_ims.notify(info.serial);
-    return ndk::ScopedAStatus::ok();
-}
-
 ndk::ScopedAStatus RadioImsResponse::sendAnbrQueryResponse(const RadioResponseInfo& info) {
     rspInfo = info;
     parent_ims.notify(info.serial);
diff --git a/radio/aidl/vts/radio_ims_test.cpp b/radio/aidl/vts/radio_ims_test.cpp
index 84b7c6a..d3bdd4b 100644
--- a/radio/aidl/vts/radio_ims_test.cpp
+++ b/radio/aidl/vts/radio_ims_test.cpp
@@ -164,32 +164,6 @@
 }
 
 /*
- * Test IRadioIms.setAnbrEnabled() for the response returned.
- */
-TEST_P(RadioImsTest, setAnbrEnabled) {
-    if (!deviceSupportsFeature(FEATURE_TELEPHONY_IMS)) {
-        ALOGI("Skipping setAnbrEnabled because ims is not supported in device");
-        return;
-    } else {
-        ALOGI("Running setAnbrEnabled because ims is supported in device");
-    }
-
-    serial = GetRandomSerialNumber();
-
-    ndk::ScopedAStatus res =
-            radio_ims->setAnbrEnabled(serial, 1, true);
-    ASSERT_OK(res);
-    EXPECT_EQ(std::cv_status::no_timeout, wait());
-    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_ims->rspInfo.type);
-    EXPECT_EQ(serial, radioRsp_ims->rspInfo.serial);
-
-    ALOGI("setAnbrEnabled, rspInfo.error = %s\n",
-              toString(radioRsp_ims->rspInfo.error).c_str());
-
-    verifyError(radioRsp_ims->rspInfo.error);
-}
-
-/*
  * Test IRadioIms.sendAnbrQuery() for the response returned.
  */
 TEST_P(RadioImsTest, sendAnbrQuery) {
@@ -203,7 +177,7 @@
     serial = GetRandomSerialNumber();
 
     ndk::ScopedAStatus res =
-            radio_ims->sendAnbrQuery(serial, 1, ImsStreamDirection::UPLINK, 13200);
+            radio_ims->sendAnbrQuery(serial, ImsStreamType::AUDIO, ImsStreamDirection::UPLINK, 13200);
     ASSERT_OK(res);
     EXPECT_EQ(std::cv_status::no_timeout, wait());
     EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_ims->rspInfo.type);
diff --git a/radio/aidl/vts/radio_ims_utils.h b/radio/aidl/vts/radio_ims_utils.h
index 2967476..c9ecf4a 100644
--- a/radio/aidl/vts/radio_ims_utils.h
+++ b/radio/aidl/vts/radio_ims_utils.h
@@ -48,8 +48,6 @@
 
     virtual ndk::ScopedAStatus stopImsTrafficResponse(const RadioResponseInfo& info) override;
 
-    virtual ndk::ScopedAStatus setAnbrEnabledResponse(const RadioResponseInfo& info) override;
-
     virtual ndk::ScopedAStatus sendAnbrQueryResponse(const RadioResponseInfo& info) override;
 };
 
@@ -65,7 +63,7 @@
     virtual ndk::ScopedAStatus onConnectionSetupFailure(RadioIndicationType type,
             const std::string& token, const ConnectionFailureInfo& info) override;
 
-    virtual ndk::ScopedAStatus notifyAnbr(RadioIndicationType type, int qosSessionId,
+    virtual ndk::ScopedAStatus notifyAnbr(RadioIndicationType type, ImsStreamType mediaType,
             ImsStreamDirection direction, int bitsPerSecond) override;
 
     virtual ndk::ScopedAStatus triggerImsDeregistration(RadioIndicationType type) override;