Merge pull request #268 from stefansaraev/pcsc

add initial pcsc support
This commit is contained in:
Stephan Raue 2012-03-05 07:36:21 -08:00
commit efe2c76bf6
20 changed files with 363 additions and 182 deletions

16
packages/3rdparty/lib/libccid/build vendored Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
. config/options $1
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \
--enable-shared \
--enable-static \
--enable-twinserial
make
make -C src/ Info.plist
$MAKEINSTALL

35
packages/3rdparty/lib/libccid/meta vendored Normal file
View File

@ -0,0 +1,35 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="libccid"
PKG_VERSION="1.4.5"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="LGPL"
PKG_SITE="http://pcsclite.alioth.debian.org/ccid.html"
PKG_URL="https://alioth.debian.org/frs/download.php/3672/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain pcsc-lite"
PKG_PRIORITY="optional"
PKG_SECTION="driver"
PKG_SHORTDESC="CCID free software driver"
PKG_LONGDESC="CCID free software driver"
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

6
packages/3rdparty/lib/libccid/rename vendored Executable file
View File

@ -0,0 +1,6 @@
#!/bin/sh
. config/options $1
cd $BUILD
mv ccid-${PKG_VERSION} ${PKG_NAME}-${PKG_VERSION}

39
packages/3rdparty/system/pcsc-lite/build vendored Executable file
View File

@ -0,0 +1,39 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
cd $PKG_BUILD
PCSCD_ADDON_DIR="/storage/.xbmc/addons/service.system.pcscd-addon"
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \
--sysconfdir=/etc \
--enable-shared \
--disable-static \
--disable-libudev \
--enable-libusb \
--enable-usbdropdir=$PCSCD_ADDON_DIR/drivers
$MAKEINSTALL

36
packages/3rdparty/system/pcsc-lite/meta vendored Normal file
View File

