Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72b3fc58ec | ||
|
|
4140def1fc | ||
|
|
901396b385 | ||
|
|
052a0e11fb | ||
|
|
024f319164 | ||
|
|
91f7b80459 | ||
|
|
13076eb3ec | ||
|
|
27695ee5ff | ||
|
|
7b5656d2a8 | ||
|
|
788d472839 | ||
|
|
7f4446b3fd | ||
|
|
e08ef1bdae | ||
|
|
8039bfe66e | ||
|
|
7e23a74fbf | ||
|
|
a9463baaaf | ||
|
|
ddee97fc93 | ||
|
|
f562149d18 | ||
|
|
21d659a5c5 | ||
|
|
71f5632e2d | ||
|
|
30e7563d94 | ||
|
|
26a321bc36 | ||
|
|
f141bd1615 | ||
|
|
d3a63909c7 | ||
|
|
aaa1c0c9a0 | ||
|
|
e0ffc4d60c | ||
|
|
94d469380e | ||
|
|
7e4b839fc6 | ||
|
|
0708177e94 | ||
|
|
9047ef9a56 | ||
|
|
bb61f00d57 | ||
|
|
601ef084ee | ||
|
|
3cd41646b4 | ||
|
|
d1fb490f9b | ||
|
|
7e0c222f1d | ||
|
|
f5b2cc062c | ||
|
|
9e246ebb55 | ||
|
|
5f5afc3d76 | ||
|
|
eab404c46b | ||
|
|
395a50ba3d | ||
|
|
79379ea3d1 | ||
|
|
197e84e71a | ||
|
|
30ea57a3cb | ||
|
|
49fcc2a599 | ||
|
|
6d9f87f7ea | ||
|
|
efc30cd06d | ||
|
|
6959979384 | ||
|
|
1ebf32bc73 | ||
|
|
a119a68374 | ||
|
|
1e7506e7ac | ||
|
|
bd20f5aabe | ||
|
|
42fc35fbc7 |
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,13 +1,11 @@
|
||||
*~
|
||||
debian/files
|
||||
debian/libgbinder-radio-dev.debhelper.log
|
||||
debian/libgbinder-radio-dev.substvars
|
||||
debian/libgbinder-radio-dev
|
||||
debian/libgbinder-radio.debhelper.log
|
||||
debian/libgbinder-radio.postinst.debhelper
|
||||
debian/libgbinder-radio.postrm.debhelper
|
||||
debian/libgbinder-radio.substvars
|
||||
debian/libgbinder-radio
|
||||
debian/*.debhelper.log
|
||||
debian/*.debhelper
|
||||
debian/*.substvars
|
||||
debian/*.install
|
||||
debian/tmp
|
||||
documentation.list
|
||||
installroot
|
||||
|
||||
4
AUTHORS
Normal file
4
AUTHORS
Normal file
@@ -0,0 +1,4 @@
|
||||
Danct12 <danct12@disroot.org>
|
||||
Frajo Haider <f_haider@gmx.at>
|
||||
Matti Lehtimäki <matti.lehtimaki@jolla.com>
|
||||
Slava Monich <slava@monich.com>
|
||||
33
LICENSE
Normal file
33
LICENSE
Normal file
@@ -0,0 +1,33 @@
|
||||
Copyright (C) 2018-2021 Jolla Ltd.
|
||||
Copyright (C) 2018-2021 Slava Monich <slava.monich@jolla.com>
|
||||
|
||||
You may use this file under the terms of the BSD license as follows:
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. 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.
|
||||
3. Neither the names of the copyright holders 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 HOLDERS 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.
|
||||
|
||||
The views and conclusions contained in the software and documentation
|
||||
are those of the authors and should not be interpreted as representing
|
||||
any official policies, either expressed or implied.
|
||||
35
Makefile
35
Makefile
@@ -22,8 +22,8 @@ all: debug release pkgconfig
|
||||
#
|
||||
|
||||
VERSION_MAJOR = 1
|
||||
VERSION_MINOR = 0
|
||||
VERSION_RELEASE = 1
|
||||
VERSION_MINOR = 2
|
||||
VERSION_RELEASE = 5
|
||||
|
||||
# Version for pkg-config
|
||||
PCVERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE)
|
||||
@@ -78,10 +78,7 @@ DEBUG_FLAGS = -g
|
||||
RELEASE_FLAGS =
|
||||
COVERAGE_FLAGS = -g
|
||||
|
||||
ifndef KEEP_SYMBOLS
|
||||
KEEP_SYMBOLS = 0
|
||||
endif
|
||||
|
||||
KEEP_SYMBOLS ?= 0
|
||||
ifneq ($(KEEP_SYMBOLS),0)
|
||||
RELEASE_FLAGS += -g
|
||||
endif
|
||||
@@ -144,9 +141,10 @@ pkgconfig: $(PKGCONFIG)
|
||||
clean:
|
||||
rm -f *~ $(SRC_DIR)/*~ $(INCLUDE_DIR)/*~
|
||||
rm -fr $(BUILD_DIR) RPMS installroot
|
||||
rm -fr debian/tmp debian/libgbinder debian/libgbinder-dev
|
||||
rm -fr debian/tmp debian/libgbinder-radio debian/libgbinder-radio-dev
|
||||
rm -f documentation.list debian/files debian/*.substvars
|
||||
rm -f debian/*.debhelper.log debian/*.debhelper debian/*~
|
||||
rm -f debian/*.install
|
||||
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $@
|
||||
@@ -192,25 +190,34 @@ $(COVERAGE_LIB): $(COVERAGE_OBJS)
|
||||
$(AR) rc $@ $?
|
||||
ranlib $@
|
||||
|
||||
#
|
||||
# LIBDIR usually gets substituted with arch specific dir.
|
||||
# It's relative in deb build and can be whatever in rpm build.
|
||||
#
|
||||
|
||||
LIBDIR ?= usr/lib
|
||||
ABS_LIBDIR := $(shell echo /$(LIBDIR) | sed -r 's|/+|/|g')
|
||||
|
||||
$(PKGCONFIG): $(LIB_NAME).pc.in Makefile
|
||||
sed -e 's/\[version\]/'$(PCVERSION)/g $< > $@
|
||||
sed -e 's|@version@|$(PCVERSION)|g' -e 's|@libdir@|$(ABS_LIBDIR)|g' $< > $@
|
||||
|
||||
debian/%.install: debian/%.install.in
|
||||
sed 's|@LIBDIR@|$(LIBDIR)|g' $< > $@
|
||||
|
||||
#
|
||||
# Install
|
||||
#
|
||||
|
||||
INSTALL_PERM = 644
|
||||
|
||||
INSTALL = install
|
||||
INSTALL_DIRS = $(INSTALL) -d
|
||||
INSTALL_FILES = $(INSTALL) -m $(INSTALL_PERM)
|
||||
INSTALL_FILES = $(INSTALL) -m 644
|
||||
|
||||
INSTALL_LIB_DIR = $(DESTDIR)/usr/lib
|
||||
INSTALL_LIB_DIR = $(DESTDIR)$(ABS_LIBDIR)
|
||||
INSTALL_INCLUDE_DIR = $(DESTDIR)/usr/include/$(NAME)
|
||||
INSTALL_PKGCONFIG_DIR = $(DESTDIR)/usr/lib/pkgconfig
|
||||
INSTALL_PKGCONFIG_DIR = $(DESTDIR)$(ABS_LIBDIR)/pkgconfig
|
||||
|
||||
install: $(INSTALL_LIB_DIR)
|
||||
$(INSTALL_FILES) $(RELEASE_SO) $(INSTALL_LIB_DIR)
|
||||
$(INSTALL) -m 755 $(RELEASE_SO) $(INSTALL_LIB_DIR)
|
||||
ln -sf $(LIB_SO) $(INSTALL_LIB_DIR)/$(LIB_SYMLINK2)
|
||||
ln -sf $(LIB_SYMLINK2) $(INSTALL_LIB_DIR)/$(LIB_SYMLINK1)
|
||||
|
||||
|
||||
58
debian/changelog
vendored
Normal file
58
debian/changelog
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
libgbinder-radio (1.2.5) unstable; urgency=medium
|
||||
|
||||
* Added radio@1.3 types
|
||||
* Added radio@1.4 types
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Thu, 25 Mar 2021 20:13:08 +0200
|
||||
|
||||
libgbinder-radio (1.2.4) unstable; urgency=medium
|
||||
|
||||
* Added more radio@1.2 types
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Sat, 20 Mar 2021 02:41:07 +0200
|
||||
|
||||
libgbinder-radio (1.2.3) unstable; urgency=medium
|
||||
|
||||
* Reformatted radio@1.2 types
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Fri, 19 Mar 2021 05:21:52 +0200
|
||||
|
||||
libgbinder-radio (1.2.2) unstable; urgency=medium
|
||||
|
||||
* Added radio_instance_get_with_version()
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Fri, 05 Mar 2021 14:00:20 +0200
|
||||
|
||||
libgbinder-radio (1.2.1) unstable; urgency=medium
|
||||
|
||||
* Fixed backward compatibility with radio@1.0
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Fri, 05 Mar 2021 12:33:50 +0200
|
||||
|
||||
libgbinder-radio (1.2.0) unstable; urgency=medium
|
||||
|
||||
* Support for radio@1.2 interfaces
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Thu, 04 Mar 2021 13:36:51 +0200
|
||||
|
||||
libgbinder-radio (1.0.11) unstable; urgency=medium
|
||||
|
||||
* Make library executable on RPM based systems
|
||||
* Added req => resp mapping for radio@1.1 calls
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Thu, 01 Oct 2020 21:04:59 +0300
|
||||
|
||||
libgbinder-radio (1.0.10) unstable; urgency=medium
|
||||
|
||||
* Hide internal symbols
|
||||
* Respect arch specific lib dir
|
||||
* Ignore GLib deprecation warnings
|
||||
* Added constants for android.hardware.radio@1.1 interfaces
|
||||
|
||||
-- Slava Monich <slava.monich@jolla.com> Wed, 03 Jun 2020 15:24:17 +0300
|
||||
|
||||
libgbinder-radio (1.0.9) unstable; urgency=medium
|
||||
|
||||
* Added packaging for Debian-based distros.
|
||||
|
||||
-- Danct12 <danct12@disroot.org> Tue, 24 Mar 2020 02:55:50 +0700
|
||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
||||
9
|
||||
17
debian/control
vendored
Normal file
17
debian/control
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
Source: libgbinder-radio
|
||||
Priority: optional
|
||||
Maintainer: Danct12 <danct12@disroot.org>
|
||||
Build-Depends: debhelper (>=9), libgbinder-dev (>= 1.0.9)
|
||||
Standards-Version: 3.9.6
|
||||
|
||||
Package: libgbinder-radio-dev
|
||||
Section: libdevel
|
||||
Architecture: any
|
||||
Depends: libgbinder-radio (= ${binary:Version}), ${misc:Depends}
|
||||
Description: Development files for libgbinder-radio
|
||||
|
||||
Package: libgbinder-radio
|
||||
Section: libs
|
||||
Architecture: any
|
||||
Depends: libgbinder (>= 1.0.9), ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Binder client library for Android radio interfaces
|
||||
33
debian/copyright
vendored
Normal file
33
debian/copyright
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
Copyright (C) 2018-2021 Jolla Ltd.
|
||||
Copyright (C) 2018-2021 Slava Monich <slava.monich@jolla.com>
|
||||
|
||||
You may use this file under the terms of the BSD license as follows:
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. 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.
|
||||
3. Neither the names of the copyright holders 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 HOLDERS 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.
|
||||
|
||||
The views and conclusions contained in the software and documentation
|
||||
are those of the authors and should not be interpreted as representing
|
||||
any official policies, either expressed or implied.
|
||||
3
debian/libgbinder-radio-dev.install.in
vendored
Normal file
3
debian/libgbinder-radio-dev.install.in
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
debian/tmp/@LIBDIR@/libgbinder-radio.so @LIBDIR@
|
||||
debian/tmp/@LIBDIR@/pkgconfig/libgbinder-radio.pc @LIBDIR@/pkgconfig
|
||||
debian/tmp/usr/include/* usr/include
|
||||
1
debian/libgbinder-radio.install.in
vendored
Normal file
1
debian/libgbinder-radio.install.in
vendored
Normal file
@@ -0,0 +1 @@
|
||||
debian/tmp/@LIBDIR@/libgbinder-radio.so.* @LIBDIR@
|
||||
14
debian/rules
vendored
Executable file
14
debian/rules
vendored
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/make -f
|
||||
# Uncomment to enable verbose build
|
||||
#export DH_VERBOSE = 1
|
||||
|
||||
LIBDIR=usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
|
||||
override_dh_auto_build:
|
||||
dh_auto_build -- LIBDIR=$(LIBDIR) release pkgconfig debian/libgbinder-radio.install debian/libgbinder-radio-dev.install
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_auto_install -- LIBDIR=$(LIBDIR) install-dev
|
||||
|
||||
%:
|
||||
dh $@
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (native)
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2019 Jolla Ltd.
|
||||
* Copyright (C) 2018-2019 Slava Monich <slava.monich@jolla.com>
|
||||
* Copyright (C) 2018-2021 Jolla Ltd.
|
||||
* Copyright (C) 2018-2021 Slava Monich <slava.monich@jolla.com>
|
||||
*
|
||||
* You may use this file under the terms of the BSD license as follows:
|
||||
*
|
||||
@@ -45,6 +45,13 @@ G_BEGIN_DECLS
|
||||
|
||||
typedef struct radio_instance_priv RadioInstancePriv;
|
||||
|
||||
typedef enum radio_interface {
|
||||
RADIO_INTERFACE_1_0,
|
||||
RADIO_INTERFACE_1_1,
|
||||
RADIO_INTERFACE_1_2,
|
||||
RADIO_INTERFACE_COUNT
|
||||
} RADIO_INTERFACE; /* Since 1.2.0 */
|
||||
|
||||
struct radio_instance {
|
||||
GObject parent;
|
||||
RadioInstancePriv* priv;
|
||||
@@ -52,14 +59,14 @@ struct radio_instance {
|
||||
const char* dev;
|
||||
const char* slot;
|
||||
const char* key;
|
||||
/* Since 1.0.7 */
|
||||
const char* modem; /* D-Bus path */
|
||||
int slot_index; /* 0 for SIM1, 1 for SIM2 and so on */
|
||||
gboolean enabled;
|
||||
/* Since 1.2.0 */
|
||||
RADIO_INTERFACE version;
|
||||
};
|
||||
|
||||
typedef struct radio_response_info {
|
||||
RADIO_RESP_TYPE type;
|
||||
guint32 serial;
|
||||
guint32 error;
|
||||
} RadioResponseInfo;
|
||||
|
||||
typedef
|
||||
void
|
||||
(*RadioInstanceFunc)(
|
||||
@@ -119,11 +126,38 @@ radio_instance_new(
|
||||
const char* dev,
|
||||
const char* name);
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_new_with_modem_and_slot(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
const char* modem,
|
||||
int slot_index); /* Since 1.0.7 */
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_new_with_version(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
RADIO_INTERFACE version); /* Since 1.2.1 */
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_new_with_modem_slot_and_version(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
const char* modem,
|
||||
int slot_index,
|
||||
RADIO_INTERFACE version); /* Since 1.2.1 */
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_get(
|
||||
const char* dev,
|
||||
const char* name);
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_get_with_version(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
RADIO_INTERFACE version); /* Since 1.2.2 */
|
||||
|
||||
RadioInstance* const*
|
||||
radio_instance_get_all(
|
||||
void);
|
||||
@@ -166,6 +200,11 @@ radio_instance_send_request_sync(
|
||||
RADIO_REQ code,
|
||||
GBinderLocalRequest* args);
|
||||
|
||||
void
|
||||
radio_instance_set_enabled(
|
||||
RadioInstance* radio,
|
||||
gboolean enabled); /* Since 1.0.7 */
|
||||
|
||||
gulong
|
||||
radio_instance_add_indication_handler(
|
||||
RadioInstance* radio,
|
||||
@@ -206,6 +245,12 @@ radio_instance_add_death_handler(
|
||||
RadioInstanceFunc func,
|
||||
gpointer user_data);
|
||||
|
||||
gulong
|
||||
radio_instance_add_enabled_handler(
|
||||
RadioInstance* radio,
|
||||
RadioInstanceFunc func,
|
||||
gpointer user_data); /* Since 1.0.7 */
|
||||
|
||||
void
|
||||
radio_instance_remove_handler(
|
||||
RadioInstance* radio,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2019 Jolla Ltd.
|
||||
* Copyright (C) 2018-2019 Slava Monich <slava.monich@jolla.com>
|
||||
* Copyright (C) 2018-2021 Jolla Ltd.
|
||||
* Copyright (C) 2018-2021 Slava Monich <slava.monich@jolla.com>
|
||||
*
|
||||
* You may use this file under the terms of the BSD license as follows:
|
||||
*
|
||||
@@ -45,10 +45,29 @@ typedef struct radio_instance RadioInstance;
|
||||
typedef struct radio_registry RadioRegistry;
|
||||
|
||||
#define RADIO_IFACE_PREFIX "android.hardware.radio@"
|
||||
#define RADIO_IFACE "IRadio"
|
||||
#define RADIO_RESPONSE_IFACE "IRadioResponse"
|
||||
#define RADIO_INDICATION_IFACE "IRadioIndication"
|
||||
#define RADIO_IFACE_1_0(x) RADIO_IFACE_PREFIX "1.0::" x
|
||||
#define RADIO_1_0 RADIO_IFACE_1_0("IRadio")
|
||||
#define RADIO_RESPONSE_1_0 RADIO_IFACE_1_0("IRadioResponse")
|
||||
#define RADIO_INDICATION_1_0 RADIO_IFACE_1_0("IRadioIndication")
|
||||
#define RADIO_IFACE_1_1(x) RADIO_IFACE_PREFIX "1.1::" x
|
||||
#define RADIO_IFACE_1_2(x) RADIO_IFACE_PREFIX "1.2::" x
|
||||
#define RADIO_IFACE_1_3(x) RADIO_IFACE_PREFIX "1.3::" x
|
||||
#define RADIO_IFACE_1_4(x) RADIO_IFACE_PREFIX "1.4::" x
|
||||
#define RADIO_1_0 RADIO_IFACE_1_0(RADIO_IFACE)
|
||||
#define RADIO_1_1 RADIO_IFACE_1_1(RADIO_IFACE)
|
||||
#define RADIO_1_2 RADIO_IFACE_1_2(RADIO_IFACE)
|
||||
#define RADIO_1_3 RADIO_IFACE_1_3(RADIO_IFACE)
|
||||
#define RADIO_1_4 RADIO_IFACE_1_4(RADIO_IFACE)
|
||||
#define RADIO_RESPONSE_1_0 RADIO_IFACE_1_0(RADIO_RESPONSE_IFACE)
|
||||
#define RADIO_RESPONSE_1_1 RADIO_IFACE_1_1(RADIO_RESPONSE_IFACE)
|
||||
#define RADIO_RESPONSE_1_2 RADIO_IFACE_1_2(RADIO_RESPONSE_IFACE)
|
||||
#define RADIO_RESPONSE_1_3 RADIO_IFACE_1_3(RADIO_RESPONSE_IFACE)
|
||||
#define RADIO_RESPONSE_1_4 RADIO_IFACE_1_4(RADIO_RESPONSE_IFACE)
|
||||
#define RADIO_INDICATION_1_0 RADIO_IFACE_1_0(RADIO_INDICATION_IFACE)
|
||||
#define RADIO_INDICATION_1_1 RADIO_IFACE_1_1(RADIO_INDICATION_IFACE)
|
||||
#define RADIO_INDICATION_1_2 RADIO_IFACE_1_2(RADIO_INDICATION_IFACE)
|
||||
#define RADIO_INDICATION_1_3 RADIO_IFACE_1_3(RADIO_INDICATION_IFACE)
|
||||
#define RADIO_INDICATION_1_4 RADIO_IFACE_1_4(RADIO_INDICATION_IFACE)
|
||||
|
||||
/* Types defined in types.hal */
|
||||
|
||||
@@ -175,6 +194,45 @@ typedef enum radio_access_family {
|
||||
} RADIO_ACCESS_FAMILY;
|
||||
G_STATIC_ASSERT(sizeof(RADIO_ACCESS_FAMILY) == 4);
|
||||
|
||||
typedef enum radio_apn_auth_type {
|
||||
RADIO_APN_AUTH_NONE,
|
||||
RADIO_APN_AUTH_PAP,
|
||||
RADIO_APN_AUTH_CHAP,
|
||||
RADIO_APN_AUTH_PAP_CHAP
|
||||
} RADIO_APN_AUTH_TYPE;
|
||||
G_STATIC_ASSERT(sizeof(RADIO_APN_AUTH_TYPE) == 4);
|
||||
|
||||
typedef enum radio_apn_types {
|
||||
RADIO_APN_TYPE_NONE = 0,
|
||||
RADIO_APN_TYPE_DEFAULT = 1 << 0,
|
||||
RADIO_APN_TYPE_MMS = 1 << 1,
|
||||
RADIO_APN_TYPE_SUPL = 1 << 2,
|
||||
RADIO_APN_TYPE_DUN = 1 << 3,
|
||||
RADIO_APN_TYPE_HIPRI = 1 << 4,
|
||||
RADIO_APN_TYPE_FOTA = 1 << 5,
|
||||
RADIO_APN_TYPE_IMS = 1 << 6,
|
||||
RADIO_APN_TYPE_CBS = 1 << 7,
|
||||
RADIO_APN_TYPE_IA = 1 << 8,
|
||||
RADIO_APN_TYPE_EMERGENCY = 1 << 9,
|
||||
RADIO_APN_TYPE_MCX = 1 << 10, /* Since 1.2.5 */
|
||||
RADIO_APN_TYPE_ALL = RADIO_APN_TYPE_DEFAULT | RADIO_APN_TYPE_MMS |
|
||||
RADIO_APN_TYPE_SUPL | RADIO_APN_TYPE_DUN | RADIO_APN_TYPE_HIPRI |
|
||||
RADIO_APN_TYPE_FOTA | RADIO_APN_TYPE_IMS | RADIO_APN_TYPE_CBS |
|
||||
RADIO_APN_TYPE_IA | RADIO_APN_TYPE_EMERGENCY | RADIO_APN_TYPE_MCX
|
||||
} RADIO_APN_TYPES;
|
||||
G_STATIC_ASSERT(sizeof(RADIO_APN_TYPES) == 4);
|
||||
|
||||
typedef enum radio_data_profile_id {
|
||||
RADIO_DATA_PROFILE_INVALID = -1,
|
||||
RADIO_DATA_PROFILE_DEFAULT = 0,
|
||||
RADIO_DATA_PROFILE_TETHERED = 1,
|
||||
RADIO_DATA_PROFILE_IMS = 2,
|
||||
RADIO_DATA_PROFILE_FOTA = 3,
|
||||
RADIO_DATA_PROFILE_CBS = 4,
|
||||
RADIO_DATA_PROFILE_OEM_BASE = 1000
|
||||
} RADIO_DATA_PROFILE_ID;
|
||||
G_STATIC_ASSERT(sizeof(RADIO_DATA_PROFILE_ID) == 4);
|
||||
|
||||
typedef enum radio_card_state {
|
||||
RADIO_CARD_STATE_ABSENT,
|
||||
RADIO_CARD_STATE_PRESENT,
|
||||
@@ -258,6 +316,88 @@ typedef enum radio_capability_status {
|
||||
} RADIO_CAPABILITY_STATUS;
|
||||
G_STATIC_ASSERT(sizeof(RADIO_CAPABILITY_STATUS) == 4);
|
||||
|
||||
typedef enum radio_device_state {
|
||||
RADIO_DEVICE_STATE_POWER_SAVE_MODE,
|
||||
RADIO_DEVICE_STATE_CHARGING_STATE,
|
||||
RADIO_DEVICE_STATE_LOW_DATA_EXPECTED
|
||||
} RADIO_DEVICE_STATE;
|
||||
G_STATIC_ASSERT(sizeof(RADIO_DEVICE_STATE) == 4);
|
||||
|
||||
typedef enum radio_data_request_reason {
|
||||
RADIO_DATA_REQUEST_REASON_NORMAL = 1,
|
||||
RADIO_DATA_REQUEST_REASON_SHUTDOWN,
|
||||
RADIO_DATA_REQUEST_REASON_HANDOVER
|
||||
} RADIO_DATA_REQUEST_REASON; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_DATA_REQUEST_REASON) == 4);
|
||||
|
||||
typedef enum radio_access_network {
|
||||
RADIO_ACCESS_NETWORK_UNKNOWN,
|
||||
RADIO_ACCESS_NETWORK_GERAN,
|
||||
RADIO_ACCESS_NETWORK_UTRAN,
|
||||
RADIO_ACCESS_NETWORK_EUTRAN,
|
||||
RADIO_ACCESS_NETWORK_CDMA2000,
|
||||
RADIO_ACCESS_NETWORK_IWLAN
|
||||
} RADIO_ACCESS_NETWORK; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_ACCESS_NETWORK) == 4);
|
||||
|
||||
typedef enum radio_data_profile_type {
|
||||
RADIO_DATA_PROFILE_COMMON,
|
||||
RADIO_DATA_PROFILE_3GPP,
|
||||
RADIO_DATA_PROFILE_3GPP2
|
||||
} RADIO_DATA_PROFILE_TYPE; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_DATA_PROFILE_TYPE) == 4);
|
||||
|
||||
typedef enum radio_pdp_protocol_type {
|
||||
RADIO_PDP_PROTOCOL_UNKNOWN = -1,
|
||||
RADIO_PDP_PROTOCOL_IP,
|
||||
RADIO_PDP_PROTOCOL_IPV6,
|
||||
RADIO_PDP_PROTOCOL_IPV4V6,
|
||||
RADIO_PDP_PROTOCOL_PPP,
|
||||
RADIO_PDP_PROTOCOL_NON_IP,
|
||||
RADIO_PDP_PROTOCOL_UNSTRUCTURED
|
||||
} RADIO_PDP_PROTOCOL_TYPE; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_PDP_PROTOCOL_TYPE) == 4);
|
||||
|
||||
typedef enum radio_emergency_service_category {
|
||||
RADIO_EMERGENCY_SERVICE_UNSPECIFIED = 0,
|
||||
RADIO_EMERGENCY_SERVICE_POLICE = 1 << 0,
|
||||
RADIO_EMERGENCY_SERVICE_AMBULANCE = 1 << 1,
|
||||
RADIO_EMERGENCY_SERVICE_FIRE_BRIGADE = 1 << 2,
|
||||
RADIO_EMERGENCY_SERVICE_MARINE_GUARD = 1 << 3,
|
||||
RADIO_EMERGENCY_SERVICE_MOUNTAIN_RESCUE = 1 << 4,
|
||||
RADIO_EMERGENCY_SERVICE_MIEC = 1 << 5,
|
||||
RADIO_EMERGENCY_SERVICE_AIEC = 1 << 6
|
||||
} RADIO_EMERGENCY_SERVICE_CATEGORY; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_EMERGENCY_SERVICE_CATEGORY) == 4);
|
||||
|
||||
typedef enum radio_emergency_number_source {
|
||||
RADIO_EMERGENCY_NUMBER_NETWORK_SIGNALING = 1 << 0,
|
||||
RADIO_EMERGENCY_NUMBER_SIM = 1 << 1,
|
||||
RADIO_EMERGENCY_NUMBER_MODEM_CONFIG = 1 << 2,
|
||||
RADIO_EMERGENCY_NUMBER_DEFAULT = 1 << 3
|
||||
} RADIO_EMERGENCY_NUMBER_SOURCE; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_EMERGENCY_NUMBER_SOURCE) == 4);
|
||||
|
||||
typedef enum radio_cell_connection_status {
|
||||
RADIO_CELL_CONNECTION_NONE,
|
||||
RADIO_CELL_CONNECTION_PRIMARY_SERVING,
|
||||
RADIO_CELL_CONNECTION_SECONDARY_SERVING
|
||||
} RADIO_CELL_CONNECTION_STATUS; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_CELL_CONNECTION_STATUS) == 4);
|
||||
|
||||
typedef enum radio_scan_status {
|
||||
RADIO_SCAN_PARTIAL = 1,
|
||||
RADIO_SCAN_COMPLETE = 2
|
||||
} RADIO_SCAN_STATUS; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RADIO_SCAN_STATUS) == 4);
|
||||
|
||||
typedef struct radio_response_info {
|
||||
RADIO_RESP_TYPE type RADIO_ALIGNED(4);
|
||||
guint32 serial RADIO_ALIGNED(4);
|
||||
guint32 error RADIO_ALIGNED(4);
|
||||
} RadioResponseInfo;
|
||||
G_STATIC_ASSERT(sizeof(RadioResponseInfo) == 12);
|
||||
|
||||
typedef struct radio_card_status {
|
||||
RADIO_CARD_STATE cardState RADIO_ALIGNED(4);
|
||||
RADIO_PIN_STATE universalPinState RADIO_ALIGNED(4);
|
||||
@@ -268,6 +408,14 @@ typedef struct radio_card_status {
|
||||
} RADIO_ALIGNED(8) RadioCardStatus;
|
||||
G_STATIC_ASSERT(sizeof(RadioCardStatus) == 40);
|
||||
|
||||
typedef struct radio_card_status_1_2 {
|
||||
RadioCardStatus base RADIO_ALIGNED(8);
|
||||
gint32 physicalSlotId RADIO_ALIGNED(4);
|
||||
GBinderHidlString atr RADIO_ALIGNED(8);
|
||||
GBinderHidlString iccid RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCardStatus_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCardStatus_1_2) == 80);
|
||||
|
||||
typedef struct radio_app_status {
|
||||
RADIO_APP_TYPE appType RADIO_ALIGNED(4);
|
||||
RADIO_APP_STATE appState RADIO_ALIGNED(4);
|
||||
@@ -304,6 +452,12 @@ typedef struct radio_call {
|
||||
} RADIO_ALIGNED(8) RadioCall;
|
||||
G_STATIC_ASSERT(sizeof(RadioCall) == 88);
|
||||
|
||||
typedef struct radio_call_1_2 {
|
||||
RadioCall base RADIO_ALIGNED(8);
|
||||
gint32 audioQuality RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCall_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCall_1_2) == 96);
|
||||
|
||||
typedef struct radio_dial {
|
||||
GBinderHidlString address RADIO_ALIGNED(8);
|
||||
gint32 clir RADIO_ALIGNED(4);
|
||||
@@ -326,26 +480,47 @@ typedef struct radio_operator_info {
|
||||
G_STATIC_ASSERT(sizeof(RadioOperatorInfo) == 56);
|
||||
|
||||
typedef struct radio_data_profile {
|
||||
gint32 profileId RADIO_ALIGNED(4);
|
||||
RADIO_DATA_PROFILE_ID profileId RADIO_ALIGNED(4);
|
||||
GBinderHidlString apn RADIO_ALIGNED(8);
|
||||
GBinderHidlString protocol RADIO_ALIGNED(8);
|
||||
GBinderHidlString roamingProtocol RADIO_ALIGNED(8);
|
||||
gint32 authType RADIO_ALIGNED(4);
|
||||
RADIO_APN_AUTH_TYPE authType RADIO_ALIGNED(4);
|
||||
GBinderHidlString user RADIO_ALIGNED(8);
|
||||
GBinderHidlString password RADIO_ALIGNED(8);
|
||||
gint32 type RADIO_ALIGNED(4);
|
||||
RADIO_DATA_PROFILE_TYPE type RADIO_ALIGNED(4);
|
||||
gint32 maxConnsTime RADIO_ALIGNED(4);
|
||||
gint32 maxConns RADIO_ALIGNED(4);
|
||||
gint32 waitTime RADIO_ALIGNED(4);
|
||||
guint8 enabled RADIO_ALIGNED(1);
|
||||
gint32 supportedApnTypesBitmap RADIO_ALIGNED(4);
|
||||
gint32 bearerBitmap RADIO_ALIGNED(4);
|
||||
RADIO_APN_TYPES supportedApnTypesBitmap RADIO_ALIGNED(4);
|
||||
RADIO_ACCESS_FAMILY bearerBitmap RADIO_ALIGNED(4);
|
||||
gint32 mtu RADIO_ALIGNED(4);
|
||||
gint32 mvnoType RADIO_ALIGNED(4);
|
||||
GBinderHidlString mvnoMatchData RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioDataProfile;
|
||||
G_STATIC_ASSERT(sizeof(RadioDataProfile) == 152);
|
||||
|
||||
typedef struct radio_data_profile_1_4 {
|
||||
RADIO_DATA_PROFILE_ID profileId RADIO_ALIGNED(4);
|
||||
GBinderHidlString apn RADIO_ALIGNED(8);
|
||||
RADIO_PDP_PROTOCOL_TYPE protocol RADIO_ALIGNED(4);
|
||||
RADIO_PDP_PROTOCOL_TYPE roamingProtocol RADIO_ALIGNED(4);
|
||||
RADIO_APN_AUTH_TYPE authType RADIO_ALIGNED(4);
|
||||
GBinderHidlString user RADIO_ALIGNED(8);
|
||||
GBinderHidlString password RADIO_ALIGNED(8);
|
||||
RADIO_DATA_PROFILE_TYPE type RADIO_ALIGNED(4);
|
||||
gint32 maxConnsTime RADIO_ALIGNED(4);
|
||||
gint32 maxConns RADIO_ALIGNED(4);
|
||||
gint32 waitTime RADIO_ALIGNED(4);
|
||||
guint8 enabled RADIO_ALIGNED(1);
|
||||
RADIO_APN_TYPES supportedApnTypesBitmap RADIO_ALIGNED(4);
|
||||
RADIO_ACCESS_FAMILY bearerBitmap RADIO_ALIGNED(4);
|
||||
gint32 mtu RADIO_ALIGNED(4);
|
||||
guint8 preferred RADIO_ALIGNED(1);
|
||||
guint8 persistent RADIO_ALIGNED(1);
|
||||
} RADIO_ALIGNED(8) RadioDataProfile_1_4; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioDataProfile_1_4) == 112);
|
||||
|
||||
typedef struct radio_data_call {
|
||||
gint32 status RADIO_ALIGNED(4);
|
||||
gint32 suggestedRetryTime RADIO_ALIGNED(4);
|
||||
@@ -360,7 +535,21 @@ typedef struct radio_data_call {
|
||||
gint32 mtu RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioDataCall;
|
||||
G_STATIC_ASSERT(sizeof(RadioDataCall) == 120);
|
||||
#define DATA_CALL_VERSION (11)
|
||||
|
||||
typedef struct radio_data_call_1_4 {
|
||||
gint32 cause RADIO_ALIGNED(4);
|
||||
gint32 suggestedRetryTime RADIO_ALIGNED(4);
|
||||
gint32 cid RADIO_ALIGNED(4);
|
||||
gint32 active RADIO_ALIGNED(4);
|
||||
RADIO_PDP_PROTOCOL_TYPE type RADIO_ALIGNED(4);
|
||||
GBinderHidlString ifname RADIO_ALIGNED(8);
|
||||
GBinderHidlVec addresses RADIO_ALIGNED(8); /* vec<GBinderHidlString> */
|
||||
GBinderHidlVec dnses RADIO_ALIGNED(8); /* vec<GBinderHidlString> */
|
||||
GBinderHidlVec gateways RADIO_ALIGNED(8); /* vec<GBinderHidlString> */
|
||||
GBinderHidlVec pcscf RADIO_ALIGNED(8); /* vec<GBinderHidlString> */
|
||||
gint32 mtu RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioDataCall_1_4; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioDataCall_1_4) == 112);
|
||||
|
||||
#define DATA_CALL_VERSION (11)
|
||||
|
||||
@@ -414,6 +603,16 @@ typedef struct radio_call_forward_info {
|
||||
} RADIO_ALIGNED(8) RadioCallForwardInfo;
|
||||
G_STATIC_ASSERT(sizeof(RadioCallForwardInfo) == 40);
|
||||
|
||||
typedef struct radio_emergency_number {
|
||||
GBinderHidlString number RADIO_ALIGNED(8);
|
||||
GBinderHidlString mcc RADIO_ALIGNED(8);
|
||||
GBinderHidlString mnc RADIO_ALIGNED(8);
|
||||
RADIO_EMERGENCY_SERVICE_CATEGORY categories RADIO_ALIGNED(4);
|
||||
GBinderHidlVec urns RADIO_ALIGNED(8); /* vec<GBinderHidlString> */
|
||||
RADIO_EMERGENCY_NUMBER_SOURCE sources RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioEmergencyNumber; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioEmergencyNumber) == 80);
|
||||
|
||||
#define RADIO_CELL_INVALID_VALUE (INT_MAX)
|
||||
|
||||
typedef struct radio_cell_identity {
|
||||
@@ -426,6 +625,16 @@ typedef struct radio_cell_identity {
|
||||
} RADIO_ALIGNED(8) RadioCellIdentity;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentity) == 88);
|
||||
|
||||
typedef struct radio_cell_identity_1_2 {
|
||||
RADIO_CELL_INFO_TYPE cellInfoType RADIO_ALIGNED(4);
|
||||
GBinderHidlVec gsm RADIO_ALIGNED(8); /* vec<RadioCellIdentityGsm_1_2> */
|
||||
GBinderHidlVec wcdma RADIO_ALIGNED(8); /* vec<RadioCellIdentityWcdma_1_2> */
|
||||
GBinderHidlVec cdma RADIO_ALIGNED(8); /* vec<RadioCellIdentityCdma_1_2> */
|
||||
GBinderHidlVec lte RADIO_ALIGNED(8); /* vec<RadioCellIdentityLte_1_2> */
|
||||
GBinderHidlVec tdscdma RADIO_ALIGNED(8);/*vec<RadioCellIdentityTdscdma_1_2>*/
|
||||
} RADIO_ALIGNED(8) RadioCellIdentity_1_2; /* Since 1.2.4 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentity_1_2) == 88);
|
||||
|
||||
typedef struct radio_cell_info {
|
||||
RADIO_CELL_INFO_TYPE cellInfoType RADIO_ALIGNED(4);
|
||||
guint8 registered RADIO_ALIGNED(1);
|
||||
@@ -439,6 +648,26 @@ typedef struct radio_cell_info {
|
||||
} RADIO_ALIGNED(8) RadioCellInfo;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfo) == 104);
|
||||
|
||||
typedef struct radio_cell_info_1_2 {
|
||||
RADIO_CELL_INFO_TYPE cellInfoType RADIO_ALIGNED(4);
|
||||
guint8 registered RADIO_ALIGNED(1);
|
||||
gint32 timeStampType RADIO_ALIGNED(4);
|
||||
guint64 timeStamp RADIO_ALIGNED(8);
|
||||
GBinderHidlVec gsm RADIO_ALIGNED(8); /* vec<RadioCellInfoGsm> */
|
||||
GBinderHidlVec cdma RADIO_ALIGNED(8); /* vec<RadioCellInfoCdma> */
|
||||
GBinderHidlVec lte RADIO_ALIGNED(8); /* vec<RadioCellInfoLte> */
|
||||
GBinderHidlVec wcdma RADIO_ALIGNED(8); /* vec<RadioCellInfoWcdma> */
|
||||
GBinderHidlVec tdscdma RADIO_ALIGNED(8); /* vec<RadioCellInfoTdscdma> */
|
||||
RADIO_CELL_CONNECTION_STATUS connectionStatus RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCellInfo_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfo_1_2) == 112);
|
||||
|
||||
typedef struct radio_cell_identity_operator_names {
|
||||
GBinderHidlString alphaLong RADIO_ALIGNED(8);
|
||||
GBinderHidlString alphaShort RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityOperatorNames; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityOperatorNames) == 32);
|
||||
|
||||
typedef struct radio_cell_identity_gsm {
|
||||
GBinderHidlString mcc RADIO_ALIGNED(8);
|
||||
GBinderHidlString mnc RADIO_ALIGNED(8);
|
||||
@@ -449,6 +678,12 @@ typedef struct radio_cell_identity_gsm {
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityGsm;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityGsm) == 48);
|
||||
|
||||
typedef struct radio_cell_identity_gsm_1_2 {
|
||||
RadioCellIdentityGsm base RADIO_ALIGNED(8);
|
||||
RadioCellIdentityOperatorNames operatorNames RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityGsm_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityGsm_1_2) == 80);
|
||||
|
||||
typedef struct radio_cell_identity_wcdma {
|
||||
GBinderHidlString mcc RADIO_ALIGNED(8);
|
||||
GBinderHidlString mnc RADIO_ALIGNED(8);
|
||||
@@ -459,6 +694,12 @@ typedef struct radio_cell_identity_wcdma {
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityWcdma;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityWcdma) == 48);
|
||||
|
||||
typedef struct radio_cell_identity_wcdma_1_2 {
|
||||
RadioCellIdentityWcdma base RADIO_ALIGNED(8);
|
||||
RadioCellIdentityOperatorNames operatorNames RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityWcdma_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityWcdma_1_2) == 80);
|
||||
|
||||
typedef struct radio_cell_identity_cdma {
|
||||
gint32 networkId RADIO_ALIGNED(4);
|
||||
gint32 systemId RADIO_ALIGNED(4);
|
||||
@@ -468,6 +709,12 @@ typedef struct radio_cell_identity_cdma {
|
||||
} RADIO_ALIGNED(4) RadioCellIdentityCdma;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityCdma) == 20);
|
||||
|
||||
typedef struct radio_cell_identity_cdma_1_2 {
|
||||
RadioCellIdentityCdma base RADIO_ALIGNED(4);
|
||||
RadioCellIdentityOperatorNames operatorNames RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(4) RadioCellIdentityCdma_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityCdma_1_2) == 56);
|
||||
|
||||
typedef struct radio_cell_identity_lte {
|
||||
GBinderHidlString mcc RADIO_ALIGNED(8);
|
||||
GBinderHidlString mnc RADIO_ALIGNED(8);
|
||||
@@ -478,6 +725,13 @@ typedef struct radio_cell_identity_lte {
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityLte;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityLte) == 48);
|
||||
|
||||
typedef struct radio_cell_identity_lte_1_2 {
|
||||
RadioCellIdentityLte base RADIO_ALIGNED(8);
|
||||
RadioCellIdentityOperatorNames operatorNames RADIO_ALIGNED(8);
|
||||
gint32 bandwidth RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityLte_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityLte_1_2) == 88);
|
||||
|
||||
typedef struct radio_cell_identity_tdscdma {
|
||||
GBinderHidlString mcc RADIO_ALIGNED(8);
|
||||
GBinderHidlString mnc RADIO_ALIGNED(8);
|
||||
@@ -487,6 +741,24 @@ typedef struct radio_cell_identity_tdscdma {
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityTdscdma;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityTdscdma) == 48);
|
||||
|
||||
typedef struct radio_cell_identity_tdscdma_1_2 {
|
||||
RadioCellIdentityTdscdma base RADIO_ALIGNED(8);
|
||||
gint32 uarfcn RADIO_ALIGNED(8);
|
||||
RadioCellIdentityOperatorNames operatorNames RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityTdscdma_1_2; /* Since 1.2.3 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityTdscdma_1_2) == 88);
|
||||
|
||||
typedef struct radio_cell_identity_nr {
|
||||
GBinderHidlString mcc RADIO_ALIGNED(8);
|
||||
GBinderHidlString mnc RADIO_ALIGNED(8);
|
||||
guint64 nci RADIO_ALIGNED(8);
|
||||
guint32 pci RADIO_ALIGNED(4);
|
||||
gint32 tac RADIO_ALIGNED(4);
|
||||
gint32 nrarfcn RADIO_ALIGNED(4);
|
||||
RadioCellIdentityOperatorNames operatorNames RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellIdentityNr; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellIdentityNr) == 88);
|
||||
|
||||
typedef struct radio_voice_reg_state_result {
|
||||
RADIO_REG_STATE regState RADIO_ALIGNED(4);
|
||||
RADIO_TECH rat RADIO_ALIGNED(4);
|
||||
@@ -499,6 +771,18 @@ typedef struct radio_voice_reg_state_result {
|
||||
} RADIO_ALIGNED(8) RadioVoiceRegStateResult;
|
||||
G_STATIC_ASSERT(sizeof(RadioVoiceRegStateResult) == 120);
|
||||
|
||||
typedef struct radio_voice_reg_state_result_1_2 {
|
||||
RADIO_REG_STATE regState RADIO_ALIGNED(4);
|
||||
RADIO_TECH rat RADIO_ALIGNED(4);
|
||||
guint8 cssSupported RADIO_ALIGNED(1);
|
||||
gint32 roamingIndicator RADIO_ALIGNED(4);
|
||||
gint32 systemIsInPrl RADIO_ALIGNED(4);
|
||||
gint32 defaultRoamingIndicator RADIO_ALIGNED(4);
|
||||
gint32 reasonForDenial RADIO_ALIGNED(4);
|
||||
RadioCellIdentity_1_2 cellIdentity RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioVoiceRegStateResult_1_2; /* Since 1.2.4 */
|
||||
G_STATIC_ASSERT(sizeof(RadioVoiceRegStateResult_1_2) == 120);
|
||||
|
||||
typedef struct radio_data_reg_state_result {
|
||||
RADIO_REG_STATE regState RADIO_ALIGNED(4);
|
||||
RADIO_TECH rat RADIO_ALIGNED(4);
|
||||
@@ -508,6 +792,15 @@ typedef struct radio_data_reg_state_result {
|
||||
} RADIO_ALIGNED(8) RadioDataRegStateResult;
|
||||
G_STATIC_ASSERT(sizeof(RadioDataRegStateResult) == 104);
|
||||
|
||||
typedef struct radio_data_reg_state_result_1_2 {
|
||||
RADIO_REG_STATE regState RADIO_ALIGNED(4);
|
||||
RADIO_TECH rat RADIO_ALIGNED(4);
|
||||
gint32 reasonDataDenied RADIO_ALIGNED(4);
|
||||
gint32 maxDataCalls RADIO_ALIGNED(4);
|
||||
RadioCellIdentity_1_2 cellIdentity RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioDataRegStateResult_1_2; /* Since 1.2.4 */
|
||||
G_STATIC_ASSERT(sizeof(RadioDataRegStateResult_1_2) == 104);
|
||||
|
||||
typedef struct radio_signal_strength_gsm {
|
||||
guint32 signalStrength RADIO_ALIGNED(4);
|
||||
guint32 bitErrorRate RADIO_ALIGNED(4);
|
||||
@@ -521,6 +814,13 @@ typedef struct radio_signal_strength_wcdma {
|
||||
} RADIO_ALIGNED(4) RadioSignalStrengthWcdma;
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrengthWcdma) == 8);
|
||||
|
||||
typedef struct radio_signal_strength_wcdma_1_2 {
|
||||
RadioSignalStrengthWcdma base RADIO_ALIGNED(4);
|
||||
gint32 rscp RADIO_ALIGNED(4);
|
||||
gint32 ecno RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioSignalStrengthWcdma_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrengthWcdma_1_2) == 16);
|
||||
|
||||
typedef struct radio_signal_strength_cdma {
|
||||
guint32 dbm RADIO_ALIGNED(4);
|
||||
guint32 ecio RADIO_ALIGNED(4);
|
||||
@@ -549,6 +849,13 @@ typedef struct radio_signal_strength_tdscdma {
|
||||
} RADIO_ALIGNED(4) RadioSignalStrengthTdScdma;
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrengthTdScdma) == 4);
|
||||
|
||||
typedef struct radio_signal_strength_tdscdma_1_2 {
|
||||
guint32 signalStrength RADIO_ALIGNED(4);
|
||||
guint32 bitErrorRate RADIO_ALIGNED(4);
|
||||
guint32 rscp RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioSignalStrengthTdScdma_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrengthTdScdma_1_2) == 12);
|
||||
|
||||
typedef struct radio_signal_strength {
|
||||
RadioSignalStrengthGsm gw RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthCdma cdma RADIO_ALIGNED(4);
|
||||
@@ -558,6 +865,37 @@ typedef struct radio_signal_strength {
|
||||
} RADIO_ALIGNED(4) RadioSignalStrength;
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrength) == 60);
|
||||
|
||||
typedef struct radio_signal_strength_1_2 {
|
||||
RadioSignalStrengthGsm gw RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthCdma cdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthEvdo evdo RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthLte lte RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthTdScdma tdScdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthWcdma_1_2 wcdma RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioSignalStrength_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrength_1_2) == 76);
|
||||
|
||||
typedef struct radio_signal_strength_nr {
|
||||
gint32 ssRsrp RADIO_ALIGNED(4);
|
||||
gint32 ssRsrq RADIO_ALIGNED(4);
|
||||
gint32 ssSinr RADIO_ALIGNED(4);
|
||||
gint32 csiRsrp RADIO_ALIGNED(4);
|
||||
gint32 csiRsrq RADIO_ALIGNED(4);
|
||||
gint32 csiSinr RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioSignalStrengthNr; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrengthNr) == 24);
|
||||
|
||||
typedef struct radio_signal_strength_1_4 {
|
||||
RadioSignalStrengthGsm gsm RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthCdma cdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthEvdo evdo RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthLte lte RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthTdScdma_1_2 tdscdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthWcdma_1_2 wcdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthNr nr RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioSignalStrength_1_4; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioSignalStrength_1_4) == 108);
|
||||
|
||||
typedef struct radio_cell_info_gsm {
|
||||
RadioCellIdentityGsm cellIdentityGsm RADIO_ALIGNED(8);
|
||||
RadioSignalStrengthGsm signalStrengthGsm RADIO_ALIGNED(4);
|
||||
@@ -589,6 +927,64 @@ typedef struct radio_cell_info_tdscdma {
|
||||
} RADIO_ALIGNED(8) RadioCellInfoTdscdma;
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoTdscdma) == 56);
|
||||
|
||||
typedef struct radio_cell_info_gsm_1_2 {
|
||||
RadioCellIdentityGsm_1_2 cellIdentityGsm RADIO_ALIGNED(8);
|
||||
RadioSignalStrengthGsm signalStrengthGsm RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCellInfoGsm_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoGsm_1_2) == 96);
|
||||
|
||||
typedef struct radio_cell_info_wcdma_1_2 {
|
||||
RadioCellIdentityWcdma_1_2 cellIdentityWcdma RADIO_ALIGNED(8);
|
||||
RadioSignalStrengthWcdma_1_2 signalStrengthWcdma RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCellInfoWcdma_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoWcdma_1_2) == 96);
|
||||
|
||||
typedef struct radio_cell_info_cdma_1_2 {
|
||||
RadioCellIdentityCdma_1_2 cellIdentityCdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthCdma signalStrengthCdma RADIO_ALIGNED(4);
|
||||
RadioSignalStrengthEvdo signalStrengthEvdo RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioCellInfoCdma_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoCdma_1_2) == 80);
|
||||
|
||||
typedef struct radio_cell_info_lte_1_2 {
|
||||
RadioCellIdentityLte_1_2 cellIdentityLte RADIO_ALIGNED(8);
|
||||
RadioSignalStrengthLte signalStrengthLte RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCellInfoLte_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoLte_1_2) == 112);
|
||||
|
||||
typedef struct radio_cell_info_lte_1_4 {
|
||||
RadioCellInfoLte_1_2 base RADIO_ALIGNED(8);
|
||||
guint8 isEndcAvailable RADIO_ALIGNED(1);
|
||||
} RADIO_ALIGNED(8) RadioCellInfoLte_1_4; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoLte_1_4) == 120);
|
||||
|
||||
typedef struct radio_cell_info_tdscdma_1_2 {
|
||||
RadioCellIdentityTdscdma_1_2 cellIdentityTdscdma RADIO_ALIGNED(8);
|
||||
RadioSignalStrengthTdScdma_1_2 signalStrengthTdscdma RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(8) RadioCellInfoTdscdma_1_2; /* Since 1.2.0 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoTdscdma_1_2) == 104);
|
||||
|
||||
typedef struct radio_cell_info_nr {
|
||||
RadioSignalStrengthNr signalStrength RADIO_ALIGNED(4);
|
||||
RadioCellIdentityNr cellidentity RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellInfoNr; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfoNr) == 112);
|
||||
|
||||
typedef struct radio_cell_info_1_4 {
|
||||
guint8 cellInfoType RADIO_ALIGNED(1);
|
||||
guint8 registered RADIO_ALIGNED(1);
|
||||
RADIO_CELL_CONNECTION_STATUS connectionStatus RADIO_ALIGNED(4);
|
||||
union {
|
||||
RadioCellInfoGsm_1_2 gsm RADIO_ALIGNED(8);
|
||||
RadioCellInfoCdma_1_2 cdma RADIO_ALIGNED(8);
|
||||
RadioCellInfoWcdma_1_2 wcdma RADIO_ALIGNED(8);
|
||||
RadioCellInfoTdscdma_1_2 tdscdma RADIO_ALIGNED(8);
|
||||
RadioCellInfoLte_1_4 lte RADIO_ALIGNED(8);
|
||||
RadioCellInfoNr nr RADIO_ALIGNED(8);
|
||||
} info RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioCellInfo_1_4; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioCellInfo_1_4) == 128);
|
||||
|
||||
typedef struct radio_gsm_broadcast_sms_config {
|
||||
gint32 fromServiceId RADIO_ALIGNED(4);
|
||||
gint32 toServiceId RADIO_ALIGNED(4);
|
||||
@@ -645,6 +1041,37 @@ typedef struct radio_activity_stats_info {
|
||||
} RADIO_ALIGNED(4) RadioActivityStatsInfo;
|
||||
G_STATIC_ASSERT(sizeof(RadioActivityStatsInfo) == 32);
|
||||
|
||||
typedef struct radio_hardware_config {
|
||||
gint32 type RADIO_ALIGNED(4);
|
||||
GBinderHidlString uuid RADIO_ALIGNED(8);
|
||||
gint32 state RADIO_ALIGNED(4);
|
||||
GBinderHidlVec modem RADIO_ALIGNED(8); /* vec<RadioHardwareConfigModem> */
|
||||
GBinderHidlVec sim RADIO_ALIGNED(8); /* vec<RadioHardwareConfigSim> */
|
||||
} RADIO_ALIGNED(8) RadioHardwareConfig;
|
||||
G_STATIC_ASSERT(sizeof(RadioHardwareConfig) == 64);
|
||||
|
||||
typedef struct radio_hardware_config_modem {
|
||||
gint32 rilModel RADIO_ALIGNED(4);
|
||||
guint32 rat RADIO_ALIGNED(4);
|
||||
gint32 maxVoice RADIO_ALIGNED(4);
|
||||
gint32 maxData RADIO_ALIGNED(4);
|
||||
gint32 maxStandby RADIO_ALIGNED(4);
|
||||
} RADIO_ALIGNED(4) RadioHardwareConfigModem;
|
||||
G_STATIC_ASSERT(sizeof(RadioHardwareConfigModem) == 20);
|
||||
|
||||
typedef struct radio_hardware_config_sim {
|
||||
GBinderHidlString modemUuid RADIO_ALIGNED(8);
|
||||
} RADIO_ALIGNED(8) RadioHardwareConfigSim;
|
||||
G_STATIC_ASSERT(sizeof(RadioHardwareConfigSim) == 16);
|
||||
|
||||
typedef struct radio_network_scan_result {
|
||||
RADIO_SCAN_STATUS status RADIO_ALIGNED(4);
|
||||
guint32 error RADIO_ALIGNED(4);
|
||||
GBinderHidlVec networkInfos RADIO_ALIGNED(8); /* vec<RadioCellInfo> */
|
||||
/* or vec<RadioCellInfo_1_4> */
|
||||
} RADIO_ALIGNED(8) RadioNetworkScanResult; /* Since 1.2.5 */
|
||||
G_STATIC_ASSERT(sizeof(RadioNetworkScanResult) == 24);
|
||||
|
||||
/* c(req,resp,callName,CALL_NAME) */
|
||||
#define RADIO_CALL_1_0(c) \
|
||||
c(2,1,getIccCardStatus,GET_ICC_CARD_STATUS) \
|
||||
@@ -776,6 +1203,32 @@ G_STATIC_ASSERT(sizeof(RadioActivityStatsInfo) == 32);
|
||||
c(128,127,setIndicationFilter,SET_INDICATION_FILTER) \
|
||||
c(129,128,setSimCardPower,SET_SIM_CARD_POWER)
|
||||
|
||||
#define RADIO_CALL_1_1(c) \
|
||||
c(131,130,setCarrierInfoForImsiEncryption,SET_CARRIER_INFO_FOR_IMSI_ENCRYPTION) \
|
||||
c(132,131,setSimCardPower_1_1,SET_SIM_CARD_POWER_1_1) \
|
||||
c(133,132,startNetworkScan,START_NETWORK_SCAN) \
|
||||
c(134,133,stopNetworkScan,STOP_NETWORK_SCAN) \
|
||||
c(135,134,startKeepalive,START_KEEPALIVE) \
|
||||
c(136,135,stopKeepalive,STOP_KEEPALIVE)
|
||||
|
||||
#define RADIO_CALL_1_2(c) /* Since 1.2.0 */ \
|
||||
c(139,138,setSignalStrengthReportingCriteria,SET_SIGNAL_STRENGTH_REPORTING_CRITERIA) \
|
||||
c(140,139,setLinkCapacityReportingCriteria,SET_LINK_CAPACITY_REPORTING_CRITERIA)
|
||||
|
||||
#define RADIO_CALL_1_3(c) /* Since 1.2.5 */ \
|
||||
c(143,144,setSystemSelectionChannels,SET_SYSTEM_SELECTION_CHANNELS) \
|
||||
c(144,145,enableModem,ENABLE_MODEM) \
|
||||
c(145,146,getModemStackStatus,GET_MODEM_STACK_STATUS)
|
||||
|
||||
#define RADIO_CALL_1_4(c) /* Since 1.2.5 */ \
|
||||
c(149,147,emergencyDial,EMERGENCY_DIAL) \
|
||||
c(150,148,startNetworkScan_1_4,START_NETWORKSCAN_1_4) \
|
||||
c(151,152,getPreferredNetworkTypeBitmap,GET_PREFERRED_NETWORK_TYPE_BITMAP) \
|
||||
c(152,153,setPreferredNetworkTypeBitmap,SET_PREFERRED_NETWORK_TYPE_BITMAP) \
|
||||
c(153,156,setAllowedCarriers_1_4,SET_ALLOWED_CARRIERS_1_4) \
|
||||
c(154,157,getAllowedCarriers_1_4,GET_ALLOWED_CARRIERS_1_4) \
|
||||
c(155,158,getSignalStrength_1_4,GET_SIGNAL_STRENGTH_1_4)
|
||||
|
||||
/* e(code,eventName,EVENT_NAME) */
|
||||
#define RADIO_EVENT_1_0(e) \
|
||||
e(1,radioStateChanged,RADIO_STATE_CHANGED) \
|
||||
@@ -824,30 +1277,124 @@ G_STATIC_ASSERT(sizeof(RadioActivityStatsInfo) == 32);
|
||||
e(44,pcoData,PCO_DATA) \
|
||||
e(45,modemReset,MODEM_RESET)
|
||||
|
||||
#define RADIO_EVENT_1_1(e) \
|
||||
e(46,carrierInfoForImsiEncryption,CARRIER_INFO_FOR_IMSI_ENCRYPTION) \
|
||||
e(47,networkScanResult,NETWORK_SCAN_RESULT) \
|
||||
e(48,keepaliveStatus,KEEPALIVE_STATUS)
|
||||
|
||||
#define RADIO_EVENT_1_2(e) /* Since 1.2.0 */ \
|
||||
e(49,networkScanResult_1_2,NETWORK_SCAN_RESULT_1_2) \
|
||||
e(50,cellInfoList_1_2,CELL_INFO_LIST_1_2) \
|
||||
e(51,currentLinkCapacityEstimate,CURRENT_LINK_CAPACITY_ESTIMATE) \
|
||||
e(52,currentPhysicalChannelConfigs,CURRENT_PHYSICAL_CHANNEL_CONFIGS) \
|
||||
e(53,currentSignalStrength_1_2,CURRENT_SIGNAL_STRENGTH_1_2)
|
||||
|
||||
#define RADIO_EVENT_1_4(e) /* Since 1.2.5 */ \
|
||||
e(54,currentEmergencyNumberList,CURRENT_EMERGENCY_NUMBER_LIST) \
|
||||
e(55,cellInfoList_1_4,CELL_INFO_LIST_1_4) \
|
||||
e(56,networkScanResult_1_4,NETWORK_SCAN_RESULT_1_4) \
|
||||
e(57,currentPhysicalChannelConfigs_1_4,CURRENT_PHYSICAL_CHANNEL_CONFIGS_1_4) \
|
||||
e(58,dataCallListChanged_1_4,DATA_CALL_LIST_CHANGED_1_4) \
|
||||
e(59,currentSignalStrength_1_4,CURRENT_SIGNAL_STRENGTH_1_4)
|
||||
|
||||
typedef enum radio_req {
|
||||
RADIO_REQ_ANY = 0,
|
||||
RADIO_REQ_NONE = 0,
|
||||
RADIO_REQ_SET_RESPONSE_FUNCTIONS = 1, /* setResponseFunctions */
|
||||
#define RADIO_REQ_(req,resp,Name,NAME) RADIO_REQ_##NAME = req,
|
||||
|
||||
/* android.hardware.radio@1.0::IRadio */
|
||||
RADIO_REQ_SET_RESPONSE_FUNCTIONS = 1, /* setResponseFunctions */
|
||||
RADIO_CALL_1_0(RADIO_REQ_)
|
||||
RADIO_REQ_RESPONSE_ACKNOWLEDGEMENT = 130, /* responseAcknowledgement */
|
||||
RADIO_1_0_REQ_LAST = RADIO_REQ_RESPONSE_ACKNOWLEDGEMENT,
|
||||
|
||||
/* android.hardware.radio@1.1::IRadio */
|
||||
RADIO_CALL_1_1(RADIO_REQ_)
|
||||
RADIO_1_1_REQ_LAST = RADIO_REQ_STOP_KEEPALIVE,
|
||||
|
||||
/* android.hardware.radio@1.2::IRadio */
|
||||
RADIO_CALL_1_2(RADIO_REQ_)
|
||||
RADIO_REQ_START_NETWORK_SCAN_1_2 = 137,
|
||||
RADIO_REQ_SET_INDICATION_FILTER_1_2 = 138,
|
||||
RADIO_REQ_SETUP_DATA_CALL_1_2 = 141,
|
||||
RADIO_REQ_DEACTIVATE_DATA_CALL_1_2 = 142,
|
||||
RADIO_1_2_REQ_LAST = RADIO_REQ_DEACTIVATE_DATA_CALL_1_2,
|
||||
|
||||
/* android.hardware.radio@1.3::IRadio */
|
||||
RADIO_CALL_1_3(RADIO_REQ_) /* Since 1.2.5 */
|
||||
RADIO_1_3_REQ_LAST = RADIO_REQ_GET_MODEM_STACK_STATUS,
|
||||
|
||||
/* android.hardware.radio@1.4::IRadio */
|
||||
RADIO_CALL_1_4(RADIO_REQ_) /* Since 1.2.5 */
|
||||
RADIO_REQ_SETUP_DATA_CALL_1_4 = 146,
|
||||
RADIO_REQ_SET_INITIAL_ATTACH_APN_1_4 = 147,
|
||||
RADIO_REQ_SET_DATA_PROFILE_1_4 = 148,
|
||||
RADIO_1_4_REQ_LAST = RADIO_REQ_GET_SIGNAL_STRENGTH_1_4
|
||||
#undef RADIO_REQ_
|
||||
RADIO_REQ_RESPONSE_ACKNOWLEDGEMENT = 130 /* responseAcknowledgement */
|
||||
} RADIO_REQ;
|
||||
|
||||
typedef enum radio_resp {
|
||||
RADIO_RESP_ANY = 0,
|
||||
RADIO_RESP_NONE = 0,
|
||||
#define RADIO_RESP_(req,resp,Name,NAME) RADIO_RESP_##NAME = resp,
|
||||
|
||||
/* android.hardware.radio@1.0::IRadioResponse */
|
||||
RADIO_CALL_1_0(RADIO_RESP_)
|
||||
RADIO_RESP_ACKNOWLEDGE_REQUEST = 129, /* acknowledgeRequest */
|
||||
RADIO_1_0_RESP_LAST = RADIO_RESP_ACKNOWLEDGE_REQUEST, /* Since 1.2.4 */
|
||||
|
||||
/* android.hardware.radio@1.1::IRadioResponse */
|
||||
RADIO_CALL_1_1(RADIO_RESP_)
|
||||
RADIO_1_1_RESP_LAST = RADIO_RESP_STOP_KEEPALIVE, /* Since 1.2.4 */
|
||||
|
||||
/* android.hardware.radio@1.2::IRadioResponse */
|
||||
RADIO_CALL_1_2(RADIO_RESP_)
|
||||
RADIO_RESP_GET_CELL_INFO_LIST_1_2 = 136,
|
||||
RADIO_RESP_GET_ICC_CARD_STATUS_1_2 = 137,
|
||||
RADIO_RESP_GET_CURRENT_CALLS_1_2 = 140,
|
||||
RADIO_RESP_GET_SIGNAL_STRENGTH_1_2 = 141,
|
||||
RADIO_RESP_GET_VOICE_REGISTRATION_STATE_1_2 = 142,
|
||||
RADIO_RESP_GET_DATA_REGISTRATION_STATE_1_2 = 143,
|
||||
RADIO_1_2_RESP_LAST = RADIO_RESP_GET_DATA_REGISTRATION_STATE_1_2, /* Since 1.2.4 */
|
||||
|
||||
/* android.hardware.radio@1.3::IRadioResponse */
|
||||
RADIO_CALL_1_3(RADIO_RESP_) /* Since 1.2.5 */
|
||||
RADIO_1_3_RESP_LAST = RADIO_RESP_GET_MODEM_STACK_STATUS,
|
||||
|
||||
/* android.hardware.radio@1.4::IRadioResponse */
|
||||
RADIO_CALL_1_4(RADIO_RESP_) /* Since 1.2.5 */
|
||||
RADIO_RESP_GET_CELL_INFO_LIST_RESPONSE_1_4 = 149,
|
||||
RADIO_RESP_GET_DATA_REGISTRATION_STATE_RESPONSE_1_4 = 150,
|
||||
RADIO_RESP_GET_ICC_CARD_STATUS_RESPONSE_1_4 = 151,
|
||||
RADIO_RESP_GET_DATA_CALL_LIST_RESPONSE_1_4 = 154,
|
||||
RADIO_RESP_SETUP_DATA_CALL_RESPONSE_1_4 = 155,
|
||||
RADIO_1_4_RESP_LAST = RADIO_RESP_GET_SIGNAL_STRENGTH_1_4
|
||||
#undef RADIO_RESP_
|
||||
RADIO_RESP_ACKNOWLEDGE_REQUEST = 129
|
||||
} RADIO_RESP;
|
||||
|
||||
typedef enum radio_ind {
|
||||
RADIO_IND_ANY = 0,
|
||||
RADIO_IND_NONE = 0,
|
||||
#define RADIO_IND_(code,Name,NAME) RADIO_IND_##NAME = code,
|
||||
|
||||
/* android.hardware.radio@1.0::IRadioIndication */
|
||||
RADIO_EVENT_1_0(RADIO_IND_)
|
||||
RADIO_1_0_IND_LAST = RADIO_IND_MODEM_RESET, /* Since 1.2.4 */
|
||||
|
||||
/* android.hardware.radio@1.1::IRadioIndication */
|
||||
RADIO_EVENT_1_1(RADIO_IND_)
|
||||
RADIO_1_1_IND_LAST = RADIO_IND_KEEPALIVE_STATUS, /* Since 1.2.4 */
|
||||
|
||||
/* android.hardware.radio@1.2::IRadioIndication */
|
||||
RADIO_EVENT_1_2(RADIO_IND_)
|
||||
RADIO_1_2_IND_LAST = RADIO_IND_CURRENT_SIGNAL_STRENGTH_1_2, /* Since 1.2.4 */
|
||||
|
||||
/* android.hardware.radio@1.3::IRadioIndication */
|
||||
RADIO_1_3_IND_LAST = RADIO_1_2_IND_LAST, /* Since 1.2.5 */
|
||||
|
||||
/* android.hardware.radio@1.4::IRadioIndication */
|
||||
RADIO_EVENT_1_4(RADIO_IND_)
|
||||
RADIO_1_4_IND_LAST = RADIO_IND_CURRENT_SIGNAL_STRENGTH_1_4 /* Since 1.2.5 */
|
||||
#undef RADIO_IND_
|
||||
} RADIO_IND;
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
name=gbinder-radio
|
||||
libdir=/usr/lib
|
||||
libdir=@libdir@
|
||||
includedir=/usr/include
|
||||
|
||||
Name: libgbinder-radio
|
||||
Description: Binder client library for Android radio interfaces
|
||||
Version: [version]
|
||||
Requires: glib-2.0 libglibutil libgbinder
|
||||
Version: @version@
|
||||
Requires.private: glib-2.0 libglibutil libgbinder
|
||||
Libs: -L${libdir} -l${name}
|
||||
Cflags: -I${includedir} -I${includedir}/${name}
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
Name: libgbinder-radio
|
||||
Version: 1.0.1
|
||||
Version: 1.2.5
|
||||
Release: 0
|
||||
Summary: Binder client library for Android radio interfaces
|
||||
Group: Development/Libraries
|
||||
License: BSD
|
||||
URL: https://github.com/mer-hybris/libgbinder-radio
|
||||
Source: %{name}-%{version}.tar.bz2
|
||||
|
||||
%define libgbinder_version 1.0.9
|
||||
|
||||
BuildRequires: pkgconfig(glib-2.0)
|
||||
BuildRequires: pkgconfig(libglibutil)
|
||||
BuildRequires: pkgconfig(libgbinder)
|
||||
BuildRequires: pkgconfig(libgbinder) >= %{libgbinder_version}
|
||||
Requires: libgbinder >= %{libgbinder_version}
|
||||
Requires(post): /sbin/ldconfig
|
||||
Requires(postun): /sbin/ldconfig
|
||||
|
||||
@@ -27,11 +31,11 @@ This package contains the development library for %{name}.
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
make KEEP_SYMBOLS=1 release pkgconfig
|
||||
make LIBDIR=%{_libdir} KEEP_SYMBOLS=1 release pkgconfig
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
make install-dev DESTDIR=%{buildroot}
|
||||
make LIBDIR=%{_libdir} DESTDIR=%{buildroot} install-dev
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2019 Jolla Ltd.
|
||||
* Copyright (C) 2018-2019 Slava Monich <slava.monich@jolla.com>
|
||||
* Copyright (C) 2018-2021 Jolla Ltd.
|
||||
* Copyright (C) 2018-2021 Slava Monich <slava.monich@jolla.com>
|
||||
*
|
||||
* You may use this file under the terms of the BSD license as follows:
|
||||
*
|
||||
@@ -34,6 +34,8 @@
|
||||
* any official policies, either expressed or implied.
|
||||
*/
|
||||
|
||||
#define GLIB_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
#include "radio_instance.h"
|
||||
#include "radio_registry_p.h"
|
||||
#include "radio_util.h"
|
||||
@@ -43,6 +45,7 @@
|
||||
|
||||
#include <gutil_idlepool.h>
|
||||
#include <gutil_misc.h>
|
||||
#include <gutil_strv.h>
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
@@ -59,6 +62,7 @@ struct radio_instance_priv {
|
||||
char* dev;
|
||||
char* slot;
|
||||
char* key;
|
||||
char* modem;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE(RadioInstance, radio_instance, G_TYPE_OBJECT)
|
||||
@@ -70,6 +74,7 @@ enum radio_instance_signal {
|
||||
SIGNAL_OBSERVE_RESPONSE,
|
||||
SIGNAL_ACK,
|
||||
SIGNAL_DEATH,
|
||||
SIGNAL_ENABLED,
|
||||
SIGNAL_COUNT
|
||||
};
|
||||
|
||||
@@ -79,11 +84,60 @@ enum radio_instance_signal {
|
||||
#define SIGNAL_OBSERVE_RESPONSE_NAME "radio-instance-observe-response"
|
||||
#define SIGNAL_ACK_NAME "radio-instance-ack"
|
||||
#define SIGNAL_DEATH_NAME "radio-instance-death"
|
||||
#define SIGNAL_ENABLED_NAME "radio-instance-enabled"
|
||||
|
||||
static guint radio_instance_signals[SIGNAL_COUNT] = { 0 };
|
||||
|
||||
static GHashTable* radio_instance_table = NULL;
|
||||
|
||||
#define DEFAULT_INTERFACE RADIO_INTERFACE_1_0
|
||||
|
||||
static const GBinderClientIfaceInfo radio_iface_info[] = {
|
||||
{RADIO_1_2, RADIO_1_2_REQ_LAST },
|
||||
{RADIO_1_1, RADIO_1_1_REQ_LAST },
|
||||
{RADIO_1_0, RADIO_1_0_REQ_LAST }
|
||||
};
|
||||
|
||||
static const char* const radio_indication_ifaces[] = {
|
||||
RADIO_INDICATION_1_2,
|
||||
RADIO_INDICATION_1_1,
|
||||
RADIO_INDICATION_1_0,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const char* const radio_response_ifaces[] = {
|
||||
RADIO_RESPONSE_1_2,
|
||||
RADIO_RESPONSE_1_1,
|
||||
RADIO_RESPONSE_1_0,
|
||||
NULL
|
||||
};
|
||||
|
||||
typedef struct radio_interface_desc {
|
||||
RADIO_INTERFACE version;
|
||||
const char* radio_iface;
|
||||
const char* const* ind_ifaces;
|
||||
const char* const* resp_ifaces;
|
||||
} RadioInterfaceDesc;
|
||||
|
||||
static const RadioInterfaceDesc radio_interfaces[] = {
|
||||
{
|
||||
RADIO_INTERFACE_1_2,
|
||||
RADIO_1_2,
|
||||
radio_indication_ifaces + 0,
|
||||
radio_response_ifaces + 0,
|
||||
},{
|
||||
RADIO_INTERFACE_1_1,
|
||||
RADIO_1_1,
|
||||
radio_indication_ifaces + 1,
|
||||
radio_response_ifaces + 1
|
||||
},{
|
||||
RADIO_INTERFACE_1_0,
|
||||
RADIO_1_0,
|
||||
radio_indication_ifaces + 2,
|
||||
radio_response_ifaces + 2
|
||||
}
|
||||
};
|
||||
|
||||
/*==========================================================================*
|
||||
* Implementation
|
||||
*==========================================================================*/
|
||||
@@ -155,7 +209,9 @@ radio_instance_indication(
|
||||
RadioInstance* self = RADIO_INSTANCE(user_data);
|
||||
const char* iface = gbinder_remote_request_interface(req);
|
||||
|
||||
if (!g_strcmp0(iface, RADIO_INDICATION_1_0)) {
|
||||
if (!g_strcmp0(iface, RADIO_INDICATION_1_0) ||
|
||||
!g_strcmp0(iface, RADIO_INDICATION_1_1) ||
|
||||
!g_strcmp0(iface, RADIO_INDICATION_1_2)) {
|
||||
GBinderReader reader;
|
||||
guint type;
|
||||
|
||||
@@ -202,14 +258,14 @@ radio_instance_response(
|
||||
RadioInstance* self = RADIO_INSTANCE(user_data);
|
||||
const char* iface = gbinder_remote_request_interface(req);
|
||||
|
||||
if (!g_strcmp0(iface, RADIO_RESPONSE_1_0)) {
|
||||
if (gutil_strv_contains((const GStrV*)radio_response_ifaces, iface)) {
|
||||
/* All these should be one-way transactions */
|
||||
GASSERT(flags & GBINDER_TX_FLAG_ONEWAY);
|
||||
if (code == RADIO_RESP_ACKNOWLEDGE_REQUEST) {
|
||||
/* oneway acknowledgeRequest(int32_t serial) */
|
||||
gint32 serial;
|
||||
|
||||
GDEBUG(RADIO_RESPONSE_1_0 " %u acknowledgeRequest", code);
|
||||
GDEBUG("%s %u acknowledgeRequest", iface, code);
|
||||
if (gbinder_remote_request_read_int32(req, &serial)) {
|
||||
g_signal_emit(self, radio_instance_signals[SIGNAL_ACK], 0,
|
||||
serial);
|
||||
@@ -217,14 +273,12 @@ radio_instance_response(
|
||||
} else {
|
||||
/* All other responses have RadioResponseInfo */
|
||||
GBinderReader reader;
|
||||
GBinderBuffer* buf;
|
||||
const RadioResponseInfo* info;
|
||||
|
||||
gbinder_remote_request_init_reader(req, &reader);
|
||||
buf = gbinder_reader_read_buffer(&reader);
|
||||
GASSERT(buf && buf->size == sizeof(RadioResponseInfo));
|
||||
if (buf && buf->size == sizeof(RadioResponseInfo)) {
|
||||
info = gbinder_reader_read_hidl_struct(&reader, RadioResponseInfo);
|
||||
if (info) {
|
||||
GQuark quark = radio_instance_resp_quark(self, code);
|
||||
const RadioResponseInfo* info = buf->data;
|
||||
gboolean handled = FALSE;
|
||||
|
||||
g_signal_emit(self,
|
||||
@@ -238,7 +292,6 @@ radio_instance_response(
|
||||
radio_instance_ack(self);
|
||||
}
|
||||
}
|
||||
gbinder_buffer_free(buf);
|
||||
}
|
||||
*status = GBINDER_STATUS_OK;
|
||||
} else {
|
||||
@@ -320,57 +373,49 @@ radio_instance_gone(
|
||||
|
||||
static
|
||||
RadioInstance*
|
||||
radio_instance_create(
|
||||
radio_instance_create_version(
|
||||
GBinderServiceManager* sm,
|
||||
GBinderRemoteObject* remote,
|
||||
const char* dev,
|
||||
const char* slot,
|
||||
const char* key)
|
||||
const char* key,
|
||||
const char* modem,
|
||||
int slot_index,
|
||||
const RadioInterfaceDesc* desc)
|
||||
{
|
||||
RadioInstance* self = NULL;
|
||||
GBinderServiceManager* sm = gbinder_servicemanager_new(dev);
|
||||
|
||||
if (sm) {
|
||||
int status = 0;
|
||||
const char* iface = RADIO_1_0;
|
||||
char* fqname = g_strconcat(iface, "/", slot, NULL);
|
||||
GBinderRemoteObject* remote = gbinder_servicemanager_get_service_sync
|
||||
(sm, fqname, &status);
|
||||
|
||||
if (remote) {
|
||||
RadioInstancePriv* priv;
|
||||
RadioInstance* self = g_object_new(RADIO_TYPE_INSTANCE, NULL);
|
||||
RadioInstancePriv* priv = self->priv;
|
||||
GBinderLocalRequest* req;
|
||||
GBinderRemoteReply* reply;
|
||||
GBinderWriter writer;
|
||||
int status;
|
||||
|
||||
GINFO("Connected to %s", fqname);
|
||||
/* get_service returns auto-released reference,
|
||||
* we need to add a reference of our own */
|
||||
gbinder_remote_object_ref(remote);
|
||||
|
||||
self = g_object_new(RADIO_TYPE_INSTANCE, NULL);
|
||||
priv = self->priv;
|
||||
self->slot = priv->slot = g_strdup(slot);
|
||||
self->dev = priv->dev = g_strdup(dev);
|
||||
self->key = priv->key = g_strdup(key);
|
||||
self->modem = priv->modem = g_strdup(modem);
|
||||
self->slot_index = slot_index;
|
||||
self->version = desc->version;
|
||||
|
||||
priv->remote = remote;
|
||||
priv->client = gbinder_client_new(remote, iface);
|
||||
priv->indication = gbinder_servicemanager_new_local_object
|
||||
(sm, RADIO_INDICATION_1_0, radio_instance_indication, self);
|
||||
priv->response = gbinder_servicemanager_new_local_object
|
||||
(sm, RADIO_RESPONSE_1_0, radio_instance_response, self);
|
||||
priv->death_id = gbinder_remote_object_add_death_handler
|
||||
(remote, radio_instance_died, self);
|
||||
priv->remote = gbinder_remote_object_ref(remote);
|
||||
priv->client = gbinder_client_new2(remote,
|
||||
radio_iface_info, G_N_ELEMENTS(radio_iface_info));
|
||||
priv->indication = gbinder_servicemanager_new_local_object2(sm,
|
||||
desc->ind_ifaces, radio_instance_indication, self);
|
||||
priv->response = gbinder_servicemanager_new_local_object2(sm,
|
||||
desc->resp_ifaces, radio_instance_response, self);
|
||||
priv->death_id = gbinder_remote_object_add_death_handler(remote,
|
||||
radio_instance_died, self);
|
||||
|
||||
/* IRadio::setResponseFunctions */
|
||||
req = gbinder_client_new_request(priv->client);
|
||||
req = gbinder_client_new_request2(priv->client,
|
||||
RADIO_REQ_SET_RESPONSE_FUNCTIONS);
|
||||
gbinder_local_request_init_writer(req, &writer);
|
||||
gbinder_writer_append_local_object(&writer, priv->response);
|
||||
gbinder_writer_append_local_object(&writer, priv->indication);
|
||||
reply = gbinder_client_transact_sync_reply(priv->client,
|
||||
RADIO_REQ_SET_RESPONSE_FUNCTIONS, req, &status);
|
||||
gbinder_remote_reply_unref(gbinder_client_transact_sync_reply(priv->client,
|
||||
RADIO_REQ_SET_RESPONSE_FUNCTIONS, req, &status));
|
||||
GVERBOSE_("setResponseFunctions %s status %d", slot, status);
|
||||
gbinder_local_request_unref(req);
|
||||
gbinder_remote_reply_unref(reply);
|
||||
|
||||
GDEBUG("Instance '%s'", slot);
|
||||
|
||||
@@ -379,9 +424,42 @@ radio_instance_create(
|
||||
* have another slot to initialize.
|
||||
*/
|
||||
gutil_idle_pool_add_object(priv->idle, g_object_ref(sm));
|
||||
return self;
|
||||
}
|
||||
|
||||
static
|
||||
RadioInstance*
|
||||
radio_instance_create(
|
||||
const char* dev,
|
||||
const char* slot,
|
||||
const char* key,
|
||||
const char* modem,
|
||||
int slot_index,
|
||||
RADIO_INTERFACE max_version)
|
||||
{
|
||||
RadioInstance* self = NULL;
|
||||
GBinderServiceManager* sm = gbinder_servicemanager_new(dev);
|
||||
|
||||
if (sm) {
|
||||
guint i;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS(radio_interfaces) && !self; i++) {
|
||||
const RadioInterfaceDesc* desc = radio_interfaces + i;
|
||||
|
||||
if (desc->version <= max_version) {
|
||||
char* fqname = g_strconcat(desc->radio_iface, "/", slot, NULL);
|
||||
GBinderRemoteObject* obj = /* autoreleased */
|
||||
gbinder_servicemanager_get_service_sync(sm, fqname, NULL);
|
||||
|
||||
if (obj) {
|
||||
GINFO("Connected to %s", fqname);
|
||||
self = radio_instance_create_version(sm, obj, dev, slot, key,
|
||||
modem, slot_index, desc);
|
||||
}
|
||||
g_free(fqname);
|
||||
}
|
||||
}
|
||||
gbinder_servicemanager_unref(sm);
|
||||
g_free(fqname);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -390,9 +468,10 @@ static
|
||||
char*
|
||||
radio_instance_make_key(
|
||||
const char* dev,
|
||||
const char* name)
|
||||
const char* name,
|
||||
RADIO_INTERFACE version)
|
||||
{
|
||||
return g_strconcat(dev, ":", name, NULL);
|
||||
return g_strdup_printf("%s:%s:%d", dev, name, version);
|
||||
}
|
||||
|
||||
/*==========================================================================*
|
||||
@@ -403,9 +482,58 @@ RadioInstance*
|
||||
radio_instance_new(
|
||||
const char* dev,
|
||||
const char* name)
|
||||
{
|
||||
return radio_instance_new_with_version(dev, name, DEFAULT_INTERFACE);
|
||||
}
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_new_with_modem_and_slot(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
const char* modem,
|
||||
int slot) /* Since 1.0.7 */
|
||||
{
|
||||
return radio_instance_new_with_modem_slot_and_version(dev, name, modem,
|
||||
slot, DEFAULT_INTERFACE);
|
||||
}
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_new_with_version(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
RADIO_INTERFACE version) /* Since 1.2.1 */
|
||||
{
|
||||
if (name && name[0]) {
|
||||
const char* modem;
|
||||
int slot;
|
||||
|
||||
if (!g_strcmp0(name, "slot1")) {
|
||||
modem = "/ril_0";
|
||||
slot = 0;
|
||||
} else if (!g_strcmp0(name, "slot2")) {
|
||||
modem = "/ril_1";
|
||||
slot = 1;
|
||||
} else {
|
||||
GWARN("Unexpected slot '%s'", name);
|
||||
modem = NULL;
|
||||
slot = 0;
|
||||
}
|
||||
return radio_instance_new_with_modem_slot_and_version(dev, name, modem,
|
||||
slot, version);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_new_with_modem_slot_and_version(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
const char* modem,
|
||||
int slot,
|
||||
RADIO_INTERFACE version) /* Since 1.2.1 */
|
||||
{
|
||||
if (dev && dev[0] && name && name[0]) {
|
||||
char* key = radio_instance_make_key(dev, name);
|
||||
char* key = radio_instance_make_key(dev, name, version);
|
||||
RadioInstance* self = NULL;
|
||||
|
||||
if (radio_instance_table) {
|
||||
@@ -415,7 +543,7 @@ radio_instance_new(
|
||||
g_free(key);
|
||||
return radio_instance_ref(self);
|
||||
} else {
|
||||
self = radio_instance_create(dev, name, key);
|
||||
self = radio_instance_create(dev, name, key, modem, slot, version);
|
||||
if (self) {
|
||||
if (!radio_instance_table) {
|
||||
radio_instance_table = g_hash_table_new_full
|
||||
@@ -436,11 +564,29 @@ RadioInstance*
|
||||
radio_instance_get(
|
||||
const char* dev,
|
||||
const char* name)
|
||||
{
|
||||
return radio_instance_get_with_version(dev, name, DEFAULT_INTERFACE);
|
||||
}
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_get_with_interface(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
RADIO_INTERFACE version) /* 1.2.1, deprecated */
|
||||
{
|
||||
return radio_instance_get_with_version(dev, name, version);
|
||||
}
|
||||
|
||||
RadioInstance*
|
||||
radio_instance_get_with_version(
|
||||
const char* dev,
|
||||
const char* name,
|
||||
RADIO_INTERFACE version) /* Since 1.2.2 */
|
||||
{
|
||||
RadioInstance* self = NULL;
|
||||
|
||||
if (dev && dev[0] && name && name[0]) {
|
||||
char* key = radio_instance_make_key(dev, name);
|
||||
char* key = radio_instance_make_key(dev, name, version);
|
||||
|
||||
if (radio_instance_table) {
|
||||
self = g_hash_table_lookup(radio_instance_table, key);
|
||||
@@ -578,7 +724,7 @@ radio_instance_new_request(
|
||||
RADIO_REQ code)
|
||||
{
|
||||
if (G_LIKELY(self)) {
|
||||
return gbinder_client_new_request(self->priv->client);
|
||||
return gbinder_client_new_request2(self->priv->client, code);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -596,6 +742,18 @@ radio_instance_send_request_sync(
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
radio_instance_set_enabled(
|
||||
RadioInstance* self,
|
||||
gboolean enabled) /* Since 1.0.7 */
|
||||
{
|
||||
if (G_LIKELY(self) && self->enabled != enabled) {
|
||||
self->enabled = enabled;
|
||||
GDEBUG("%s %sabled", self->slot, enabled ? "en" : "dis");
|
||||
g_signal_emit(self, radio_instance_signals[SIGNAL_ENABLED], 0);
|
||||
}
|
||||
}
|
||||
|
||||
gulong
|
||||
radio_instance_add_indication_handler(
|
||||
RadioInstance* self,
|
||||
@@ -668,7 +826,17 @@ radio_instance_add_death_handler(
|
||||
gpointer user_data)
|
||||
{
|
||||
return (G_LIKELY(self) && G_LIKELY(func)) ? g_signal_connect(self,
|
||||
SIGNAL_ACK_NAME, G_CALLBACK(func), user_data) : 0;
|
||||
SIGNAL_DEATH_NAME, G_CALLBACK(func), user_data) : 0;
|
||||
}
|
||||
|
||||
gulong
|
||||
radio_instance_add_enabled_handler(
|
||||
RadioInstance* self,
|
||||
RadioInstanceFunc func,
|
||||
gpointer user_data) /* Since 1.0.7 */
|
||||
{
|
||||
return (G_LIKELY(self) && G_LIKELY(func)) ? g_signal_connect(self,
|
||||
SIGNAL_ENABLED_NAME, G_CALLBACK(func), user_data) : 0;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -724,6 +892,7 @@ radio_instance_finalize(
|
||||
g_free(priv->slot);
|
||||
g_free(priv->dev);
|
||||
g_free(priv->key);
|
||||
g_free(priv->modem);
|
||||
G_OBJECT_CLASS(radio_instance_parent_class)->finalize(object);
|
||||
}
|
||||
|
||||
@@ -764,6 +933,10 @@ radio_instance_class_init(
|
||||
g_signal_new(SIGNAL_DEATH_NAME, type,
|
||||
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
radio_instance_signals[SIGNAL_ENABLED] =
|
||||
g_signal_new(SIGNAL_ENABLED_NAME, type,
|
||||
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2019 Jolla Ltd.
|
||||
* Copyright (C) 2018-2019 Slava Monich <slava.monich@jolla.com>
|
||||
* Copyright (C) 2018-2020 Jolla Ltd.
|
||||
* Copyright (C) 2018-2020 Slava Monich <slava.monich@jolla.com>
|
||||
*
|
||||
* You may use this file under the terms of the BSD license as follows:
|
||||
*
|
||||
@@ -41,11 +41,13 @@
|
||||
|
||||
void
|
||||
radio_registry_instance_added(
|
||||
RadioInstance* instance);
|
||||
RadioInstance* instance)
|
||||
G_GNUC_INTERNAL;
|
||||
|
||||
void
|
||||
radio_registry_instance_removed(
|
||||
const char* key);
|
||||
const char* key)
|
||||
G_GNUC_INTERNAL;
|
||||
|
||||
#endif /* RADIO_REGISTRY_PRIVATE_H */
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2019 Jolla Ltd.
|
||||
* Copyright (C) 2018-2019 Slava Monich <slava.monich@jolla.com>
|
||||
* Copyright (C) 2018-2021 Jolla Ltd.
|
||||
* Copyright (C) 2018-2021 Slava Monich <slava.monich@jolla.com>
|
||||
*
|
||||
* You may use this file under the terms of the BSD license as follows:
|
||||
*
|
||||
@@ -49,7 +49,18 @@ radio_req_name(
|
||||
#define RADIO_REQ_(req,resp,Name,NAME) \
|
||||
case RADIO_REQ_##NAME: return #Name;
|
||||
RADIO_CALL_1_0(RADIO_REQ_)
|
||||
RADIO_CALL_1_1(RADIO_REQ_)
|
||||
RADIO_CALL_1_2(RADIO_REQ_)
|
||||
RADIO_CALL_1_3(RADIO_REQ_)
|
||||
RADIO_CALL_1_4(RADIO_REQ_)
|
||||
#undef RADIO_REQ_
|
||||
case RADIO_REQ_START_NETWORK_SCAN_1_2: return "startNetworkScan_1_2";
|
||||
case RADIO_REQ_SET_INDICATION_FILTER_1_2: return "setIndicationFilter_1_2";
|
||||
case RADIO_REQ_SETUP_DATA_CALL_1_2: return "setupDataCall_1_2";
|
||||
case RADIO_REQ_DEACTIVATE_DATA_CALL_1_2: return "deactivateDataCall_1_2";
|
||||
case RADIO_REQ_SETUP_DATA_CALL_1_4: return "setupDataCall_1_4";
|
||||
case RADIO_REQ_SET_INITIAL_ATTACH_APN_1_4: return "setInitialAttachApn_1_4";
|
||||
case RADIO_REQ_SET_DATA_PROFILE_1_4: return "setDataProfile_1_4";
|
||||
case RADIO_REQ_ANY:
|
||||
break;
|
||||
}
|
||||
@@ -65,7 +76,33 @@ radio_resp_name(
|
||||
#define RADIO_RESP_(req,resp,Name,NAME) \
|
||||
case RADIO_RESP_##NAME: return #Name "Response";
|
||||
RADIO_CALL_1_0(RADIO_RESP_)
|
||||
RADIO_CALL_1_1(RADIO_RESP_)
|
||||
RADIO_CALL_1_2(RADIO_RESP_)
|
||||
RADIO_CALL_1_3(RADIO_RESP_)
|
||||
RADIO_CALL_1_4(RADIO_RESP_)
|
||||
#undef RADIO_RESP_
|
||||
case RADIO_RESP_GET_CELL_INFO_LIST_1_2:
|
||||
return "getCellInfoListResponse_1_2";
|
||||
case RADIO_RESP_GET_ICC_CARD_STATUS_1_2:
|
||||
return "getIccCardStatusResponse_1_2";
|
||||
case RADIO_RESP_GET_CURRENT_CALLS_1_2:
|
||||
return "getCurrentCallsResponse_1_2";
|
||||
case RADIO_RESP_GET_SIGNAL_STRENGTH_1_2:
|
||||
return "getSignalStrengthResponse_1_2";
|
||||
case RADIO_RESP_GET_VOICE_REGISTRATION_STATE_1_2:
|
||||
return "getVoiceRegistrationStateResponse_1_2";
|
||||
case RADIO_RESP_GET_DATA_REGISTRATION_STATE_1_2:
|
||||
return "getDataRegistrationStateResponse_1_2";
|
||||
case RADIO_RESP_GET_CELL_INFO_LIST_RESPONSE_1_4:
|
||||
return "getCellInfoListResponse_1_4";
|
||||
case RADIO_RESP_GET_DATA_REGISTRATION_STATE_RESPONSE_1_4:
|
||||
return "getDataRegistrationStateResponse_1_4";
|
||||
case RADIO_RESP_GET_ICC_CARD_STATUS_RESPONSE_1_4:
|
||||
return "getIccCardStatusResponse_1_4";
|
||||
case RADIO_RESP_GET_DATA_CALL_LIST_RESPONSE_1_4:
|
||||
return "getDataCallListResponse_1_4";
|
||||
case RADIO_RESP_SETUP_DATA_CALL_RESPONSE_1_4:
|
||||
return "setupDataCallResponse_1_4";
|
||||
case RADIO_RESP_ANY:
|
||||
break;
|
||||
}
|
||||
@@ -80,6 +117,9 @@ radio_ind_name(
|
||||
#define RADIO_IND_(code,Name,NAME) \
|
||||
case RADIO_IND_##NAME: return #Name;
|
||||
RADIO_EVENT_1_0(RADIO_IND_)
|
||||
RADIO_EVENT_1_1(RADIO_IND_)
|
||||
RADIO_EVENT_1_2(RADIO_IND_)
|
||||
RADIO_EVENT_1_4(RADIO_IND_)
|
||||
#undef RADIO_IND_
|
||||
case RADIO_IND_ANY:
|
||||
break;
|
||||
@@ -87,6 +127,17 @@ radio_ind_name(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function no longer makes as much sense as it did in IRadio 1.0 times.
|
||||
* Later it turned out that that same call may produce different responses
|
||||
* under different circumstances. For example, getIccCardStatus call may
|
||||
* cause getIccCardStatusResponse or getIccCardStatusResponse_1_2 to be
|
||||
* sent back, depending on which interfaces are supported by the caller.
|
||||
* There's no longer one-to-one match between requests and responses,
|
||||
* that would be too easy and straightforward for Google designers :)
|
||||
*
|
||||
* Use this function carefully or better don't use it at all.
|
||||
*/
|
||||
RADIO_RESP
|
||||
radio_req_resp(
|
||||
RADIO_REQ req)
|
||||
@@ -95,10 +146,24 @@ radio_req_resp(
|
||||
#define RADIO_REQ_(req,resp,Name,NAME) \
|
||||
case RADIO_REQ_##NAME: return RADIO_RESP_##NAME;
|
||||
RADIO_CALL_1_0(RADIO_REQ_)
|
||||
RADIO_CALL_1_1(RADIO_REQ_)
|
||||
RADIO_CALL_1_2(RADIO_REQ_)
|
||||
RADIO_CALL_1_3(RADIO_REQ_)
|
||||
RADIO_CALL_1_4(RADIO_REQ_)
|
||||
#undef RADIO_REQ_
|
||||
default:
|
||||
return RADIO_RESP_NONE;
|
||||
case RADIO_REQ_SET_RESPONSE_FUNCTIONS:
|
||||
case RADIO_REQ_RESPONSE_ACKNOWLEDGEMENT:
|
||||
case RADIO_REQ_START_NETWORK_SCAN_1_2:
|
||||
case RADIO_REQ_SET_INDICATION_FILTER_1_2:
|
||||
case RADIO_REQ_SETUP_DATA_CALL_1_2:
|
||||
case RADIO_REQ_DEACTIVATE_DATA_CALL_1_2:
|
||||
case RADIO_REQ_SETUP_DATA_CALL_1_4:
|
||||
case RADIO_REQ_SET_INITIAL_ATTACH_APN_1_4:
|
||||
case RADIO_REQ_SET_DATA_PROFILE_1_4:
|
||||
case RADIO_REQ_ANY:
|
||||
break;
|
||||
}
|
||||
return RADIO_RESP_NONE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user