lcdd: initial addon

This commit is contained in:
awiouy 2016-10-14 14:34:35 +02:00
parent c2507c13fe
commit 374a0c10e3
11 changed files with 1949 additions and 0 deletions

View File

@ -0,0 +1,2 @@
100
- Initial addon

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -0,0 +1,80 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016 Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="lcdd"
PKG_VERSION="0.5.7-cvs20140217"
PKG_REV="100"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://lcdproc.org/"
PKG_URL="$DISTRO_SRC/lcdproc-$PKG_VERSION.tar.xz"
PKG_SOURCE_DIR="lcdproc-$PKG_VERSION"
PKG_DEPENDS_TARGET="toolchain freetype libftdi1 libhid libusb netbsd-curses serdisplib"
PKG_SECTION="service"
PKG_SHORTDESC="LCDproc: Software to display system information from your Linux/*BSD box on a LCD"
PKG_LONGDESC="LCDproc ($PKG_VERSION) is a piece of software that displays real-time system information from your Linux/*BSD box on a LCD. The server supports several serial devices: Matrix Orbital, Crystal Fontz, Bayrad, LB216, LCDM001 (kernelconcepts.de), Wirz-SLI, Cwlinux(.com) and PIC-an-LCD; and some devices connected to the LPT port: HD44780, STV5730, T6963, SED1520 and SED1330. Various clients are available that display things like CPU load, system load, memory usage, uptime, and a lot more."
PKG_AUTORECONF="yes"
PKG_IS_ADDON="yes"
PKG_ADDON_NAME="LCDproc"
PKG_ADDON_TYPE="xbmc.service"
PKG_CONFIGURE_OPTS_TARGET="--with-ft-prefix=$SYSROOT_PREFIX/usr \
--enable-libusb \
--enable-libftdi \
--disable-libX11 \
--enable-libhid \
--disable-libpng \
--enable-drivers=all \
--enable-seamless-hbars"
pre_make_target() {
# dont build parallel
MAKEFLAGS=-j1
}
addon() {
drivers="none|$(cat $ROOT/$PKG_BUILD/.$TARGET_NAME/config.log | sed -n "s|^DRIVERS=' \(.*\)'|\1|p" | sed "s|.so||g" | tr ' ' '|')"
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config
cp -PR $PKG_DIR/resources $ADDON_BUILD/$PKG_ADDON_ID
cp -PR $PKG_BUILD/.install_pkg/etc/LCDd.conf $ADDON_BUILD/$PKG_ADDON_ID/config/
cp -PR $PKG_BUILD/.install_pkg/usr/lib $ADDON_BUILD/$PKG_ADDON_ID/lib/
cp -PR $PKG_BUILD/.install_pkg/usr/sbin $ADDON_BUILD/$PKG_ADDON_ID/bin/
cp -L $(get_build_dir serdisplib)/.install_pkg/usr/lib/libserdisp.so.1 $ADDON_BUILD/$PKG_ADDON_ID/lib/
sed -e "s|^DriverPath=.*$|DriverPath=/storage/.kodi/addons/service.lcdd/lib/lcdproc/|" \
-e "s|^#Foreground=.*$|Foreground=no|" \
-e "s|^#ServerScreen=.*$|ServerScreen=blank|" \
-e "s|^#Backlight=.*$|Backlight=open|" \
-e "s|^#Heartbeat=.*$|Heartbeat=open|" \
-e "s|^#TitleSpeed=.*$|TitleSpeed=4|" \
-e "s|^#Hello=\" Welcome to\"|Hello=\"Welcome to\"|" \
-e "s|^#Hello=\" LCDproc!\"|Hello=\"$DISTRONAME\"|" \
-e "s|^#GoodBye=\"Thanks for using\"|GoodBye=\"Thanks for using\"|" \
-e "s|^#GoodBye=\" LCDproc!\"|GoodBye=\"$DISTRONAME\"|" \
-e "s|^#normal_font=.*$|normal_font=/usr/share/fonts/liberation/LiberationMono-Bold.ttf|" \
-i $ADDON_BUILD/$PKG_ADDON_ID/config/LCDd.conf
sed -e "s/@DRIVERS@/$drivers/" \
-i $ADDON_BUILD/$PKG_ADDON_ID/resources/settings.xml
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,65 @@
diff --git a/configure.ac b/configure.ac
index 7c053d2..dcb0c4d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -314,7 +314,7 @@ AC_MSG_RESULT($enable_libftdi)
if test "$enable_libftdi" = "yes"; then
ifdef([PKG_CHECK_MODULES],
- [PKG_CHECK_MODULES(LIBFTDI, libftdi >= 0.8,
+ [PKG_CHECK_MODULES(LIBFTDI, libftdi1 >= 0.8,
[AC_DEFINE(HAVE_LIBFTDI, [1], [Define to 1 if you have libftdi])],
[ enable_libftdi=no ])],
[AC_MSG_WARN([pkg-config not (fully) installed; drivers requiring libftdi may not be built])])
diff --git a/server/drivers/hd44780-low.h b/server/drivers/hd44780-low.h
index 47acf45..6faa830 100644
--- a/server/drivers/hd44780-low.h
+++ b/server/drivers/hd44780-low.h
@@ -26,7 +26,7 @@
#endif
#ifdef HAVE_LIBFTDI
-# include <ftdi.h>
+# include <libftdi1/ftdi.h>
#endif
/** \name Symbolic names for connection types
diff --git a/server/drivers/i2500vfd.c b/server/drivers/i2500vfd.c
index d896a69..7fe74f2 100644
--- a/server/drivers/i2500vfd.c
+++ b/server/drivers/i2500vfd.c
@@ -32,7 +32,7 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h>
-#include <ftdi.h>
+#include <libftdi1/ftdi.h>
#include "lcd.h"
#include "i2500vfd.h"
diff --git a/server/drivers/lis.c b/server/drivers/lis.c
index 5d3e97a..6c26a19 100644
--- a/server/drivers/lis.c
+++ b/server/drivers/lis.c
@@ -42,7 +42,7 @@
#include <pthread.h>
#include <usb.h>
-#include <ftdi.h>
+#include <libftdi1/ftdi.h>
#include "lcd.h"
#include "lis.h"
diff --git a/server/drivers/ula200.c b/server/drivers/ula200.c
index cbdde40..a84eb49 100644
--- a/server/drivers/ula200.c
+++ b/server/drivers/ula200.c
@@ -31,7 +31,7 @@
#include <errno.h>
#include <usb.h>
-#include <ftdi.h>
+#include <libftdi1/ftdi.h>
#include "lcd.h"
#include "ula200.h"

View File

@ -0,0 +1,56 @@
diff -Naur lcdproc-0.5.7-cvs20140217/server/drivers/dm140.c lcdproc-0.5.7-cvs20140217.patch/server/drivers/dm140.c
--- lcdproc-0.5.7-cvs20140217/server/drivers/dm140.c 2014-12-24 01:37:27.439628078 +0100
+++ lcdproc-0.5.7-cvs20140217.patch/server/drivers/dm140.c 2014-12-24 01:41:34.556853466 +0100
@@ -81,10 +81,17 @@
return -1;
}
- if((p->fd = OpenHID(drvthis))< 0)
+ if ((p->fd = OpenHID(drvthis)) < 0)
{
- report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found, exiting\n", p->pszVendor, p->pszProduct);
- return -1;
+ report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found\n", p->pszVendor, p->pszProduct);
+ p->pszVendor = "1509";
+ p->pszProduct = "925d";
+ if ((p->fd = OpenHID(drvthis)) < 0)
+ {
+ report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found\n", p->pszVendor, p->pszProduct);
+ report(RPT_INFO, "No dm140 device found, exiting\n");
+ return -1;
+ }
}
//******************************************************
diff -Naur lcdproc-0.5.7-cvs20140217/server/drivers/led.c lcdproc-0.5.7-cvs20140217.patch/server/drivers/led.c
--- lcdproc-0.5.7-cvs20140217/server/drivers/led.c 2014-12-24 01:37:27.439628078 +0100
+++ lcdproc-0.5.7-cvs20140217.patch/server/drivers/led.c 2014-12-24 01:49:38.519253308 +0100
@@ -95,21 +95,21 @@
//**************************************************************
// FUNCTION: Compare
//
-// INPUT:
+// INPUT:
// const char *pszValue - string to compare
-// short sValue - numberic value to compare
+// short sOtherValue - numeric value to compare
//
// OUTPUT:
// int - Boolean value, 0 on non match, 1 on success.
//
-// DESCRIPTION: Compare a character value to a numeric value.
+// DESCRIPTION: Compare a hex value in a string to a numeric value.
//**************************************************************
-int Compare(const char *pszValue, short sValue)
+int Compare(const char *pszValue, short sOtherValue)
{
- int iValue;
+ short sValue;
// convert the pszValue to a number
- sscanf( pszValue, "%4x", &iValue);
- return( iValue == sValue );
+ sscanf( pszValue, "%4hx", &sValue );
+ return( sValue == sOtherValue );
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<category label="30000">
<setting label="30001" id="LCD_DRIVER" type="select" values="@DRIVERS@" default="none" />
</category>
</settings>

View File

@ -0,0 +1,37 @@
#!/bin/sh
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016 Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
. /etc/profile
oe_setup_addon service.lcdd
if [ -z "$LCD_DRIVER" -o "$LCD_DRIVER" == "none" ]; then
exit 0
fi
LCDCONF=$ADDON_HOME/LCDd.conf
if [ ! -f $LCDCONF ]; then
if [ -f /storage/.cache/LCDd.conf ]; then
mv /storage/.cache/LCDd.conf $LCDCONF
else
cp $ADDON_DIR/config/LCDd.conf $LCDCONF
fi
fi
LCDd -f -c $LCDCONF -d $LCD_DRIVER

View File

@ -0,0 +1,35 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016 Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
import subprocess
import xbmc
import xbmcaddon
class Monitor(xbmc.Monitor):
def __init__(self, *args, **kwargs):
xbmc.Monitor.__init__(self)
self.id = xbmcaddon.Addon().getAddonInfo('id')
def onSettingsChanged(self):
subprocess.call(['systemctl', 'restart', self.id])
if __name__ == '__main__':
Monitor().waitForAbort()

View File

@ -0,0 +1,11 @@
# Kodi Media Center language file
msgid ""
msgstr ""
msgctxt "#30000"
msgid "Configuration"
msgstr ""
msgctxt "#30001"
msgid "LCD driver"
msgstr ""

View File

@ -0,0 +1,14 @@
[Unit]
Description=LCDProc
After=multi-user.target
[Service]
ExecStart=/bin/sh /storage/.kodi/addons/service.lcdd/bin/lcdd.start
TimeoutStopSec=1s
Restart=on-failure
RestartSec=5
StartLimitInterval=30
StartLimitBurst=5
[Install]
WantedBy=multi-user.target