libusbgx: Add recipe

The libusbgx allow easier use and setup of USB gadgets. To easy
integration on different systems a libusbgx-config package is provided
so it can be used to start and enable respective USB gadget schema.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Otavio Salvador 2018-11-30 20:43:36 -02:00 committed by Khem Raj
parent ebc7b9e20a
commit f29268ee21
6 changed files with 217 additions and 0 deletions

View File

@ -0,0 +1,12 @@
SUMMARY = "USB Gadget Configuration Files"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = "file://usbgx.default"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install() {
install -Dm 0644 ${WORKDIR}/usbgx.default ${D}${sysconfdir}/default/usbgx
}

View File

@ -0,0 +1,2 @@
IMPORT_SCHEMAS=""
ENABLED_SCHEMAS="$IMPORT_SCHEMAS"

View File

@ -0,0 +1,11 @@
#!/bin/sh
[ -r /etc/default/usbgx ] && . /etc/default/usbgx
for i in $IMPORT_SCHEMAS; do
/usr/bin/gadget-import "$i" /etc/usbgx/"$i".schema
done
for i in $ENABLED_SCHEMAS; do
ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/"$i"/UDC
done

View File

@ -0,0 +1,143 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: usbg
# Required-Start: $local_fs
# Should-Start:
# Required-Stop: $local_fs
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Example initscript
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d
### END INIT INFO
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Load USB gadget schemas"
NAME="usbgx"
DAEMON=/usr/bin/gadget-start
DAEMON_ARGS=""
PIDFILE=/var/run/$NAME.pid
. /etc/init.d/functions || exit 1
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
#
# Function that starts the daemon/service
#
do_start() {
local status pid
status=0
pid=`pidofproc $NAME` || status=$?
case $status in
0)
echo "$DESC already running ($pid)."
exit 1
;;
*)
echo "Starting $DESC ..."
exec $DAEMON $DAEMON_ARGS >/dev/null 2>&1 || status=$?
echo "ERROR: Failed to start $DESC."
exit $status
;;
esac
}
#
# Function that stops the daemon/service
#
do_stop() {
local pid status
status=0
pid=`pidofproc $NAME` || status=$?
case $status in
0)
# Exit when fail to stop, the kill would complain when fail
kill -s 15 $pid >/dev/null && rm -f $PIDFILE && \
echo "Stopped $DESC ($pid)." || exit $?
;;
*)
echo "$DESC is not running; none killed." >&2
;;
esac
return $status
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
local pid status
status=0
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
pid=`pidofproc $NAME` || status=$?
case $status in
0)
echo "Reloading $DESC ..."
kill -s 1 $pid || exit $?
;;
*)
echo "$DESC is not running; none reloaded." >&2
;;
esac
exit $status
}
#
# Function that shows the daemon/service status
#
status_of_proc () {
local pid status
status=0
# pidof output null when no program is running, so no "2>/dev/null".
pid=`pidofproc $NAME` || status=$?
case $status in
0)
echo "$DESC is running ($pid)."
exit 0
;;
*)
echo "$DESC is not running." >&2
exit $status
;;
esac
}
case "$1" in
start)
do_start
;;
stop)
do_stop || exit $?
;;
status)
status_of_proc
;;
restart)
# Always start the service regardless the status of do_stop
do_stop
do_start
;;
try-restart|force-reload)
do_stop && do_start
;;
*)
echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" >&2
exit 3
;;
esac

View File

@ -0,0 +1,9 @@
[Unit]
Description=Load USB gadget schemas
[Service]
Type=oneshot
ExecStart=/usr/bin/gadget-start
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,40 @@
SUMMARY = "USB Gadget neXt Configfs Library"
LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
DEPENDS = "libconfig"
inherit autotools pkgconfig systemd update-rc.d
PV = "0.2.0+git${SRCPV}"
SRCREV = "45c14ef4d5d7ced0fbf984208de44ced6d5ed898"
SRCBRANCH = "master"
SRC_URI = " \
git://github.com/libusbgx/libusbgx.git;branch=${SRCBRANCH} \
file://gadget-start \
file://usbgx.initd \
file://usbgx.service \
"
S = "${WORKDIR}/git"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "usbgx.service"
INITSCRIPT_NAME = "usbgx"
INITSCRIPT_PARAMS = "defaults"
EXTRA_OECONF = "--includedir=${includedir}/usbgx"
do_install_append() {
install -Dm 0755 ${WORKDIR}/gadget-start ${D}/${bindir}/gadget-start
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -Dm 0644 ${WORKDIR}/usbgx.service ${D}${systemd_system_unitdir}/usbgx.service
fi
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
install -Dm 0755 ${WORKDIR}/usbgx.initd ${D}${sysconfdir}/init.d/usbgx
fi
}
RDEPENDS_${PN} += "libusbgx-config"