remove duplicate aidls and blobs
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
ifneq ($(AUDIO_USE_STUB_HAL), true)
|
||||
include $(call all-subdir-makefiles)
|
||||
endif
|
@@ -1,180 +0,0 @@
|
||||
Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
* Neither the name of The Linux Foundation nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
___________________________________________________________
|
||||
service/inc/agm_list.h:
|
||||
Copyright (C) 2008-2013 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.
|
||||
|
||||
plugins/tinyalsa/test/agmcap.c and plugins/tinyalsa/test/agmplay.c:
|
||||
|
||||
Copyright 2011, The Android Open Source Project
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of The Android Open Source Project nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY The Android Open Source Project ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL The Android Open Source Project BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.
|
||||
_________________________________________________
|
||||
plugins/tinyalsa/test/agmcompressplay.c:
|
||||
|
||||
This file is provided under a dual BSD/LGPLv2.1 license. This code is used under the BSD license.
|
||||
|
||||
BSD LICENSE
|
||||
|
||||
tinyplay command line player for compress audio offload in alsa
|
||||
Copyright (c) 2011-2012, Intel Corporation
|
||||
All rights reserved.
|
||||
|
||||
Author: Vinod Koul <vkoul@kernel.org>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
Neither the name of Intel Corporation nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
LGPL LICENSE
|
||||
|
||||
tinyplay command line player for compress audio offload in alsa
|
||||
Copyright (c) 2011-2012, Intel Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU Lesser General Public License,
|
||||
version 2.1, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to
|
||||
the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
_________________________________________________
|
||||
plugins/tinyalsa/test/agmcompresscap.c:
|
||||
This file is provided under a dual BSD/LGPLv2.1 license. This code is used under the BSD license.
|
||||
|
||||
BSD LICENSE
|
||||
|
||||
crecord command line recorder for compress audio record in alsa
|
||||
Copyright (c) 2011-2012, Intel Corporation
|
||||
Copyright (c) 2013-2014, Wolfson Microelectronic Ltd.
|
||||
All rights reserved.
|
||||
|
||||
Author: Vinod Koul <vkoul@kernel.org>
|
||||
Author: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
Neither the name of Intel Corporation nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
LGPL LICENSE
|
||||
|
||||
crecord command line recorder for compress audio record in alsa
|
||||
Copyright (c) 2011-2012, Intel Corporation
|
||||
Copyright (c) 2013-2014, Wolfson Microelectronic Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms and conditions of the GNU Lesser General Public License,
|
||||
version 2.1, as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, write to
|
||||
the Free Software Foundation, Inc.,
|
||||
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
@@ -1,2 +0,0 @@
|
||||
# agm
|
||||
Audio Graph Manager
|
@@ -1,8 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
MY_LOCAL_PATH := $(call my-dir)
|
||||
ifeq ($(AUDIO_FEATURE_AGM_USES_SW_BINDER), true)
|
||||
include $(call all-makefiles-under, $(LOCAL_PATH)/SwBinders)
|
||||
else
|
||||
|
||||
include $(MY_LOCAL_PATH)/aidl/Android.mk
|
||||
endif
|
@@ -1,17 +0,0 @@
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = agmclient.pc
|
||||
EXTRA_DIST = $(pkgconfig_DATA)
|
||||
|
||||
AM_CPPFLAGS = -Wno-narrowing
|
||||
AM_CPPFLAGS += -I ${WORKSPACE}/vendor/qcom/opensource/agm/service/inc
|
||||
AM_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
|
||||
AM_CPPFLAGS += $(GLIB_CFLAGS) -Dstrlcpy=g_strlcpy -Dstrlcat=g_strlcat -include glib.h
|
||||
AM_CPPFLAGS += $(GIO_CFLAGS)
|
||||
|
||||
agmclient_sources = ${top_srcdir}/src/agm_client_wrapper_dbus.cpp
|
||||
|
||||
lib_LTLIBRARIES = libagmclientwrapper.la
|
||||
libagmclientwrapper_la_SOURCES = $(agmclient_sources)
|
||||
libagmclientwrapper_la_CPPFLAGS := $(AM_CPPFLAGS) $(DBUS_CFLAGS)
|
||||
libagmclientwrapper_la_LIBADD = -lglib-2.0 -lgobject-2.0 -lgio-2.0 -lar_osal
|
||||
libagmclientwrapper_la_LDFLAGS = -ldl -shared -avoid-version -lpthread -lrt $(DBUS_LIBS)
|
@@ -1,10 +0,0 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: agmclient
|
||||
Description: agmclient library
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir}
|
||||
Cflags: -I${includedir}/agm_client/
|
@@ -1,61 +0,0 @@
|
||||
# -*- Autoconf -*-
|
||||
# configure.ac -- Autoconf script for halinterface
|
||||
#
|
||||
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# Requires autoconf tool later than 2.61
|
||||
AC_PREREQ([2.69])
|
||||
# Initialize the hal-interface package version 1.0.0
|
||||
AC_INIT(halinterface,1.0.0)
|
||||
# Does not strictly follow GNU Coding standards
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
# Disables auto rebuilding of configure, Makefile.ins
|
||||
#AM_MAINTAINER_MODE
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CXX
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
PKG_CHECK_MODULES([GIO], [gio-2.0])
|
||||
AC_SUBST([GIO_CFLAGS])
|
||||
AC_SUBST([GIO_LIBS])
|
||||
|
||||
AC_ARG_WITH([glib],
|
||||
AC_HELP_STRING([--with-glib],
|
||||
[enable glib, Build against glib. Use this when building for HLOS systems which use glib]))
|
||||
|
||||
if (test "x${with_glib}" = "xyes"); then
|
||||
PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes,
|
||||
AC_MSG_ERROR(GThread >= 2.16 is required))
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes,
|
||||
AC_MSG_ERROR(GLib >= 2.16 is required))
|
||||
GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
|
||||
GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
|
||||
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(USE_GLIB, test "x${with_glib}" = "xyes")
|
||||
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile\
|
||||
agmclient.pc
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,31 +0,0 @@
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = agmserver.pc
|
||||
EXTRA_DIST = $(pkgconfig_DATA)
|
||||
|
||||
h_sources = ${top_srcdir}/inc/agm-dbus-utils.h \
|
||||
${top_srcdir}/inc/agm_server_wrapper_dbus.h
|
||||
|
||||
AM_CPPFLAGS = -Wno-narrowing
|
||||
AM_CPPFLAGS += -I ${top_srcdir}/inc
|
||||
AM_CPPFLAGS += -I ${WORKSPACE}/vendor/qcom/opensource/agm/service/inc
|
||||
AM_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
|
||||
AM_CPPFLAGS += $(GLIB_CFLAGS) -Dstrlcpy=g_strlcpy -Dstrlcat=g_strlcat -include glib.h
|
||||
|
||||
library_include_HEADERS = $(h_sources)
|
||||
library_includedir = $(includedir)/agm
|
||||
|
||||
agmserver_sources = ${top_srcdir}/src/agm-dbus-utils.cpp \
|
||||
${top_srcdir}/src/agm_server_wrapper_dbus.cpp
|
||||
|
||||
lib_LTLIBRARIES = libagmserverwrapper.la
|
||||
libagmserverwrapper_la_SOURCES = $(agmserver_sources)
|
||||
libagmserverwrapper_la_CPPFLAGS := $(AM_CPPFLAGS) $(DBUS_CFLAGS)
|
||||
libagmserverwrapper_la_LIBADD = -lagm -laudio_log_utils -lar_osal
|
||||
libagmserverwrapper_la_LDFLAGS = -ldl -shared -avoid-version -lpthread -lar_osal $(DBUS_LIBS)
|
||||
|
||||
bin_PROGRAMS := agm_server
|
||||
|
||||
agm_server_SOURCES := ./src/agm-server-daemon.cpp
|
||||
agm_server_la_CPPFLAGS := $(AM_CPPFLAGS)
|
||||
agm_server_LDADD = libagmserverwrapper.la -laudio_log_utils -lar_osal -llog $(GLIB_LIBS)
|
||||
agm_server_la_LDFLAGS = -ldl -shared -avoid-version
|
@@ -1,10 +0,0 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: agmserver
|
||||
Description: agmserver library
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lagmserver
|
||||
Cflags: -I${includedir}/mm-audio/qti-agm-server
|
@@ -1,79 +0,0 @@
|
||||
# -*- Autoconf -*-
|
||||
# configure.ac -- Autoconf script for halinterface
|
||||
#
|
||||
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# Requires autoconf tool later than 2.61
|
||||
AC_PREREQ([2.69])
|
||||
# Initialize the hal-interface package version 1.0.0
|
||||
AC_INIT(halinterface,1.0.0)
|
||||
# Does not strictly follow GNU Coding standards
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
# Disables auto rebuilding of configure, Makefile.ins
|
||||
#AM_MAINTAINER_MODE
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CXX
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_ARG_WITH([glib],
|
||||
AC_HELP_STRING([--with-glib],
|
||||
[enable glib, Build against glib. Use this when building for HLOS systems which use glib]))
|
||||
|
||||
if (test "x${with_glib}" = "xyes"); then
|
||||
PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes,
|
||||
AC_MSG_ERROR(GThread >= 2.16 is required))
|
||||
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes,
|
||||
AC_MSG_ERROR(GLib >= 2.16 is required))
|
||||
GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS"
|
||||
GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS"
|
||||
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(USE_GLIB, test "x${with_glib}" = "xyes")
|
||||
|
||||
AC_ARG_ENABLE([dbus],
|
||||
AS_HELP_STRING([--disable-dbus],[Disable optional D-Bus support]))
|
||||
|
||||
AS_IF([test "x$enable_dbus" != "xno"],
|
||||
[PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.4.12 ], HAVE_DBUS=1, HAVE_DBUS=0)],
|
||||
HAVE_DBUS=0)
|
||||
|
||||
AS_IF([test "x$enable_dbus" = "xyes" && test "x$HAVE_DBUS" = "x0"],
|
||||
[AC_MSG_ERROR([*** D-Bus not available or too old version])])
|
||||
|
||||
AS_IF([test "x$HAVE_DBUS" = "x1"],
|
||||
[
|
||||
save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS $DBUS_CFLAGS"
|
||||
save_LIBS="$LIBS"; LIBS="$LIBS $DBUS_LIBS"
|
||||
AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
|
||||
CFLAGS="$save_CFLAGS"
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
|
||||
AC_SUBST(HAVE_DBUS)
|
||||
AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
|
||||
AS_IF([test "x$HAVE_DBUS" = "x1"], AC_DEFINE([HAVE_DBUS], 1, [Have D-Bus.]))
|
||||
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile \
|
||||
agmserver.pc
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
@@ -1,103 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#include <dbus/dbus.h>
|
||||
#include <glib.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
typedef void (*agm_dbus_receive_cb_t)(DBusConnection *conn,
|
||||
DBusMessage *msg,
|
||||
void *userdata);
|
||||
|
||||
typedef struct {
|
||||
const char *method_name;
|
||||
const char *method_signature;
|
||||
agm_dbus_receive_cb_t cb_func;
|
||||
} agm_dbus_method;
|
||||
|
||||
typedef struct {
|
||||
const char *method_name;
|
||||
const char *method_signature;
|
||||
} agm_dbus_signal;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
agm_dbus_method *methods;
|
||||
int method_count;
|
||||
agm_dbus_signal *signals;
|
||||
int signal_count;
|
||||
} agm_dbus_interface_info;
|
||||
|
||||
typedef struct {
|
||||
DBusConnection *conn;
|
||||
guint watch_id;
|
||||
int watch_fd;
|
||||
DBusWatch *watch;
|
||||
} agm_dbus_watch_data;
|
||||
|
||||
typedef struct {
|
||||
DBusConnection *conn;
|
||||
guint timeout_id;
|
||||
DBusTimeout *timeout;
|
||||
} agm_dbus_timeout_data;
|
||||
|
||||
typedef struct {
|
||||
DBusConnection *conn;
|
||||
GHashTable *objects;
|
||||
} agm_dbus_connection;
|
||||
|
||||
/* Creates a new agm_dbus_connection object and returns it */
|
||||
agm_dbus_connection *agm_dbus_new_connection();
|
||||
|
||||
/* Frees agm_dbus_connection object */
|
||||
void agm_dbus_connection_free(agm_dbus_connection *conn);
|
||||
|
||||
/* Registers dbus interface with the object */
|
||||
int agm_dbus_add_interface(agm_dbus_connection *conn,
|
||||
const char *dbus_obj_path,
|
||||
agm_dbus_interface_info *interface_info,
|
||||
void *userdata);
|
||||
|
||||
/* Removes dbus interface from the object */
|
||||
int agm_dbus_remove_interface(agm_dbus_connection *conn,
|
||||
const char *dbus_obj_path,
|
||||
const char *interface);
|
||||
|
||||
/* Sends error to dbus client */
|
||||
void agm_dbus_send_error(agm_dbus_connection *conn,
|
||||
DBusMessage *msg,
|
||||
char *dbus_error,
|
||||
char *error);
|
||||
|
||||
/* Sends a signal to dbus client */
|
||||
void agm_dbus_send_signal(agm_dbus_connection *conn, DBusMessage *msg);
|
||||
|
||||
/* Sets the watch and timeout functions of a DBusConnection to integrate the
|
||||
connection. Returns 0 on success */
|
||||
int agm_setup_dbus_with_main_loop(agm_dbus_connection *conn);
|
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
int ipc_agm_init();
|
||||
void ipc_agm_deinit();
|
@@ -1,677 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
/*
|
||||
** Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
** Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted (subject to the limitations in the
|
||||
** disclaimer below) provided that the following conditions are met:
|
||||
**
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
**
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
**
|
||||
** * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||
** GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||
** HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
** IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
** GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
** IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
** OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_dbus_utils"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#include "agm-dbus-utils.h"
|
||||
#include "utils.h"
|
||||
|
||||
#define DISPATCH_TIMEOUT 0
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
GHashTable *methods; /* Key -> method_name Value -> agm_dbus_method */
|
||||
GHashTable *signals; /* Key -> method_name Value -> agm_dbus_signal */
|
||||
void *userdata;
|
||||
} agm_dbus_interface;
|
||||
|
||||
typedef struct {
|
||||
const char *obj_path;
|
||||
GHashTable *interfaces; /* Key -> interface name Value -> agm_dbus_interface */
|
||||
} agm_dbus_object;
|
||||
|
||||
static DBusHandlerResult server_message_handler(DBusConnection *connection,
|
||||
DBusMessage *message,
|
||||
void *userdata) {
|
||||
DBusHandlerResult result;
|
||||
DBusMessage *reply = NULL;
|
||||
DBusError err;
|
||||
agm_dbus_connection *conn = (agm_dbus_connection *)userdata;
|
||||
const char *dbus_obj_path = NULL;
|
||||
const char *dbus_interface = NULL;
|
||||
const char *dbus_method = NULL;
|
||||
agm_dbus_object *object = NULL;
|
||||
agm_dbus_interface *interface = NULL;
|
||||
agm_dbus_method *method = NULL;
|
||||
|
||||
if (dbus_message_get_type(message) != DBUS_MESSAGE_TYPE_METHOD_CALL)
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
|
||||
dbus_interface = dbus_message_get_interface(message);
|
||||
dbus_method = dbus_message_get_member(message);
|
||||
dbus_obj_path = dbus_message_get_path(message);
|
||||
|
||||
if ((object = (agm_dbus_object *)g_hash_table_lookup
|
||||
(conn->objects, dbus_obj_path)) == NULL) {
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
} else {
|
||||
if ((interface = (agm_dbus_interface *)
|
||||
g_hash_table_lookup(object->interfaces, dbus_interface)) == NULL) {
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
} else {
|
||||
if ((method = (agm_dbus_method *)
|
||||
g_hash_table_lookup(interface->methods, dbus_method)) == NULL) {
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
} else {
|
||||
method->cb_func(connection, message, interface->userdata);
|
||||
return DBUS_HANDLER_RESULT_HANDLED;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static DBusObjectPathVTable vtable = {
|
||||
.unregister_function = NULL,
|
||||
.message_function = server_message_handler,
|
||||
.dbus_internal_pad1 = NULL,
|
||||
.dbus_internal_pad2 = NULL,
|
||||
.dbus_internal_pad3 = NULL,
|
||||
.dbus_internal_pad4 = NULL
|
||||
};
|
||||
|
||||
static void agm_handle_dispatch_status(DBusConnection *conn,
|
||||
DBusDispatchStatus status,
|
||||
void *userdata) {
|
||||
if (status == DBUS_DISPATCH_DATA_REMAINS) {
|
||||
while (dbus_connection_get_dispatch_status(conn) ==
|
||||
DBUS_DISPATCH_DATA_REMAINS)
|
||||
dbus_connection_dispatch(conn);
|
||||
}
|
||||
}
|
||||
|
||||
static void dispatch_status(DBusConnection *conn,
|
||||
DBusDispatchStatus status,
|
||||
void *userdata)
|
||||
{
|
||||
if (!dbus_connection_get_is_connected(conn))
|
||||
return;
|
||||
|
||||
agm_handle_dispatch_status(conn, status, userdata);
|
||||
}
|
||||
|
||||
static void agm_free_dbus_watch_data(void *userdata) {
|
||||
agm_dbus_watch_data *watch_data = (agm_dbus_watch_data *)userdata;
|
||||
|
||||
if (watch_data == NULL) {
|
||||
AGM_LOGD("%s: Watch data is NULL\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (watch_data->watch_id > 0) {
|
||||
g_source_remove(watch_data->watch_id);
|
||||
watch_data->watch_id = 0;
|
||||
}
|
||||
|
||||
if (watch_data->conn)
|
||||
dbus_connection_unref(watch_data->conn);
|
||||
|
||||
if (watch_data)
|
||||
free(watch_data);
|
||||
}
|
||||
|
||||
static void agm_remove_dbus_watch_cb(DBusWatch *watch, void *userdata) {
|
||||
if (dbus_watch_get_enabled(watch))
|
||||
return;
|
||||
|
||||
/* Triggers agm_free_dbus_watch_data which is set in agm_add_dbus_watch_cb*/
|
||||
dbus_watch_set_data(watch, NULL, NULL);
|
||||
}
|
||||
|
||||
static gboolean agm_cond_watch_cb(GIOChannel *channel,
|
||||
GIOCondition io_condition,
|
||||
gpointer userdata) {
|
||||
agm_dbus_watch_data *watch_data = (agm_dbus_watch_data *)userdata;
|
||||
unsigned int flags = 0;
|
||||
|
||||
flags |= (io_condition & G_IO_IN ? DBUS_WATCH_READABLE : 0) |
|
||||
(io_condition & G_IO_OUT ? DBUS_WATCH_WRITABLE : 0) |
|
||||
(io_condition & G_IO_HUP ? DBUS_WATCH_HANGUP : 0) |
|
||||
(io_condition & G_IO_ERR ? DBUS_WATCH_ERROR : 0);
|
||||
|
||||
/* Notifies the D-Bus library when a previously-added watch is ready for
|
||||
reading or writing or has an exception */
|
||||
if (dbus_watch_handle(watch_data->watch, flags) == false)
|
||||
AGM_LOGE("dbus_watch_handle() failed\n");
|
||||
|
||||
agm_handle_dispatch_status(watch_data->conn,
|
||||
dbus_connection_get_dispatch_status(watch_data->conn),
|
||||
(void *)userdata);
|
||||
return true;
|
||||
}
|
||||
|
||||
static dbus_bool_t agm_add_dbus_watch_cb(DBusWatch *watch, void *userdata) {
|
||||
agm_dbus_connection *conn = (agm_dbus_connection *) userdata;
|
||||
agm_dbus_watch_data *watch_data = NULL;
|
||||
dbus_bool_t status;
|
||||
GIOChannel *channel;
|
||||
int watch_fd;
|
||||
unsigned int watch_flags;
|
||||
GIOCondition io_condition;
|
||||
|
||||
if (conn->conn == NULL) {
|
||||
AGM_LOGE("%s: Connection is NULL\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
status = dbus_watch_get_enabled(watch);
|
||||
|
||||
if (!status)
|
||||
return true;
|
||||
|
||||
watch_data = (agm_dbus_watch_data *)calloc(1, sizeof(agm_dbus_watch_data));
|
||||
|
||||
if (watch_data == NULL) {
|
||||
AGM_LOGE("%s: Couldn't allocate memory for watch_data\n", __func__);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Gets unix file descriptor for DBusWatch object we want to watch */
|
||||
watch_data->watch_fd = dbus_watch_get_unix_fd(watch);
|
||||
/* Creates a new GIOChannel given a file descriptor */
|
||||
channel = g_io_channel_unix_new(watch_data->watch_fd);
|
||||
watch_data->watch = watch;
|
||||
watch_data->conn = dbus_connection_ref(conn->conn);
|
||||
|
||||
/* Sets data which can be retrieved with dbus_watch_get_data() */
|
||||
dbus_watch_set_data(watch_data->watch, watch_data, agm_free_dbus_watch_data);
|
||||
/* Dbus flags indicating the conditions to be monitored on the dbus watch */
|
||||
watch_flags = dbus_watch_get_flags(watch_data->watch);
|
||||
|
||||
if (watch_flags & DBUS_WATCH_READABLE) {
|
||||
io_condition = G_IO_IN;
|
||||
io_condition = (GIOCondition)(io_condition | (G_IO_HUP | G_IO_ERR));
|
||||
} else if (watch_flags & DBUS_WATCH_WRITABLE) {
|
||||
io_condition = G_IO_OUT;
|
||||
io_condition = (GIOCondition) (io_condition | (G_IO_HUP | G_IO_ERR));
|
||||
} else {
|
||||
io_condition = (GIOCondition) (G_IO_HUP | G_IO_ERR);
|
||||
}
|
||||
|
||||
/* Adds IOChannel to default main loop and calls the provided function
|
||||
whenever condition is satisfied */
|
||||
watch_data->watch_id = g_io_add_watch_full(channel,
|
||||
G_PRIORITY_DEFAULT,
|
||||
io_condition,
|
||||
agm_cond_watch_cb,
|
||||
watch_data,
|
||||
agm_free_dbus_watch_data);
|
||||
g_io_channel_unref(channel);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void agm_toggle_dbus_watch_cb(DBusWatch *watch, void *userdata) {
|
||||
if (dbus_watch_get_enabled(watch))
|
||||
agm_add_dbus_watch_cb(watch, userdata);
|
||||
else
|
||||
agm_remove_dbus_watch_cb(watch, userdata);
|
||||
}
|
||||
|
||||
static void agm_free_dbus_timeout_data(void *userdata) {
|
||||
agm_dbus_timeout_data *timeout_data = (agm_dbus_timeout_data *)userdata;
|
||||
|
||||
if (timeout_data == NULL) {
|
||||
AGM_LOGE("%s: Timeout data is NULL\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (timeout_data->timeout_id > 0) {
|
||||
/* Removes the source with the given ID from the default main context.*/
|
||||
g_source_remove(timeout_data->timeout_id);
|
||||
timeout_data->timeout_id = 0;
|
||||
}
|
||||
|
||||
dbus_connection_unref(timeout_data->conn);
|
||||
free(timeout_data);
|
||||
}
|
||||
|
||||
static gboolean agm_timeout_dispatch_cb(gpointer userdata) {
|
||||
agm_dbus_timeout_data *timeout_data = (agm_dbus_timeout_data *)userdata;
|
||||
|
||||
timeout_data->timeout_id = 0;
|
||||
|
||||
/* if not enabled should not be polled by the main loop */
|
||||
if (!dbus_timeout_get_enabled(timeout_data->timeout))
|
||||
return FALSE;
|
||||
|
||||
dbus_timeout_handle(timeout_data->timeout);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void agm_remove_dbus_timeout_cb(DBusTimeout *timeout, void *userdata) {
|
||||
/* This will trigger agm_free_dbus_timeout_data() */
|
||||
dbus_timeout_set_data(timeout, NULL, NULL);
|
||||
}
|
||||
|
||||
static dbus_bool_t agm_add_dbus_timeout_cb(DBusTimeout *timeout,
|
||||
void *userdata) {
|
||||
int interval;
|
||||
agm_dbus_connection *conn = (agm_dbus_connection *) userdata;
|
||||
agm_dbus_timeout_data *timeout_data = NULL;
|
||||
dbus_bool_t status;
|
||||
|
||||
if (conn->conn == NULL) {
|
||||
AGM_LOGE("%s: Connection is NULL\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
status = dbus_timeout_get_enabled(timeout);
|
||||
|
||||
if (!status)
|
||||
return true;
|
||||
|
||||
timeout_data = (agm_dbus_timeout_data *)
|
||||
calloc(1, sizeof(agm_dbus_timeout_data));
|
||||
|
||||
if (timeout_data == NULL) {
|
||||
AGM_LOGE("%s: Couldn't allocate memory for timeout_data\n", __func__);
|
||||
return false;
|
||||
}
|
||||
|
||||
interval = dbus_timeout_get_interval(timeout);
|
||||
timeout_data->conn = dbus_connection_ref(conn->conn);
|
||||
timeout_data->timeout = timeout;
|
||||
|
||||
/* Sets data which can be retrieved with dbus_timeout_get_data() */
|
||||
dbus_timeout_set_data(timeout_data->timeout,
|
||||
timeout_data,
|
||||
agm_free_dbus_timeout_data);
|
||||
/* Sets a function to be called at regular intervals
|
||||
with the given priority */
|
||||
timeout_data->timeout_id = g_timeout_add_full(G_PRIORITY_DEFAULT,
|
||||
interval,
|
||||
agm_timeout_dispatch_cb,
|
||||
timeout_data,
|
||||
agm_free_dbus_timeout_data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void agm_toggle_dbus_timeout_cb(DBusTimeout *timeout, void *userdata) {
|
||||
if (dbus_timeout_get_enabled(timeout))
|
||||
agm_add_dbus_timeout_cb(timeout, userdata);
|
||||
else
|
||||
agm_remove_dbus_timeout_cb(timeout, userdata);
|
||||
}
|
||||
|
||||
int agm_setup_dbus_with_main_loop(agm_dbus_connection *conn) {
|
||||
if (conn == NULL) {
|
||||
AGM_LOGE("%s: Connection object is NULL\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!dbus_connection_set_watch_functions(conn->conn,
|
||||
agm_add_dbus_watch_cb,
|
||||
agm_remove_dbus_watch_cb,
|
||||
agm_toggle_dbus_watch_cb,
|
||||
conn,
|
||||
NULL)) {
|
||||
AGM_LOGE("%s: dbus_connection_set_watch_functions failed\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!dbus_connection_set_timeout_functions(conn->conn,
|
||||
agm_add_dbus_timeout_cb,
|
||||
agm_remove_dbus_timeout_cb,
|
||||
agm_toggle_dbus_timeout_cb,
|
||||
conn,
|
||||
NULL)) {
|
||||
AGM_LOGE("%s: dbus_connection_set_timeout_functions failed\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
dbus_connection_set_dispatch_status_function(conn->conn,
|
||||
agm_handle_dispatch_status,
|
||||
conn,
|
||||
NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void unregister_object(agm_dbus_connection *conn,
|
||||
agm_dbus_object *object) {
|
||||
dbus_connection_unregister_object_path(conn->conn, object->obj_path);
|
||||
}
|
||||
|
||||
void agm_dbus_send_signal(agm_dbus_connection *conn, DBusMessage *signal_msg) {
|
||||
DBusMessage *signal_copy;
|
||||
|
||||
signal_copy = dbus_message_copy(signal_msg);
|
||||
dbus_connection_send(conn->conn, signal_copy, NULL);
|
||||
dbus_message_unref(signal_copy);
|
||||
}
|
||||
|
||||
void agm_dbus_send_error(agm_dbus_connection *conn,
|
||||
DBusMessage *msg,
|
||||
char *dbus_error,
|
||||
char *error) {
|
||||
DBusMessage *reply = NULL;
|
||||
|
||||
reply = dbus_message_new_error(msg, dbus_error, error);
|
||||
dbus_connection_send(conn->conn, reply, NULL);
|
||||
dbus_message_unref(reply);
|
||||
return;
|
||||
}
|
||||
|
||||
void agm_free_signal(gpointer data) {
|
||||
agm_dbus_signal *signal = (agm_dbus_signal *)data;
|
||||
|
||||
if(signal == NULL)
|
||||
return;
|
||||
|
||||
free(signal);
|
||||
signal = NULL;
|
||||
}
|
||||
|
||||
void agm_free_method(gpointer data) {
|
||||
agm_dbus_method *method = (agm_dbus_method *)data;
|
||||
|
||||
if(method == NULL)
|
||||
return;
|
||||
|
||||
free(method);
|
||||
method = NULL;
|
||||
}
|
||||
|
||||
|
||||
void agm_free_interface(gpointer data) {
|
||||
agm_dbus_interface *interface = (agm_dbus_interface *)data;
|
||||
|
||||
if(interface == NULL)
|
||||
return;
|
||||
|
||||
g_hash_table_remove_all(interface->methods);
|
||||
g_hash_table_unref(interface->methods);
|
||||
|
||||
g_hash_table_remove_all(interface->signals);
|
||||
g_hash_table_unref(interface->signals);
|
||||
|
||||
free(interface);
|
||||
interface = NULL;
|
||||
}
|
||||
|
||||
void agm_free_object(gpointer data) {
|
||||
agm_dbus_object *object = (agm_dbus_object *)data;
|
||||
|
||||
if(object == NULL)
|
||||
return;
|
||||
|
||||
g_hash_table_remove_all(object->interfaces);
|
||||
g_hash_table_unref(object->interfaces);
|
||||
|
||||
free(object);
|
||||
object = NULL;
|
||||
}
|
||||
|
||||
int agm_dbus_remove_interface(agm_dbus_connection *conn,
|
||||
const char *dbus_obj_path,
|
||||
const char *interface_path) {
|
||||
agm_dbus_object *object = NULL;
|
||||
agm_dbus_interface *interface = NULL;
|
||||
|
||||
if (conn == NULL || dbus_obj_path == NULL || interface_path == NULL)
|
||||
return -1;
|
||||
|
||||
if ((object = (agm_dbus_object *)
|
||||
g_hash_table_lookup(conn->objects, dbus_obj_path)) == NULL)
|
||||
return -1;
|
||||
|
||||
if ((interface = (agm_dbus_interface *)
|
||||
g_hash_table_lookup(object->interfaces, interface_path)) == NULL)
|
||||
return -1;
|
||||
|
||||
g_hash_table_remove(object->interfaces,interface_path);
|
||||
interface = NULL;
|
||||
|
||||
if (g_hash_table_size(object->interfaces) == 0) {
|
||||
unregister_object(conn, object);
|
||||
g_hash_table_remove(conn->objects, (void *)object->obj_path);
|
||||
object = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int agm_dbus_add_interface(agm_dbus_connection *conn,
|
||||
const char *dbus_obj_path,
|
||||
agm_dbus_interface_info *interface_info,
|
||||
void *userdata) {
|
||||
DBusError err;
|
||||
int i = 0;
|
||||
agm_dbus_object *object = NULL;
|
||||
agm_dbus_interface *interface = NULL;
|
||||
agm_dbus_method *method = NULL;
|
||||
agm_dbus_signal *signal = NULL;
|
||||
|
||||
if ((conn == NULL) || conn->conn == NULL || conn->objects == NULL) {
|
||||
AGM_LOGE("Connection not initialized\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (dbus_obj_path == NULL) {
|
||||
AGM_LOGE("Invalid object path\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (interface_info == NULL) {
|
||||
AGM_LOGE("Invalid interface\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dbus_error_init(&err);
|
||||
|
||||
if ((object = (agm_dbus_object *)
|
||||
g_hash_table_lookup(conn->objects, dbus_obj_path)) == NULL) {
|
||||
object = (agm_dbus_object *)malloc(sizeof(agm_dbus_object));
|
||||
object->obj_path = dbus_obj_path;
|
||||
object->interfaces = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
NULL,
|
||||
agm_free_interface);
|
||||
|
||||
interface = (agm_dbus_interface *)malloc(sizeof(agm_dbus_interface));
|
||||
interface->name = interface_info->name;
|
||||
interface->methods = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
NULL,
|
||||
agm_free_method);
|
||||
|
||||
for (i = 0; i < interface_info->method_count; i++) {
|
||||
method = (agm_dbus_method *)malloc(sizeof(agm_dbus_method));
|
||||
method->method_name = interface_info->methods[i].method_name;
|
||||
method->method_signature =
|
||||
interface_info->methods[i].method_signature;
|
||||
method->cb_func = interface_info->methods[i].cb_func;
|
||||
g_hash_table_insert(interface->methods,
|
||||
g_strdup(method->method_name),
|
||||
method);
|
||||
}
|
||||
|
||||
interface->signals = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
NULL,
|
||||
agm_free_signal);
|
||||
for (i = 0; i < interface_info->signal_count; i++) {
|
||||
signal = (agm_dbus_signal *)malloc(sizeof(agm_dbus_signal));
|
||||
signal->method_name = interface_info->signals[i].method_name;
|
||||
signal->method_signature =
|
||||
interface_info->signals[i].method_signature;
|
||||
g_hash_table_insert(interface->signals,
|
||||
g_strdup(signal->method_name),
|
||||
signal);
|
||||
}
|
||||
|
||||
interface->userdata = userdata;
|
||||
g_hash_table_insert(object->interfaces,
|
||||
g_strdup(interface->name),
|
||||
interface);
|
||||
|
||||
g_hash_table_insert(conn->objects, g_strdup(object->obj_path), object);
|
||||
if (!dbus_connection_register_object_path(conn->conn,
|
||||
dbus_obj_path,
|
||||
&vtable,
|
||||
conn)) {
|
||||
AGM_LOGE("Failed to register a object path for agm\n");
|
||||
dbus_error_free(&err);
|
||||
return -EINVAL;
|
||||
}
|
||||
AGM_LOGE("Registered object %s", dbus_obj_path);
|
||||
} else {
|
||||
if ((interface = (agm_dbus_interface *)
|
||||
g_hash_table_lookup(object->interfaces,
|
||||
interface_info->name)) == NULL) {
|
||||
interface = (agm_dbus_interface *)
|
||||
malloc(sizeof(agm_dbus_interface));
|
||||
interface->name = interface_info->name;
|
||||
interface->signals = NULL;
|
||||
interface->methods = NULL;
|
||||
if (interface_info->methods != NULL) {
|
||||
interface->methods = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
NULL,
|
||||
agm_free_method);
|
||||
|
||||
for (i = 0; i < interface_info->method_count; i++) {
|
||||
method = (agm_dbus_method *)malloc(sizeof(agm_dbus_method));
|
||||
method->method_name =
|
||||
interface_info->methods[i].method_name;
|
||||
method->method_signature =
|
||||
interface_info->methods[i].method_signature;
|
||||
method->cb_func = interface_info->methods[i].cb_func;
|
||||
g_hash_table_insert(interface->methods,
|
||||
g_strdup(method->method_name),
|
||||
method);
|
||||
}
|
||||
}
|
||||
|
||||
if (interface_info->signals != NULL) {
|
||||
interface->signals = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
NULL,
|
||||
agm_free_signal);
|
||||
for (i = 0; i < interface_info->signal_count; i++) {
|
||||
signal = (agm_dbus_signal *)malloc(sizeof(agm_dbus_signal));
|
||||
signal->method_name =
|
||||
interface_info->signals[i].method_name;
|
||||
signal->method_signature =
|
||||
interface_info->signals[i].method_signature;
|
||||
g_hash_table_insert(interface->signals,
|
||||
g_strdup(signal->method_name),
|
||||
signal);
|
||||
}
|
||||
}
|
||||
|
||||
interface->userdata = userdata;
|
||||
g_hash_table_insert(object->interfaces,
|
||||
g_strdup(interface->name),
|
||||
interface);
|
||||
}
|
||||
}
|
||||
|
||||
dbus_error_free(&err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void agm_dbus_connection_free(agm_dbus_connection *conn) {
|
||||
if (conn == NULL) {
|
||||
AGM_LOGE("Connection is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
g_hash_table_remove_all(conn->objects);
|
||||
g_hash_table_unref(conn->objects);
|
||||
|
||||
free(conn);
|
||||
conn = NULL;
|
||||
}
|
||||
|
||||
agm_dbus_connection *agm_dbus_new_connection() {
|
||||
int rc = 0;
|
||||
DBusError err;
|
||||
agm_dbus_connection *conn = NULL;
|
||||
|
||||
conn = (agm_dbus_connection *)malloc(sizeof(agm_dbus_connection));
|
||||
conn->objects = NULL;
|
||||
|
||||
dbus_error_init(&err);
|
||||
conn->conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
|
||||
|
||||
if (conn->conn == NULL) {
|
||||
AGM_LOGE("Failed to request name on bus: %s\n", err.message);
|
||||
free(conn);
|
||||
dbus_error_free(&err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
conn->objects = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
NULL,
|
||||
agm_free_object);
|
||||
dbus_error_free(&err);
|
||||
return conn;
|
||||
}
|
@@ -1,111 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
/*
|
||||
** Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
** Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted (subject to the limitations in the
|
||||
** disclaimer below) provided that the following conditions are met:
|
||||
**
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
**
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
**
|
||||
** * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||
** GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||
** HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
** IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
** GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
** IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
** OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_server_daemon"
|
||||
|
||||
#include <glib.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "agm_server_wrapper_dbus.h"
|
||||
#include <utils.h>
|
||||
|
||||
GMainLoop *mainloop = NULL;
|
||||
|
||||
void signal_handler(int sig) {
|
||||
switch (sig) {
|
||||
case SIGINT:
|
||||
case SIGTERM:
|
||||
case SIGABRT:
|
||||
case SIGQUIT:
|
||||
case SIGKILL:
|
||||
default:
|
||||
AGM_LOGE("Terminating signal received\n");
|
||||
ipc_agm_deinit();
|
||||
g_main_loop_quit(mainloop);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int rc = 0;
|
||||
mainloop = g_main_loop_new(NULL, false);
|
||||
|
||||
rc = ipc_agm_init();
|
||||
if (rc != 0) {
|
||||
AGM_LOGE("AGM init failed\n");
|
||||
return rc;
|
||||
}
|
||||
|
||||
AGM_LOGD("agm init done\n");
|
||||
|
||||
signal(SIGINT, signal_handler);
|
||||
signal(SIGTERM, signal_handler);
|
||||
signal(SIGQUIT, signal_handler);
|
||||
signal(SIGKILL, signal_handler);
|
||||
signal(SIGABRT, signal_handler);
|
||||
|
||||
g_main_loop_run(mainloop);
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -1,2 +0,0 @@
|
||||
# IPC
|
||||
IPC Binders implememtations
|
@@ -1,25 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := agmclient
|
||||
LOCAL_SRC_FILES := agm_client_wrapper.cpp
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
liblog \
|
||||
libcutils \
|
||||
libdl \
|
||||
libbinder \
|
||||
libutils \
|
||||
libagmproxy
|
||||
|
||||
LOCAL_CFLAGS += -Wall
|
||||
|
||||
ifeq ($(strip $(AUDIO_FEATURE_ENABLED_DYNAMIC_LOG)), true)
|
||||
LOCAL_CFLAGS += -DDYNAMIC_LOG_ENABLED
|
||||
LOCAL_C_INCLUDES += $(TOP)/external/expat/lib/expat.h
|
||||
LOCAL_SHARED_LIBRARIES += libaudio_log_utils
|
||||
LOCAL_SHARED_LIBRARIES += libexpat
|
||||
LOCAL_HEADER_LIBRARIES += libaudiologutils_headers
|
||||
endif
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
@@ -1,9 +0,0 @@
|
||||
|
||||
AM_CPPFLAGS := -I $(top_srcdir) -I $(PKG_CONFIG_SYSROOT_DIR)/usr/include/agm/
|
||||
AM_CPPFLAGS += -DDYNAMIC_LOG_ENABLED
|
||||
lib_LTLIBRARIES = libagmclientwrapper.la
|
||||
libagmclientwrapper_ladir = $(libdir)
|
||||
libagmclientwrapper_la_SOURCES = src/agm_client_wrapper.cpp
|
||||
libagmclientwrapper_la_CPPFLAGS := $(AM_CPPFLAGS)
|
||||
libagmclientwrapper_la_LDFLAGS = -lcutils -llog -ldl -lbinder -shared -avoid-version -lutils -lrt
|
||||
libagmclientwrapper_la_LIBADD = -lagmproxy -laudio_log_utils
|
@@ -1,10 +0,0 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: agmclient
|
||||
Description: agmclient library
|
||||
Version: @VERSION@
|
||||
Libs: -L${libdir} -lagmproxy
|
||||
Cflags: -I${includedir}/agm_client/
|
@@ -1,41 +0,0 @@
|
||||
# -*- Autoconf -*-
|
||||
# configure.ac -- Autoconf script for halinterface
|
||||
#
|
||||
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# Requires autoconf tool later than 2.61
|
||||
AC_PREREQ([2.69])
|
||||
# Initialize the hal-interface package version 1.0.0
|
||||
AC_INIT(halinterface,1.0.0)
|
||||
# Does not strictly follow GNU Coding standards
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
# Disables auto rebuilding of configure, Makefile.ins
|
||||
#AM_MAINTAINER_MODE
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
PKG_CHECK_MODULES([AGMSERVER], [agmserver])
|
||||
AC_SUBST([AGMSERVER_CFLAGS])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CXX
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile\
|
||||
agmclient.pc
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
@@ -1,523 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
* Copyright (c) 2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted (subject to the limitations in the
|
||||
* disclaimer below) provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
*
|
||||
* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_client_wrapper"
|
||||
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IBinder.h>
|
||||
#include <log/log.h>
|
||||
#include <utils/Log.h>
|
||||
#ifdef FEATURE_IPQ_OPENWRT
|
||||
#include <ipc_interface.h>
|
||||
#include <agm_death_notifier.h>
|
||||
#else
|
||||
#include <qti-agm-service/ipc_interface.h>
|
||||
#include <qti-agm-service/agm_death_notifier.h>
|
||||
#endif
|
||||
#include <agm/agm_api.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/shm.h>
|
||||
#include <sys/stat.h>
|
||||
#include <utils/RefBase.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <pthread.h>
|
||||
#include "utils.h"
|
||||
#ifdef DYNAMIC_LOG_ENABLED
|
||||
#include <log_xml_parser.h>
|
||||
#define LOG_MASK AGM_MOD_FILE_AGM_CLIENT_WRAPPER
|
||||
#include <log_utils.h>
|
||||
#endif
|
||||
|
||||
using namespace android;
|
||||
|
||||
sp<server_death_notifier> Server_death_notifier = NULL;
|
||||
sp<IAgmService> agm_client = NULL;
|
||||
bool agm_server_died = false;
|
||||
|
||||
|
||||
android::sp<IAgmService> get_agm_server()
|
||||
{
|
||||
if (agm_client == 0) {
|
||||
AGM_LOGD("Agm client initialized\n");
|
||||
android:: sp<android::IBinder> binder =
|
||||
android::defaultServiceManager()->getService(android::String16("AgmService"));
|
||||
agm_client = android::interface_cast<IAgmService>(binder);
|
||||
AGM_LOGV("got service handle\n");
|
||||
if (Server_death_notifier == NULL) {
|
||||
Server_death_notifier = new server_death_notifier();
|
||||
binder->linkToDeath(Server_death_notifier);
|
||||
AGM_LOGV("%s : server linked to death \n", __func__);
|
||||
}
|
||||
}
|
||||
return agm_client;
|
||||
}
|
||||
|
||||
server_death_notifier::server_death_notifier()
|
||||
{
|
||||
AGM_LOGV("%s\n", __func__);
|
||||
sp<ProcessState> proc(ProcessState::self());
|
||||
proc->startThreadPool();
|
||||
}
|
||||
|
||||
void server_death_notifier::binderDied(const wp<IBinder>& who __attribute__((unused)))
|
||||
{
|
||||
agm_server_died = true;
|
||||
AGM_LOGE("Agm server died !! and I am notified\n");
|
||||
//add further functionality
|
||||
}
|
||||
|
||||
int agm_register_service_crash_callback(agm_service_crash_cb cb, uint64_t cookie)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int agm_aif_set_media_config(uint32_t audio_intf,
|
||||
struct agm_media_config *media_config)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_audio_intf_set_media_config(audio_intf,
|
||||
media_config);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_set_config(uint64_t handle,
|
||||
struct agm_session_config *session_config,
|
||||
struct agm_media_config *media_config,
|
||||
struct agm_buffer_config *buffer_config)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_set_config(handle, session_config,
|
||||
media_config, buffer_config);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_init(){
|
||||
/*agm_init in IPC happens in context of the server*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
int agm_deinit(){
|
||||
/*agm_deinit in IPC happens in context of the server*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
int agm_aif_set_metadata(uint32_t audio_intf, uint32_t size, uint8_t *metadata){
|
||||
if(!agm_server_died)
|
||||
{
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_audio_intf_set_metadata(audio_intf, size,
|
||||
metadata);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_set_metadata(uint32_t session_id, uint32_t size,
|
||||
uint8_t *metadata){
|
||||
if(!agm_server_died)
|
||||
{
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_set_metadata(session_id, size,
|
||||
metadata);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_aif_set_metadata(uint32_t session_id, uint32_t audio_intf,
|
||||
uint32_t size, uint8_t *metadata){
|
||||
if(!agm_server_died)
|
||||
{
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_audio_inf_set_metadata(session_id,
|
||||
audio_intf, size, metadata);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_close(uint64_t handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_close(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_prepare(uint64_t handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_prepare(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_start(uint64_t handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_start(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_stop(uint64_t handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_stop(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_pause(uint64_t handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_pause(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_resume(uint64_t handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_resume(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_open(uint32_t session_id,
|
||||
enum agm_session_mode sess_mode,
|
||||
uint64_t *handle)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_open(session_id, sess_mode, handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_aif_connect(uint32_t session_id, uint32_t audio_intf,
|
||||
bool state)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_audio_inf_connect(session_id,
|
||||
audio_intf, state);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_read(uint64_t handle, void *buf, size_t *byte_count)
|
||||
{
|
||||
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
if (!handle)
|
||||
return -EINVAL;
|
||||
|
||||
return agm_client->ipc_agm_session_read(handle, buf, byte_count);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_write(uint64_t handle, void *buf, size_t *byte_count)
|
||||
{
|
||||
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
if (!handle)
|
||||
return -EINVAL;
|
||||
|
||||
return agm_client->ipc_agm_session_write(handle, buf, byte_count);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
|
||||
int agm_session_set_loopback(uint32_t capture_session_id,
|
||||
uint32_t playback_session_id, bool state)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_set_loopback(capture_session_id,
|
||||
playback_session_id, state);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
size_t agm_get_hw_processed_buff_cnt(uint64_t handle, enum direction dir)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_get_hw_processed_buff_cnt(handle, dir);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_get_aif_info_list(struct aif_info *aif_list, size_t *num_aif_info)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_get_aif_info_list(aif_list, num_aif_info);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_aif_get_tag_module_info(uint32_t session_id, uint32_t aif_id,
|
||||
void *payload, size_t *size)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_aif_get_tag_module_info(session_id,
|
||||
aif_id, payload, size);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_aif_set_params(uint32_t aif_id,void *payload, size_t size)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_aif_set_params(aif_id,
|
||||
payload, size);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_aif_set_params(uint32_t session_id, uint32_t aif_id,
|
||||
void *payload, size_t size)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_aif_set_params(session_id, aif_id,
|
||||
payload, size);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_set_params(uint32_t session_id, void *payload, size_t size)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_set_params(session_id, payload,
|
||||
size);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_set_params_with_tag(uint32_t session_id, uint32_t aif_id,
|
||||
struct agm_tag_config *tag_config)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_set_params_with_tag(session_id, aif_id,
|
||||
tag_config);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_register_for_events(uint32_t session_id,
|
||||
struct agm_event_reg_cfg *evt_reg_cfg)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_register_for_events(session_id,
|
||||
evt_reg_cfg);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
int agm_session_register_cb(uint32_t session_id, agm_event_cb cb,
|
||||
enum event_type event, void *client_data)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_register_cb(session_id, cb, event,
|
||||
client_data);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_set_ec_ref(uint32_t capture_session_id, uint32_t aif_id,
|
||||
bool state)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_set_ec_ref(capture_session_id,
|
||||
aif_id, state);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_aif_set_cal(uint32_t session_id, uint32_t audio_intf,
|
||||
struct agm_cal_config *cal_config)
|
||||
{
|
||||
if (!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_aif_set_cal(session_id, audio_intf,
|
||||
cal_config);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_eos(uint64_t handle)
|
||||
{
|
||||
if(!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_eos(handle);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_get_session_time(uint64_t handle, uint64_t *timestamp)
|
||||
{
|
||||
if(!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_get_session_time(handle, timestamp);
|
||||
}
|
||||
AGM_LOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_get_params(uint32_t session_id, void *payload, size_t size)
|
||||
{
|
||||
if(!agm_server_died)
|
||||
{
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_get_params(session_id, payload, size);
|
||||
}
|
||||
ALOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_get_buffer_timestamp(uint32_t session_id, uint64_t *timestamp)
|
||||
{
|
||||
if(!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_get_buffer_timestamp(session_id, timestamp);
|
||||
}
|
||||
ALOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_set_gapless_session_metadata(uint64_t handle,
|
||||
enum agm_gapless_silence_type type,
|
||||
uint32_t silence)
|
||||
{
|
||||
if(!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_set_gapless_session_metadata(handle, type,
|
||||
silence);
|
||||
}
|
||||
ALOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int agm_session_get_buf_info(uint32_t session_id, struct agm_buf_info *buf_info,
|
||||
uint32_t flag)
|
||||
{
|
||||
if(!agm_server_died) {
|
||||
android::sp<IAgmService> agm_client = get_agm_server();
|
||||
return agm_client->ipc_agm_session_get_buf_info(session_id, buf_info,
|
||||
flag);
|
||||
}
|
||||
ALOGE("%s: agm service is not running\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
@@ -1,43 +0,0 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_CFLAGS += -Wall
|
||||
LOCAL_SRC_FILES := ipc_proxy_server.cpp
|
||||
|
||||
LOCAL_C_INCLUDES += $(LOCAL_PATH)
|
||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
liblog \
|
||||
libcutils \
|
||||
libdl \
|
||||
libbinder \
|
||||
libutils
|
||||
|
||||
LOCAL_MODULE := libagmproxy
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := agmserver
|
||||
LOCAL_SRC_FILES := \
|
||||
agm_server_daemon.cpp \
|
||||
agm_server_wrapper.cpp
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
liblog \
|
||||
libcutils \
|
||||
libdl \
|
||||
libbinder \
|
||||
libutils \
|
||||
libagmproxy
|
||||
|
||||
ifeq ($(strip $(AUDIO_FEATURE_ENABLED_DYNAMIC_LOG)), true)
|
||||
LOCAL_CFLAGS += -DDYNAMIC_LOG_ENABLED
|
||||
LOCAL_C_INCLUDES += $(TOP)/external/expat/lib/expat.h
|
||||
LOCAL_SHARED_LIBRARIES += libaudio_log_utils
|
||||
LOCAL_SHARED_LIBRARIES += libexpat
|
||||
LOCAL_HEADER_LIBRARIES += libaudiologutils_headers
|
||||
endif
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
@@ -1,36 +0,0 @@
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = agmserver.pc
|
||||
EXTRA_DIST = $(pkgconfig_DATA)
|
||||
|
||||
h_sources = $(top_srcdir)/inc/ipc_interface.h
|
||||
h_sources += $(top_srcdir)/inc/agm_death_notifier.h
|
||||
h_sources += $(top_srcdir)/inc/agm_callback.h
|
||||
|
||||
AM_CPPFLAGS := -I $(top_srcdir) -I $(PKG_CONFIG_SYSROOT_DIR)/usr/include/agm/\
|
||||
-I $(PKG_CONFIG_SYSROOT_DIR)/usr/include/qti-agm-service\
|
||||
-I ${top_srcdir}/inc
|
||||
|
||||
AM_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
|
||||
AM_CPPFLAGS += -DDYNAMIC_LOG_ENABLED
|
||||
library_include_HEADERS = $(h_sources)
|
||||
library_includedir = $(includedir)/qti-agm-service/
|
||||
|
||||
lib_LTLIBRARIES = libagmserverwrapper.la
|
||||
libagmserverwrapper_la_SOURCES = ${top_srcdir}/src/agm_death_notifier.cpp ${top_srcdir}/src/agm_server_wrapper.cpp ${top_srcdir}/src/agm_callback.cpp
|
||||
|
||||
libagmserverwrapper_la_CPPFLAGS := $(AM_CPPFLAGS)
|
||||
libagmserverwrapper_la_LIBADD = -lagm -laudio_log_utils
|
||||
libagmserverwrapper_la_LDFLAGS = -lcutils -llog -ldl -lbinder -shared -avoid-version -lutils -lpthread
|
||||
|
||||
lib_LTLIBRARIES += libagmproxy.la
|
||||
libagmproxy_la_SOURCES = ${top_srcdir}/src/ipc_proxy_server.cpp
|
||||
libagmproxy_la_CPPFLAGS := $(AM_CPPFLAGS)
|
||||
libagmproxy_la_LIBADD = libagmserverwrapper.la
|
||||
libagmproxy_la_LDFLAGS = -lcutils -llog -ldl -lbinder -shared -avoid-version -lutils -lpthread
|
||||
|
||||
bin_PROGRAMS := agm_server
|
||||
agm_server_SOURCES := ${top_srcdir}/src/agm_server_daemon.cpp
|
||||
|
||||
agmserver_la_CPPFLAGS := $(AM_CPPFLAGS)
|
||||
agm_server_LDADD := libagmproxy.la -laudio_log_utils
|
||||
agmserver_la_LDFLAGS = -lcutils -llog -ldl -lbinder -shared -avoid-version -lutils
|
@@ -1,8 +0,0 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: agmserver
|
||||
Description: agmserver library
|
||||
Version: @VERSION@
|
@@ -1,37 +0,0 @@
|
||||
# -*- Autoconf -*-
|
||||
# configure.ac -- Autoconf script for halinterface
|
||||
#
|
||||
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# Requires autoconf tool later than 2.61
|
||||
AC_PREREQ([2.69])
|
||||
# Initialize the hal-interface package version 1.0.0
|
||||
AC_INIT(halinterface,1.0.0)
|
||||
# Does not strictly follow GNU Coding standards
|
||||
AM_INIT_AUTOMAKE([foreign])
|
||||
# Disables auto rebuilding of configure, Makefile.ins
|
||||
#AM_MAINTAINER_MODE
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
# defines some macros variable to be included by source
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CXX
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile \
|
||||
agmserver.pc
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <utils/RefBase.h>
|
||||
#include <utils/Log.h>
|
||||
#include <binder/TextOutput.h>
|
||||
#include <cutils/list.h>
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IBinder.h>
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <agm/agm_api.h>
|
||||
|
||||
|
||||
using namespace android;
|
||||
|
||||
class ICallback : public ::android::IInterface
|
||||
{
|
||||
public:
|
||||
DECLARE_META_INTERFACE(Callback);
|
||||
virtual int event_cb (uint32_t session_id,
|
||||
struct agm_event_cb_params *event_params,
|
||||
void *client_data, agm_event_cb cb_func) = 0;
|
||||
};
|
||||
|
||||
|
||||
class BnCallback : public ::android::BnInterface<ICallback>
|
||||
{
|
||||
public:
|
||||
BnCallback(){};
|
||||
~BnCallback(){};
|
||||
private:
|
||||
int32_t onTransact(uint32_t code,
|
||||
const Parcel& data,
|
||||
Parcel* reply,
|
||||
uint32_t flags) override;
|
||||
int event_cb (uint32_t session_id,
|
||||
struct agm_event_cb_params *event_params,
|
||||
void *client_data, agm_event_cb cb_func) override;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct listnode list;
|
||||
uint32_t session_id;
|
||||
sp<ICallback> cb_binder;
|
||||
agm_event_cb cb_func;
|
||||
void * client_data;
|
||||
}clbk_data ;
|
@@ -1,101 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <utils/RefBase.h>
|
||||
#include <utils/Log.h>
|
||||
#include <binder/TextOutput.h>
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IBinder.h>
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <cutils/list.h>
|
||||
#include "utils.h"
|
||||
|
||||
using namespace android;
|
||||
|
||||
class IAGMClient : public ::android::IInterface
|
||||
{
|
||||
public:
|
||||
DECLARE_META_INTERFACE(AGMClient);
|
||||
};
|
||||
|
||||
class DummyBnClient : public ::android::BnInterface<IAGMClient>
|
||||
{
|
||||
public:
|
||||
DummyBnClient(){
|
||||
AGM_LOGV("Constructor of DummyBnClient called\n");
|
||||
}
|
||||
~DummyBnClient(){
|
||||
AGM_LOGV("Destructor of DummyBnClient called\n");
|
||||
}
|
||||
private:
|
||||
int32_t onTransact(uint32_t code,
|
||||
const Parcel& data,
|
||||
Parcel* reply,
|
||||
uint32_t flags) override;
|
||||
};
|
||||
|
||||
|
||||
class server_death_notifier : public IBinder::DeathRecipient
|
||||
{
|
||||
public:
|
||||
server_death_notifier();
|
||||
// DeathRecipient
|
||||
virtual void binderDied(const android::wp<IBinder>& who);
|
||||
};
|
||||
|
||||
class client_death_notifier : public IBinder::DeathRecipient
|
||||
{
|
||||
public:
|
||||
client_death_notifier();
|
||||
// DeathRecipient
|
||||
virtual void binderDied(const android::wp<IBinder>& who);
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct listnode list;
|
||||
uint64_t handle;
|
||||
//bool rx;
|
||||
} agm_client_session_handle;
|
||||
|
||||
typedef struct {
|
||||
struct listnode list;
|
||||
sp<IAGMClient> binder;
|
||||
pid_t pid;
|
||||
sp<client_death_notifier> Client_death_notifier;
|
||||
struct listnode agm_client_hndl_list;
|
||||
} client_info;
|
||||
|
||||
client_info *get_client_handle_from_list(pid_t pid);
|
||||
void agm_register_client(sp<IBinder> binder);
|
||||
void agm_unregister_client(sp<IBinder> binder);
|
||||
void agm_add_session_obj_handle(uint64_t handle);
|
||||
void agm_remove_session_obj_handle(uint64_t handle);
|
@@ -1,164 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted (subject to the limitations in the
|
||||
* disclaimer below) provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
*
|
||||
* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
|
||||
#ifndef __Agm_SERVER_H__
|
||||
#define __Agm_SERVER_H__
|
||||
|
||||
#include <utils/Log.h>
|
||||
#include <agm/agm_api.h>
|
||||
#include "ipc_interface.h"
|
||||
#include "utils.h"
|
||||
|
||||
class AgmService : public BnAgmService
|
||||
{
|
||||
public:
|
||||
AgmService()
|
||||
{
|
||||
AGM_LOGV("AGMService constructor\n");
|
||||
agm_initialized = ((agm_init() == 0)?true:false);
|
||||
}
|
||||
virtual int ipc_agm_init();
|
||||
virtual int ipc_agm_audio_intf_set_metadata(uint32_t audio_intf,
|
||||
uint32_t size, uint8_t *metadata);
|
||||
virtual int ipc_agm_session_set_metadata(uint32_t session_id,
|
||||
uint32_t size, uint8_t *metadata);
|
||||
virtual int ipc_agm_session_audio_inf_set_metadata(uint32_t session_id,
|
||||
uint32_t audio_intf, uint32_t size,
|
||||
uint8_t *metadata);
|
||||
virtual int ipc_agm_session_close(uint64_t handle);
|
||||
virtual int ipc_agm_audio_intf_set_media_config(uint32_t audio_intf,
|
||||
struct agm_media_config *media_config);
|
||||
virtual int ipc_agm_session_prepare(uint64_t handle);
|
||||
virtual int ipc_agm_session_start(uint64_t handle);
|
||||
virtual int ipc_agm_session_stop(uint64_t handle);
|
||||
virtual int ipc_agm_session_pause(uint64_t handle);
|
||||
virtual int ipc_agm_session_resume(uint64_t handle);
|
||||
virtual int ipc_agm_session_open(uint32_t session_id,
|
||||
enum agm_session_mode sess_mode,
|
||||
uint64_t *handle);
|
||||
virtual int ipc_agm_session_read(uint64_t handle, void *buff,
|
||||
size_t *count);
|
||||
virtual int ipc_agm_session_write(uint64_t handle, void *buff,
|
||||
size_t *count);
|
||||
virtual int ipc_agm_session_audio_inf_connect(uint32_t session_id,
|
||||
uint32_t audio_intf, bool state);
|
||||
virtual int ipc_agm_session_set_loopback(uint32_t capture_session_id,
|
||||
uint32_t playback_session_id, bool state);
|
||||
virtual size_t ipc_agm_get_hw_processed_buff_cnt(uint64_t handle,
|
||||
enum direction dir);
|
||||
virtual int ipc_agm_get_aif_info_list(struct aif_info *aif_list,
|
||||
size_t *num_aif_info);
|
||||
virtual int ipc_agm_session_aif_get_tag_module_info(uint32_t session_id,
|
||||
uint32_t aif_id, void *payload,
|
||||
size_t *size);
|
||||
virtual int ipc_agm_get_params_from_acdb_tunnel(void *payload,
|
||||
size_t *size);
|
||||
virtual int ipc_agm_session_aif_set_params(uint32_t session_id,
|
||||
uint32_t aif_id, void *payload,
|
||||
size_t size);
|
||||
virtual int ipc_agm_aif_set_params(uint32_t aif_id,
|
||||
void* payload, size_t size);
|
||||
virtual int ipc_agm_session_set_params(uint32_t session_id,
|
||||
void *payload, size_t size);
|
||||
virtual int ipc_agm_set_params_with_tag(uint32_t session_id,
|
||||
uint32_t aif_id,
|
||||
struct agm_tag_config *tag_config);
|
||||
virtual int ipc_agm_session_register_for_events(uint32_t session_id,
|
||||
struct agm_event_reg_cfg *evt_reg_cfg);
|
||||
virtual int ipc_agm_session_register_cb(uint32_t session_id,
|
||||
agm_event_cb cb, enum event_type event,
|
||||
void *client_data) ;
|
||||
virtual int ipc_agm_session_set_config(
|
||||
uint64_t handle,
|
||||
struct agm_session_config *session_config,
|
||||
struct agm_media_config *media_config,
|
||||
struct agm_buffer_config *buffer_config);
|
||||
virtual int ipc_agm_session_set_ec_ref(uint32_t capture_session_id,
|
||||
uint32_t aif_id, bool state);
|
||||
virtual int ipc_agm_session_aif_set_cal(
|
||||
uint32_t session_id,
|
||||
uint32_t audio_intf,
|
||||
struct agm_cal_config *cal_config);
|
||||
virtual int ipc_agm_session_eos(uint64_t handle);
|
||||
virtual int ipc_agm_get_session_time(uint64_t handle, uint64_t *timestamp);
|
||||
virtual int ipc_agm_session_get_params(uint32_t session_id,
|
||||
void *payload, size_t size);
|
||||
virtual int ipc_agm_get_buffer_timestamp(uint32_t session_id, uint64_t *timestamp);
|
||||
virtual int ipc_agm_set_gapless_session_metadata(uint64_t handle,
|
||||
enum agm_gapless_silence_type type, uint32_t silence);
|
||||
virtual int ipc_agm_session_get_buf_info(uint32_t session_id,
|
||||
struct agm_buf_info *buf_info, uint32_t flag);
|
||||
~AgmService()
|
||||
{
|
||||
AGM_LOGV("AGMService destructor");
|
||||
agm_deinit();
|
||||
}
|
||||
|
||||
int is_agm_service_initialized() {
|
||||
return agm_initialized;
|
||||
}
|
||||
private:
|
||||
bool agm_initialized = false;
|
||||
};
|
||||
|
||||
#endif
|
@@ -1,163 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Changes from Qualcomm Innovation Center are provided under the following license:
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted (subject to the limitations in the
|
||||
* disclaimer below) provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
*
|
||||
* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#ifndef __AGM_SERVER_INTERFACE_H__
|
||||
#define __AGM_SERVER_INTERFACE_H__
|
||||
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IBinder.h>
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <agm/agm_api.h>
|
||||
typedef void shmem_handle_t;
|
||||
|
||||
// can be shared by both server and client.
|
||||
|
||||
class IAgmService: public ::android::IInterface
|
||||
{
|
||||
public:
|
||||
DECLARE_META_INTERFACE(AgmService);
|
||||
|
||||
virtual int ipc_agm_init()= 0;
|
||||
virtual int ipc_agm_audio_intf_set_metadata(uint32_t audio_intf,
|
||||
uint32_t size, uint8_t *metadata)= 0;
|
||||
virtual int ipc_agm_session_set_metadata(uint32_t session_id,
|
||||
uint32_t size, uint8_t *metadata)= 0;
|
||||
virtual int ipc_agm_session_audio_inf_set_metadata(uint32_t session_id,
|
||||
uint32_t audio_intf, uint32_t size,
|
||||
uint8_t *metadata)= 0;
|
||||
virtual int ipc_agm_session_close(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_audio_intf_set_media_config(uint32_t audio_intf,
|
||||
struct agm_media_config *media_config)= 0;
|
||||
virtual int ipc_agm_session_prepare(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_session_start(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_session_stop(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_session_pause(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_session_resume(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_session_read(uint64_t handle,
|
||||
void *buff, size_t *count)= 0;
|
||||
virtual int ipc_agm_session_write(uint64_t handle, void *buff,
|
||||
size_t *count)= 0;
|
||||
virtual int ipc_agm_session_audio_inf_connect(uint32_t session_id,
|
||||
uint32_t audio_intf, bool state) = 0;
|
||||
virtual int ipc_agm_session_set_loopback(uint32_t capture_session_id,
|
||||
uint32_t playback_session_id,
|
||||
bool state) = 0;
|
||||
virtual size_t ipc_agm_get_hw_processed_buff_cnt(uint64_t handle,
|
||||
enum direction dir) = 0;
|
||||
virtual int ipc_agm_get_aif_info_list(struct aif_info *aif_list,
|
||||
size_t *num_aif_info) = 0;
|
||||
virtual int ipc_agm_session_open(uint32_t session_id,
|
||||
enum agm_session_mode sess_mode,
|
||||
uint64_t *handle) = 0;
|
||||
virtual int ipc_agm_session_register_for_events(uint32_t session_id,
|
||||
struct agm_event_reg_cfg *evt_reg_cfg) = 0;
|
||||
virtual int ipc_agm_session_register_cb(uint32_t session_id,
|
||||
agm_event_cb cb, enum event_type event,
|
||||
void *client_data) = 0;
|
||||
virtual int ipc_agm_session_set_config(
|
||||
uint64_t handle,
|
||||
struct agm_session_config *session_config,
|
||||
struct agm_media_config *media_config,
|
||||
struct agm_buffer_config *buffer_config) = 0;
|
||||
virtual int ipc_agm_session_aif_get_tag_module_info(uint32_t session_id,
|
||||
uint32_t aif_id, void *payload,
|
||||
size_t *size) = 0;
|
||||
virtual int ipc_agm_get_params_with_tag_from_acdb(void *payload,
|
||||
size_t *size) = 0;
|
||||
virtual int ipc_agm_session_aif_set_params(uint32_t session_id,
|
||||
uint32_t aif_id, void *payload,
|
||||
size_t size) = 0;
|
||||
virtual int ipc_agm_aif_set_params(uint32_t aif_id,
|
||||
void* payload, size_t size) = 0;
|
||||
virtual int ipc_agm_session_set_params(uint32_t session_id,
|
||||
void *payload, size_t size) = 0;
|
||||
virtual int ipc_agm_set_params_with_tag(uint32_t session_id,
|
||||
uint32_t aif_id,
|
||||
struct agm_tag_config *tag_config) = 0;
|
||||
virtual int ipc_agm_session_set_ec_ref(uint32_t capture_session_id,
|
||||
uint32_t aif_id, bool state) = 0;
|
||||
virtual int ipc_agm_session_aif_set_cal(
|
||||
uint32_t session_id,
|
||||
uint32_t audio_intf,
|
||||
struct agm_cal_config *cal_config) = 0;
|
||||
virtual int ipc_agm_session_eos(uint64_t handle)= 0;
|
||||
virtual int ipc_agm_get_session_time(uint64_t handle,
|
||||
uint64_t *timestamp)= 0;
|
||||
virtual int ipc_agm_session_get_params(uint32_t session_id,
|
||||
void *payload, size_t size) = 0;
|
||||
virtual int ipc_agm_get_buffer_timestamp(uint32_t session_id,
|
||||
uint64_t *timestamp)= 0;
|
||||
virtual int ipc_agm_set_gapless_session_metadata(uint64_t handle,
|
||||
enum agm_gapless_silence_type type,
|
||||
uint32_t silence) = 0;
|
||||
virtual int ipc_agm_session_get_buf_info(uint32_t session_id,
|
||||
struct agm_buf_info *buf_info, uint32_t flag) = 0;
|
||||
};
|
||||
|
||||
class BnAgmService : public ::android::BnInterface<IAgmService> {
|
||||
android::status_t onTransact(uint32_t code,
|
||||
const android::Parcel& data,
|
||||
android::Parcel* reply, uint32_t flags);
|
||||
};
|
||||
#endif
|
@@ -1,168 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_callback"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <utils/RefBase.h>
|
||||
#include <utils/Log.h>
|
||||
#include <binder/TextOutput.h>
|
||||
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IBinder.h>
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <binder/MemoryDealer.h>
|
||||
#include <memory.h>
|
||||
#include <pthread.h>
|
||||
#include "agm_callback.h"
|
||||
#include "utils.h"
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||||
#endif
|
||||
|
||||
#ifndef memscpy
|
||||
#define memscpy(dst, dst_size, src, bytes_to_copy) (void) \
|
||||
memcpy(dst, src, MIN(dst_size, bytes_to_copy))
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_LOG_ENABLED
|
||||
#include <log_xml_parser.h>
|
||||
#define LOG_MASK AGM_MOD_FILE_AGM_CALLBACK
|
||||
#include <log_utils.h>
|
||||
#endif
|
||||
|
||||
using namespace android;
|
||||
|
||||
const android::String16 ICallback::descriptor("ICallback");
|
||||
const android::String16& ICallback::getInterfaceDescriptor() const
|
||||
{
|
||||
return ICallback::descriptor;
|
||||
}
|
||||
|
||||
class BpCallback: public ::android:: BpInterface<ICallback>
|
||||
{
|
||||
public:
|
||||
BpCallback(const sp<IBinder>& impl) : BpInterface<ICallback>(impl)
|
||||
{
|
||||
AGM_LOGD("BpCallback::BpCallback()\n");
|
||||
}
|
||||
|
||||
int event_cb(uint32_t session_id, struct agm_event_cb_params *event_params,
|
||||
void *client_data, agm_event_cb cb_func)
|
||||
{
|
||||
AGM_LOGV("%s %d\n", __func__, __LINE__);
|
||||
android::Parcel data, reply;
|
||||
data.writeInterfaceToken(ICallback::getInterfaceDescriptor());
|
||||
data.writeUint32(session_id);
|
||||
data.writeUint32(event_params->source_module_id);
|
||||
data.writeUint32(event_params->event_id);
|
||||
data.writeUint32(event_params->event_payload_size);
|
||||
uint32_t param_size = event_params->event_payload_size;
|
||||
android::Parcel::WritableBlob blob;
|
||||
data.writeBlob(param_size, false, &blob);
|
||||
memset(blob.data(), 0x0, param_size);
|
||||
memscpy(blob.data(), param_size, event_params->event_payload, param_size);
|
||||
blob.release();
|
||||
data.writeInt64((long)client_data);
|
||||
data.write(&cb_func, sizeof(agm_event_cb *));
|
||||
return remote()->transact(event_params->event_id, data, &reply);
|
||||
}
|
||||
};
|
||||
|
||||
android::sp<ICallback> ICallback::asInterface
|
||||
(const android::sp<android::IBinder>& obj)
|
||||
{
|
||||
AGM_LOGD("ICallback::asInterface()\n");
|
||||
android::sp<ICallback> intr;
|
||||
if (obj != NULL) {
|
||||
intr = static_cast<ICallback*>(obj->queryLocalInterface(ICallback::descriptor).get());
|
||||
AGM_LOGD("ICallback::asInterface() interface %s\n",
|
||||
((intr == 0)?"zero":"non zero"));
|
||||
if (intr == NULL)
|
||||
intr = new BpCallback(obj);
|
||||
}
|
||||
return intr;
|
||||
}
|
||||
|
||||
ICallback::ICallback()
|
||||
{AGM_LOGD("ICallback::ICallback()\n"); }
|
||||
ICallback::~ICallback()
|
||||
{AGM_LOGD("ICallback::~ICallback()\n"); }
|
||||
|
||||
int32_t BnCallback::onTransact(uint32_t code,
|
||||
const Parcel& data,
|
||||
Parcel* reply __unused,
|
||||
uint32_t flags)
|
||||
{
|
||||
AGM_LOGD("BnCallback::onTransact(%i) %i\n", code, flags);
|
||||
data.checkInterface(this);
|
||||
uint32_t session_id;
|
||||
uint32_t source_module_id;
|
||||
uint32_t event_id;
|
||||
uint32_t event_payload_size;
|
||||
void *client_data;
|
||||
agm_event_cb cb_func;
|
||||
struct agm_event_cb_params *event_params = NULL;
|
||||
session_id = data.readUint32();
|
||||
source_module_id = data.readUint32();
|
||||
event_id = data.readUint32();
|
||||
event_payload_size = data.readUint32();
|
||||
event_params = (struct agm_event_cb_params *) calloc(1,
|
||||
(sizeof(agm_event_cb_params) + event_payload_size));
|
||||
if (event_params == NULL) {
|
||||
AGM_LOGE("%s: Cannot allocate memory for struct \
|
||||
agm_event_cb_params\n", __func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
event_params->source_module_id = source_module_id;
|
||||
event_params->event_id = (agm_event_id) event_id;
|
||||
event_params->event_payload_size = event_payload_size;
|
||||
android::Parcel::ReadableBlob blob;
|
||||
uint32_t blob_size = event_payload_size ;
|
||||
data.readBlob(blob_size, &blob);
|
||||
memset(event_params->event_payload, 0x0, event_params->event_payload_size);
|
||||
memscpy(event_params->event_payload,
|
||||
event_params->event_payload_size , blob.data(), blob_size);
|
||||
blob.release();
|
||||
client_data = (void *)data.readInt64();
|
||||
data.read(&cb_func, sizeof(agm_event_cb *));
|
||||
return event_cb(session_id, event_params, client_data, cb_func);
|
||||
}
|
||||
|
||||
int BnCallback::event_cb(uint32_t session_id,
|
||||
struct agm_event_cb_params *event_params,
|
||||
void *client_data, agm_event_cb cb_func)
|
||||
{
|
||||
AGM_LOGD("Calling Client Registered Callback(%x)\n", cb_func);
|
||||
cb_func(session_id, event_params, client_data);
|
||||
return 0;
|
||||
}
|
@@ -1,277 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_death_notifier"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <utils/RefBase.h>
|
||||
#include <utils/Log.h>
|
||||
#include <binder/TextOutput.h>
|
||||
#include <binder/IInterface.h>
|
||||
#include <binder/IBinder.h>
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <binder/MemoryDealer.h>
|
||||
#include <pthread.h>
|
||||
#include <cutils/list.h>
|
||||
#include <signal.h>
|
||||
#include "ipc_interface.h"
|
||||
#include "agm_death_notifier.h"
|
||||
#include "utils.h"
|
||||
|
||||
#ifdef DYNAMIC_LOG_ENABLED
|
||||
#include <log_xml_parser.h>
|
||||
#define LOG_MASK AGM_MOD_FILE_AGM_DEATH_NOTIFIER
|
||||
#include <log_utils.h>
|
||||
#endif
|
||||
|
||||
using namespace android;
|
||||
|
||||
struct listnode g_client_list;
|
||||
pthread_mutex_t g_client_list_lock;
|
||||
bool g_client_list_init = false;
|
||||
//initialize mutex
|
||||
|
||||
client_death_notifier::client_death_notifier(void)
|
||||
{
|
||||
AGM_LOGV("%s:%d\n", __func__, __LINE__);
|
||||
sp<ProcessState> proc(ProcessState::self());
|
||||
proc->startThreadPool();
|
||||
}
|
||||
sp<client_death_notifier> Client_death_notifier = NULL;
|
||||
|
||||
client_info *get_client_handle_from_list(pid_t pid)
|
||||
{
|
||||
struct listnode *node = NULL;
|
||||
client_info *handle = NULL;
|
||||
|
||||
pthread_mutex_lock(&g_client_list_lock);
|
||||
list_for_each(node, &g_client_list) {
|
||||
handle = node_to_item(node, client_info, list);
|
||||
if (handle->pid == pid) {
|
||||
AGM_LOGV("%s: Found handle %p\n", __func__, handle);
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
return handle;
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void agm_register_client(sp<IBinder> binder)
|
||||
{
|
||||
client_info *client_handle = NULL;
|
||||
pid_t pid = IPCThreadState::self()->getCallingPid();
|
||||
android::sp<IAGMClient> client_binder =
|
||||
android::interface_cast<IAGMClient>(binder);
|
||||
Client_death_notifier = new client_death_notifier();
|
||||
IInterface::asBinder(client_binder)->linkToDeath(Client_death_notifier);
|
||||
AGM_LOGD("%s: Client registered and death notifier linked to AGM\n",
|
||||
__func__);
|
||||
if (g_client_list_init == false) {
|
||||
pthread_mutex_init(&g_client_list_lock,
|
||||
(const pthread_mutexattr_t *) NULL);
|
||||
list_init(&g_client_list);
|
||||
g_client_list_init = true;
|
||||
}
|
||||
client_handle = (client_info *)calloc(1, sizeof(client_info));
|
||||
if (client_handle == NULL) {
|
||||
AGM_LOGE("%s: Cannot allocate memory for client handle\n",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
pthread_mutex_lock(&g_client_list_lock);
|
||||
client_handle->binder = client_binder;
|
||||
client_handle->pid = pid;
|
||||
client_handle->Client_death_notifier = Client_death_notifier;
|
||||
list_add_tail(&g_client_list, &client_handle->list);
|
||||
list_init(&client_handle->agm_client_hndl_list);
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
|
||||
}
|
||||
|
||||
void agm_add_session_obj_handle(uint64_t handle)
|
||||
{
|
||||
client_info *client_handle = NULL;
|
||||
agm_client_session_handle *hndl = NULL;
|
||||
|
||||
client_handle =
|
||||
get_client_handle_from_list(IPCThreadState::self()->getCallingPid());
|
||||
if (client_handle == NULL) {
|
||||
AGM_LOGE("%s: Could not find client handle\n", __func__);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&g_client_list_lock);
|
||||
hndl = (agm_client_session_handle *)calloc(1,
|
||||
sizeof(agm_client_session_handle));
|
||||
if (hndl == NULL) {
|
||||
AGM_LOGE("%s: Cannot allocate memory to store agm session handle\n",
|
||||
__func__);
|
||||
goto exit;
|
||||
}
|
||||
hndl->handle = handle;
|
||||
list_add_tail(&client_handle->agm_client_hndl_list, &hndl->list);
|
||||
|
||||
exit:
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
}
|
||||
|
||||
void agm_remove_session_obj_handle(uint64_t handle)
|
||||
{
|
||||
client_info *client_handle = NULL;
|
||||
struct listnode *node = NULL;
|
||||
agm_client_session_handle *hndl = NULL;
|
||||
struct listnode *tempnode = NULL;
|
||||
|
||||
client_handle =
|
||||
get_client_handle_from_list(IPCThreadState::self()->getCallingPid());
|
||||
if (client_handle == NULL) {
|
||||
AGM_LOGE("%s: Could not find client handle\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&g_client_list_lock);
|
||||
list_for_each_safe(node, tempnode, &client_handle->agm_client_hndl_list) {
|
||||
hndl = node_to_item(node, agm_client_session_handle, list);
|
||||
if (hndl->handle == handle) {
|
||||
AGM_LOGV("%s: Removed handle 0x%llx\n", __func__, handle);
|
||||
list_remove(node);
|
||||
free(hndl);
|
||||
break;
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
}
|
||||
|
||||
void agm_unregister_client(sp<IBinder> binder)
|
||||
{
|
||||
android::sp<IAGMClient> client_binder =
|
||||
android::interface_cast<IAGMClient>(binder);
|
||||
client_info *handle = NULL;
|
||||
struct listnode *tempnode = NULL;
|
||||
struct listnode *node = NULL;
|
||||
|
||||
AGM_LOGV("%s: enter\n", __func__);
|
||||
pthread_mutex_lock(&g_client_list_lock);
|
||||
list_for_each_safe(node, tempnode, &g_client_list) {
|
||||
handle = node_to_item(node, client_info, list);
|
||||
if (handle->pid == IPCThreadState::self()->getCallingPid()) {
|
||||
if (handle->Client_death_notifier != NULL) {
|
||||
IInterface::asBinder(client_binder)->unlinkToDeath(handle->Client_death_notifier);
|
||||
handle->Client_death_notifier.clear();
|
||||
AGM_LOGV("%s: unlink to death %d\n", __func__, handle->pid);
|
||||
}
|
||||
list_remove(node);
|
||||
free(handle);
|
||||
}
|
||||
}
|
||||
AGM_LOGV("%s: exit\n", __func__);
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
}
|
||||
|
||||
void client_death_notifier::binderDied(const wp<IBinder>& who)
|
||||
{
|
||||
client_info *handle = NULL;
|
||||
struct listnode *node = NULL;
|
||||
struct listnode *tempnode = NULL;
|
||||
agm_client_session_handle *hndl = NULL;
|
||||
struct listnode *sess_node = NULL;
|
||||
struct listnode *sess_tempnode = NULL;
|
||||
|
||||
pthread_mutex_lock(&g_client_list_lock);
|
||||
list_for_each_safe(node, tempnode, &g_client_list) {
|
||||
handle = node_to_item(node, client_info, list);
|
||||
if (IInterface::asBinder(handle->binder).get() == who.unsafe_get()) {
|
||||
list_for_each_safe(sess_node, sess_tempnode,
|
||||
&handle->agm_client_hndl_list) {
|
||||
hndl = node_to_item(sess_node, agm_client_session_handle, list);
|
||||
if (hndl->handle) {
|
||||
agm_session_close(hndl->handle);
|
||||
list_remove(sess_node);
|
||||
free(hndl);
|
||||
}
|
||||
}
|
||||
list_remove(node);
|
||||
free(handle);
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&g_client_list_lock);
|
||||
AGM_LOGD("%s: exit\n", __func__);
|
||||
}
|
||||
|
||||
const android::String16 IAGMClient::descriptor("IAGMClient");
|
||||
const android::String16& IAGMClient::getInterfaceDescriptor() const {
|
||||
return IAGMClient::descriptor;
|
||||
}
|
||||
|
||||
class BpClient: public ::android:: BpInterface<IAGMClient>
|
||||
{
|
||||
public:
|
||||
BpClient(const sp<IBinder>& impl) : BpInterface<IAGMClient>(impl) {
|
||||
AGM_LOGD("BpClient::BpClient()\n");
|
||||
}
|
||||
};
|
||||
|
||||
android::sp<IAGMClient> IAGMClient::asInterface
|
||||
(const android::sp<android::IBinder>& obj)
|
||||
{
|
||||
AGM_LOGV("IAGMClient::asInterface()\n");
|
||||
android::sp<IAGMClient> intr;
|
||||
if (obj != NULL) {
|
||||
intr = static_cast<IAGMClient*>(obj->queryLocalInterface
|
||||
(IAGMClient::descriptor).get());
|
||||
AGM_LOGD("IAGMClient::asInterface() interface %s\n",
|
||||
((intr == 0)?"zero":"non zero"));
|
||||
if (intr == NULL)
|
||||
intr = new BpClient(obj);
|
||||
}
|
||||
return intr;
|
||||
}
|
||||
IAGMClient :: IAGMClient() { AGM_LOGD("IAGMClient::IAGMClient()"); }
|
||||
IAGMClient :: ~IAGMClient() { AGM_LOGD("IAGMClient::~IAGMClient()"); }
|
||||
|
||||
int32_t DummyBnClient::onTransact(uint32_t code,
|
||||
const Parcel& data,
|
||||
Parcel* reply,
|
||||
uint32_t flags)
|
||||
{
|
||||
int status = 0;
|
||||
AGM_LOGV("DummyBnClient::onTransact(%i) %i\n", code, flags);
|
||||
//data.checkInterface(this); //Alternate option to check interface
|
||||
CHECK_INTERFACE(IAGMClient, data, reply);
|
||||
switch(code) {
|
||||
default:
|
||||
return BBinder::onTransact(code, data, reply, flags);
|
||||
break;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
@@ -1,72 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_server_daemon"
|
||||
|
||||
#include <binder/ProcessState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <utils/Log.h>
|
||||
#include "ipc_interface.h"
|
||||
#include "agm_server_wrapper.h"
|
||||
#include <signal.h>
|
||||
#include "utils.h"
|
||||
|
||||
#ifdef DYNAMIC_LOG_ENABLED
|
||||
#include <log_xml_parser.h>
|
||||
#define LOG_MASK AGM_MOD_FILE_AGM_SERVER_DAEMON
|
||||
#include <log_utils.h>
|
||||
#endif
|
||||
|
||||
|
||||
static class AgmService *agmServiceInstance = new AgmService();
|
||||
|
||||
static void sigint_handler(int sig __unused)
|
||||
{
|
||||
AGM_LOGD("AgmService received signal\n");
|
||||
agmServiceInstance->~AgmService();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
signal(SIGINT, sigint_handler);
|
||||
android::defaultServiceManager()->addService(android::String16("AgmService"),
|
||||
agmServiceInstance);
|
||||
if (agmServiceInstance->is_agm_service_initialized()) {
|
||||
AGM_LOGD("AgmService initialized \n");
|
||||
android::ProcessState::self()->startThreadPool();
|
||||
AGM_LOGD("AGM service is now ready\n");
|
||||
android::IPCThreadState::self()->joinThreadPool();
|
||||
AGM_LOGD("AGM service thread joined\n");
|
||||
return 0;
|
||||
} else {
|
||||
AGM_LOGD("AgmService initialization failed");
|
||||
return -1;
|
||||
}
|
||||
}
|
@@ -1,287 +0,0 @@
|
||||
/*
|
||||
** Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above
|
||||
** copyright notice, this list of conditions and the following
|
||||
** disclaimer in the documentation and/or other materials provided
|
||||
** with the distribution.
|
||||
** * Neither the name of The Linux Foundation nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
||||
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
** IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**/
|
||||
|
||||
#define LOG_TAG "agm_server_wrapper"
|
||||
|
||||
#include <binder/Parcel.h>
|
||||
#include <binder/IPCThreadState.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <utils/Log.h>
|
||||
|
||||
#include <agm/agm_api.h>
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <sys/prctl.h>
|
||||
#include <system/thread_defs.h>
|
||||
#include <sys/resource.h>
|
||||
#include <cstring>
|
||||
#include <memory.h>
|
||||
#include <pthread.h>
|
||||
#include <string.h>
|
||||
#include <binder/IMemory.h>
|
||||
#include "utils.h"
|
||||
#include "agm_server_wrapper.h"
|
||||
|
||||
#ifdef DYNAMIC_LOG_ENABLED
|
||||
#include <log_xml_parser.h>
|
||||
#define LOG_MASK AGM_MOD_FILE_AGM_SERVER_WRAPPER
|
||||
#include <log_utils.h>
|
||||
#endif
|
||||
using namespace android;
|
||||
|
||||
#if 0
|
||||
AgmService::AgmService()
|
||||
{
|
||||
agm_initialized = !agm_init();
|
||||
AGM_LOGV("agm_initialized %d", agm_initialized);
|
||||
}
|
||||
|
||||
AgmService::~AgmService()
|
||||
{
|
||||
agm_initialized = agm_deinit();
|
||||
AGM_LOGV("agm_initialized %d", agm_initialized);
|
||||
}
|
||||
#endif
|
||||
|
||||
int AgmService::ipc_agm_session_read(uint64_t handle, void *buff, size_t *count){
|
||||
AGM_LOGV("%s called \n", __func__);
|
||||
return agm_session_read(handle, buff, count);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_write(uint64_t handle, void *buff, size_t *count){
|
||||
AGM_LOGV("%s called \n", __func__);
|
||||
return agm_session_write(handle, buff, count);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_init(){
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return 0;
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_audio_intf_set_metadata(uint32_t audio_intf,
|
||||
uint32_t size, uint8_t *metadata)
|
||||
{
|
||||
AGM_LOGE("%s called\n", __func__);
|
||||
return agm_aif_set_metadata(audio_intf, size, metadata);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_set_metadata(uint32_t session_id,
|
||||
uint32_t size, uint8_t *metadata)
|
||||
{
|
||||
AGM_LOGE("%s called\n", __func__);
|
||||
return agm_session_set_metadata(session_id, size, metadata);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_audio_inf_set_metadata(uint32_t session_id,
|
||||
uint32_t audio_intf, uint32_t size,
|
||||
uint8_t *metadata)
|
||||
{
|
||||
AGM_LOGE("%s called\n", __func__);
|
||||
return agm_session_aif_set_metadata(session_id, audio_intf, size, metadata);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_close(uint64_t handle){
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_close(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_prepare(uint64_t handle){
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_prepare(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_start(uint64_t handle){
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_start(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_stop(uint64_t handle){
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_stop(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_pause(uint64_t handle){
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_pause(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_resume(uint64_t handle){
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_resume(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_set_loopback(uint32_t capture_session_id,
|
||||
uint32_t playback_session_id, bool state)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_set_loopback(capture_session_id, playback_session_id,
|
||||
state);
|
||||
};
|
||||
|
||||
size_t AgmService::ipc_agm_get_hw_processed_buff_cnt(uint64_t handle,
|
||||
enum direction dir) {
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_get_hw_processed_buff_cnt(handle, dir);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_get_aif_info_list(struct aif_info *aif_list,
|
||||
size_t *num_aif_info)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_get_aif_info_list(aif_list, num_aif_info);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_aif_get_tag_module_info(uint32_t session_id,
|
||||
uint32_t aif_id, void *payload, size_t *size)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_aif_get_tag_module_info(session_id, aif_id,
|
||||
payload, size);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_aif_set_params(uint32_t aif_id,
|
||||
void* payload, size_t size)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_aif_set_params(aif_id, payload, size);
|
||||
}
|
||||
|
||||
int AgmService::ipc_agm_session_aif_set_params(uint32_t session_id,
|
||||
uint32_t aif_id, void *payload, size_t size)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_aif_set_params(session_id, aif_id, payload, size);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_set_params(uint32_t session_id, void *payload,
|
||||
size_t size)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_set_params(session_id, payload, size);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_set_params_with_tag(uint32_t session_id,
|
||||
uint32_t aif_id,
|
||||
struct agm_tag_config *tag_config)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_set_params_with_tag(session_id, aif_id, tag_config);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_open(uint32_t session_id,
|
||||
enum agm_session_mode sess_mode,
|
||||
uint64_t *handle){
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_open(session_id, sess_mode, handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_set_config(uint64_t handle,
|
||||
struct agm_session_config *session_config,
|
||||
struct agm_media_config *media_config,
|
||||
struct agm_buffer_config *buffer_config){
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_set_config(handle, session_config,
|
||||
media_config, buffer_config);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_audio_inf_connect(uint32_t session_id,
|
||||
uint32_t audio_intf, bool state)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_aif_connect(session_id, audio_intf, state);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_audio_intf_set_media_config(uint32_t audio_intf,
|
||||
struct agm_media_config *media_config)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_aif_set_media_config(audio_intf, media_config);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_register_for_events(uint32_t session_id,
|
||||
struct agm_event_reg_cfg *evt_reg_cfg)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_register_for_events(session_id, evt_reg_cfg);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_register_cb(uint32_t session_id,
|
||||
agm_event_cb cb, enum event_type event,
|
||||
void *client_data)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_register_cb(session_id, cb, event, client_data);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_set_ec_ref(uint32_t capture_session_id,
|
||||
uint32_t aif_id, bool state)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_set_ec_ref(capture_session_id, aif_id, state);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_aif_set_cal(uint32_t session_id,
|
||||
uint32_t audio_intf,
|
||||
struct agm_cal_config *cal_config)
|
||||
{
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_aif_set_cal(session_id, audio_intf, cal_config);
|
||||
};
|
||||
int AgmService::ipc_agm_session_eos(uint64_t handle) {
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_eos(handle);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_get_session_time(uint64_t handle, uint64_t *timestamp) {
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_get_session_time(handle, timestamp);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_get_params(uint32_t session_id, void *payload, size_t size){
|
||||
AGM_LOGV("%s called\n", __func__);
|
||||
return agm_session_get_params(session_id, payload, size);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_get_buffer_timestamp(uint32_t session_id, uint64_t *timestamp) {
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_get_buffer_timestamp(session_id, timestamp);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_set_gapless_session_metadata(uint64_t handle,
|
||||
enum agm_gapless_silence_type type,
|
||||
uint32_t silence) {
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_set_gapless_session_metadata(handle, type, silence);
|
||||
};
|
||||
|
||||
int AgmService::ipc_agm_session_get_buf_info(uint32_t session_id,
|
||||
struct agm_buf_info *buf_info, uint32_t flag) {
|
||||
ALOGV("%s called\n", __func__);
|
||||
return agm_session_get_buf_info(session_id, buf_info, flag);
|
||||
};
|
File diff suppressed because it is too large
Load Diff
@@ -1,30 +0,0 @@
|
||||
aidl_interface {
|
||||
name: "vendor.qti.hardware.agm",
|
||||
vendor: true,
|
||||
srcs: ["vendor/qti/hardware/agm/*.aidl"],
|
||||
stability: "vintf",
|
||||
owner: "qti",
|
||||
backend: {
|
||||
cpp: {
|
||||
enabled: false,
|
||||
},
|
||||
java: {
|
||||
sdk_version: "module_current",
|
||||
},
|
||||
ndk: {
|
||||
enabled: true,
|
||||
},
|
||||
},
|
||||
|
||||
imports: [
|
||||
"android.hardware.common-V2",
|
||||
],
|
||||
versions_with_info: [
|
||||
{
|
||||
version: "1",
|
||||
imports: ["android.hardware.common-V2"],
|
||||
},
|
||||
],
|
||||
frozen: true,
|
||||
|
||||
}
|
@@ -1 +0,0 @@
|
||||
include $(call all-subdir-makefiles)
|
@@ -1 +0,0 @@
|
||||
efa4ab1ccef17baa301d81deca852ddc0bbafbfb
|
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmBuff {
|
||||
long timestamp;
|
||||
int flags;
|
||||
int size;
|
||||
int offset;
|
||||
byte[] buffer;
|
||||
byte[] metadata;
|
||||
vendor.qti.hardware.agm.AgmExternAllocBuffInfo externalAllocInfo;
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmBufferConfig {
|
||||
int count;
|
||||
int size;
|
||||
int maxMetadataSize;
|
||||
}
|
@@ -1,27 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmCalConfig {
|
||||
vendor.qti.hardware.agm.AgmKeyValue[] kv;
|
||||
}
|
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmDataMode {
|
||||
AGM_DATA_INVALID,
|
||||
AGM_DATA_BLOCKING,
|
||||
AGM_DATA_NON_BLOCKING,
|
||||
AGM_DATA_PUSH_PULL,
|
||||
AGM_DATA_EXTERN_MEM,
|
||||
AGM_DATA_MODE_MAX,
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmDumpInfo {
|
||||
int signal;
|
||||
int pid;
|
||||
int uid;
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmEventCallbackParameter {
|
||||
int sourceModuleId;
|
||||
int eventId;
|
||||
byte[] eventPayload;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmEventId {
|
||||
AGMEVENTEOSRENDERED = 0x0,
|
||||
AGMEVENTREADDONE = 0x1,
|
||||
AGMEVENTWRITEDONE = 0x2,
|
||||
AGM_EVENT_EARLY_EOS = 0x08001126,
|
||||
AGMEVENTIDMAX,
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmEventReadWriteDonePayload {
|
||||
int tag;
|
||||
int status;
|
||||
int metadataStatus;
|
||||
vendor.qti.hardware.agm.AgmBuff buffer;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmEventRegistrationConfig {
|
||||
int moduleInstanceId;
|
||||
int eventId;
|
||||
byte registerEvent;
|
||||
byte[] eventConfigPayload;
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmExternAllocBuffInfo {
|
||||
android.hardware.common.NativeHandle allocHandle;
|
||||
int allocatedSize;
|
||||
int offset;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmGaplessSilenceType {
|
||||
INITIAL_SILENCE,
|
||||
TRAILING_SILENCE,
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmGroupMediaConfig {
|
||||
int rate;
|
||||
int channels;
|
||||
vendor.qti.hardware.agm.AgmMediaFormat format;
|
||||
int dataFormat;
|
||||
int slotMask;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmKeyValue {
|
||||
int key;
|
||||
int value;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmMediaConfig {
|
||||
int rate;
|
||||
int channels;
|
||||
vendor.qti.hardware.agm.AgmMediaFormat format;
|
||||
int dataFormat;
|
||||
}
|
@@ -1,47 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmMediaFormat {
|
||||
AGM_FORMAT_INVALID,
|
||||
AGM_FORMAT_PCM_S8,
|
||||
AGM_FORMAT_PCM_S16_LE,
|
||||
AGM_FORMAT_PCM_S24_LE,
|
||||
AGM_FORMAT_PCM_S24_3LE,
|
||||
AGM_FORMAT_PCM_S32_LE,
|
||||
AGM_FORMAT_MP3,
|
||||
AGM_FORMAT_AAC,
|
||||
AGM_FORMAT_FLAC,
|
||||
AGM_FORMAT_ALAC,
|
||||
AGM_FORMAT_APE,
|
||||
AGM_FORMAT_WMASTD,
|
||||
AGM_FORMAT_WMAPRO,
|
||||
AGM_FORMAT_VORBIS,
|
||||
AGM_FORMAT_AMR_NB,
|
||||
AGM_FORMAT_AMR_WB,
|
||||
AGM_FORMAT_AMR_WB_PLUS,
|
||||
AGM_FORMAT_EVRC,
|
||||
AGM_FORMAT_G711,
|
||||
AGM_FORMAT_QCELP,
|
||||
AGM_FORMAT_MAX,
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmReadWriteEventCallbackParams {
|
||||
int sourceModuleId;
|
||||
int eventId;
|
||||
vendor.qti.hardware.agm.AgmEventReadWriteDonePayload payload;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionAacDec {
|
||||
int formatFlag;
|
||||
int objectType;
|
||||
int channels;
|
||||
int sizeOfPCEBits;
|
||||
int sampleRate;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionAacEnc {
|
||||
int bitRate;
|
||||
int globalCutOffFrequency;
|
||||
int mode;
|
||||
int formatFlags;
|
||||
}
|
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionAlacDec {
|
||||
int frameLength;
|
||||
byte compatibleVersion;
|
||||
byte bitDepth;
|
||||
byte pb;
|
||||
byte mb;
|
||||
byte kb;
|
||||
byte channels;
|
||||
int maxRun;
|
||||
int maxFrameBytes;
|
||||
int averageBitRate;
|
||||
int sampleRate;
|
||||
int channelLayoutTag;
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionApeDec {
|
||||
int compatibleVersion;
|
||||
int compressionLevel;
|
||||
int formatFlags;
|
||||
int blocksPerFrame;
|
||||
int finalFrameBlocks;
|
||||
int totalFrames;
|
||||
int bitWidth;
|
||||
int channels;
|
||||
int sampleRate;
|
||||
int seekTablePresent;
|
||||
}
|
@@ -1,34 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
union AgmSessionCodec {
|
||||
vendor.qti.hardware.agm.AgmSessionAacDec aacDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionFlacDec flacDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionAlacDec alacDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionApeDec apeDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionWmaDec wmaDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionWmaproDec wmaproDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionOpusDec opusDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionAacEnc aacEncoder;
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionConfig {
|
||||
vendor.qti.hardware.agm.Direction direction;
|
||||
vendor.qti.hardware.agm.AgmSessionMode sessionMode;
|
||||
int startThreshold;
|
||||
int stopThreshold;
|
||||
@nullable vendor.qti.hardware.agm.AgmSessionCodec codec;
|
||||
vendor.qti.hardware.agm.AgmDataMode dataMode;
|
||||
int flags;
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionFlacDec {
|
||||
int channels;
|
||||
int sampleSize;
|
||||
int minBlockSize;
|
||||
int maxBlockSize;
|
||||
int sampleRate;
|
||||
int minFrameSize;
|
||||
int maxFrameSize;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmSessionMode {
|
||||
AGM_SESSION_DEFAULT,
|
||||
AGM_SESSION_NO_HOST,
|
||||
AGM_SESSION_NON_TUNNEL,
|
||||
AGM_SESSION_NO_CONFIG,
|
||||
AGM_SESSION_COMPRESS,
|
||||
}
|
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionOpusDec {
|
||||
int bitStreamFormat;
|
||||
int type;
|
||||
byte version;
|
||||
byte channels;
|
||||
int preSkip;
|
||||
long sampleRate;
|
||||
int outputGain;
|
||||
byte mappingFamily;
|
||||
byte streamCount;
|
||||
byte coupledCount;
|
||||
byte[8] channelMap;
|
||||
byte[3] reserved;
|
||||
}
|
@@ -1,35 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionWmaDec {
|
||||
int formatTag;
|
||||
int channels;
|
||||
int sampleRate;
|
||||
int averageBytesPerSecond;
|
||||
int blockAlign;
|
||||
int bitsPerSample;
|
||||
int channelMask;
|
||||
int encoderOption;
|
||||
int reserved;
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionWmaproDec {
|
||||
int formatTag;
|
||||
int channels;
|
||||
int sampleRate;
|
||||
int averageBytesPerSecond;
|
||||
int blockAlign;
|
||||
int bitsPerSample;
|
||||
int channelMask;
|
||||
int encoderOption;
|
||||
int advancedEncoderOption;
|
||||
int advancedEncoderOption2;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmTagConfig {
|
||||
int tag;
|
||||
vendor.qti.hardware.agm.AgmKeyValue[] kv;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AifInfo {
|
||||
String aifName;
|
||||
vendor.qti.hardware.agm.Direction direction;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum Direction {
|
||||
Rx = 1,
|
||||
Tx,
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum EventType {
|
||||
AGM_EVENT_DATA_PATH = 1,
|
||||
AGM_EVENT_MODULE,
|
||||
}
|
@@ -1,78 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
interface IAGM {
|
||||
void ipc_agm_init();
|
||||
void ipc_agm_deinit();
|
||||
long ipc_agm_session_open(in int sessionId, in vendor.qti.hardware.agm.AgmSessionMode sessionMode);
|
||||
void ipc_agm_session_start(in long handle);
|
||||
void ipc_agm_session_stop(in long handle);
|
||||
void ipc_agm_session_suspend(in long handle);
|
||||
void ipc_agm_session_pause(in long handle);
|
||||
void ipc_agm_session_resume(in long handle);
|
||||
void ipc_agm_session_prepare(in long handle);
|
||||
void ipc_agm_session_eos(in long handle);
|
||||
void ipc_agm_session_flush(in long handle);
|
||||
void ipc_agm_session_close(in long handle);
|
||||
vendor.qti.hardware.agm.MmapBufInfo ipc_agm_session_get_buf_info(in int sessionId, in int flag);
|
||||
byte[] ipc_agm_session_get_params(in int sessionId, in byte[] buffer);
|
||||
byte[] ipc_agm_session_read(in long handle, in int count);
|
||||
vendor.qti.hardware.agm.IAGM.AgmReadWithMetadataReturn ipc_agm_session_read_with_metadata(in long handle, in vendor.qti.hardware.agm.AgmBuff buffer, in int capturedSize);
|
||||
void ipc_agm_session_register_callback(in vendor.qti.hardware.agm.IAGMCallback callback, in int sessionId, in int eventType, in boolean register, in long clientData);
|
||||
void ipc_agm_session_register_for_events(in int sessionId, in vendor.qti.hardware.agm.AgmEventRegistrationConfig eventConfig);
|
||||
void ipc_agm_session_set_config(in long handle, in vendor.qti.hardware.agm.AgmSessionConfig sessionConfig, in vendor.qti.hardware.agm.AgmMediaConfig mediaConfig, in vendor.qti.hardware.agm.AgmBufferConfig bufferConfig);
|
||||
void ipc_agm_session_set_ec_ref(in int sessionId, in int aifId, in boolean state);
|
||||
void ipc_agm_session_set_loopback(in int captureSessionId, in int playbackSessionId, in boolean state);
|
||||
void ipc_agm_session_set_metadata(in int sessionId, in byte[] metadata);
|
||||
void ipc_agm_session_set_non_tunnel_mode_config(in long handle, in vendor.qti.hardware.agm.AgmSessionConfig sessionConfig, in vendor.qti.hardware.agm.AgmMediaConfig inMediaConfig, in vendor.qti.hardware.agm.AgmMediaConfig outMediaConfig, in vendor.qti.hardware.agm.AgmBufferConfig inBufferConfig, in vendor.qti.hardware.agm.AgmBufferConfig outBufferConfig);
|
||||
void ipc_agm_session_set_params(in int sessionId, in byte[] payload);
|
||||
int ipc_agm_session_write(in long handle, in byte[] buff);
|
||||
void ipc_agm_session_write_datapath_params(in int sessionId, in vendor.qti.hardware.agm.AgmBuff buff);
|
||||
int ipc_agm_session_write_with_metadata(in long handle, in vendor.qti.hardware.agm.AgmBuff buff);
|
||||
void ipc_agm_aif_group_set_media_config(in int groupId, in vendor.qti.hardware.agm.AgmGroupMediaConfig config);
|
||||
void ipc_agm_aif_set_media_config(in int aifId, in vendor.qti.hardware.agm.AgmMediaConfig config);
|
||||
void ipc_agm_aif_set_metadata(in int aifId, in byte[] metadata);
|
||||
void ipc_agm_aif_set_params(in int aifId, in byte[] payload);
|
||||
void ipc_agm_session_aif_connect(in int sessionId, in int aifId, in boolean state);
|
||||
byte[] ipc_agm_session_aif_get_tag_module_info(in int sessionId, in int aifId, in int size);
|
||||
void ipc_agm_session_aif_set_cal(in int sessionId, in int aifId, in vendor.qti.hardware.agm.AgmCalConfig calConfig);
|
||||
void ipc_agm_session_aif_set_metadata(in int sessionId, in int aifId, in byte[] metadata);
|
||||
void ipc_agm_session_aif_set_params(in int sessionId, in int aifId, in byte[] payload);
|
||||
vendor.qti.hardware.agm.AifInfo[] ipc_agm_get_aif_info_list(in int numAifInfo);
|
||||
long ipc_agm_get_buffer_timestamp(in int sessiondId);
|
||||
vendor.qti.hardware.agm.AifInfo[] ipc_agm_get_group_aif_info_list(in int numberOfGroups);
|
||||
void ipc_agm_get_hw_processed_buff_cnt(in long handle, in vendor.qti.hardware.agm.Direction direction);
|
||||
byte[] ipc_agm_get_params_from_acdb_tunnel(in byte[] payload);
|
||||
long ipc_agm_get_session_time(in long handle);
|
||||
void ipc_agm_sessionid_flush(in int sessiondId);
|
||||
void ipc_agm_set_gapless_session_metadata(in long handle, in vendor.qti.hardware.agm.AgmGaplessSilenceType type, in int silence);
|
||||
void ipc_agm_set_params_to_acdb_tunnel(in byte[] payload);
|
||||
void ipc_agm_set_params_with_tag(in int sessiondId, in int aifId, in vendor.qti.hardware.agm.AgmTagConfig tagConfig);
|
||||
void ipc_agm_set_params_with_tag_to_acdb(in int sessiondId, in int aifId, in byte[] payload);
|
||||
void ipc_agm_dump(in vendor.qti.hardware.agm.AgmDumpInfo dumpInfo);
|
||||
parcelable AgmReadWithMetadataReturn {
|
||||
vendor.qti.hardware.agm.AgmBuff buffer;
|
||||
int capturesSize;
|
||||
}
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
interface IAGMCallback {
|
||||
void eventCallback(in vendor.qti.hardware.agm.AgmEventCallbackParameter eventParam);
|
||||
void eventCallbackReadWriteDone(in vendor.qti.hardware.agm.AgmReadWriteEventCallbackParams rwDonePayload);
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable MmapBufInfo {
|
||||
android.hardware.common.NativeHandle dataFdHandle;
|
||||
int dataSize;
|
||||
android.hardware.common.NativeHandle positionFdHandle;
|
||||
int posSize;
|
||||
}
|
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum Status {
|
||||
UNKNOWN = (-1) /* -1 */,
|
||||
SUCCESS = 0,
|
||||
IO_ERROR,
|
||||
BUSY,
|
||||
NO_SPACE,
|
||||
INVALID_FD,
|
||||
ADVERTISE_ERROR,
|
||||
PROTOCOL_NOT_AVAILABLE,
|
||||
NOT_SUPPORTED,
|
||||
DOWN_WITH_SSR,
|
||||
NOW_INPROGRESS,
|
||||
ALREADY_INPROGRESS,
|
||||
CANCELLED,
|
||||
NOT_RECOVERABLE,
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmBuff {
|
||||
long timestamp;
|
||||
int flags;
|
||||
int size;
|
||||
int offset;
|
||||
byte[] buffer;
|
||||
byte[] metadata;
|
||||
vendor.qti.hardware.agm.AgmExternAllocBuffInfo externalAllocInfo;
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmBufferConfig {
|
||||
int count;
|
||||
int size;
|
||||
int maxMetadataSize;
|
||||
}
|
@@ -1,27 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmCalConfig {
|
||||
vendor.qti.hardware.agm.AgmKeyValue[] kv;
|
||||
}
|
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmDataMode {
|
||||
AGM_DATA_INVALID,
|
||||
AGM_DATA_BLOCKING,
|
||||
AGM_DATA_NON_BLOCKING,
|
||||
AGM_DATA_PUSH_PULL,
|
||||
AGM_DATA_EXTERN_MEM,
|
||||
AGM_DATA_MODE_MAX,
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmDumpInfo {
|
||||
int signal;
|
||||
int pid;
|
||||
int uid;
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmEventCallbackParameter {
|
||||
int sourceModuleId;
|
||||
int eventId;
|
||||
byte[] eventPayload;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmEventId {
|
||||
AGMEVENTEOSRENDERED = 0x0,
|
||||
AGMEVENTREADDONE = 0x1,
|
||||
AGMEVENTWRITEDONE = 0x2,
|
||||
AGM_EVENT_EARLY_EOS = 0x08001126,
|
||||
AGMEVENTIDMAX,
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmEventReadWriteDonePayload {
|
||||
int tag;
|
||||
int status;
|
||||
int metadataStatus;
|
||||
vendor.qti.hardware.agm.AgmBuff buffer;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmEventRegistrationConfig {
|
||||
int moduleInstanceId;
|
||||
int eventId;
|
||||
byte registerEvent;
|
||||
byte[] eventConfigPayload;
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmExternAllocBuffInfo {
|
||||
android.hardware.common.NativeHandle allocHandle;
|
||||
int allocatedSize;
|
||||
int offset;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmGaplessSilenceType {
|
||||
INITIAL_SILENCE,
|
||||
TRAILING_SILENCE,
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmGroupMediaConfig {
|
||||
int rate;
|
||||
int channels;
|
||||
vendor.qti.hardware.agm.AgmMediaFormat format;
|
||||
int dataFormat;
|
||||
int slotMask;
|
||||
}
|
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmKeyValue {
|
||||
int key;
|
||||
int value;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmMediaConfig {
|
||||
int rate;
|
||||
int channels;
|
||||
vendor.qti.hardware.agm.AgmMediaFormat format;
|
||||
int dataFormat;
|
||||
}
|
@@ -1,47 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmMediaFormat {
|
||||
AGM_FORMAT_INVALID,
|
||||
AGM_FORMAT_PCM_S8,
|
||||
AGM_FORMAT_PCM_S16_LE,
|
||||
AGM_FORMAT_PCM_S24_LE,
|
||||
AGM_FORMAT_PCM_S24_3LE,
|
||||
AGM_FORMAT_PCM_S32_LE,
|
||||
AGM_FORMAT_MP3,
|
||||
AGM_FORMAT_AAC,
|
||||
AGM_FORMAT_FLAC,
|
||||
AGM_FORMAT_ALAC,
|
||||
AGM_FORMAT_APE,
|
||||
AGM_FORMAT_WMASTD,
|
||||
AGM_FORMAT_WMAPRO,
|
||||
AGM_FORMAT_VORBIS,
|
||||
AGM_FORMAT_AMR_NB,
|
||||
AGM_FORMAT_AMR_WB,
|
||||
AGM_FORMAT_AMR_WB_PLUS,
|
||||
AGM_FORMAT_EVRC,
|
||||
AGM_FORMAT_G711,
|
||||
AGM_FORMAT_QCELP,
|
||||
AGM_FORMAT_MAX,
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmReadWriteEventCallbackParams {
|
||||
int sourceModuleId;
|
||||
int eventId;
|
||||
vendor.qti.hardware.agm.AgmEventReadWriteDonePayload payload;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionAacDec {
|
||||
int formatFlag;
|
||||
int objectType;
|
||||
int channels;
|
||||
int sizeOfPCEBits;
|
||||
int sampleRate;
|
||||
}
|
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionAacEnc {
|
||||
int bitRate;
|
||||
int globalCutOffFrequency;
|
||||
int mode;
|
||||
int formatFlags;
|
||||
}
|
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionAlacDec {
|
||||
int frameLength;
|
||||
byte compatibleVersion;
|
||||
byte bitDepth;
|
||||
byte pb;
|
||||
byte mb;
|
||||
byte kb;
|
||||
byte channels;
|
||||
int maxRun;
|
||||
int maxFrameBytes;
|
||||
int averageBitRate;
|
||||
int sampleRate;
|
||||
int channelLayoutTag;
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionApeDec {
|
||||
int compatibleVersion;
|
||||
int compressionLevel;
|
||||
int formatFlags;
|
||||
int blocksPerFrame;
|
||||
int finalFrameBlocks;
|
||||
int totalFrames;
|
||||
int bitWidth;
|
||||
int channels;
|
||||
int sampleRate;
|
||||
int seekTablePresent;
|
||||
}
|
@@ -1,34 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
union AgmSessionCodec {
|
||||
vendor.qti.hardware.agm.AgmSessionAacDec aacDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionFlacDec flacDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionAlacDec alacDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionApeDec apeDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionWmaDec wmaDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionWmaproDec wmaproDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionOpusDec opusDecoder;
|
||||
vendor.qti.hardware.agm.AgmSessionAacEnc aacEncoder;
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionConfig {
|
||||
vendor.qti.hardware.agm.Direction direction;
|
||||
vendor.qti.hardware.agm.AgmSessionMode sessionMode;
|
||||
int startThreshold;
|
||||
int stopThreshold;
|
||||
@nullable vendor.qti.hardware.agm.AgmSessionCodec codec;
|
||||
vendor.qti.hardware.agm.AgmDataMode dataMode;
|
||||
int flags;
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionFlacDec {
|
||||
int channels;
|
||||
int sampleSize;
|
||||
int minBlockSize;
|
||||
int maxBlockSize;
|
||||
int sampleRate;
|
||||
int minFrameSize;
|
||||
int maxFrameSize;
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum AgmSessionMode {
|
||||
AGM_SESSION_DEFAULT,
|
||||
AGM_SESSION_NO_HOST,
|
||||
AGM_SESSION_NON_TUNNEL,
|
||||
AGM_SESSION_NO_CONFIG,
|
||||
AGM_SESSION_COMPRESS,
|
||||
}
|
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionOpusDec {
|
||||
int bitStreamFormat;
|
||||
int type;
|
||||
byte version;
|
||||
byte channels;
|
||||
int preSkip;
|
||||
long sampleRate;
|
||||
int outputGain;
|
||||
byte mappingFamily;
|
||||
byte streamCount;
|
||||
byte coupledCount;
|
||||
byte[8] channelMap;
|
||||
byte[3] reserved;
|
||||
}
|
@@ -1,35 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionWmaDec {
|
||||
int formatTag;
|
||||
int channels;
|
||||
int sampleRate;
|
||||
int averageBytesPerSecond;
|
||||
int blockAlign;
|
||||
int bitsPerSample;
|
||||
int channelMask;
|
||||
int encoderOption;
|
||||
int reserved;
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// 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 vendor.qti.hardware.agm;
|
||||
@VintfStability
|
||||
parcelable AgmSessionWmaproDec {
|
||||
int formatTag;
|
||||
int channels;
|
||||
int sampleRate;
|
||||
int averageBytesPerSecond;
|
||||
int blockAlign;
|
||||
int bitsPerSample;
|
||||
int channelMask;
|
||||
int encoderOption;
|
||||
int advancedEncoderOption;
|
||||
int advancedEncoderOption2;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user