socket-uart: refelct origin uart as pseudo tty device on local host
Bind pseudo tty and origin uart with socat usage (tcp socket) Socat is started by systemd service. BugzID: 52063 Signed-off-by: Ramon Moesching <ramon.moesching@netmodule.com>
This commit is contained in:
parent
477ae213e0
commit
8b67634527
|
|
@ -95,6 +95,7 @@ IMAGE_INSTALL_append_am335x-nmhw21 = " \
|
|||
libgpiod \
|
||||
battery-test \
|
||||
cryptodev-module \
|
||||
socket-uart \
|
||||
"
|
||||
|
||||
FPGA_INSTALL = " \
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh -
|
||||
if [ -x "$(command -v socat)" ]; then
|
||||
echo "start listening socket-uart services with server IP $SOCAT_SOCKET_UART_IP on port $SOCAT_SOCKET_UART_PORT"
|
||||
cmd='socat -s pty,link=/dev/ttyUM0,rawer tcp:$SOCAT_SOCKET_UART_IP:$SOCAT_SOCKET_UART_PORT'
|
||||
|
||||
if [[ -n $SOCAT_SOCKET_UART_MSS ]]; then
|
||||
eval $cmd,mss=$SOCAT_SOCKET_UART_MSS
|
||||
else
|
||||
eval $cmd
|
||||
fi
|
||||
|
||||
else
|
||||
echo "socat command not available on your target or environment"
|
||||
# return 1 so that systemd knows the service failed to start
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
[Unit]
|
||||
Description=Bind uart socket with pseudo tty based on socat
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart=/usr/bin/socat-socket-uart
|
||||
PIDFile=/var/run/socket-uart.pid
|
||||
|
||||
#KillSignal=SIGQUIT
|
||||
|
||||
Environment=SOCAT_SOCKET_UART_IP='192.168.1.42' SOCAT_SOCKET_UART_PORT='2204' SOCAT_SOCKET_UART_MSS='256'
|
||||
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Unit]
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
inherit systemd
|
||||
SUMMARY = "Bind socket-uart with speudo tty based on socat"
|
||||
DESCRIPTION = "Bind to origin uart which is provided as socket-uart as pseudo tty based on socat"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \
|
||||
"
|
||||
SRC_URI = " \
|
||||
file://socket-uart.service \
|
||||
file://socat-socket-uart \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
RDEPENS = "socat"
|
||||
|
||||
# Override variable from local.conf with
|
||||
# SOCAT_SOCKET_UART_DEFAULT_IP_pn-socket-uart = "6.6.6.6"
|
||||
# SOCAT_SOCKET_UART_DEFAULT_PORT_pn-socket-uart = "2222"
|
||||
# Don'"t set mss
|
||||
# SOCAT_SOCKET_UART_DEFAULT_MSS_pn-socket-uart = ""
|
||||
|
||||
SOCAT_SOCKET_UART_DEFAULT_IP ??= "192.168.1.42"
|
||||
SOCAT_SOCKET_UART_DEFAULT_PORT ??= "2204"
|
||||
SOCAT_SOCKET_UART_DEFAULT_MSS ??= ""
|
||||
|
||||
SYSTEMD_SERVICE_${PN} = "socket-uart.service"
|
||||
|
||||
do_configure() {
|
||||
sed -i "s/SOCAT_SOCKET_UART_IP='192.168.1.42'/SOCAT_SOCKET_UART_IP='${SOCAT_SOCKET_UART_DEFAULT_IP}'/g" ${S}/socket-uart.service
|
||||
sed -i "s/SOCAT_SOCKET_UART_PORT='2204'/SOCAT_SOCKET_UART_PORT='${SOCAT_SOCKET_UART_DEFAULT_PORT}'/g" ${S}/socket-uart.service
|
||||
sed -i "s/SOCAT_SOCKET_UART_MSS='256'/SOCAT_SOCKET_UART_MSS='${SOCAT_SOCKET_UART_DEFAULT_MSS}'/g" ${S}/socket-uart.service
|
||||
}
|
||||
|
||||
do_install() {
|
||||
install -d ${D}/lib/systemd/system
|
||||
install -m 644 ${WORKDIR}/socket-uart.service ${D}/lib/systemd/system/
|
||||
|
||||
install -d ${D}/usr/bin/
|
||||
install -m 744 ${WORKDIR}/socat-socket-uart ${D}/usr/bin/
|
||||
}
|
||||
|
||||
# Add all SOCAT_SOCKET_* variables to sstate hash calculation and force package_write_rpm exectution from scratch everytime
|
||||
do_configure[vardeps] = "SOCAT_SOCKET_UART_DEFAULT_IP SOCAT_SOCKET_UART_DEFAULT_PORT SOCAT_SOCKET_UART_DEFAULT_MSS"
|
||||
do_package_write_rpm[nostamp] = "1"
|
||||
Loading…
Reference in New Issue