summaryrefslogtreecommitdiffstats
path: root/meta-oem-production-readiness
diff options
context:
space:
mode:
authorRiku Nomoto <riku.nomoto@woven-planet.global>2020-11-26 23:09:02 +0900
committerRiku Nomoto <riku.nomoto@woven-planet.global>2021-01-12 15:29:21 +0900
commita0197682c5b732a81aeb3c2459adfc8d45f969b1 (patch)
tree61caf0f6aa5369a6abe08857ce49c7012f48d57d /meta-oem-production-readiness
parentaf25a3b5a46c74124f1fb99e7157cc6aea879a5c (diff)
oem-pr-bs: add core services and libraries
This is the second commit of agl-basesystem. IPC/RPC library group binding each modules v14 (jsmoeller): update BASESYSTEM_REVISION to fix libinput-hal build v16 (jsmoeller): update BASESYSTEM_REVISION v17 (taniakwa): fix os-rpclibrary-tool-native build - fix invalid path to LICENSE to use devtool - fix error when rebuild (clean generated files first) v19 (nomoto): fix to set host only tool in class-native v20 (nomoto): update subpath, branch and S to make recipes simple v21 (nomoto): fix EXTRA_OEMAKE to set default value v25 (nomoto): change mail address and author v29 (nomoto): remove agl-basesystem-hal.bbclass Bug-AGL: SPEC-3670 Signed-off-by: Riku Nomoto <riku.nomoto@woven-planet.global> Change-Id: I5da43003d8a976912d183474aea884ec1b81a708
Diffstat (limited to 'meta-oem-production-readiness')
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-common.bbclass4
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-hal.bbclass9
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/classes/bshalmake.bbclass6
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/conf/include/agl-basesystem-base.inc3
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/conf/layer.conf2
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-core/agl-basefiles/agl-basefiles_1.0.0.bb27
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified-library_1.0.0.bb30
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified_1.0.0.bb32
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-kernel/kernel-module-evklib/evklib-headers.bb24
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/images/agl-image-boot-basesystem.bb13
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-apis.bb5
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-core.bb7
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-hal.bb7
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-service.bb11
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem.bb8
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-commonlibrary/ns-commonlibrary_1.0.0.bb18
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-loglibrary/ns-loglibrary_1.0.0.bb18
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-eventlibrary/os-eventlibrary_1.0.0.bb25
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-posixbasedos001legacylibrary/os-posixbasedos001legacylibrary_1.0.0.bb18
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary-tool_1.0.0.bb29
-rw-r--r--meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary_1.0.0.bb29
21 files changed, 285 insertions, 40 deletions
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-common.bbclass b/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-common.bbclass
index f944de5b..fa6211b5 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-common.bbclass
+++ b/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-common.bbclass
@@ -1,7 +1,3 @@
inherit bsmake
DEPENDS_append = " agl-basefiles"
-
-EXTRA_OEMAKE = "'CXX=${CXX} ${CODINGRULES_CPP_21MM}' 'CC=${CC} ${CODINGRULES_C_21MM}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'DESTDIR=${D}' 'SDKTARGETSYSROOT=${STAGING_DIR_HOST}'"
-
-RDEPENDS_${PN} += " agl-basefiles "
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-hal.bbclass b/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-hal.bbclass
deleted file mode 100644
index 9db2f26a..00000000
--- a/meta-oem-production-readiness/meta-agl-basesystem/classes/agl-basesystem-hal.bbclass
+++ /dev/null
@@ -1,9 +0,0 @@
-inherit bshalmake
-
-FILES_${PN}-dev_remove = "${FILES_SOLIBSDEV}"
-
-EXTRA_OEMAKE = "'CXX=${CXX}' 'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'DESTDIR=${D}' 'SDKTARGETSYSROOT=${STAGING_DIR_HOST}'"
-
-DEPENDS_append = " agl-basefiles"
-
-
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/classes/bshalmake.bbclass b/meta-oem-production-readiness/meta-agl-basesystem/classes/bshalmake.bbclass
index 2deac96f..bd2fd9c1 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/classes/bshalmake.bbclass
+++ b/meta-oem-production-readiness/meta-agl-basesystem/classes/bshalmake.bbclass
@@ -1,10 +1,12 @@
# base_do_install under poky's base.bbclass is empty so definition is needed.
bshalmake_do_install (){
oe_runmake install
-
+
install -d ${D}${includedir}/basesystem
install -D -m 644 ${S}/hal_api/*.h ${D}${includedir}/basesystem
-
}
EXPORT_FUNCTIONS do_install
+
+FILES_${PN}-dev_remove = "${FILES_SOLIBSDEV}"
+
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/conf/include/agl-basesystem-base.inc b/meta-oem-production-readiness/meta-agl-basesystem/conf/include/agl-basesystem-base.inc
index 9ffd16ae..2ae25ad5 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/conf/include/agl-basesystem-base.inc
+++ b/meta-oem-production-readiness/meta-agl-basesystem/conf/include/agl-basesystem-base.inc
@@ -7,5 +7,4 @@ INCLUDEDIR = "${includedir}/basesystem"
CONFDIR = "${sysconfdir}/basesystem"
LOCALDIR = "/var/local/lib/basesystem"
-BASESYSTEM_REVISION = "7ab637d7f01e712488deab0d318443ed9a81d5ae"
-
+BASESYSTEM_REVISION = "71afcd09b0f210e7da5ae6adc1b914fa02d412ff"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/conf/layer.conf b/meta-oem-production-readiness/meta-agl-basesystem/conf/layer.conf
index 806408a5..811fd237 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/conf/layer.conf
+++ b/meta-oem-production-readiness/meta-agl-basesystem/conf/layer.conf
@@ -3,7 +3,7 @@ BBPATH .= ":${LAYERDIR}"
# We have a recipes directory, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "agl-basesystem"
BBFILE_PATTERN_agl-basesystem := "^${LAYERDIR}/"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/agl-basefiles/agl-basefiles_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/agl-basefiles/agl-basefiles_1.0.0.bb
new file mode 100644
index 00000000..27b2cae0
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/agl-basefiles/agl-basefiles_1.0.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "base-files for AGL software"
+DESCRIPTION = "install base-files to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/agl-basefiles"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d ${D}${includedir}/basesystem
+ install -m 644 -D ${S}/include/* ${D}${includedir}/basesystem/
+}
+
+do_install_class-native() {
+ install -d ${D}${bindir}
+ install -m 755 -D ${S}/bin/launch_xml2cfg.sh ${D}${bindir}/
+}
+
+RDEPENDS_${PN} += "bash"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified-library_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified-library_1.0.0.bb
new file mode 100644
index 00000000..baaa431e
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified-library_1.0.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "ns-frameworkunified library for AGL software"
+DESCRIPTION = "ns-frameworkunified library to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+DEPENDS += " \
+ ns-loglibrary \
+ libxml2 \
+ ns-frameworkunified \
+"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/native/framework_unified"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.library"
+
+FILES_${PN} += " \
+ ${libdir}/* \
+"
+
+RDEPENDS_${PN} += " \
+ os-posixbasedos001legacylibrary \
+ ns-loglibrary \
+ ns-commonlibrary \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified_1.0.0.bb
new file mode 100644
index 00000000..25ac7b90
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-core/ns-frameworkunified/ns-frameworkunified_1.0.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "ns-frameworkunified for AGL software"
+DESCRIPTION = "ns-frameworkunified to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+DEPENDS += " \
+ os-posixbasedos001legacylibrary \
+ ns-loglibrary \
+ ns-commonlibrary \
+ boost \
+"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/native/framework_unified"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.client"
+
+FILES_${PN} += " \
+ ${libdir}/* \
+"
+
+RDEPENDS_${PN} += " \
+ os-posixbasedos001legacylibrary \
+ ns-loglibrary \
+ ns-commonlibrary \
+ ns-frameworkunified-library \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-kernel/kernel-module-evklib/evklib-headers.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-kernel/kernel-module-evklib/evklib-headers.bb
new file mode 100644
index 00000000..078f157d
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-kernel/kernel-module-evklib/evklib-headers.bb
@@ -0,0 +1,24 @@
+SUMMARY = "evklib-headers for AGL software"
+DESCRIPTION = "install evklib-header files to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/agl-basefiles"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d ${D}${includedir}/basesystem/agldd
+ install -m 644 -D ${S}/agldd/* ${D}${includedir}/basesystem/agldd/
+}
+
+FILES_${PN}-dev += " \
+ ${includedir}/basesystem/agldd/* \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/images/agl-image-boot-basesystem.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/images/agl-image-boot-basesystem.bb
new file mode 100644
index 00000000..5d12cc7d
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/images/agl-image-boot-basesystem.bb
@@ -0,0 +1,13 @@
+SUMMARY = "An AGL small image just capable of allowing a device to boot."
+
+require recipes-platform/images/agl-image-boot.inc
+
+LICENSE = "MIT"
+
+IMAGE_INSTALL := " \
+ packagegroup-core-boot \
+ packagegroup-agl-basesystem \
+"
+
+# limit images built ...
+IMAGE_FSTYPES := "ext4 tar"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-apis.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-apis.bb
index 91e9c6df..b9c027f5 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-apis.bb
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-apis.bb
@@ -5,7 +5,4 @@ inherit packagegroup
PACKAGES = "\
packagegroup-agl-basesystem-apis \
- "
-
-RDEPENDS_${PN} += " \
- "
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-core.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-core.bb
index 7a9df8ca..69b335f2 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-core.bb
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-core.bb
@@ -4,8 +4,5 @@ LICENSE = "Apache-2.0"
inherit packagegroup
PACKAGES = "\
- packagegroup-agl-basesystem-core \
- "
-
-RDEPENDS_${PN} += "\
- "
+ packagegroup-agl-basesystem-core \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-hal.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-hal.bb
index deb729dd..7afd629f 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-hal.bb
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-hal.bb
@@ -4,8 +4,5 @@ LICENSE = "Apache-2.0"
inherit packagegroup
PACKAGES = "\
- packagegroup-agl-basesystem-hal \
- "
-
-RDEPENDS_${PN} += " \
- "
+ packagegroup-agl-basesystem-hal \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-service.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-service.bb
index 788b97f6..0e46b451 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-service.bb
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem-service.bb
@@ -4,8 +4,13 @@ LICENSE = "Apache-2.0"
inherit packagegroup
PACKAGES = "\
- packagegroup-agl-basesystem-service \
- "
+ packagegroup-agl-basesystem-service \
+"
RDEPENDS_${PN} += " \
- "
+ ns-commonlibrary \
+ ns-frameworkunified \
+ ns-loglibrary \
+ os-posixbasedos001legacylibrary \
+ os-rpclibrary \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem.bb
index 0b4e0eb8..2f13587f 100644
--- a/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem.bb
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-platform/packagegroups/packagegroup-agl-basesystem.bb
@@ -5,19 +5,17 @@ inherit packagegroup
PACKAGES = "\
packagegroup-agl-basesystem \
- "
+"
ALLOW_EMPTY_${PN} = "1"
RDEPENDS_${PN} += "\
packagegroup-agl-image-minimal \
- "
+"
RDEPENDS_${PN} += "\
packagegroup-agl-basesystem-core \
packagegroup-agl-basesystem-apis \
packagegroup-agl-basesystem-service \
packagegroup-agl-basesystem-hal \
- "
-
-
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-commonlibrary/ns-commonlibrary_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-commonlibrary/ns-commonlibrary_1.0.0.bb
new file mode 100644
index 00000000..1fdf7efe
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-commonlibrary/ns-commonlibrary_1.0.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "ns-commonlibrary for AGL software"
+DESCRIPTION = "ns-commonlibrary to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/native/common_library"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.client"
+
+FILES_${PN} += " \
+ ${libdir}/* \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-loglibrary/ns-loglibrary_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-loglibrary/ns-loglibrary_1.0.0.bb
new file mode 100644
index 00000000..c59ba5a6
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/ns-loglibrary/ns-loglibrary_1.0.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "ns-loglibrary for AGL software"
+DESCRIPTION = "ns-loglibrary to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/native/log_library"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.client"
+
+FILES_${PN} += " \
+ ${libdir}/* \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-eventlibrary/os-eventlibrary_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-eventlibrary/os-eventlibrary_1.0.0.bb
new file mode 100644
index 00000000..8dc4b291
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-eventlibrary/os-eventlibrary_1.0.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "os-eventlibrary for AGL software"
+DESCRIPTION = "os-eventlibrary to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+DEPENDS += " \
+ evklib-headers \
+"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/other/event_library"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.client"
+
+FILES_${PN} += " \
+ ${libdir}/* \
+"
+RDEPENDS_${PN} += " \
+ kernel-module-evklib \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-posixbasedos001legacylibrary/os-posixbasedos001legacylibrary_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-posixbasedos001legacylibrary/os-posixbasedos001legacylibrary_1.0.0.bb
new file mode 100644
index 00000000..ff878356
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-posixbasedos001legacylibrary/os-posixbasedos001legacylibrary_1.0.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "os-posixbasedos001legacylibrary for AGL software"
+DESCRIPTION = "os-posixbasedos001legacylibrary to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/other/posix_based_os001_legacy_library"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.client"
+
+FILES_${PN} += " \
+ ${libdir}/* \
+"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary-tool_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary-tool_1.0.0.bb
new file mode 100644
index 00000000..573207ac
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary-tool_1.0.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "librpc tools for AGL software"
+DESCRIPTION = "install librpc tool"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+DEPENDS += " \
+ agl-basefiles-native \
+ bison-native \
+"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/other/rpc_library/tool"
+
+do_compile_prepend () {
+ oe_runmake clean
+}
+
+do_install () {
+ install -D -m 755 ${S}/rpc_apidef ${D}${bindir}/rpc_apidef
+}
+
+FILES_${PN} += " \
+ ${bindir}/rpc_apidef \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary_1.0.0.bb b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary_1.0.0.bb
new file mode 100644
index 00000000..95631dcb
--- /dev/null
+++ b/meta-oem-production-readiness/meta-agl-basesystem/recipes-support/os-rpclibrary/os-rpclibrary_1.0.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "os-rpclibrary for AGL software"
+DESCRIPTION = "os-rpclibrary to build AGL software"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+DEPENDS += " \
+ ns-commonlibrary \
+ ns-loglibrary \
+ bison-native \
+"
+
+PV = "1.0.0+gitr${SRCPV}"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/basesystem.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV := "${BASESYSTEM_REVISION}"
+
+S = "${WORKDIR}/git/service/other/rpc_library"
+
+inherit agl-basesystem-common
+
+BSMAKE_FILE = "Makefile.client"
+
+FILES_${PN} += " \
+ /usr/lib/basesystem/librpc.so \
+"
+
+RDEPENDS_${PN} += " \
+ ns-commonlibrary \
+ ns-loglibrary \
+"
an class="p">(index < 0) goto OnErrorExit; done = json_object_object_get_ex(ctlsInJ, "val", &valuesJ); if (!done) { afb_req_fail_f(request, "ctl-invalid", "No val=[val1, ...] ctl='%s'", json_object_get_string(ctlsInJ)); goto OnErrorExit; } json_object_object_add(ctlsOutJ, "id", json_object_new_int(halCtls[index].ctl.numid)); json_object_object_add(ctlsOutJ, "val", volumeNormalise(ACTION_SET, &halCtls[index].ctl, valuesJ)); break; } case json_type_array: { ctlsOutJ = json_object_new_array(); for (int idx = 0; idx < json_object_array_length(ctlsInJ); idx++) { json_object *ctlInJ = json_object_array_get_idx(ctlsInJ, idx); index = halGetCtlIndex(request, ctlInJ); if (index < 0) goto OnErrorExit; done = json_object_object_get_ex(ctlInJ, "val", &valuesJ); if (!done) { afb_req_fail_f(request, "ctl-invalid", "No val=[val1, ...] ctl='%s'", json_object_get_string(ctlsInJ)); goto OnErrorExit; } // let's create alsa low level set control request json_object *ctlOutJ = json_object_new_object(); json_object_object_add(ctlOutJ, "id", json_object_new_int(halCtls[index].ctl.numid)); json_object_object_add(ctlOutJ, "val", volumeNormalise(ACTION_SET, &halCtls[index].ctl, valuesJ)); json_object_array_add(ctlsOutJ, ctlOutJ); } break; } default: afb_req_fail_f(request, "ctl-invalid", "Not a valid JSON ctl='%s'", json_object_get_string(ctlsInJ)); goto OnErrorExit; } err = halCallAlsaSetCtls(ctlsOutJ); if (err) { afb_req_fail_f(request, "subcall:alsacore/setctl", "%s", json_object_get_string(ctlsOutJ)); goto OnErrorExit; } afb_req_success(request, NULL, NULL); return; OnErrorExit: return; }; // Remap low level controls into HAL hight level ones STATIC json_object *HalGetPrepareResponse(afb_req request, json_object *ctlsJ) { alsaHalMapT *halCtls = halSndCard->ctls; json_object *halResponseJ; int length; switch (json_object_get_type(ctlsJ)) { case json_type_array: // responseJ is a JSON array halResponseJ = json_object_new_array(); length = json_object_array_length(ctlsJ); break; case json_type_object: halResponseJ = NULL; length = 1; break; default: afb_req_fail_f(request, "ctls-notarray", "Invalid Controls return from alsa/getcontrol ctlsJ=%s", json_object_get_string(ctlsJ)); goto OnErrorExit; } // loop on array and store values into client context for (int idx = 0; idx < length; idx++) { json_object *sndCtlJ, *valJ, *numidJ; int numid; // extract control from array if any if (halResponseJ) sndCtlJ = json_object_array_get_idx(ctlsJ, idx); else sndCtlJ = ctlsJ; if (!json_object_object_get_ex(sndCtlJ, "id", &numidJ) || !json_object_object_get_ex(sndCtlJ, "val", &valJ)) { afb_req_fail_f(request, "ctl-invalid", "Invalid Control return from alsa/getcontrol ctl=%s", json_object_get_string(sndCtlJ)); goto OnErrorExit; } // HAL and Business logic use the same AlsaMixerHal.h direct conversion numid = (halCtlsTagT) json_object_get_int(numidJ); for (int idx = 0; halCtls[idx].ctl.numid; idx++) { if (halCtls[idx].ctl.numid == numid) { // translate low level numid to HAL one and normalise values json_object *halCtlJ = json_object_new_object(); json_object_object_add(halCtlJ, "label", json_object_new_string(halCtls[idx].label)); // idx+1 == HAL/NUMID json_object_object_add(halCtlJ, "tag", json_object_new_int(halCtls[idx].tag)); // idx+1 == HAL/NUMID json_object_object_add(halCtlJ, "val", volumeNormalise(ACTION_GET, &halCtls[idx].ctl, valJ)); if (halResponseJ) json_object_array_add(halResponseJ, halCtlJ); else halResponseJ = halCtlJ; break; } } if (halCtls[idx].ctl.numid == 0) { afb_req_fail_f(request, "ctl-invalid", "Invalid Control numid=%d from alsa/getcontrol ctlJ=%s", numid, json_object_get_string(sndCtlJ)); goto OnErrorExit; } } return halResponseJ; OnErrorExit: return NULL; } STATIC json_object *halCallAlsaGetCtls(json_object *ctlsOutJ) { json_object *responseJ, *queryJ; int err, done; // Call now level CTL queryJ = json_object_new_object(); json_object_object_add(queryJ, "devid", json_object_new_string(halSndCard->devid)); json_object_object_add(queryJ, "ctl", ctlsOutJ); err = afb_service_call_sync("alsacore", "getctl", queryJ, &responseJ); if (err) goto OnErrorExit; // Let ignore info data if any and keep on response done = json_object_object_get_ex(responseJ, "response", &responseJ); if (!done) goto OnErrorExit; return responseJ; OnErrorExit: return NULL; } // retrieve a single HAL control from its tag. PUBLIC json_object *halGetCtlByTag(halRampEnumT tag) { json_object *responseJ, *valJ; alsaHalMapT *halCtls = halSndCard->ctls; int done, index; index = halCtlTagToIndex(tag); if (index < 0) goto OnErrorExit; responseJ = halCallAlsaGetCtls(json_object_new_int(halCtls[index].ctl.numid)); done = json_object_object_get_ex(responseJ, "val", &valJ); if (!done) goto OnErrorExit; return volumeNormalise(ACTION_GET, &halCtls[index].ctl, valJ); OnErrorExit: return NULL; } // Translate high level control to low level and call lower layer PUBLIC void halGetCtls(afb_req request) { int index; alsaHalMapT *halCtls = halSndCard->ctls; json_object *ctlsInJ, *ctlsOutJ, *responseJ; // get query from request ctlsInJ = afb_req_json(request); ctlsOutJ = json_object_new_array(); switch (json_object_get_type(ctlsInJ)) { case json_type_object: { index = halGetCtlIndex(request, ctlsInJ); if (index < 0) goto OnErrorExit; json_object_array_add(ctlsOutJ, json_object_new_int(halCtls[index].ctl.numid)); break; } case json_type_array: { for (int idx = 0; idx < json_object_array_length(ctlsInJ); idx++) { json_object *ctlInJ = json_object_array_get_idx(ctlsInJ, idx); index = halGetCtlIndex(request, ctlInJ); if (index < 0) goto OnErrorExit; json_object_array_add(ctlsOutJ, json_object_new_int(halCtls[index].ctl.numid)); } break; } default: afb_req_fail_f(request, "ctl-invalid", "Not a valid JSON ctl='%s'", json_object_get_string(ctlsInJ)); goto OnErrorExit; } // Call now level CTL responseJ = halCallAlsaGetCtls(ctlsOutJ); if (!responseJ) { afb_req_fail_f(request, "subcall:alsacore/getctl", "%s", json_object_get_string(responseJ)); goto OnErrorExit; } // map back low level response to HAL ctl with normalised values json_object *halResponse = HalGetPrepareResponse(request, responseJ); if (!halResponse) goto OnErrorExit; afb_req_success(request, halResponse, NULL); return; OnErrorExit: return; }; STATIC int UpdateOneSndCtl(alsaHalCtlMapT *ctl, json_object *sndCtlJ) { json_object *tmpJ, *ctlJ; json_object_object_get_ex(sndCtlJ, "name", &tmpJ); ctl->name = (char*) json_object_get_string(tmpJ); json_object_object_get_ex(sndCtlJ, "id", &tmpJ); ctl->numid = json_object_get_int(tmpJ); // make sure we face a valid Alsa Low level ctl if (!json_object_object_get_ex(sndCtlJ, "ctl", &ctlJ)) goto OnErrorExit; json_object_object_get_ex(ctlJ, "min", &tmpJ); ctl->minval = json_object_get_int(tmpJ); json_object_object_get_ex(ctlJ, "max", &tmpJ); ctl->maxval = json_object_get_int(tmpJ); json_object_object_get_ex(ctlJ, "step", &tmpJ); ctl->step = json_object_get_int(tmpJ); json_object_object_get_ex(ctlJ, "count", &tmpJ); ctl->count = json_object_get_int(tmpJ); json_object_object_get_ex(ctlJ, "type", &tmpJ); ctl->type = (snd_ctl_elem_type_t) json_object_get_int(tmpJ); // process dbscale TLV if any if (json_object_object_get_ex(sndCtlJ, "tlv", &tmpJ)) { json_object *dbscaleJ; if (!json_object_object_get_ex(tmpJ, "dbscale", &dbscaleJ)) { AFB_WARNING("TLV found but not DBscale attached ctl name=%s numid=%d", ctl->name, ctl->numid); } else { ctl->dbscale = malloc(sizeof (alsaHalDBscaleT)); json_object_object_get_ex(dbscaleJ, "min", &tmpJ); ctl->dbscale->min = (snd_ctl_elem_type_t) json_object_get_int(tmpJ); json_object_object_get_ex(dbscaleJ, "max", &tmpJ); ctl->dbscale->max = (snd_ctl_elem_type_t) json_object_get_int(tmpJ); json_object_object_get_ex(dbscaleJ, "step", &tmpJ); ctl->dbscale->step = (snd_ctl_elem_type_t) json_object_get_int(tmpJ); json_object_object_get_ex(dbscaleJ, "mute", &tmpJ); ctl->dbscale->mute = (snd_ctl_elem_type_t) json_object_get_int(tmpJ); } } return 0; OnErrorExit: return -1; } // this is call when after all bindings are loaded PUBLIC int halServiceInit(const char *apiPrefix, alsaHalSndCardT *alsaHalSndCard) { int err; json_object *queryurl, *responseJ, *devidJ, *ctlsJ, *tmpJ; alsaHalMapT *halCtls = alsaHalSndCard->ctls; // if not volume normalisation CB provided use default one if (!alsaHalSndCard->volumeCB) alsaHalSndCard->volumeCB = volumeNormalise; halSndCard = alsaHalSndCard; err = afb_daemon_require_api("alsacore", 1); if (err) { AFB_ERROR("AlsaCore missing cannot use AlsaHAL"); goto OnErrorExit; } // register HAL with Alsa Low Level Binder queryurl = json_object_new_object(); json_object_object_add(queryurl, "prefix", json_object_new_string(apiPrefix)); json_object_object_add(queryurl, "sndname", json_object_new_string(alsaHalSndCard->name)); err = afb_service_call_sync("alsacore", "halregister", queryurl, &responseJ); json_object_put(queryurl); if (err) { AFB_NOTICE("Fail to register HAL to ALSA lowlevel binding Response='%s'", json_object_get_string(responseJ)); goto OnErrorExit; } // extract sound devidJ from HAL registration if (!json_object_object_get_ex(responseJ, "response", &tmpJ) || !json_object_object_get_ex(tmpJ, "devid", &devidJ)) { AFB_ERROR("Ooops: Internal error no devidJ return from HAL registration Response='%s'", json_object_get_string(responseJ)); goto OnErrorExit; } // save devid for future use halSndCard->devid = strdup(json_object_get_string(devidJ)); // for each Non Alsa Control callback create a custom control ctlsJ = json_object_new_array(); for (int idx = 0; (halCtls[idx].ctl.name || halCtls[idx].ctl.numid); idx++) { json_object *ctlJ; // Try to find best equivalent label for tag if (halCtls[idx].tag >StartHalCrlTag && halCtls[idx].tag < EndHalCrlTag && halCtlsLabels[halCtls[idx].tag] != NULL) { halCtls[idx].label = halCtlsLabels[halCtls[idx].tag]; } else { if (halCtls[idx].ctl.name) halCtls[idx].label=halCtls[idx].ctl.name; else if (halCtls[idx].info) halCtls[idx].label=halCtls[idx].info; else halCtls[idx].label="NoHalCttNameSet"; } ctlJ = json_object_new_object(); if (halCtls[idx].ctl.numid) json_object_object_add(ctlJ, "ctl", json_object_new_int(halCtls[idx].ctl.numid)); if (halCtls[idx].ctl.name) json_object_object_add(ctlJ, "name", json_object_new_string(halCtls[idx].ctl.name)); if (halCtls[idx].ctl.minval) json_object_object_add(ctlJ, "min", json_object_new_int(halCtls[idx].ctl.minval)); if (halCtls[idx].ctl.maxval) json_object_object_add(ctlJ, "max", json_object_new_int(halCtls[idx].ctl.maxval)); if (halCtls[idx].ctl.step) json_object_object_add(ctlJ, "step", json_object_new_int(halCtls[idx].ctl.step)); if (halCtls[idx].ctl.type) json_object_object_add(ctlJ, "type", json_object_new_int(halCtls[idx].ctl.type)); if (halCtls[idx].ctl.count) json_object_object_add(ctlJ, "count", json_object_new_int(halCtls[idx].ctl.count)); if (halCtls[idx].ctl.value) json_object_object_add(ctlJ, "value", json_object_new_int(halCtls[idx].ctl.value)); if (halCtls[idx].ctl.dbscale) { json_object *dbscaleJ = json_object_new_object(); if (halCtls[idx].ctl.dbscale->max) json_object_object_add(dbscaleJ, "max", json_object_new_int(halCtls[idx].ctl.dbscale->max)); if (halCtls[idx].ctl.dbscale->min) json_object_object_add(dbscaleJ, "min", json_object_new_int(halCtls[idx].ctl.dbscale->min)); if (halCtls[idx].ctl.dbscale->step) json_object_object_add(dbscaleJ, "step", json_object_new_int(halCtls[idx].ctl.dbscale->step)); if (halCtls[idx].ctl.dbscale->mute) json_object_object_add(dbscaleJ, "mute", json_object_new_int(halCtls[idx].ctl.dbscale->mute)); json_object_object_add(ctlJ, "dbscale", dbscaleJ); } if (halCtls[idx].ctl.enums) { json_object *enumsJ = json_object_new_array(); for (int jdx = 0; halCtls[idx].ctl.enums[jdx]; jdx++) { json_object_array_add(enumsJ, json_object_new_string(halCtls[idx].ctl.enums[jdx])); } json_object_object_add(ctlJ, "enums", enumsJ); } json_object_array_add(ctlsJ, ctlJ); } // Build new queryJ to add HAL custom control if any if (json_object_array_length(ctlsJ) > 0) { queryurl = json_object_new_object(); json_object_get(devidJ); // make sure devidJ does not get free by 1st call. json_object_object_add(queryurl, "devid", devidJ); json_object_object_add(queryurl, "ctl", ctlsJ); json_object_object_add(queryurl, "mode", json_object_new_int(QUERY_COMPACT)); err = afb_service_call_sync("alsacore", "addcustomctl", queryurl, &responseJ); if (err) { AFB_ERROR("Fail creating HAL Custom ALSA ctls Response='%s'", json_object_get_string(responseJ)); goto OnErrorExit; } } // Make sure response is valid json_object_object_get_ex(responseJ, "response", &ctlsJ); if (json_object_get_type(ctlsJ) != json_type_array) { AFB_ERROR("Response Invalid JSON array ctls Response='%s'", json_object_get_string(responseJ)); goto OnErrorExit; } // update HAL data from JSON response for (int idx = 0; idx < json_object_array_length(ctlsJ); idx++) { json_object *ctlJ = json_object_array_get_idx(ctlsJ, idx); err = UpdateOneSndCtl(&halCtls[idx].ctl, ctlJ); if (err) { AFB_ERROR("Fail found MAP Alsa Low level=%s", json_object_get_string(ctlJ)); goto OnErrorExit; } } // finally register for alsa lowlevel event queryurl = json_object_new_object(); json_object_object_add(queryurl, "devid", devidJ); err = afb_service_call_sync("alsacore", "subscribe", queryurl, &responseJ); if (err) { AFB_ERROR("Fail subscribing to ALSA lowlevel events"); goto OnErrorExit; } return (0); OnErrorExit: return (1); }; // This receive all event this binding subscribe to PUBLIC void halServiceEvent(const char *evtname, json_object *eventJ) { int numid; alsaHalMapT *halCtls = halSndCard->ctls; json_object *numidJ, *valuesJ; AFB_DEBUG("halServiceEvent evtname=%s [msg=%s]", evtname, json_object_get_string(eventJ)); json_object_object_get_ex(eventJ, "id", &numidJ); numid = json_object_get_int(numidJ); if (!numid) { AFB_ERROR("halServiceEvent noid: evtname=%s [msg=%s]", evtname, json_object_get_string(eventJ)); return; } json_object_object_get_ex(eventJ, "val", &valuesJ); // search it corresponding numid in halCtls attach a callback if (numid) { for (int idx = 0; halCtls[idx].ctl.numid; idx++) { if (halCtls[idx].ctl.numid == numid && halCtls[idx].cb.callback != NULL) { halCtls[idx].cb.callback(halCtls[idx].tag, &halCtls[idx].ctl, halCtls[idx].cb.handle, valuesJ); } } } } // Every HAL export the same API & Interface Mapping from SndCard to AudioLogic is done through alsaHalSndCardT PUBLIC afb_verb_v2 halServiceApi[] = { /* VERB'S NAME FUNCTION TO CALL SHORT DESCRIPTION */ { .verb = "ping", .callback = pingtest, .info = "ping test for API"}, { .verb = "ctllist", .callback = halListCtls, .info = "List AGL normalised Sound Controls"}, { .verb = "ctlget", .callback = halGetCtls, .info = "Get one/many sound controls"}, { .verb = "ctlset", .callback = halSetCtls, .info = "Set one/many sound controls"}, { .verb = "evtsub", .callback = halSubscribe, .info = "Subscribe to HAL events"}, { .verb = NULL} /* marker for end of the array */ };