mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e882c649fe | ||
|
|
a09b8ea227 | ||
|
|
3c6b246da1 | ||
|
|
0dc0085d12 | ||
|
|
501d64503f | ||
|
|
ce9deb7aa7 | ||
|
|
0ddf2aa42e | ||
|
|
1951715877 | ||
|
|
83282b6af0 | ||
|
|
d019b64b78 | ||
|
|
fb3975758f | ||
|
|
2b3c251900 | ||
|
|
332ab42cc7 | ||
|
|
9ab6b71716 | ||
|
|
469f1829c1 | ||
|
|
ec759de239 | ||
|
|
18581f3006 | ||
|
|
2a5e229a20 | ||
|
|
c3b52d6284 | ||
|
|
fd8aa6610d | ||
|
|
57afce6129 | ||
|
|
110ea515dc | ||
|
|
ec446e21ef | ||
|
|
c7d8093c6b | ||
|
|
ba0a2ec358 | ||
|
|
07aa491253 | ||
|
|
00437c4c8d | ||
|
|
2509ccd743 | ||
|
|
4d9caffbe4 | ||
|
|
e39892557d | ||
|
|
e347b69d0e | ||
|
|
f20200dad3 | ||
|
|
cb7c0c9361 | ||
|
|
4ca25d29a7 | ||
|
|
2dab8326c4 | ||
|
|
169ebdb762 | ||
|
|
fcfa9a9d9c | ||
|
|
ed3ea1d53d | ||
|
|
de9a2ba961 | ||
|
|
a24745c9be | ||
|
|
bad81a508e | ||
|
|
bfa4e8d74b | ||
|
|
d2a7c9c5d2 | ||
|
|
24fb463fda | ||
|
|
63f25a2f8a | ||
|
|
c9695b5868 | ||
|
|
aade987f76 | ||
|
|
d8f951533a | ||
|
|
f840cb7ecf | ||
|
|
b384e473b5 | ||
|
|
5d50feac62 |
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
LIBREELEC_VERSION="8.2.0.1"
|
||||
LIBREELEC_VERSION="8.2.2"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="8.2"
|
||||
|
||||
37
packages/addons/addon-depends/ccid/package.mk
Normal file
37
packages/addons/addon-depends/ccid/package.mk
Normal file
@@ -0,0 +1,37 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-present Team LibreELEC
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# 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="ccid"
|
||||
PKG_VERSION="1.4.28"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="http://pcsclite.alioth.debian.org/ccid.html"
|
||||
PKG_URL="https://alioth.debian.org/frs/download.php/latestfile/112/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain pcsc-lite"
|
||||
PKG_SECTION="driver"
|
||||
PKG_SHORTDESC="CCID free software driver"
|
||||
PKG_LONGDESC="CCID free software driver"
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --enable-twinserial"
|
||||
|
||||
make_target() {
|
||||
make
|
||||
make -C src/ Info.plist
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
# Copyright (C) 2016-present 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
|
||||
@@ -17,12 +17,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="squeezelite"
|
||||
PKG_VERSION="a3d95ec"
|
||||
PKG_VERSION="e92c09c"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/ralph-irving/squeezelite"
|
||||
PKG_URL="https://github.com/ralph-irving/squeezelite/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain faad2 ffmpeg flac libmad libvorbis mpg123 soxr"
|
||||
PKG_DEPENDS_TARGET="toolchain faad2 ffmpeg flac libmad libvorbis mpg123 soxr libogg"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="squeezelite"
|
||||
PKG_LONGDESC="A client for the Logitech Media Server"
|
||||
@@ -31,9 +31,9 @@ PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_make_target() {
|
||||
OPTS="-DDSD -DFFMPEG -DRESAMPLE -DVISEXPORT"
|
||||
OPTS="-DDSD -DFFMPEG -DRESAMPLE -DVISEXPORT -DLINKALL"
|
||||
CFLAGS="$CFLAGS $OPTS"
|
||||
LDFLAGS="$LDFLAGS -lasound -lpthread -lm -lrt -lFLAC -lmad -lvorbisfile -lfaad -lmpg123"
|
||||
LDFLAGS="$LDFLAGS -lasound -lpthread -lm -lrt -lFLAC -lmad -lvorbisfile -lfaad -lmpg123 -lvorbis -logg"
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://LibreELEC.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016-present 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
|
||||
@@ -17,21 +17,19 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pcsc-lite"
|
||||
PKG_VERSION="1.8.16"
|
||||
PKG_VERSION="1.8.22"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://pcsclite.alioth.debian.org/pcsclite.html"
|
||||
PKG_URL="https://alioth.debian.org/frs/download.php/file/4164/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
PKG_URL="https://alioth.debian.org/frs/download.php/latestfile/39/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain libusb"
|
||||
PKG_SECTION="service/system"
|
||||
PKG_SHORTDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||
PKG_LONGDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
|
||||
--enable-static \
|
||||
--disable-libudev \
|
||||
--enable-libusb \
|
||||
--enable-usbdropdir=/storage/.kodi/addons/service.system.pcscd-addon/drivers"
|
||||
--enable-usbdropdir=/storage/.kodi/addons/service.pcscd/drivers"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
104
|
||||
- use new output from mediaclient
|
||||
use xmlstartlet to parse settings.xml file
|
||||
|
||||
103
|
||||
- once a serial number is in config file then ir_disabled parameter
|
||||
needs to be localized below it (it is not global parameter anymore)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="sundtek-mediatv"
|
||||
PKG_VERSION="7.0"
|
||||
PKG_REV="103"
|
||||
PKG_REV="104"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://support.sundtek.com/"
|
||||
|
||||
@@ -67,7 +67,15 @@ fi
|
||||
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
|
||||
|
||||
mkdir -p /var/config
|
||||
cat "$SUNDTEK_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf
|
||||
|
||||
# check settings version
|
||||
XML_SETTINGS_VER="$(xmlstarlet sel -t -m settings -v @version $SUNDTEK_ADDON_SETTINGS)"
|
||||
if [ "$XML_SETTINGS_VER" = "2" ]; then
|
||||
xmlstarlet sel -t -m settings/setting -v @id -o "=\"" -v . -o "\"" -n "$SUNDTEK_ADDON_SETTINGS" > /var/config/sundtek-addon.conf
|
||||
else
|
||||
xmlstarlet sel -t -m settings -m setting -v @id -o "=\"" -v @value -o "\"" -n "$SUNDTEK_ADDON_SETTINGS" > /var/config/sundtek-addon.conf
|
||||
fi
|
||||
|
||||
. /var/config/sundtek-addon.conf
|
||||
|
||||
# check if there is new driver on web
|
||||
@@ -186,7 +194,7 @@ if [ -z "$(pidof mediasrv)" ]; then
|
||||
KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
|
||||
|
||||
if [ "$DVBMODE" = "DVB-T" ]; then
|
||||
# only set DVB-T because default is DVB-C (and DVB-S is not set either)
|
||||
# only set DVB-T because default is DVB-C (and DVB-S/S2 is not set either)
|
||||
DVBMODE="DVBT"
|
||||
else
|
||||
DVBMODE=""
|
||||
|
||||
@@ -77,7 +77,7 @@ def get_devices_sundtek(mediaclient_e):
|
||||
str = line.strip()
|
||||
if str.startswith('device '):
|
||||
name = str[str.find("[")+1:str.find("]")]
|
||||
tuners.append([name, 0, 's'])
|
||||
tuners.append([name, 0, []])
|
||||
|
||||
if str.startswith('[SERIAL]:'):
|
||||
line = p.readline()
|
||||
@@ -85,20 +85,31 @@ def get_devices_sundtek(mediaclient_e):
|
||||
if str.startswith('ID:'):
|
||||
id = str.split(':');
|
||||
id = id[1].strip()
|
||||
tuners[len(tuners)-1] = [name, id, 's']
|
||||
tuners[len(tuners)-1][1] = id
|
||||
|
||||
if str.startswith('[DVB'):
|
||||
types_arr = tuners[len(tuners)-1][2]
|
||||
str = str.translate(None, '[]:')
|
||||
types = str.split(",")
|
||||
for i in range(len(types)):
|
||||
if types[i] == 'DVB-C':
|
||||
types_arr.append('c')
|
||||
elif types[i] == 'DVB-T':
|
||||
types_arr.append('t')
|
||||
elif types[i] == 'DVB-T2':
|
||||
types_arr.append('t2')
|
||||
elif types[i] == 'DVB-S/S2':
|
||||
types_arr.append('s')
|
||||
|
||||
tuners[len(tuners)-1][2] = types_arr
|
||||
|
||||
if str.startswith('[DVB-C]:'):
|
||||
tuners[len(tuners)-1] = [name, id, 'c']
|
||||
elif str.startswith('[DVB-T]:'):
|
||||
tuners[len(tuners)-1] = [name, id, 'c']
|
||||
elif str.startswith('[DVB-T2]:'):
|
||||
tuners[len(tuners)-1] = [name, id, 'c']
|
||||
except IOError:
|
||||
print 'Error getting sundtek tuners info'
|
||||
return tuners
|
||||
|
||||
"""
|
||||
root ~ # mediaclient -e
|
||||
|
||||
**** List of Media Hardware Devices ****
|
||||
device 0: [Sundtek MediaTV Pro (USB 2.0)] DVB-C, DVB-T, ANALOG-TV, FM-RADIO, REMOTE-CONTROL, OSS-AUDIO, RDS
|
||||
[BUS]:
|
||||
@@ -123,6 +134,21 @@ device 0: [Sundtek MediaTV Pro (USB 2.0)] DVB-C, DVB-T, ANALOG-TV, FM-RADIO, RE
|
||||
INPUT0: /dev/mediainput0
|
||||
[OSS]:
|
||||
OSS0: /dev/dsp0
|
||||
|
||||
**** List of Media Hardware Devices ****
|
||||
device 0: [MediaTV Digital Home III (EU)] DVB-C, DVB-T, DVB-T2, REMOTE-CONTROL
|
||||
[INFO]:
|
||||
STATUS: STANDBY
|
||||
[BUS]:
|
||||
ID: 2-5
|
||||
[SERIAL]:
|
||||
ID: U170130193421
|
||||
[DVB-C,DVB-T,DVB-T2]:
|
||||
FRONTEND: /dev/dvb/adapter0/frontend0
|
||||
DVR: /dev/dvb/adapter0/dvr0
|
||||
DMX: /dev/dvb/adapter0/demux0
|
||||
[REMOTECONTROL]:
|
||||
INPUT0: /dev/mediainput0
|
||||
"""
|
||||
|
||||
######################################################################################################
|
||||
@@ -182,19 +208,42 @@ def add_sundtek(xmldoc, node_cat, tuners):
|
||||
for ix, tuner in enumerate(tuners):
|
||||
tuner_name = tuner[0]
|
||||
tuner_serial = tuner[1]
|
||||
tuner_type = tuner[2]
|
||||
tuner_types = tuner[2]
|
||||
|
||||
node1 = xmldoc.createElement("setting")
|
||||
node1.setAttribute("id", 'ATTACHED_TUNER_' + tuner_serial + '_DVBMODE')
|
||||
node1.setAttribute("label", tuner_name + ", " + tuner_serial)
|
||||
node1.setAttribute("type", 'labelenum')
|
||||
|
||||
if (tuner_type == 's'):
|
||||
node1.setAttribute("default", 'DVB-S')
|
||||
node1.setAttribute("values", 'DVB-S')
|
||||
if len(tuner_types) == 0:
|
||||
values = 'unkn'
|
||||
default = 'unkn'
|
||||
else:
|
||||
node1.setAttribute("default", 'DVB-C')
|
||||
node1.setAttribute("values", 'DVB-C|DVB-T')
|
||||
values = ''
|
||||
default = ''
|
||||
|
||||
for ix, type in enumerate(tuner_types):
|
||||
if type == 'c':
|
||||
type_str = 'DVB-C'
|
||||
elif type == 't':
|
||||
type_str = 'DVB-T'
|
||||
elif type == 't2':
|
||||
type_str = 'DVB-T2'
|
||||
elif type == 's':
|
||||
type_str = 'DVB-S/S2'
|
||||
else:
|
||||
type_str = 'unkn'
|
||||
|
||||
if not default: # first one
|
||||
default = type_str;
|
||||
|
||||
if ix == 0:
|
||||
values = type_str
|
||||
else:
|
||||
values = values + '|' + type_str
|
||||
|
||||
node1.setAttribute("default", default)
|
||||
node1.setAttribute("values", values)
|
||||
|
||||
node_cat.appendChild(node1)
|
||||
|
||||
@@ -237,7 +286,7 @@ def add_new_tuners(xmldoc, tuners, which):
|
||||
def save_settings(settings_xml, xmldoc):
|
||||
try:
|
||||
outputfile = open(settings_xml, 'w')
|
||||
xmlpp.pprint(xmldoc.toxml(), output = outputfile, indent=2)
|
||||
xmlpp.pprint(xmldoc.toxml(), output = outputfile, indent=2, width=500)
|
||||
outputfile.close()
|
||||
except IOError:
|
||||
print 'Error saving file:', settings_xml
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
108
|
||||
- Correct bug which prevented disabling the service from Kodi
|
||||
- Place named pipe in /var/run/librespot
|
||||
|
||||
107
|
||||
- Update to ddfc28f
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
PKG_NAME="librespot"
|
||||
PKG_VERSION="ddfc28f"
|
||||
PKG_REV="107"
|
||||
PKG_REV="108"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/plietar/$PKG_NAME/"
|
||||
|
||||
@@ -119,6 +119,6 @@ if [ -z "$(pactl list short modules | grep source=$LS_SINK.monitor)" ]; then
|
||||
destination_ip=127.0.0.1 port="$LS_PORT" source_ip=127.0.0.1 > /dev/null
|
||||
fi
|
||||
|
||||
export LS_FIFO="$ADDON_DIR/rc"
|
||||
export LS_FIFO="/var/run/librespot"
|
||||
|
||||
eval $LIBRESPOT
|
||||
|
||||
@@ -25,6 +25,7 @@ import xbmc
|
||||
import xbmcaddon
|
||||
import xbmcgui
|
||||
|
||||
|
||||
PORT = '6666'
|
||||
SINK = 'librespot_sink'
|
||||
|
||||
@@ -38,7 +39,7 @@ def systemctl(command):
|
||||
|
||||
class Controller(threading.Thread):
|
||||
|
||||
FIFO = os.path.join(xbmcaddon.Addon().getAddonInfo('path'), 'rc')
|
||||
FIFO = '/var/run/librespot'
|
||||
|
||||
def __init__(self, player):
|
||||
super(Controller, self).__init__()
|
||||
@@ -65,13 +66,15 @@ class Controller(threading.Thread):
|
||||
self.player.play()
|
||||
elif command[0] == 'stop':
|
||||
self.player.stop()
|
||||
|
||||
def stop(self):
|
||||
try:
|
||||
os.unlink(self.FIFO)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
def stop(self):
|
||||
with open(self.FIFO, 'w') as fifo:
|
||||
fifo.close()
|
||||
|
||||
|
||||
class Player(xbmc.Player):
|
||||
|
||||
@@ -79,7 +82,6 @@ class Player(xbmc.Player):
|
||||
|
||||
def __init__(self):
|
||||
super(Player, self).__init__(self)
|
||||
self.window = xbmcgui.Window(12006)
|
||||
if self.isPlaying():
|
||||
self.onPlayBackStarted()
|
||||
|
||||
@@ -104,7 +106,7 @@ class Player(xbmc.Player):
|
||||
listitem.setArt({'thumb': xbmcaddon.Addon().getAddonInfo('icon')})
|
||||
super(Player, self).play(self.ITEM, listitem)
|
||||
del listitem
|
||||
self.window.show()
|
||||
xbmcgui.Window(12006).show()
|
||||
|
||||
def stop(self):
|
||||
suspendSink('1')
|
||||
@@ -130,3 +132,4 @@ if __name__ == '__main__':
|
||||
controller.start()
|
||||
Monitor(player).waitForAbort()
|
||||
controller.stop()
|
||||
controller.join()
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
104
|
||||
- Change daemon startup option
|
||||
|
||||
103
|
||||
- update config.sub to support new hardware
|
||||
- disable mini-agent in config options to get system MIB
|
||||
- compile static binary to avoid cross compiling linking issue
|
||||
|
||||
102
|
||||
-version bump
|
||||
|
||||
101
|
||||
- make addon configurable
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
# Copyright (C) 2016-present 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
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="net-snmp"
|
||||
PKG_VERSION="5.7.3"
|
||||
PKG_REV="101"
|
||||
PKG_REV="104"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="http://www.net-snmp.org"
|
||||
@@ -40,9 +40,8 @@ PKG_CONFIGURE_OPTS_TARGET="--with-defaults \
|
||||
--disable-deprecated \
|
||||
--disable-snmptrapd-subagent \
|
||||
--disable-scripts \
|
||||
--enable-static=no \
|
||||
--enable-shared=yes \
|
||||
--enable-mini-agent \
|
||||
--enable-static=yes \
|
||||
--enable-shared=no \
|
||||
--with-nl \
|
||||
--with-logfile=/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID} \
|
||||
--with-persistent-directory=/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID} \
|
||||
@@ -67,9 +66,4 @@ makeinstall_target() {
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -r $PKG_BUILD/.$TARGET_NAME/storage/.kodi/addons/${PKG_ADDON_ID}/bin $PKG_BUILD/.$TARGET_NAME/storage/.kodi/userdata/addon_data/${PKG_ADDON_ID}/share $ADDON_BUILD/$PKG_ADDON_ID/
|
||||
#Do not copy symlinks
|
||||
find $PKG_BUILD/.$TARGET_NAME/storage/.kodi/addons/${PKG_ADDON_ID}/lib/ -type f -name '*.so.*' -exec cp '{}' $ADDON_BUILD/$PKG_ADDON_ID/lib/ \;
|
||||
#remove all but major version from so file
|
||||
for f in $ADDON_BUILD/$PKG_ADDON_ID/lib/*.so.* ; do mv "$f" "${f%.*.*}" ; done
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
diff -ur net-snmp-5.7.3/config.sub net-snmp-5.7.3.new/config.sub
|
||||
--- net-snmp-5.7.3/config.sub 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3.new/config.sub 2017-11-09 18:39:31.638689732 +0100
|
||||
@@ -247,10 +247,11 @@ case $basic_machine in
|
||||
# Some are omitted here because they have special meanings below.
|
||||
1750a | 580 \
|
||||
| a29k \
|
||||
+ | aarch64 | aarch64_be \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
@@ -339,6 +340,7 @@ case $basic_machine in
|
||||
# Recognize the basic CPU types with company name.
|
||||
580-* \
|
||||
| a29k-* \
|
||||
+ | aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
@@ -1171,6 +1173,9 @@ case $basic_machine in
|
||||
basic_machine=hppa1.1-winbond
|
||||
os=-proelf
|
||||
;;
|
||||
+ x64)
|
||||
+ basic_machine=x86_64-pc
|
||||
+ ;;
|
||||
xbox)
|
||||
basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
@@ -24,4 +24,4 @@ ADDON_ID=service.net-snmp
|
||||
ADDON_DIR="$HOME/.kodi/addons/$ADDON_ID"
|
||||
ADDON_HOME="$HOME/.kodi/userdata/addon_data/$ADDON_ID"
|
||||
|
||||
$ADDON_DIR/bin/snmpd -f -LS0-6d -c $ADDON_HOME/share/snmp/snmpd.conf -M $ADDON_DIR/share/snmp/mibs -p /var/run/snmpd.pid
|
||||
$ADDON_DIR/bin/snmpd -f -LS0-6d -C -c $ADDON_HOME/share/snmp/snmpd.conf -M $ADDON_DIR/share/snmp/mibs -p /var/run/snmpd.pid
|
||||
|
||||
2
packages/addons/service/pcscd/changelog.txt
Normal file
2
packages/addons/service/pcscd/changelog.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
100
|
||||
- initial addon
|
||||
10
packages/addons/service/pcscd/config/reader.conf
Normal file
10
packages/addons/service/pcscd/config/reader.conf
Normal file
@@ -0,0 +1,10 @@
|
||||
# Gemalto reader with serial communication
|
||||
# - n is the serial port to use n in [0..3]
|
||||
# - reader is the reader name. It is needed for multi-slot readers.
|
||||
# Possible reader values are: GemPCPinPad, GemCorePOSPro, GemCoreSIMPro,
|
||||
# GemPCTwin (default value)
|
||||
# example: /dev/ttyS0:GemPCPinPad
|
||||
#FRIENDLYNAME "GemPCTwin serial"
|
||||
#DEVICENAME /dev/ttySn[:reader]
|
||||
#LIBPATH /storage/.kodi/addons/service.pcscd/drivers/serial/libccidtwin.so
|
||||
#CHANNELID n
|
||||
BIN
packages/addons/service/pcscd/icon/icon.png
Executable file
BIN
packages/addons/service/pcscd/icon/icon.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
59
packages/addons/service/pcscd/package.mk
Normal file
59
packages/addons/service/pcscd/package.mk
Normal file
@@ -0,0 +1,59 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-present Team LibreELEC
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2011-2011 Gregor Fuis (gujs@openelec.tv)
|
||||
#
|
||||
# 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="pcscd"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="100"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain pcsc-lite libusb ccid"
|
||||
PKG_SECTION="service"
|
||||
PKG_SHORTDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||
PKG_LONGDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="PC/SC Smart Card Daemon"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
|
||||
make_target() {
|
||||
:
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin/
|
||||
cp -Pa $(get_build_dir pcsc-lite)/.install_pkg/usr/sbin/pcscd $ADDON_BUILD/$PKG_ADDON_ID/bin/pcscd.bin
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/drivers/serial
|
||||
cp -Pa $(get_build_dir ccid)/.$TARGET_NAME/src/.libs/libccidtwin.so $ADDON_BUILD/$PKG_ADDON_ID/drivers/serial
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents/Linux/
|
||||
cp -Pa $(get_build_dir ccid)/.$TARGET_NAME/src/.libs/libccid.so $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents/Linux/
|
||||
cp -Pa $(get_build_dir ccid)/.$TARGET_NAME/src/Info.plist $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp -Pa $PKG_DIR/config/* $ADDON_BUILD/$PKG_ADDON_ID/config/
|
||||
}
|
||||
34
packages/addons/service/pcscd/source/bin/pcscd.start
Executable file
34
packages/addons/service/pcscd/source/bin/pcscd.start
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-present Team LibreELEC
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# 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.pcscd
|
||||
|
||||
mkdir -p $ADDON_HOME/config
|
||||
|
||||
chmod a+x $ADDON_DIR/bin/*
|
||||
|
||||
if [ ! -f "$ADDON_HOME/config/reader.conf" ]; then
|
||||
cp $ADDON_DIR/config/reader.conf $ADDON_HOME/config/reader.conf
|
||||
fi
|
||||
|
||||
exec pcscd.bin --foreground -c $ADDON_HOME/config/reader.conf
|
||||
35
packages/addons/service/pcscd/source/default.py
Normal file
35
packages/addons/service/pcscd/source/default.py
Normal file
@@ -0,0 +1,35 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-present 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()
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=PCSC lite
|
||||
After=graphical.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.pcscd/bin/pcscd.start"
|
||||
TimeoutStopSec=1
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
StartLimitInterval=0
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
||||
@@ -49,8 +49,8 @@ addon() {
|
||||
|
||||
cp $PKG_DIR/addon.xml $ADDON_BUILD/$PKG_ADDON_ID
|
||||
|
||||
# set version (no need to edit xml file on version bump)
|
||||
$SED -e "s|@ADDON_VERSION@|$ADDON_VERSION.$PKG_REV|g" \
|
||||
# set only version (revision will be added by buildsystem)
|
||||
$SED -e "s|@ADDON_VERSION@|$ADDON_VERSION|g" \
|
||||
-i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||
|
||||
cp $(get_build_dir tslib)/.install_pkg/usr/bin/* $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
109
|
||||
- Update to 5.4.1.6
|
||||
|
||||
108
|
||||
- Update to 5.4.0.201
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="mono"
|
||||
PKG_VERSION="5.4.0.201"
|
||||
PKG_REV="108"
|
||||
PKG_VERSION="5.4.1.6"
|
||||
PKG_REV="109"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.mono-project.com"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
105
|
||||
- squeezelite: update to e92c09c and support all possible media formats
|
||||
|
||||
104
|
||||
- squeezelite: update to a3d95ec and link audio libraries
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - http://www.libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
# Copyright (C) 2016-present 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
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="multimedia-tools"
|
||||
PKG_VERSION=""
|
||||
PKG_REV="104"
|
||||
PKG_REV="105"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE=""
|
||||
|
||||
@@ -32,7 +32,7 @@ PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="BASH_SHELL=/bin/sh \
|
||||
ac_cv_path_PERL= \
|
||||
ac_cv_path_PERL=no \
|
||||
ac_cv_prog_MAKEINFO= \
|
||||
--libexecdir=/usr/lib/glibc \
|
||||
--cache-file=config.cache \
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="inputstream.adaptive"
|
||||
PKG_VERSION="f2904b5"
|
||||
PKG_VERSION="9af2121"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/peak3d/inputstream.adaptive/archive/$PKG_VERSION.tar.gz"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="peripheral.joystick"
|
||||
PKG_VERSION="b464260"
|
||||
PKG_VERSION="0acb777"
|
||||
PKG_REV="0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pvr.dvbviewer"
|
||||
PKG_VERSION="602042c"
|
||||
PKG_VERSION="2a8c91e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="kodi"
|
||||
PKG_VERSION="5bd45ab"
|
||||
PKG_VERSION="a9a7a20"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/system/settings/settings.xml 2017-08-05 04:22:39.894495691 +0100
|
||||
+++ b/system/settings/settings.xml 2017-08-05 07:41:42.493159153 +0100
|
||||
@@ -1964,7 +1964,7 @@
|
||||
</setting>
|
||||
<setting id="smb.maxprotocol" type="integer" label="36621" help="36622">
|
||||
<level>2</level>
|
||||
- <visible>false</visible>
|
||||
+ <visible>true</visible>
|
||||
<default>0</default>
|
||||
<constraints>
|
||||
<options>
|
||||
@@ -0,0 +1,232 @@
|
||||
From 76f6d6fef6494d2dfd8cbc0ea8d88a8d82029c09 Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <github@chrishewitt.net>
|
||||
Date: Sat, 11 Nov 2017 05:44:48 +0000
|
||||
Subject: [PATCH] smbclient: allow config of min client and legacy security
|
||||
|
||||
---
|
||||
.../resource.language.en_gb/resources/strings.po | 34 ++++++++++++++++++----
|
||||
system/settings/linux.xml | 6 ++++
|
||||
system/settings/settings.xml | 25 ++++++++++++++++
|
||||
xbmc/filesystem/SMBFile.cpp | 16 ++++++++++
|
||||
xbmc/network/NetworkServices.cpp | 4 ++-
|
||||
xbmc/settings/Settings.cpp | 4 +++
|
||||
xbmc/settings/Settings.h | 2 ++
|
||||
7 files changed, 85 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
|
||||
index 9009023f4d39..f7755776eea6 100644
|
||||
--- a/addons/resource.language.en_gb/resources/strings.po
|
||||
+++ b/addons/resource.language.en_gb/resources/strings.po
|
||||
@@ -19075,25 +19075,25 @@ msgctxt "#36622"
|
||||
msgid "Set the maximum SMB protocol version to negotiate when making connections. Forcing SMBv2 or SMBv1 compatibility may be required with older NAS and Windows shares."
|
||||
msgstr ""
|
||||
|
||||
-#. Values for setting with label #36621 "Maximum protocol version" - none means "no protocol version is forced"
|
||||
+#. Values for settings with label #36621 and #36628 "Minimum/Maximum protocol version" - none means "no protocol version is forced"
|
||||
#: system/settings/settings.xml
|
||||
msgctxt "#36623"
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
-#. Values for setting with label #36621 "Maximum protocol version"
|
||||
+#. Values for setting with label #36621 and #36628 "Minimum/Maximum protocol version"
|
||||
#: system/settings/settings.xml
|
||||
msgctxt "#36624"
|
||||
msgid "SMBv1"
|
||||
msgstr ""
|
||||
|
||||
-#. Values for setting with label #36621 "Maximum protocol version"
|
||||
+#. Values for setting with label #36621 and #36628 "Minimum/Maximum protocol version"
|
||||
#: system/settings/settings.xml
|
||||
msgctxt "#36625"
|
||||
msgid "SMBv2"
|
||||
msgstr ""
|
||||
|
||||
-#. Values for setting with label #36621 "Maximum protocol version"
|
||||
+#. Values for setting with label #36621 and #36628 "Minimum/Maximum protocol version"
|
||||
#: system/settings/settings.xml
|
||||
msgctxt "#36626"
|
||||
msgid "SMBv3"
|
||||
@@ -19105,7 +19105,31 @@ msgctxt "#36627"
|
||||
msgid "Client"
|
||||
msgstr ""
|
||||
|
||||
-#empty strings from id 36628 to 36899
|
||||
+#. Label of a setting, allow the minimum smbclient protocol to be configured
|
||||
+#: system/settings/settings.xml
|
||||
+msgctxt "#36628"
|
||||
+msgid "Minimum protocol version"
|
||||
+msgstr ""
|
||||
+
|
||||
+#. Description of setting with label #36628 "Minimum protocol version"
|
||||
+#: system/settings/settings.xml
|
||||
+msgctxt "#36629"
|
||||
+msgid "Set the minimum SMB protocol version to negotiate when making connections. Forcing SMBv2 may be required to prevent SMBv1 use on some OS."
|
||||
+msgstr ""
|
||||
+
|
||||
+#. Label of a setting, sets additional config required for some proprietary SMBv1 implementations (mostly routers)
|
||||
+#: system/settings/settings.xml
|
||||
+msgctxt "#36630"
|
||||
+msgid "Use legacy security"
|
||||
+msgstr ""
|
||||
+
|
||||
+#. Description of setting with label #36630 "Use legacy security"
|
||||
+#: system/settings/settings.xml
|
||||
+msgctxt "#36631"
|
||||
+msgid "Force weak SMBv1 security for compatibility with the USB sharing features on some WiFi routers and NAS devices."
|
||||
+msgstr ""
|
||||
+
|
||||
+#empty strings from id 36632 to 36899
|
||||
|
||||
#: xbmc/media/MediaType.cpp
|
||||
msgctxt "#36900"
|
||||
diff --git a/system/settings/linux.xml b/system/settings/linux.xml
|
||||
index 7cb276acddba..5c27e489a0ad 100644
|
||||
--- a/system/settings/linux.xml
|
||||
+++ b/system/settings/linux.xml
|
||||
@@ -12,9 +12,15 @@
|
||||
<section id="services">
|
||||
<category id="smb">
|
||||
<group id="2">
|
||||
+ <setting id="smb.minprotocol">
|
||||
+ <visible>true</visible>
|
||||
+ </setting>
|
||||
<setting id="smb.maxprotocol">
|
||||
<visible>true</visible>
|
||||
</setting>
|
||||
+ <setting id="smb.legacysecurity">
|
||||
+ <visible>true</visible>
|
||||
+ </setting>
|
||||
</group>
|
||||
</category>
|
||||
</section>
|
||||
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
|
||||
index 5ff71b9741c5..79b4321ab9c7 100644
|
||||
--- a/system/settings/settings.xml
|
||||
+++ b/system/settings/settings.xml
|
||||
@@ -1956,6 +1956,20 @@
|
||||
<default>0.0.0.0</default>
|
||||
<control type="edit" format="ip" />
|
||||
</setting>
|
||||
+ <setting id="smb.minprotocol" type="integer" label="36628" help="36629">
|
||||
+ <level>2</level>
|
||||
+ <visible>false</visible>
|
||||
+ <default>0</default>
|
||||
+ <constraints>
|
||||
+ <options>
|
||||
+ <option label="36623">0</option>
|
||||
+ <option label="36624">1</option>
|
||||
+ <option label="36625">2</option>
|
||||
+ <option label="36626">3</option>
|
||||
+ </options>
|
||||
+ </constraints>
|
||||
+ <control type="list" format="integer" />
|
||||
+ </setting>
|
||||
<setting id="smb.maxprotocol" type="integer" label="36621" help="36622">
|
||||
<level>2</level>
|
||||
<visible>false</visible>
|
||||
@@ -1970,6 +1984,17 @@
|
||||
</constraints>
|
||||
<control type="list" format="integer" />
|
||||
</setting>
|
||||
+ <setting id="smb.legacysecurity" type="boolean" label="36630" help="36631">
|
||||
+ <level>2</level>
|
||||
+ <visible>false</visible>
|
||||
+ <default>false</default>
|
||||
+ <control type="toggle" />
|
||||
+ <dependencies>
|
||||
+ <dependency type="enable">
|
||||
+ <condition setting="smb.maxprotocol" operator="is">1</condition>
|
||||
+ </dependency>
|
||||
+ </dependencies>
|
||||
+ </setting>
|
||||
</group>
|
||||
</category>
|
||||
<category id="weather" label="8" help="36316">
|
||||
diff --git a/xbmc/filesystem/SMBFile.cpp b/xbmc/filesystem/SMBFile.cpp
|
||||
index e5301b0452f9..7fc139635f0b 100644
|
||||
--- a/xbmc/filesystem/SMBFile.cpp
|
||||
+++ b/xbmc/filesystem/SMBFile.cpp
|
||||
@@ -117,6 +117,15 @@ void CSMB::Init()
|
||||
|
||||
fprintf(f, "\tlock directory = %s/.smb/\n", home.c_str());
|
||||
|
||||
+ // set minimum smbclient protocol version
|
||||
+ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MINPROTOCOL) > 0)
|
||||
+ {
|
||||
+ if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MINPROTOCOL) == 1)
|
||||
+ fprintf(f, "\tclient min protocol = NT1\n");
|
||||
+ else
|
||||
+ fprintf(f, "\tclient min protocol = SMB%d\n", CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MINPROTOCOL));
|
||||
+ }
|
||||
+
|
||||
// set maximum smbclient protocol version
|
||||
if (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) > 0)
|
||||
{
|
||||
@@ -126,6 +135,13 @@ void CSMB::Init()
|
||||
fprintf(f, "\tclient max protocol = SMB%d\n", CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL));
|
||||
}
|
||||
|
||||
+ // set legacy security options
|
||||
+ if (CSettings::GetInstance().GetBool(CSettings::SETTING_SMB_LEGACYSECURITY) && (CSettings::GetInstance().GetInt(CSettings::SETTING_SMB_MAXPROTOCOL) == 1))
|
||||
+ {
|
||||
+ fprintf(f, "\tclient NTLMv2 auth = no\n");
|
||||
+ fprintf(f, "\tclient use spnego = no\n");
|
||||
+ }
|
||||
+
|
||||
// set wins server if there's one. name resolve order defaults to 'lmhosts host wins bcast'.
|
||||
// if no WINS server has been specified the wins method will be ignored.
|
||||
if (CSettings::GetInstance().GetString(CSettings::SETTING_SMB_WINSSERVER).length() > 0 && !StringUtils::EqualsNoCase(CSettings::GetInstance().GetString(CSettings::SETTING_SMB_WINSSERVER), "0.0.0.0") )
|
||||
diff --git a/xbmc/network/NetworkServices.cpp b/xbmc/network/NetworkServices.cpp
|
||||
index 393dabc3067d..5dad5c22c0af 100644
|
||||
--- a/xbmc/network/NetworkServices.cpp
|
||||
+++ b/xbmc/network/NetworkServices.cpp
|
||||
@@ -439,7 +439,9 @@ void CNetworkServices::OnSettingChanged(const CSetting *setting)
|
||||
#endif // HAS_WEB_SERVER
|
||||
if (settingId == CSettings::SETTING_SMB_WINSSERVER ||
|
||||
settingId == CSettings::SETTING_SMB_WORKGROUP ||
|
||||
- settingId == CSettings::SETTING_SMB_MAXPROTOCOL)
|
||||
+ settingId == CSettings::SETTING_SMB_MINPROTOCOL ||
|
||||
+ settingId == CSettings::SETTING_SMB_MAXPROTOCOL ||
|
||||
+ settingId == CSettings::SETTING_SMB_LEGACYSECURITY)
|
||||
{
|
||||
// okey we really don't need to restart, only deinit samba, but that could be damn hard if something is playing
|
||||
//! @todo - General way of handling setting changes that require restart
|
||||
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
|
||||
index f76c152b4d37..5400ba229164 100644
|
||||
--- a/xbmc/settings/Settings.cpp
|
||||
+++ b/xbmc/settings/Settings.cpp
|
||||
@@ -333,7 +333,9 @@ const std::string CSettings::SETTING_SERVICES_AIRPLAYPASSWORD = "services.airpla
|
||||
const std::string CSettings::SETTING_SERVICES_AIRPLAYVIDEOSUPPORT = "services.airplayvideosupport";
|
||||
const std::string CSettings::SETTING_SMB_WINSSERVER = "smb.winsserver";
|
||||
const std::string CSettings::SETTING_SMB_WORKGROUP = "smb.workgroup";
|
||||
+const std::string CSettings::SETTING_SMB_MINPROTOCOL = "smb.minprotocol";
|
||||
const std::string CSettings::SETTING_SMB_MAXPROTOCOL = "smb.maxprotocol";
|
||||
+const std::string CSettings::SETTING_SMB_LEGACYSECURITY = "smb.legacysecurity";
|
||||
const std::string CSettings::SETTING_VIDEOSCREEN_MONITOR = "videoscreen.monitor";
|
||||
const std::string CSettings::SETTING_VIDEOSCREEN_SCREEN = "videoscreen.screen";
|
||||
const std::string CSettings::SETTING_VIDEOSCREEN_RESOLUTION = "videoscreen.resolution";
|
||||
@@ -1160,7 +1162,9 @@ void CSettings::InitializeISettingCallbacks()
|
||||
settingSet.insert(CSettings::SETTING_SERVICES_ESCONTINUOUSDELAY);
|
||||
settingSet.insert(CSettings::SETTING_SMB_WINSSERVER);
|
||||
settingSet.insert(CSettings::SETTING_SMB_WORKGROUP);
|
||||
+ settingSet.insert(CSettings::SETTING_SMB_MINPROTOCOL);
|
||||
settingSet.insert(CSettings::SETTING_SMB_MAXPROTOCOL);
|
||||
+ settingSet.insert(CSettings::SETTING_SMB_LEGACYSECURITY);
|
||||
m_settingsManager->RegisterCallback(&CNetworkServices::GetInstance(), settingSet);
|
||||
|
||||
settingSet.clear();
|
||||
diff --git a/xbmc/settings/Settings.h b/xbmc/settings/Settings.h
|
||||
index ab6770997ce5..c40ab2d31957 100644
|
||||
--- a/xbmc/settings/Settings.h
|
||||
+++ b/xbmc/settings/Settings.h
|
||||
@@ -290,7 +290,9 @@ class CSettings : public CSettingCreator, public CSettingControlCreator
|
||||
static const std::string SETTING_SERVICES_AIRPLAYVIDEOSUPPORT;
|
||||
static const std::string SETTING_SMB_WINSSERVER;
|
||||
static const std::string SETTING_SMB_WORKGROUP;
|
||||
+ static const std::string SETTING_SMB_MINPROTOCOL;
|
||||
static const std::string SETTING_SMB_MAXPROTOCOL;
|
||||
+ static const std::string SETTING_SMB_LEGACYSECURITY;
|
||||
static const std::string SETTING_VIDEOSCREEN_MONITOR;
|
||||
static const std::string SETTING_VIDEOSCREEN_SCREEN;
|
||||
static const std::string SETTING_VIDEOSCREEN_RESOLUTION;
|
||||
@@ -0,0 +1,29 @@
|
||||
--- a/system/settings/settings.xml 2017-11-13 14:24:41.584692775 +0000
|
||||
+++ b/system/settings/settings.xml 2017-11-13 14:22:03.245527087 +0000
|
||||
@@ -1964,7 +1964,7 @@
|
||||
</setting>
|
||||
<setting id="smb.minprotocol" type="integer" label="36628" help="36629">
|
||||
<level>2</level>
|
||||
- <visible>false</visible>
|
||||
+ <visible>true</visible>
|
||||
<default>0</default>
|
||||
<constraints>
|
||||
<options>
|
||||
@@ -1978,7 +1978,7 @@
|
||||
</setting>
|
||||
<setting id="smb.maxprotocol" type="integer" label="36621" help="36622">
|
||||
<level>2</level>
|
||||
- <visible>false</visible>
|
||||
+ <visible>true</visible>
|
||||
<default>0</default>
|
||||
<constraints>
|
||||
<options>
|
||||
@@ -1992,7 +1992,7 @@
|
||||
</setting>
|
||||
<setting id="smb.legacysecurity" type="boolean" label="36630" help="36631">
|
||||
<level>2</level>
|
||||
- <visible>false</visible>
|
||||
+ <visible>true</visible>
|
||||
<default>false</default>
|
||||
<control type="toggle" />
|
||||
<dependencies>
|
||||
@@ -433,6 +433,18 @@ index bb28aea1e2..741aa0bdc4 100644
|
||||
+
|
||||
+$(SUBDIR)rpi_qpu.o: $(SUBDIR)rpi_hevc_transform8.h $(SUBDIR)rpi_hevc_transform10.h
|
||||
+$(SUBDIR)hevcdec.o $(SUBDIR)rpi_shader_template.o $(SUBDIR)rpi_qpu.o: $(SUBDIR)rpi_shader.h
|
||||
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
|
||||
index 54efaad..02a89c3 100644
|
||||
--- a/libavcodec/allcodecs.c
|
||||
+++ b/libavcodec/allcodecs.c
|
||||
@@ -667,6 +667,7 @@ void avcodec_register_all(void)
|
||||
REGISTER_PARSER(H261, h261);
|
||||
REGISTER_PARSER(H263, h263);
|
||||
REGISTER_PARSER(H264, h264);
|
||||
+ REGISTER_PARSER(H264_MVC, h264_mvc);
|
||||
REGISTER_PARSER(HEVC, hevc);
|
||||
REGISTER_PARSER(MJPEG, mjpeg);
|
||||
REGISTER_PARSER(MLP, mlp);
|
||||
diff --git a/libavcodec/arm/Makefile b/libavcodec/arm/Makefile
|
||||
index a4ceca7f46..f8229a80e2 100644
|
||||
--- a/libavcodec/arm/Makefile
|
||||
@@ -6979,6 +6991,135 @@ index 1bf1c620d6..ccfa991f60 100644
|
||||
const uint8_t *bytestream_start;
|
||||
const uint8_t *bytestream;
|
||||
const uint8_t *bytestream_end;
|
||||
diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
|
||||
index 9d94b72..535ebf0 100644
|
||||
--- a/libavcodec/codec_desc.c
|
||||
+++ b/libavcodec/codec_desc.c
|
||||
@@ -1563,6 +1563,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
||||
.long_name = NULL_IF_CONFIG_SMALL("YUY2 Lossless Codec"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
|
||||
},
|
||||
+ {
|
||||
+ .id = AV_CODEC_ID_H264_MVC,
|
||||
+ .type = AVMEDIA_TYPE_VIDEO,
|
||||
+ .name = "h264_mvc",
|
||||
+ .long_name = NULL_IF_CONFIG_SMALL("H264 MVC"),
|
||||
+ .props = AV_CODEC_PROP_LOSSY,
|
||||
+ },
|
||||
|
||||
/* various PCM "codecs" */
|
||||
{
|
||||
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
|
||||
index efe3555..16358aa 100644
|
||||
--- a/libavcodec/h264.h
|
||||
+++ b/libavcodec/h264.h
|
||||
@@ -126,7 +126,9 @@ enum {
|
||||
NAL_END_STREAM = 11,
|
||||
NAL_FILLER_DATA = 12,
|
||||
NAL_SPS_EXT = 13,
|
||||
+ NAL_SPS_SUBSET = 15,
|
||||
NAL_AUXILIARY_SLICE = 19,
|
||||
+ NAL_SLICE_EXT = 20,
|
||||
NAL_FF_IGNORE = 0xff0f001,
|
||||
};
|
||||
|
||||
diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
|
||||
index ce4bab2..b9b0c78 100644
|
||||
--- a/libavcodec/h264_parser.c
|
||||
+++ b/libavcodec/h264_parser.c
|
||||
@@ -58,6 +58,8 @@ typedef struct H264ParseContext {
|
||||
uint8_t parse_history[6];
|
||||
int parse_history_count;
|
||||
int parse_last_mb;
|
||||
+ int is_mvc;
|
||||
+ int slice_ext;
|
||||
} H264ParseContext;
|
||||
|
||||
|
||||
@@ -105,24 +107,27 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf,
|
||||
} else if (state <= 5) {
|
||||
int nalu_type = buf[i] & 0x1F;
|
||||
if (nalu_type == NAL_SEI || nalu_type == NAL_SPS ||
|
||||
- nalu_type == NAL_PPS || nalu_type == NAL_AUD) {
|
||||
+ nalu_type == NAL_PPS || nalu_type == NAL_AUD ||
|
||||
+ nalu_type == NAL_SPS_SUBSET) {
|
||||
if (pc->frame_start_found) {
|
||||
i++;
|
||||
goto found;
|
||||
}
|
||||
} else if (nalu_type == NAL_SLICE || nalu_type == NAL_DPA ||
|
||||
- nalu_type == NAL_IDR_SLICE) {
|
||||
+ nalu_type == NAL_IDR_SLICE || (p->is_mvc && nalu_type == NAL_SLICE_EXT)) {
|
||||
state += 8;
|
||||
+
|
||||
+ p->slice_ext = (nalu_type == NAL_SLICE_EXT);
|
||||
continue;
|
||||
}
|
||||
state = 7;
|
||||
} else {
|
||||
p->parse_history[p->parse_history_count++] = buf[i];
|
||||
- if (p->parse_history_count > 5) {
|
||||
+ if (p->parse_history_count > 8) {
|
||||
unsigned int mb, last_mb = p->parse_last_mb;
|
||||
GetBitContext gb;
|
||||
|
||||
- init_get_bits(&gb, p->parse_history, 8*p->parse_history_count);
|
||||
+ init_get_bits8(&gb, p->parse_history + 3*p->slice_ext, p->parse_history_count - 3*p->slice_ext);
|
||||
p->parse_history_count = 0;
|
||||
mb= get_ue_golomb_long(&gb);
|
||||
p->parse_last_mb = mb;
|
||||
@@ -145,7 +150,7 @@ found:
|
||||
pc->frame_start_found = 0;
|
||||
if (p->is_avc)
|
||||
return next_avc;
|
||||
- return i - (state & 5) - 5 * (state > 7);
|
||||
+ return i - (state & 5) - 8 * (state > 7);
|
||||
}
|
||||
|
||||
static int scan_mmco_reset(AVCodecParserContext *s, GetBitContext *gb,
|
||||
@@ -585,7 +590,8 @@ static int h264_parse(AVCodecParserContext *s,
|
||||
}
|
||||
}
|
||||
|
||||
- parse_nal_units(s, avctx, buf, buf_size);
|
||||
+ if (!p->is_mvc)
|
||||
+ parse_nal_units(s, avctx, buf, buf_size);
|
||||
|
||||
if (avctx->framerate.num)
|
||||
avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1}));
|
||||
@@ -622,7 +628,7 @@ static int h264_split(AVCodecContext *avctx,
|
||||
if ((state & 0xFFFFFF00) != 0x100)
|
||||
break;
|
||||
nalu_type = state & 0x1F;
|
||||
- if (nalu_type == NAL_SPS) {
|
||||
+ if (nalu_type == NAL_SPS || nalu_type == NAL_SPS_SUBSET) {
|
||||
has_sps = 1;
|
||||
} else if (nalu_type == NAL_PPS)
|
||||
has_pps = 1;
|
||||
@@ -672,3 +678,23 @@ AVCodecParser ff_h264_parser = {
|
||||
.parser_close = h264_close,
|
||||
.split = h264_split,
|
||||
};
|
||||
+
|
||||
+static av_cold int init_mvc(AVCodecParserContext *s)
|
||||
+{
|
||||
+ H264ParseContext *p = s->priv_data;
|
||||
+ int ret = init(s);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ p->is_mvc = 1;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+AVCodecParser ff_h264_mvc_parser = {
|
||||
+ .codec_ids = { AV_CODEC_ID_H264_MVC },
|
||||
+ .priv_data_size = sizeof(H264ParseContext),
|
||||
+ .parser_init = init_mvc,
|
||||
+ .parser_parse = h264_parse,
|
||||
+ .parser_close = h264_close,
|
||||
+ .split = h264_split,
|
||||
+};
|
||||
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
|
||||
index c1fa67f67b..6f99021339 100644
|
||||
--- a/libavcodec/hevc.c
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="samba"
|
||||
PKG_VERSION="4.6.8"
|
||||
PKG_VERSION="4.6.10"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv3+"
|
||||
PKG_SITE="https://www.samba.org"
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
From 7470b9b18af282a742929d3fc90f4be5520428a1 Mon Sep 17 00:00:00 2001
|
||||
From: David Mulder <dmulder@suse.com>
|
||||
Date: Thu, 2 Nov 2017 08:25:11 -0600
|
||||
Subject: [PATCH] smbc_opendir should not return EEXIST with invalid login
|
||||
credentials
|
||||
|
||||
Signed-off-by: David Mulder <dmulder@suse.com>
|
||||
|
||||
Reviewed-by: Andreas Schneider <asn@samba.org>
|
||||
Reviewed-by: Jim McDonough <jmcd@samba.org>
|
||||
|
||||
Autobuild-User(master): Jim McDonough <jmcd@samba.org>
|
||||
Autobuild-Date(master): Thu Nov 9 01:49:06 CET 2017 on sn-devel-144
|
||||
---
|
||||
source3/libsmb/libsmb_server.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
|
||||
index b0e5926fa65..93b9e800910 100644
|
||||
--- a/source3/libsmb/libsmb_server.c
|
||||
+++ b/source3/libsmb/libsmb_server.c
|
||||
@@ -351,8 +351,8 @@ SMBC_server_internal(TALLOC_CTX *ctx,
|
||||
"?????",
|
||||
*pp_password);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
- errno = map_errno_from_nt_status(status);
|
||||
cli_shutdown(srv->cli);
|
||||
+ errno = map_errno_from_nt_status(status);
|
||||
srv->cli = NULL;
|
||||
smbc_getFunctionRemoveCachedServer(context)(context,
|
||||
srv);
|
||||
@@ -562,8 +562,8 @@ SMBC_server_internal(TALLOC_CTX *ctx,
|
||||
|
||||
status = cli_tree_connect_creds(c, share, "?????", creds);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
- errno = map_errno_from_nt_status(status);
|
||||
cli_shutdown(c);
|
||||
+ errno = map_errno_from_nt_status(status);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
ACTION=="add", SUBSYSTEM=="usb", \
|
||||
ATTR{idVendor}=="05ac", ATTR{idProduct}=="824[012]", \
|
||||
RUN+="wakeup_enable", \
|
||||
TAG+="systemd", ENV{SYSTEMD_WANTS}+="atvclient.service"
|
||||
|
||||
13
packages/sysutils/eventlircd/evmap/osmc_rf2.evmap
Normal file
13
packages/sysutils/eventlircd/evmap/osmc_rf2.evmap
Normal file
@@ -0,0 +1,13 @@
|
||||
#KEY_HOME = KEY_HOME
|
||||
KEY_I = KEY_INFO
|
||||
#KEY_UP = KEY_UP
|
||||
#KEY_DOWN = KEY_DOWN
|
||||
#KEY_LEFT = KEY_LEFT
|
||||
#KEY_RIGHT = KEY_RIGHT
|
||||
KEY_ENTER = KEY_OK
|
||||
#KEY_BACK = KEY_BACK
|
||||
KEY_C = KEY_EPG
|
||||
#KEY_PLAYPAUSE = KEY_PLAYPAUSE
|
||||
#KEY_STOP = KEY_STOP
|
||||
KEY_MINUS = KEY_VOLUMEDOWN
|
||||
KEY_EQUAL = KEY_VOLUMEUP
|
||||
@@ -199,6 +199,10 @@ ENV{ID_VENDOR_ID}=="2252", ENV{ID_MODEL_ID}=="1037", \
|
||||
ENV{eventlircd_enable}="true", \
|
||||
ENV{eventlircd_evmap}="osmc_rf.evmap"
|
||||
|
||||
ENV{ID_VENDOR_ID}=="2017", ENV{ID_MODEL_ID}=="1688", \
|
||||
ENV{eventlircd_enable}="true", \
|
||||
ENV{eventlircd_evmap}="osmc_rf2.evmap"
|
||||
|
||||
# Enable wake-on-usb for the USB remotes.
|
||||
RUN+="wakeup_enable"
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="tz"
|
||||
PKG_VERSION="2017b"
|
||||
PKG_VERSION="2017c"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Public Domain"
|
||||
PKG_SITE="http://www.iana.org/time-zones"
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
Description=Setup Timezone data
|
||||
DefaultDependencies=no
|
||||
Before=systemd-udevd.service
|
||||
After=var.mount
|
||||
After=var.mount systemd-tmpfiles-setup.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
Environment=TIMEZONE=UTC
|
||||
EnvironmentFile=-/storage/.cache/timezone
|
||||
ExecStartPre=/bin/mkdir -p /var/run
|
||||
ExecStart=/bin/ln -sf /usr/share/zoneinfo/${TIMEZONE} /var/run/localtime
|
||||
RemainAfterExit=yes
|
||||
StartLimitInterval=0
|
||||
|
||||
@@ -10,7 +10,7 @@ diff -Naur util-linux-2.27/configure.ac util-linux-2.27.patch/configure.ac
|
||||
+ AS_HELP_STRING([--disable-uuidgen], [do not build uuidgen]),
|
||||
+ [], [UL_DEFAULT_ENABLE([uuidgen], [check])]
|
||||
+)
|
||||
+UL_BUILD_INIT([uuidgen]])
|
||||
+UL_BUILD_INIT([uuidgen])
|
||||
UL_REQUIRES_BUILD([uuidgen], [libuuid])
|
||||
AM_CONDITIONAL([BUILD_UUIDGEN], [test "x$build_uuidgen" = xyes])
|
||||
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
From c3d7ae58a87018b39f0cca9a49c4a7b553135b22 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Wed, 29 Nov 2017 17:08:04 +0000
|
||||
Subject: [PATCH 1/2] ir-ctl: fix multiple scancodes in one file
|
||||
|
||||
A file with contents:
|
||||
|
||||
scancode sony12:0x100015
|
||||
space 25000
|
||||
scancode sony12:0x100015
|
||||
|
||||
Will produce bogus results.
|
||||
|
||||
Reported-by: Matthias Reichl <hias@horus.com>
|
||||
Tested-by: Matthias Reichl <hias@horus.com>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
---
|
||||
utils/ir-ctl/ir-ctl.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
|
||||
index 544ad3415..8538ec5db 100644
|
||||
--- a/utils/ir-ctl/ir-ctl.c
|
||||
+++ b/utils/ir-ctl/ir-ctl.c
|
||||
@@ -230,8 +230,8 @@ static struct file *read_file(const char *fname)
|
||||
char *scancodestr;
|
||||
|
||||
if (!expect_pulse) {
|
||||
- fprintf(stderr, _("error: %s:%d: space must precede scancode\n"), fname, lineno);
|
||||
- return NULL;
|
||||
+ f->buf[len++] = IR_DEFAULT_TIMEOUT;
|
||||
+ expect_pulse = true;
|
||||
}
|
||||
|
||||
scancodestr = strchr(p, ':');
|
||||
@@ -268,7 +268,8 @@ static struct file *read_file(const char *fname)
|
||||
else
|
||||
f->carrier = carrier;
|
||||
|
||||
- len += protocol_encode(proto, scancode, f->buf);
|
||||
+ len += protocol_encode(proto, scancode, f->buf + len);
|
||||
+ expect_pulse = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
From 26eca33b62f988ecbc4df8134ebdef20f9f75c97 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Wed, 29 Nov 2017 17:54:32 +0000
|
||||
Subject: [PATCH 2/2] ir-ctl: set the gap between scancodes or files
|
||||
|
||||
Between sending multiple scancodes or pulse space files, there is
|
||||
a gap of 125 milliseconds. Allow this to be set.
|
||||
|
||||
Tested-by: Matthias Reichl <hias@horus.com>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
---
|
||||
utils/ir-ctl/ir-ctl.1.in | 6 +++++-
|
||||
utils/ir-ctl/ir-ctl.c | 18 +++++++++++++-----
|
||||
2 files changed, 18 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/utils/ir-ctl/ir-ctl.1.in b/utils/ir-ctl/ir-ctl.1.in
|
||||
index 05550fb12..641b11152 100644
|
||||
--- a/utils/ir-ctl/ir-ctl.1.in
|
||||
+++ b/utils/ir-ctl/ir-ctl.1.in
|
||||
@@ -93,6 +93,10 @@ Comma separated list of emitters to use for sending. The first emitter is
|
||||
number 1. Some devices only support enabling one emitter (the winbond-cir
|
||||
driver).
|
||||
.TP
|
||||
+\fB\-g\fR, \fB\-\-gap\fR=\fIGAP\fR
|
||||
+Set the gap between scancodes or the gap between files when multiple files
|
||||
+are specified on the command line. The default is 125000 microseconds.
|
||||
+.TP
|
||||
\fB\-?\fR, \fB\-\-help\fR
|
||||
Prints the help message
|
||||
.TP
|
||||
@@ -220,7 +224,7 @@ To send the pulse and space file \fBplay\fR on emitter 3:
|
||||
.br
|
||||
\fBir\-ctl \-e 3 \-\-send=play\fR
|
||||
.PP
|
||||
-To send the rc-5 hauppuage '1' scancode:
|
||||
+To send the rc-5 hauppauge '1' scancode:
|
||||
.br
|
||||
\fBir\-ctl \-S rc5:0x1e01
|
||||
.PP
|
||||
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
|
||||
index 8538ec5db..6fb05b1aa 100644
|
||||
--- a/utils/ir-ctl/ir-ctl.c
|
||||
+++ b/utils/ir-ctl/ir-ctl.c
|
||||
@@ -82,6 +82,7 @@ struct arguments {
|
||||
int wideband;
|
||||
unsigned carrier_low, carrier_high;
|
||||
unsigned timeout;
|
||||
+ unsigned gap;
|
||||
int carrier_reports;
|
||||
int timeout_reports;
|
||||
unsigned carrier;
|
||||
@@ -111,6 +112,7 @@ static const struct argp_option options[] = {
|
||||
{ "carrier", 'c', N_("CARRIER"), 0, N_("set send carrier") },
|
||||
{ "duty-cycle", 'D', N_("DUTY"), 0, N_("set duty cycle") },
|
||||
{ "emitters", 'e', N_("EMITTERS"), 0, N_("set send emitters") },
|
||||
+ { "gap", 'g', N_("GAP"), 0, N_("set gap between files or scancodes") },
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -130,6 +132,7 @@ static const char doc[] = N_(
|
||||
" CARRIER - the carrier frequency to use for sending\n"
|
||||
" DUTY - the duty cycle to use for sending\n"
|
||||
" EMITTERS - comma separated list of emitters to use for sending, e.g. 1,2\n"
|
||||
+ " GAP - gap between pulse and files or scancodes in microseconds\n"
|
||||
" RANGE - set range of accepted carrier frequencies, e.g. 20000-40000\n"
|
||||
" TIMEOUT - set length of space before recording stops in microseconds\n"
|
||||
" SCANCODE - protocol:scancode, e.g. nec:0xa814\n\n"
|
||||
@@ -185,7 +188,7 @@ static unsigned parse_emitters(char *p)
|
||||
return emit;
|
||||
}
|
||||
|
||||
-static struct file *read_file(const char *fname)
|
||||
+static struct file *read_file(struct arguments *args, const char *fname)
|
||||
{
|
||||
bool expect_pulse = true;
|
||||
int lineno = 0, lastspace = 0;
|
||||
@@ -230,7 +233,7 @@ static struct file *read_file(const char *fname)
|
||||
char *scancodestr;
|
||||
|
||||
if (!expect_pulse) {
|
||||
- f->buf[len++] = IR_DEFAULT_TIMEOUT;
|
||||
+ f->buf[len++] = args->gap;
|
||||
expect_pulse = true;
|
||||
}
|
||||
|
||||
@@ -486,6 +489,11 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state)
|
||||
if (arguments->emitters == 0)
|
||||
argp_error(state, _("cannot parse emitters `%s'"), arg);
|
||||
break;
|
||||
+ case 'g':
|
||||
+ arguments->gap = strtoint(arg, "");
|
||||
+ if (arguments->gap == 0)
|
||||
+ argp_error(state, _("cannot parse gap `%s'"), arg);
|
||||
+ break;
|
||||
case 'D':
|
||||
arguments->duty = strtoint(arg, "%");
|
||||
if (arguments->duty == 0 || arguments->duty >= 100)
|
||||
@@ -494,7 +502,7 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state)
|
||||
case 's':
|
||||
if (arguments->record || arguments->features)
|
||||
argp_error(state, _("send can not be combined with record or features option"));
|
||||
- s = read_file(arg);
|
||||
+ s = read_file(arguments, arg);
|
||||
if (s == NULL)
|
||||
exit(EX_DATAERR);
|
||||
|
||||
@@ -884,7 +892,7 @@ err:
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
- struct arguments args = {};
|
||||
+ struct arguments args = { .gap = IR_DEFAULT_TIMEOUT };
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
setlocale (LC_ALL, "");
|
||||
@@ -912,7 +920,7 @@ int main(int argc, char *argv[])
|
||||
while (s) {
|
||||
struct file *next = s->next;
|
||||
if (s != args.send)
|
||||
- usleep(IR_DEFAULT_TIMEOUT);
|
||||
+ usleep(args.gap);
|
||||
|
||||
rc = lirc_send(&args, fd, features, s);
|
||||
if (rc) {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 9a20a75e132e26f6c49971f9818c6fad053875f2 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Wed, 2 Aug 2017 11:47:23 -0400
|
||||
Subject: [PATCH] ir-ctl: "ir-ctl -S rc6_mce:0x800f0410" does not work on
|
||||
32-bit
|
||||
|
||||
0x800f0410 does not fit in 32-bit signed long.
|
||||
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
---
|
||||
utils/ir-ctl/ir-ctl.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
|
||||
index 3d66063af..562a05da3 100644
|
||||
--- a/utils/ir-ctl/ir-ctl.c
|
||||
+++ b/utils/ir-ctl/ir-ctl.c
|
||||
@@ -152,7 +152,7 @@ static int strtoint(const char *p, const char *unit)
|
||||
static bool strtoscancode(const char *p, unsigned *ret)
|
||||
{
|
||||
char *end;
|
||||
- long arg = strtol(p, &end, 0);
|
||||
+ long long arg = strtoll(p, &end, 0);
|
||||
if (end == NULL || end[0] != 0)
|
||||
return false;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -3827,7 +3827,7 @@ CONFIG_HID_GENERIC=y
|
||||
CONFIG_HID_A4TECH=y
|
||||
# CONFIG_HID_ACRUX is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_APPLEIR=y
|
||||
CONFIG_HID_APPLEIR=m
|
||||
CONFIG_HID_AUREAL=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
# CONFIG_HID_BETOP_FF is not set
|
||||
|
||||
@@ -67,3 +67,6 @@ esac
|
||||
# Include deinterlacer into default VFM map
|
||||
echo rm default > /sys/class/vfm/map
|
||||
echo add default decoder ppmgr deinterlace amvideo > /sys/class/vfm/map
|
||||
|
||||
# Turn off the annoying Kernel activity - Blue Flashing LED
|
||||
echo none > /sys/class/leds/blue:heartbeat/trigger
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user