2025-04-01 22:57:03 +02:00
|
|
|
/*
|
|
|
|
* This file is auto-generated. DO NOT MODIFY.
|
|
|
|
* Using: /home/iscle/Android/Sdk/build-tools/35.0.1/aidl --lang=ndk -o generated -h generated/include --structured --stability=vintf --min_sdk_version=31 -I hardware_interfaces/common/aidl/aidl_api/android.hardware.common/current/ -I hardware_interfaces/common/fmq/aidl/aidl_api/android.hardware.common.fmq/current/ -I hardware_interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/ -I hardware_interfaces/audio/aidl/aidl_api/android.hardware.audio.effect/current/ -I system_hardware_interfaces/media/aidl_api/android.media.audio.common.types/current/ -I system_hardware_interfaces/media/aidl_api/android.media.audio.eraser.types/current/ hardware_interfaces/audio/aidl/aidl_api/android.hardware.audio.effect/current/android/hardware/audio/effect/IEffect.aidl
|
|
|
|
*/
|
|
|
|
#include "aidl/android/hardware/audio/effect/IEffect.h"
|
2025-04-21 12:43:25 +02:00
|
|
|
#include "log/log.h"
|
2025-04-01 22:57:03 +02:00
|
|
|
|
|
|
|
#include <android/binder_parcel_utils.h>
|
|
|
|
#include <aidl/android/hardware/audio/effect/BnEffect.h>
|
|
|
|
#include <aidl/android/hardware/audio/effect/BpEffect.h>
|
|
|
|
#include <aidl/android/media/audio/eraser/BnEraserCallback.h>
|
|
|
|
#include <aidl/android/media/audio/eraser/BpEraserCallback.h>
|
|
|
|
#include <aidl/android/media/audio/eraser/IEraserCallback.h>
|
|
|
|
|
|
|
|
namespace aidl {
|
|
|
|
namespace android {
|
|
|
|
namespace hardware {
|
|
|
|
namespace audio {
|
|
|
|
namespace effect {
|
|
|
|
static binder_status_t _aidl_android_hardware_audio_effect_IEffect_onTransact(AIBinder* _aidl_binder, transaction_code_t _aidl_code, const AParcel* _aidl_in, AParcel* _aidl_out) {
|
|
|
|
(void)_aidl_in;
|
|
|
|
(void)_aidl_out;
|
2025-04-21 12:43:25 +02:00
|
|
|
ALOGD("aidl_android_hardware_audio_effect_IEffect_onTransact");
|
2025-04-01 22:57:03 +02:00
|
|
|
binder_status_t _aidl_ret_status = STATUS_UNKNOWN_TRANSACTION;
|
|
|
|
std::shared_ptr<BnEffect> _aidl_impl = std::static_pointer_cast<BnEffect>(::ndk::ICInterface::asInterface(_aidl_binder));
|
|
|
|
switch (_aidl_code) {
|
|
|
|
case (FIRST_CALL_TRANSACTION + 0 /*open*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::Parameter::Common in_common;
|
|
|
|
std::optional<::aidl::android::hardware::audio::effect::Parameter::Specific> in_specific;
|
|
|
|
::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn _aidl_return;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_in, &in_common);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readNullableData(_aidl_in, &in_specific);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->open(in_common, in_specific, &_aidl_return);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_out, _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 1 /*close*/): {
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->close();
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 2 /*getDescriptor*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::Descriptor _aidl_return;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->getDescriptor(&_aidl_return);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_out, _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 3 /*command*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::CommandId in_commandId;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_in, &in_commandId);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->command(in_commandId);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 4 /*getState*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::State _aidl_return;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->getState(&_aidl_return);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_out, _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 5 /*setParameter*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::Parameter in_param;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_in, &in_param);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->setParameter(in_param);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 6 /*getParameter*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::Parameter::Id in_paramId;
|
|
|
|
::aidl::android::hardware::audio::effect::Parameter _aidl_return;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_in, &in_paramId);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->getParameter(in_paramId, &_aidl_return);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_out, _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case (FIRST_CALL_TRANSACTION + 7 /*reopen*/): {
|
|
|
|
::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn _aidl_return;
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus _aidl_status = _aidl_impl->reopen(&_aidl_return);
|
|
|
|
_aidl_ret_status = AParcel_writeStatusHeader(_aidl_out, _aidl_status.get());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) break;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_out, _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) break;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
|
|
|
|
static AIBinder_Class* _g_aidl_android_hardware_audio_effect_IEffect_clazz = ::ndk::ICInterface::defineClass(IEffect::descriptor, _aidl_android_hardware_audio_effect_IEffect_onTransact);
|
|
|
|
|
|
|
|
BpEffect::BpEffect(const ::ndk::SpAIBinder& binder) : BpCInterface(binder) {}
|
|
|
|
BpEffect::~BpEffect() {}
|
|
|
|
|
|
|
|
::ndk::ScopedAStatus BpEffect::open(const ::aidl::android::hardware::audio::effect::Parameter::Common& in_common, const std::optional<::aidl::android::hardware::audio::effect::Parameter::Specific>& in_specific, ::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn* _aidl_return) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_in.get(), in_common);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeNullableData(_aidl_in.get(), in_specific);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 0 /*open*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->open(in_common, in_specific, _aidl_return);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_out.get(), _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::close() {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 1 /*close*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->close();
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::getDescriptor(::aidl::android::hardware::audio::effect::Descriptor* _aidl_return) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 2 /*getDescriptor*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->getDescriptor(_aidl_return);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_out.get(), _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::command(::aidl::android::hardware::audio::effect::CommandId in_commandId) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_in.get(), in_commandId);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 3 /*command*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->command(in_commandId);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::getState(::aidl::android::hardware::audio::effect::State* _aidl_return) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 4 /*getState*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->getState(_aidl_return);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_out.get(), _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::setParameter(const ::aidl::android::hardware::audio::effect::Parameter& in_param) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_in.get(), in_param);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 5 /*setParameter*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->setParameter(in_param);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::getParameter(const ::aidl::android::hardware::audio::effect::Parameter::Id& in_paramId, ::aidl::android::hardware::audio::effect::Parameter* _aidl_return) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_in.get(), in_paramId);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 6 /*getParameter*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->getParameter(in_paramId, _aidl_return);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_out.get(), _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus BpEffect::reopen(::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn* _aidl_return) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
::ndk::ScopedAParcel _aidl_in;
|
|
|
|
::ndk::ScopedAParcel _aidl_out;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_prepareTransaction(asBinder().get(), _aidl_in.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AIBinder_transact(
|
|
|
|
asBinder().get(),
|
|
|
|
(FIRST_CALL_TRANSACTION + 7 /*reopen*/),
|
|
|
|
_aidl_in.getR(),
|
|
|
|
_aidl_out.getR(),
|
|
|
|
0
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
| FLAG_PRIVATE_LOCAL
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
);
|
|
|
|
if (_aidl_ret_status == STATUS_UNKNOWN_TRANSACTION && IEffect::getDefaultImpl()) {
|
|
|
|
_aidl_status = IEffect::getDefaultImpl()->reopen(_aidl_return);
|
|
|
|
goto _aidl_status_return;
|
|
|
|
}
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_ret_status = AParcel_readStatusHeader(_aidl_out.get(), _aidl_status.getR());
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
if (!AStatus_isOk(_aidl_status.get())) goto _aidl_status_return;
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_out.get(), _aidl_return);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) goto _aidl_error;
|
|
|
|
|
|
|
|
_aidl_error:
|
|
|
|
_aidl_status.set(AStatus_fromStatus(_aidl_ret_status));
|
|
|
|
_aidl_status_return:
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
// Source for BnEffect
|
|
|
|
BnEffect::BnEffect() {}
|
|
|
|
BnEffect::~BnEffect() {}
|
|
|
|
::ndk::SpAIBinder BnEffect::createBinder() {
|
2025-04-21 12:43:25 +02:00
|
|
|
ALOGD("createBinder");
|
2025-04-01 22:57:03 +02:00
|
|
|
AIBinder* binder = AIBinder_new(_g_aidl_android_hardware_audio_effect_IEffect_clazz, static_cast<void*>(this));
|
|
|
|
#ifdef BINDER_STABILITY_SUPPORT
|
|
|
|
AIBinder_markVintfStability(binder);
|
|
|
|
#endif // BINDER_STABILITY_SUPPORT
|
|
|
|
return ::ndk::SpAIBinder(binder);
|
|
|
|
}
|
|
|
|
// Source for IEffect
|
|
|
|
const char* IEffect::descriptor = "android.hardware.audio.effect.IEffect";
|
|
|
|
IEffect::IEffect() {}
|
|
|
|
IEffect::~IEffect() {}
|
|
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<IEffect> IEffect::fromBinder(const ::ndk::SpAIBinder& binder) {
|
2025-04-21 12:43:25 +02:00
|
|
|
ALOGD("fromBinder");
|
2025-04-01 22:57:03 +02:00
|
|
|
if (!AIBinder_associateClass(binder.get(), _g_aidl_android_hardware_audio_effect_IEffect_clazz)) {
|
|
|
|
#if __ANDROID_API__ >= 31
|
|
|
|
const AIBinder_Class* originalClass = AIBinder_getClass(binder.get());
|
|
|
|
if (originalClass == nullptr) return nullptr;
|
|
|
|
if (0 == strcmp(AIBinder_Class_getDescriptor(originalClass), descriptor)) {
|
|
|
|
return ::ndk::SharedRefBase::make<BpEffect>(binder);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
std::shared_ptr<::ndk::ICInterface> interface = ::ndk::ICInterface::asInterface(binder.get());
|
|
|
|
if (interface) {
|
|
|
|
return std::static_pointer_cast<IEffect>(interface);
|
|
|
|
}
|
|
|
|
return ::ndk::SharedRefBase::make<BpEffect>(binder);
|
|
|
|
}
|
|
|
|
|
|
|
|
binder_status_t IEffect::writeToParcel(AParcel* parcel, const std::shared_ptr<IEffect>& instance) {
|
2025-04-21 12:43:25 +02:00
|
|
|
ALOGD("writeToParcel");
|
2025-04-01 22:57:03 +02:00
|
|
|
return AParcel_writeStrongBinder(parcel, instance ? instance->asBinder().get() : nullptr);
|
|
|
|
}
|
|
|
|
binder_status_t IEffect::readFromParcel(const AParcel* parcel, std::shared_ptr<IEffect>* instance) {
|
2025-04-21 12:43:25 +02:00
|
|
|
ALOGD("readFromParcel");
|
2025-04-01 22:57:03 +02:00
|
|
|
::ndk::SpAIBinder binder;
|
|
|
|
binder_status_t status = AParcel_readStrongBinder(parcel, binder.getR());
|
|
|
|
if (status != STATUS_OK) return status;
|
|
|
|
*instance = IEffect::fromBinder(binder);
|
|
|
|
return STATUS_OK;
|
|
|
|
}
|
|
|
|
bool IEffect::setDefaultImpl(const std::shared_ptr<IEffect>& impl) {
|
|
|
|
// Only one user of this interface can use this function
|
|
|
|
// at a time. This is a heuristic to detect if two different
|
|
|
|
// users in the same process use this function.
|
|
|
|
assert(!IEffect::default_impl);
|
|
|
|
if (impl) {
|
|
|
|
IEffect::default_impl = impl;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
const std::shared_ptr<IEffect>& IEffect::getDefaultImpl() {
|
2025-04-21 12:43:25 +02:00
|
|
|
ALOGD("getDefaultImpl");
|
2025-04-01 22:57:03 +02:00
|
|
|
return IEffect::default_impl;
|
|
|
|
}
|
|
|
|
std::shared_ptr<IEffect> IEffect::default_impl = nullptr;
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::open(const ::aidl::android::hardware::audio::effect::Parameter::Common& /*in_common*/, const std::optional<::aidl::android::hardware::audio::effect::Parameter::Specific>& /*in_specific*/, ::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn* /*_aidl_return*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::close() {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::getDescriptor(::aidl::android::hardware::audio::effect::Descriptor* /*_aidl_return*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::command(::aidl::android::hardware::audio::effect::CommandId /*in_commandId*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::getState(::aidl::android::hardware::audio::effect::State* /*_aidl_return*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::setParameter(const ::aidl::android::hardware::audio::effect::Parameter& /*in_param*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::getParameter(const ::aidl::android::hardware::audio::effect::Parameter::Id& /*in_paramId*/, ::aidl::android::hardware::audio::effect::Parameter* /*_aidl_return*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::ScopedAStatus IEffectDefault::reopen(::aidl::android::hardware::audio::effect::IEffect::OpenEffectReturn* /*_aidl_return*/) {
|
|
|
|
::ndk::ScopedAStatus _aidl_status;
|
|
|
|
_aidl_status.set(AStatus_fromStatus(STATUS_UNKNOWN_TRANSACTION));
|
|
|
|
return _aidl_status;
|
|
|
|
}
|
|
|
|
::ndk::SpAIBinder IEffectDefault::asBinder() {
|
|
|
|
return ::ndk::SpAIBinder();
|
|
|
|
}
|
|
|
|
bool IEffectDefault::isRemote() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
} // namespace effect
|
|
|
|
} // namespace audio
|
|
|
|
} // namespace hardware
|
|
|
|
} // namespace android
|
|
|
|
} // namespace aidl
|
|
|
|
namespace aidl {
|
|
|
|
namespace android {
|
|
|
|
namespace hardware {
|
|
|
|
namespace audio {
|
|
|
|
namespace effect {
|
|
|
|
const char* IEffect::Status::descriptor = "android.hardware.audio.effect.IEffect.Status";
|
|
|
|
|
|
|
|
binder_status_t IEffect::Status::readFromParcel(const AParcel* _aidl_parcel) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
int32_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel);
|
|
|
|
int32_t _aidl_parcelable_size = 0;
|
|
|
|
_aidl_ret_status = AParcel_readInt32(_aidl_parcel, &_aidl_parcelable_size);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
if (_aidl_parcelable_size < 4) return STATUS_BAD_VALUE;
|
|
|
|
if (_aidl_start_pos > INT32_MAX - _aidl_parcelable_size) return STATUS_BAD_VALUE;
|
|
|
|
if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) {
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &status);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) {
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &fmqConsumed);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) {
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &fmqProduced);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
binder_status_t IEffect::Status::writeToParcel(AParcel* _aidl_parcel) const {
|
|
|
|
binder_status_t _aidl_ret_status;
|
|
|
|
size_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel);
|
|
|
|
_aidl_ret_status = AParcel_writeInt32(_aidl_parcel, 0);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, status);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, fmqConsumed);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, fmqProduced);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
size_t _aidl_end_pos = AParcel_getDataPosition(_aidl_parcel);
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos);
|
|
|
|
AParcel_writeInt32(_aidl_parcel, _aidl_end_pos - _aidl_start_pos);
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_end_pos);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace effect
|
|
|
|
} // namespace audio
|
|
|
|
} // namespace hardware
|
|
|
|
} // namespace android
|
|
|
|
} // namespace aidl
|
|
|
|
namespace aidl {
|
|
|
|
namespace android {
|
|
|
|
namespace hardware {
|
|
|
|
namespace audio {
|
|
|
|
namespace effect {
|
|
|
|
const char* IEffect::OpenEffectReturn::descriptor = "android.hardware.audio.effect.IEffect.OpenEffectReturn";
|
|
|
|
|
|
|
|
binder_status_t IEffect::OpenEffectReturn::readFromParcel(const AParcel* _aidl_parcel) {
|
|
|
|
binder_status_t _aidl_ret_status = STATUS_OK;
|
|
|
|
int32_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel);
|
|
|
|
int32_t _aidl_parcelable_size = 0;
|
|
|
|
_aidl_ret_status = AParcel_readInt32(_aidl_parcel, &_aidl_parcelable_size);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
if (_aidl_parcelable_size < 4) return STATUS_BAD_VALUE;
|
|
|
|
if (_aidl_start_pos > INT32_MAX - _aidl_parcelable_size) return STATUS_BAD_VALUE;
|
|
|
|
if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) {
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &statusMQ);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) {
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &inputDataMQ);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) {
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &outputDataMQ);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
binder_status_t IEffect::OpenEffectReturn::writeToParcel(AParcel* _aidl_parcel) const {
|
|
|
|
binder_status_t _aidl_ret_status;
|
|
|
|
size_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel);
|
|
|
|
_aidl_ret_status = AParcel_writeInt32(_aidl_parcel, 0);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, statusMQ);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, inputDataMQ);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
_aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, outputDataMQ);
|
|
|
|
if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status;
|
|
|
|
|
|
|
|
size_t _aidl_end_pos = AParcel_getDataPosition(_aidl_parcel);
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos);
|
|
|
|
AParcel_writeInt32(_aidl_parcel, _aidl_end_pos - _aidl_start_pos);
|
|
|
|
AParcel_setDataPosition(_aidl_parcel, _aidl_end_pos);
|
|
|
|
return _aidl_ret_status;
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace effect
|
|
|
|
} // namespace audio
|
|
|
|
} // namespace hardware
|
|
|
|
} // namespace android
|
|
|
|
} // namespace aidl
|