@ -0,0 +1,36 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011-2011 Gregor Fuis (gujs@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="pcsc-lite"
PKG_VERSION="1.8.2"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://pcsclite.alioth.debian.org/pcsclite.html"
PKG_URL="https://alioth.debian.org/frs/download.php/3695/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain libusb"
PKG_PRIORITY="optional"
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="yes"
PKG_AUTORECONF="yes"

View File

@ -27,4 +27,6 @@ mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -P $PKG_BUILD/build/oscam $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -PR $PKG_DIR/config/oscam.conf $ADDON_BUILD/$PKG_ADDON_ID/oscam-default.conf
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -aP $BUILD/pcsc-lite-*/src/.libs/libpcsclite.so $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -aP $BUILD/pcsc-lite-*/src/.libs/libpcsclite.so.* $ADDON_BUILD/$PKG_ADDON_ID/lib

View File

@ -33,6 +33,7 @@ cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DHAVE_DVBAPI=1 -DWITH_STAPI=0 \
-DMODULE_CAMD33=1 \
-DWEBIF=1 \
-DOPTIONAL_INCLUDE_DIR=$SYSROOT_PREFIX/usr/include \
..
make

View File

@ -1,3 +1,6 @@
2.0.3
- add pcsc reader support
2.0.2
- add possibilty to start / stop addon from addon manager with enable / disable

View File

@ -20,14 +20,14 @@
################################################################################
PKG_NAME="oscam"
PKG_VERSION="6136"
PKG_REV="2"
PKG_VERSION="6472"
PKG_REV="3"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://streamboard.gmc.to/wiki/index.php/OSCam/en"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="openssl"
PKG_BUILD_DEPENDS="toolchain openssl"
PKG_BUILD_DEPENDS="toolchain openssl pcsc-lite"
PKG_PRIORITY="optional"
PKG_SECTION="service/softcam"
PKG_SHORTDESC="oscam: OSCam is Open Source Conditional Access Modul."

View File

@ -1,73 +0,0 @@
--- oscam-1.10/module-dvbapi.c 2011-12-08 00:02:39.058737655 +0100
+++ /emu/backup/oscam-1.10/module-dvbapi.c 2011-12-07 23:35:15.708736813 +0100
@@ -4,7 +4,7 @@
#include "module-dvbapi.h"
-const char *boxdesc[] = { "none", "dreambox", "duckbox", "ufs910", "dbox2", "ipbox", "ipbox-pmt", "dm7000", "qboxhd", "coolstream", "neumo" };
+const char *boxdesc[] = { "none", "dreambox", "duckbox", "ufs910", "dbox2", "ipbox", "ipbox-pmt", "dm7000", "qboxhd", "coolstream", "neumo", "pc" };
const struct box_devices devices[BOX_COUNT] = {
/* QboxHD (dvb-api-3)*/ { "/tmp/virtual_adapter/", "ca%d", "demux%d", "/tmp/camd.socket" },
@@ -214,6 +214,9 @@
if (cfg.dvbapi_boxtype==BOXTYPE_QBOXHD)
num=0;
+ if (cfg.dvbapi_boxtype==BOXTYPE_PC)
+ num=0;
+
snprintf(device_path2, sizeof(device_path2), devices[selected_box].ca_device, num+ca_offset);
snprintf(device_path, sizeof(device_path), devices[selected_box].path, adapter);
@@ -1090,6 +1093,12 @@
adapter_index = buffer[21]; // with STONE 1.0.4 adapter index can be 0,1,2
ca_mask = (1 << adapter_index); // use adapter_index as ca_mask (used as index for ca_fd[] array)
}
+
+ if (cfg.dvbapi_boxtype == BOXTYPE_PC ) {
+ demux_index = buffer[6]; // it always 0 but you never know
+ adapter_index = buffer[7]; // adapter index can be 0,1,2
+ ca_mask = (1 << adapter_index); // use adapter_index as ca_mask (used as index for ca_fd[] array)
+ }
demux[demux_id].program_number=((buffer[1] << 8) | buffer[2]);
demux[demux_id].demux_index=demux_index;
@@ -1106,10 +1115,10 @@
cs_strncpy(demux[demux_id].pmt_file, pmtfile, sizeof(demux[demux_id].pmt_file));
if (program_info_length > 1 && program_info_length < length)
- dvbapi_parse_descriptor(demux_id, program_info_length-1, buffer+7);
+ dvbapi_parse_descriptor(demux_id, program_info_length-1, buffer+9);
uint32_t es_info_length=0;
- for (i = program_info_length + 6; i < length; i += es_info_length + 5) {
+ for (i = program_info_length + 8; i < length; i += es_info_length + 5) {
int32_t stream_type = buffer[i];
uint16_t elementary_pid = ((buffer[i + 1] & 0x1F) << 8) | buffer[i + 2];
es_info_length = ((buffer[i + 3] & 0x0F) << 8) | buffer[i + 4];
@@ -1301,9 +1310,10 @@
if (pthread_mutex_trylock(&event_handler_lock) == EBUSY)
return;
- int32_t standby_fd = open(STANDBY_FILE, O_RDONLY);
- pausecam = (standby_fd > 0) ? 1 : 0;
- if (standby_fd) close(standby_fd);
+ //int32_t standby_fd = open(STANDBY_FILE, O_RDONLY);
+ //pausecam = (standby_fd > 0) ? 1 : 0;
+ //if (standby_fd) close(standby_fd);
+ pausecam = 0;
if (cfg.dvbapi_boxtype==BOXTYPE_IPBOX || cfg.dvbapi_pmtmode == 1) {
pthread_mutex_unlock(&event_handler_lock);
--- oscam-1.10/globals.h 2011-12-08 00:02:39.068737655 +0100
+++ /emu/backup/oscam-1.10/globals.h 2011-12-07 23:34:38.678736793 +0100
@@ -234,7 +234,8 @@
#define BOXTYPE_QBOXHD 8
#define BOXTYPE_COOLSTREAM 9
#define BOXTYPE_NEUMO 10
-#define BOXTYPES 10
+#define BOXTYPE_PC 11
+#define BOXTYPES 11
extern const char *boxdesc[];
#endif

View File

@ -1,104 +0,0 @@
commit 35ce4dd3c5871b5a700d4e07965d93a561299df0
Author: Mariusz Bialonczyk <manio@skyboo.net>
Date: Mon Dec 19 13:45:08 2011 +0100
Include dvbapi_ca.c functionality in oscam
diff --git a/module-dvbapi.c b/module-dvbapi.c
index 89221b1..cfc2c41 100644
--- a/module-dvbapi.c
+++ b/module-dvbapi.c
@@ -232,6 +232,32 @@ int32_t dvbapi_open_device(int32_t type, int32_t num, int32_t adapter) {
return dmx_fd;
}
+int32_t dvbapi_open_netdevice(int32_t type, int32_t num, int32_t adapter) {
+ int32_t socket_fd;
+
+ socket_fd = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
+ if(socket_fd==-1) {
+ cs_debug_mask(D_DVBAPI, "Failed to open socket (%d %s)", errno, strerror(errno));
+ }
+ else {
+ struct sockaddr_in saddr;
+ fcntl(socket_fd,F_SETFL,O_NONBLOCK);
+ bzero(&saddr,sizeof(saddr));
+ saddr.sin_family = AF_INET;
+ saddr.sin_port = htons(PORT + adapter); // port = PORT + adapter number
+ saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
+ int r = connect(socket_fd, (struct sockaddr *) &saddr, sizeof(saddr));
+ if (r<0) {
+ cs_debug_mask(D_DVBAPI, "Failed to connect socket (%d %s), at localhost, port=%d", errno, strerror(errno), PORT + adapter);
+ close(socket_fd);
+ socket_fd=-1;
+ }
+ }
+
+ cs_debug_mask(D_DVBAPI, "NET DEVICE open (port = %d) fd %d", PORT + adapter, socket_fd);
+ return socket_fd;
+}
+
int32_t dvbapi_stop_filter(int32_t demux_index, int32_t type) {
int32_t g;
@@ -515,16 +541,21 @@ void dvbapi_set_pid(int32_t demux_id, int32_t num, int32_t index) {
for (i=0;i<8;i++) {
if (demux[demux_id].ca_mask & (1 << i)) {
if (ca_fd[i]<=0)
- ca_fd[i]=dvbapi_open_device(1, i, demux[demux_id].adapter_index);
+ ca_fd[i]=dvbapi_open_netdevice(1, i, demux[demux_id].adapter_index);
if (ca_fd[i]>0) {
ca_pid_t ca_pid2;
memset(&ca_pid2,0,sizeof(ca_pid2));
ca_pid2.pid = demux[demux_id].STREAMpids[num];
ca_pid2.index = index;
- if (ioctl(ca_fd[i], CA_SET_PID, &ca_pid2)==-1)
- cs_debug_mask(D_DVBAPI, "Error CA_SET_PID pid=0x%04x index=%d (errno=%d %s)", ca_pid2.pid, ca_pid2.index, errno, strerror(errno));
- else
- cs_debug_mask(D_DVBAPI, "CA_SET_PID pid=0x%04x index=%d", ca_pid2.pid, ca_pid2.index);
+
+ int request=CA_SET_PID;
+ send(ca_fd[i],(void*)&request, sizeof(request), 0);
+ send(ca_fd[i],(void*)&ca_pid2, sizeof(ca_pid2), 0);
+
+// if (ioctl(ca_fd[i], CA_SET_PID, &ca_pid2)==-1)
+// cs_debug_mask(D_DVBAPI, "Error CA_SET_PID pid=0x%04x index=%d (errno=%d %s)", ca_pid2.pid, ca_pid2.index, errno, strerror(errno));
+// else
+// cs_debug_mask(D_DVBAPI, "CA_SET_PID pid=0x%04x index=%d", ca_pid2.pid, ca_pid2.index);
}
}
}
@@ -1836,13 +1867,17 @@ static void dvbapi_write_cw(int32_t demux_id, uchar *cw, int32_t index) {
if (demux[demux_id].ca_mask & (1 << i)) {
cs_debug_mask(D_DVBAPI, "write cw%d index: %d (ca%d)", n, ca_descr.index, i);
if (ca_fd[i]<=0) {
- ca_fd[i]=dvbapi_open_device(1, i, demux[demux_id].adapter_index);
+ ca_fd[i]=dvbapi_open_netdevice(1, i, demux[demux_id].adapter_index);
if (ca_fd[i]<=0)
return;
}
- if (ioctl(ca_fd[i], CA_SET_DESCR, &ca_descr) < 0)
- cs_debug_mask(D_DVBAPI, "Error CA_SET_DESCR");
+ int request=CA_SET_DESCR;
+ send(ca_fd[i],(void*)&request, sizeof(request), 0);
+ send(ca_fd[i],(void*)&ca_descr, sizeof(ca_descr), 0);
+
+// if (ioctl(ca_fd[i], CA_SET_DESCR, &ca_descr) < 0)
+// cs_debug_mask(D_DVBAPI, "Error CA_SET_DESCR");
}
}
#endif
diff --git a/module-dvbapi.h b/module-dvbapi.h
index 2802b03..8720b01 100644
--- a/module-dvbapi.h
+++ b/module-dvbapi.h
@@ -16,6 +16,8 @@
#define STAPI 2
#define COOLAPI 3
+#define PORT 9000
+
#define TMPDIR "/tmp/"
#define STANDBY_FILE "/tmp/.pauseoscam"
#define ECMINFO_FILE "/tmp/ecm.info"

View File

@ -79,7 +79,7 @@ if [ ! "$(pidof oscam)" ]; then
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
break
fi
oscam $OSCAM_ARG > /dev/null 2>&1
LD_LIBRARY_PATH="$ADDON_DIR/lib:$LD_LIBRARY_PATH" oscam $OSCAM_ARG > /dev/null 2>&1
sleep 1
done &
fi

View File

@ -0,0 +1,42 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011-2011 Gregor Fuis (gujs@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin/
cp -Pa $BUILD/pcsc-lite-*/src/pcscd $ADDON_BUILD/$PKG_ADDON_ID/bin/pcscd.bin
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -Pa $BUILD/pcsc-lite-*/src/.libs/*.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -Pa $BUILD/pcsc-lite-*/src/spy/.libs/*.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/drivers/serial
cp -Pa $BUILD/libccid-*/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 $BUILD/libccid-*/src/.libs/libccid.so $ADDON_BUILD/$PKG_ADDON_ID/drivers/ifd-ccid.bundle/Contents/Linux/
cp -Pa $BUILD/libccid-*/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/

View File

@ -0,0 +1,2 @@
2.0.1
- initial version for pcsc-lite 1.8.2 / ccid 1.4.5

View 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/.xbmc/addons/service.system.pcscd-addon/drivers/serial/libccidtwin.so
#CHANNELID n

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,37 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011-2011 Gregor Fuis (gujs@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="pcscd-addon"
PKG_VERSION="2.0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.openelec.tv"
PKG_URL=""
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain pcsc-lite libusb libccid"
PKG_PRIORITY="optional"
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="yes"
PKG_ADDON_TYPE="xbmc.service"
PKG_AUTORECONF="no"

View File

@ -0,0 +1,55 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
ADDON_NAME="service.system.pcscd-addon"
ADDON_DIR="$HOME/.xbmc/addons/$ADDON_NAME"
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/$ADDON_NAME"
ADDON_CONFIG_DIR="$ADDON_HOME/config"
LOCKDIR="/var/lock/"
LOCKFILE="pcscd.disabled"
mkdir -p $ADDON_HOME
export PATH=$ADDON_DIR/bin:$PATH
cd $ADDON_DIR/config
mkdir -p $ADDON_CONFIG_DIR
for config in `find . -type f -name "*.conf*"`; do
if [ ! -f $ADDON_CONFIG_DIR/$config ]; then
cp $config $ADDON_CONFIG_DIR/$config
fi
done
if [ ! "$(pidof pcscd.bin)" ];then
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
rm -rf "$LOCKDIR/$LOCKFILE"
fi
while [ true ] ; do
if [ -f "$LOCKDIR/$LOCKFILE" ] ; then
break
fi
pcscd.bin --foreground -c $ADDON_CONFIG_DIR/reader.conf
sleep 1
done &
fi

View File

@ -0,0 +1,30 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
LOCKDIR="/var/lock/"
LOCKFILE="pcscd.disabled"
if [ "$(pidof pcscd.bin)" ];then
mkdir -p "$LOCKDIR"
touch "$LOCKDIR/$LOCKFILE"
killall -9 pcscd.bin
fi

View File

@ -0,0 +1,44 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011-2011 Gregor Fuis (gujs@openelec.tv)
#
# This Program 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, or (at your option)
# any later version.
#
# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
import os
import sys
import xbmcaddon
import time
import subprocess
__scriptname__ = "PCSC lite"
__author__ = "OpenELEC"
__url__ = "http://www.openelec.tv"
__settings__ = xbmcaddon.Addon(id='service.system.pcscd-addon')
__cwd__ = __settings__.getAddonInfo('path')
__start__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "pcscd.start") )
__stop__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "pcscd.stop") )
#make binary files executable in adson bin folder
subprocess.Popen("chmod -R +x " + __cwd__ + "/bin/*" , shell=True, close_fds=True)
subprocess.Popen(__start__, shell=True, close_fds=True)
while (not xbmc.abortRequested):
time.sleep(0.250)
subprocess.Popen(__stop__, shell=True, close_fds=True)