1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-20 04:02:27 +00:00

- Update comms/lirc to 0.9.0p1_4 in order to be able to use the lirc

support in webcamd svn (for mceusb-based receivers/transmitters and
  USB DVB tuner remotes supported by the Linux code), and enable
  support for a few more USB devices while we're at it tho of those
  only an FTDI-based one was tested:

	http://www.huitsing.nl/irftdi/ [1]

- Fix plist for audio/rhythmbox and multimedia/totem and
  add missing LIRC_{CFLAGS,LIBS} variables to CONFIGURE_ENV for
  multimedia/xine when building them with (optional) lirc support. [2]

- Chase liblirc_client shlib version bump for ports depdending on it
  and bump PORTREVISIONs for ports depending on it by default.

Approved by:	portmgr (miwi) [2]
Thanks to:	Warren Block <wblock@wonkity.com> for testing [1]
This commit is contained in:
Juergen Lock 2011-02-26 22:11:54 +00:00
parent a51b008407
commit 0edca97428
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=269851
31 changed files with 495 additions and 275 deletions

View File

@ -37,7 +37,7 @@ PORTDOCS= AUTHORS CREDITS ChangeLog FAQ README TODO
.include <bsd.port.pre.mk>
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
CONFIGURE_ARGS+= --with-lirc
.endif

View File

@ -69,7 +69,7 @@ USE_GSTREAMER+= faad
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
PLIST_SUB+= LIRC=""
CONFIGURE_ARGS+=--enable-lirc
.else

View File

@ -744,7 +744,7 @@ share/rhythmbox/uri-new.ui
@dirrm lib/rhythmbox/plugins/mmkeys
%%PYTHON%%@dirrm lib/rhythmbox/plugins/magnatune
%%PYTHON%%@dirrm lib/rhythmbox/plugins/lyrics
%%LIRC%%@dirrm lib/rhythmbox/plugins/lirc
%%LIRC%%@dirrm lib/rhythmbox/plugins/rblirc
%%PYTHON%%@dirrm lib/rhythmbox/plugins/jamendo
@dirrm lib/rhythmbox/plugins/iradio
%%IPOD%%@dirrm lib/rhythmbox/plugins/ipod

View File

@ -6,18 +6,21 @@
#
PORTNAME= lirc
PORTVERSION= 0.8.0
PORTREVISION= 2
PORTVERSION= 0.9.0p1
PORTREVISION= 4
CATEGORIES= comms
MASTER_SITES= SF/${PORTNAME}/LIRC/${PORTVERSION}
MASTER_SITES= http://lirc.org/software/snapshots/
DISTNAME= ${PORTNAME}-${PORTVERSION:S/p1/-pre1/}
MAINTAINER= doconnor@gsoft.com.au
COMMENT= Linux Infared Remote Control
MAINTAINER= nox@FreeBSD.org
COMMENT= Linux Infrared Remote Control
USE_AUTOTOOLS= libtool
USE_AUTOTOOLS= libtool automake autoheader aclocal autoconf
ACLOCAL_ARGS= -I "${ACLOCAL_DIR}" -I ${LOCALBASE}/share/aclocal
USE_BZIP2= yes
USE_GMAKE= yes
USE_XORG= x11
USE_PYTHON= yes
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
@ -26,9 +29,13 @@ CPPFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
OPTIONS= IRMAN "Build with libirman support" On
OPTIONS= MINIMAL "Build with minmal dependencies" Off \
DEBUG "Build debug version" Off
USE_RC_SUBR= lircd.sh
PORTDOCS= html images irxevent.keys lirc.css lirc.hwdb
PORTEXAMPLES= remotes
SUB_FILES= pkg-message
.include <bsd.port.pre.mk>
@ -39,11 +46,16 @@ PLIST_SUB+= SMODE2=
PLIST_SUB+= SMODE2="@comment "
.endif
.if defined(WITH_IRMAN)
.if defined(WITHOUT_MINIMAL)
BUILD_DEPENDS+= ${LOCALBASE}/lib/libirman.a:${PORTSDIR}/comms/libirman
CONFIGURE_ARGS+= --with-driver=irman --with-driver=dvico
LIB_DEPENDS+= ftdi.18:${PORTSDIR}/devel/libftdi
CONFIGURE_ARGS+= --with-driver=userspace
.else
CONFIGURE_ARGS+= --with-driver=any --with-driver=dvico
CONFIGURE_ARGS+= --with-driver=dvico
.endif
.if defined(WITH_DEBUG)
CONFIGURE_ARGS+= --enable-debug
.endif
MAN1= ircat.1 irexec.1 irpty.1 irrecord.1 irsend.1 irw.1 \
@ -51,6 +63,14 @@ MAN1= ircat.1 irexec.1 irpty.1 irrecord.1 irsend.1 irw.1 \
MAN8= lircd.8 lircmd.8
post-install:
.if !defined(NOPORTDOCS)
@(cd ${WRKSRC}/doc && ${COPYTREE_SHARE} html ${DOCSDIR}/)
@(cd ${WRKSRC}/doc && ${COPYTREE_SHARE} images ${DOCSDIR}/)
@(cd ${WRKSRC}/doc && ${INSTALL_DATA} irxevent.keys lirc.css lirc.hwdb ${DOCSDIR}/)
.endif
.if !defined(NOPORTEXAMPLES)
@(cd ${WRKSRC} && ${COPYTREE_SHARE} remotes ${EXAMPLESDIR}/)
.endif
@${MKDIR} /var/run/lirc
@${CAT} ${PKGMESSAGE}

View File

@ -1,3 +1,2 @@
MD5 (lirc-0.8.0.tar.bz2) = 0bf28bf82c7766a462f90927b6bf3af1
SHA256 (lirc-0.8.0.tar.bz2) = cc8d7fb41a045278680ea530cffaf05181977f41244b9f0ed64075cd7630b5d2
SIZE (lirc-0.8.0.tar.bz2) = 514359
SHA256 (lirc-0.9.0-pre1.tar.bz2) = 6724514d76077cc087bd4e12d880744442223e7e4ecfd0aa515c1610bc13b5f1
SIZE (lirc-0.9.0-pre1.tar.bz2) = 837920

View File

@ -20,7 +20,7 @@ load_rc_config ${name}
: ${lircd_device="/dev/lirc0"}
procname=%%PREFIX%%/sbin/lircd
pidfile=/var/run/lircd.pid
pidfile=/var/run/lirc/lircd.pid
lircd_config="%%PREFIX%%/etc/lircd.conf"
required_files=${lircd_config}
command="%%PREFIX%%/sbin/lircd"

View File

@ -1,27 +0,0 @@
--- configure.orig Sat Jan 21 18:03:45 2006
+++ configure Wed Nov 15 12:58:20 2006
@@ -7816,6 +7816,7 @@
# use fifo instead of devnode (required on mac os x)
+use_fifos="yes"
if test "$use_fifos" = "yes"; then
USE_FIFOS_TRUE=
@@ -9378,6 +9379,8 @@
{ echo "configure: error: *** you need to have the ALSA libraries and drivers
from at least version 1.0.9 for this driver" 1>&2; exit 1; }
;;
+ any)
+ ;;
*)
{ echo "configure: error: *** it is not possible to install the specified driver
on this system" 1>&2; exit 1; }
@@ -9387,6 +9390,7 @@
if test "$lirc_driver" = "none" || \
+ test "$lirc_driver" = "any" || \
test "$lirc_driver" = "alsa_usb" || \
test "$lirc_driver" = "userspace" || \
test "$lirc_driver" = "atilibusb" || \

View File

@ -0,0 +1,116 @@
--- configure.ac.orig
+++ configure.ac
@@ -97,6 +97,14 @@ case "${host_os}" in
devdir_default="/usr/lirc/dev/"
use_fifos="yes"
;;
+ freebsd*)
+ dnl PortAudio for UNIX OSS
+ portaudio_lib_other="-lm -lpthread ${forkpty}"
+
+ dnl default devdir
+ devdir_default="/dev"
+ use_fifos="yes"
+ ;;
*)
dnl Unix OSS configuration
@@ -318,70 +326,22 @@ AH_TEMPLATE([SYSCONFDIR],
AH_TEMPLATE([USE_SYSLOG],
[define if you want to log to syslog instead of logfile])
-if test -n "${LIBUSB_CONFIG}"; then
+AC_CHECK_FUNCS(strchrnul strnlen)
+
+AC_CHECK_HEADER(libusb.h)
+if test "$ac_cv_header_libusb_h" = yes -o -n "${LIBUSB_CONFIG}"; then
AC_DEFINE(HAVE_LIBUSB)
possible_drivers="${possible_drivers} (atilibusb) (awlibusb) (dfclibusb) (commandir) (srm7500libusb)"
fi
-AC_CHECK_LIB(caraca_client, caraca_init,
- AC_DEFINE(HAVE_LIBCARACA)
- possible_drivers="${possible_drivers} (caraca)"
-)
AC_CHECK_HEADER(ftdi.h,
AC_DEFINE(HAVE_FTDI)
possible_drivers="${possible_drivers} (ftdi)"
)
-AC_CHECK_HEADER(iguanaIR.h,
- AC_DEFINE(HAVE_IGUANAIR)
- possible_drivers="${possible_drivers} (iguanaIR)"
-)
AC_CHECK_LIB(irman, ir_strerror,
AC_DEFINE(HAVE_LIBIRMAN)
possible_drivers="${possible_drivers} (irman)"
)
-AC_CHECK_LIB(irman_sw, ir_strerror,
- AC_DEFINE(HAVE_LIBIRMAN_SW)
- possible_drivers="${possible_drivers} (irman_sw)"
-)
-dnl audio driver requires PortAudio library installed and some linker flags
-AC_CHECK_HEADERS(portaudio.h,[
- AC_CHECK_LIB(portaudio, Pa_Initialize,[
- AC_DEFINE(HAVE_LIBPORTAUDIO)
- possible_drivers="${possible_drivers} (audio)"
- ],,${portaudio_lib_other}
- )]
-)
-dnl audio_alsa driver requires ALSA library installed and some linker flags
-have_alsa=no
-AC_CHECK_HEADERS(alsa/asoundlib.h,[
- AC_CHECK_LIB(asound, snd_pcm_open,[
- AC_DEFINE(HAVE_LIBALSA)
- have_alsa=yes
- possible_drivers="${possible_drivers} (audio_alsa)"
- ],,
- )]
-)
-dnl alsa_usb driver requires an ALSA that knows about our hwdep device
-if test "$have_alsa" = "yes"; then
- AC_MSG_CHECKING(for ALSA SB RC hwdep support)
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <alsa/asoundlib.h>
-]], [[
- if (snd_hwdep_info_get_iface(NULL) == SND_HWDEP_IFACE_SB_RC) {}
-]])],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_ALSA_SB_RC)
- possible_drivers="${possible_drivers} (alsa_usb)"
- ],[
- AC_MSG_RESULT(no)
- ])
-fi
-dnl creative_infracd driver requires linux scsi api
-AC_CHECK_HEADERS(scsi/sg.h,[
- AC_DEFINE(HAVE_SCSI)
- possible_drivers="${possible_drivers} (creative_infracd)"
- ]
-)
dnl dev_input driver requires linux input device api
AC_CHECK_HEADERS(linux/input.h,[
AC_DEFINE(HAVE_LINUX_DEVINPUT)
@@ -411,17 +371,18 @@ AC_CHECK_HEADERS([linux/hiddev.h],[
#endif
]
)
+dnl FreeBSD usbhid.h - patched daemons/hw_hiddev.c needs testing
+AC_CHECK_HEADERS([usbhid.h],[
+ dnl possible_drivers="${possible_drivers} (asusdh) (bw6130) (dvico) (macmini)"
+ possible_drivers="${possible_drivers} (bw6130) (dvico)"
+ ], [], []
+)
dnl dsp driver requires linux soundcard api
AC_CHECK_HEADERS(sys/soundcard.h,[
AC_DEFINE(HAVE_SOUNDCARD)
possible_drivers="${possible_drivers} (dsp)"
]
)
-dnl i2cuser driver requires the Linux I2C API
-AC_CHECK_HEADERS(linux/i2c-dev.h,[
- possible_drivers="${possible_drivers} (i2cuser)"
- ]
-)
dnl here we see what driver the user wants.

View File

@ -1,11 +1,11 @@
--- daemons/Makefile.in.orig Sat Mar 10 17:14:33 2007
+++ daemons/Makefile.in Sat Mar 10 17:14:45 2007
@@ -919,8 +919,6 @@
--- daemons/Makefile.in.orig
+++ daemons/Makefile.in
@@ -1108,8 +1108,6 @@ uninstall-am: uninstall-binPROGRAMS unin
@SANDBOXED_FALSE@@USE_FIFOS_FALSE@uninstall-local: rmdev
install-data-local:
- test "$(lircd_conf)" = "" || test -e $(DESTDIR)$(sysconfdir)/lircd.conf || ($(mkinstalldirs) $(DESTDIR)$(sysconfdir) && $(INSTALL_DATA) $(top_srcdir)/remotes/$(lircd_conf) $(DESTDIR)$(sysconfdir)/lircd.conf)
- test "$(lircmd_conf)" = "" || test -e $(DESTDIR)$(sysconfdir)/lircmd.conf || ($(mkinstalldirs) $(DESTDIR)$(sysconfdir) && $(INSTALL_DATA) $(top_srcdir)/remotes/$(lircmd_conf) $(DESTDIR)$(sysconfdir)/lircmd.conf)
- test "$(lircd_conf)" = "" || test -e $(DESTDIR)$(sysconfdir)/$(PACKAGE)/lircd.conf || ($(mkinstalldirs) $(DESTDIR)$(sysconfdir)/lirc && $(INSTALL_DATA) $(top_srcdir)/remotes/$(lircd_conf) $(DESTDIR)$(sysconfdir)/$(PACKAGE)/lircd.conf)
- test "$(lircmd_conf)" = "" || test -e $(DESTDIR)$(sysconfdir)/$(PACKAGE)/lircmd.conf || ($(mkinstalldirs) $(DESTDIR)$(sysconfdir)/lirc && $(INSTALL_DATA) $(top_srcdir)/remotes/$(lircmd_conf) $(DESTDIR)$(sysconfdir)/$(PACKAGE)/lircmd.conf)
mkdev:
test -e $(DESTDIR)$(devdir)/lircd || ($(mkinstalldirs) $(DESTDIR)$(devdir) && @mknod@ $(DESTDIR)$(devdir)/lircd p)
test -e $(DESTDIR)$(varrundir)/$(PACKAGE)/lircd || ($(mkinstalldirs) $(DESTDIR)$(varrundir)/lirc && @mknod@ $(DESTDIR)$(varrundir)/$(PACKAGE)/lircd p)

View File

@ -0,0 +1,20 @@
--- daemons/hw-types.c.orig
+++ daemons/hw-types.c
@@ -105,7 +105,7 @@ struct hardware *hw_list[] = {
&hw_awlibusb,
#endif
&hw_bte,
-#ifdef HAVE_LINUX_HIDDEV_H
+#if defined(HAVE_LINUX_HIDDEV_H) || defined(HAVE_USBHID_H)
&hw_bw6130,
#endif
#ifdef HAVE_LIBUSB
@@ -125,7 +125,7 @@ struct hardware *hw_list[] = {
#ifdef HAVE_SOUNDCARD
&hw_dsp,
#endif
-#ifdef HAVE_LINUX_HIDDEV_H
+#if defined(HAVE_LINUX_HIDDEV_H) || defined(HAVE_USBHID_H)
&hw_dvico,
#endif
&hw_ea65,

View File

@ -0,0 +1,97 @@
--- daemons/hw_default.c.orig
+++ daemons/hw_default.c
@@ -38,6 +38,20 @@
#include "transmit.h"
#include "hw_default.h"
+/*
+ * Some(?) versions of the Linux mceusb /dev/lirc0 driver return
+ * trailing spaces while at least irrecord expects spaces at the
+ * beginning of a remote button event. So if DELAYEDSPACE is
+ * defined delay a space until the next pulse if it comes right
+ * after a pulse.
+ *
+ * XXX make this a separate hw_mceusb device?
+ */
+#define DELAYEDSPACE
+#ifdef DELAYEDSPACE
+#include <errno.h>
+#endif
+
extern struct ir_remote *repeat_remote;
static __u32 supported_send_modes[] = {
@@ -81,6 +95,39 @@ struct hardware hw_default = {
static int write_send_buffer(int lirc);
+#ifdef DELAYEDSPACE
+static int delayedspace = 100000;
+
+static int availabledata(void)
+{
+ fd_set fds;
+ int ret;
+ struct timeval tv;
+
+ FD_ZERO(&fds);
+ FD_SET(hw.fd, &fds);
+ do {
+ do {
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ ret = select(hw.fd + 1, &fds, NULL, NULL, &tv);
+ }
+ while (ret == -1 && errno == EINTR);
+ if (ret == -1) {
+ logprintf(LOG_ERR, "select() failed\n");
+ logperror(LOG_ERR, NULL);
+ continue;
+ }
+ }
+ while (ret == -1);
+
+ if (FD_ISSET(hw.fd, &fds)) {
+ return (1);
+ }
+ return (0);
+}
+#endif
+
/**********************************************************************
*
* decode stuff
@@ -115,6 +162,13 @@ int default_readdata(lirc_t timeout)
dosigterm(SIGTERM);
}
#else
+#ifdef DELAYEDSPACE
+ if (delayedspace) {
+ data = delayedspace;
+ delayedspace = 0;
+ return data;
+ }
+#endif
ret = read(hw.fd, &data, sizeof(data));
if (ret != sizeof(data)) {
logprintf(LOG_ERR, "error reading from %s (ret %d, expected %d)",
@@ -125,6 +179,19 @@ int default_readdata(lirc_t timeout)
return 0;
}
+#ifdef DELAYEDSPACE
+ if (hw.rec_mode == LIRC_MODE_MODE2 && (data & PULSE_BIT) && availabledata() /* waitfordata((long)timeout) */) {
+ ret = read(hw.fd, &delayedspace, sizeof(delayedspace));
+ if (ret != sizeof(delayedspace)) {
+ logprintf(LOG_ERR, "error reading space from %s (ret %d, expected %d)",
+ hw.device, ret, sizeof(delayedspace));
+ logperror(LOG_ERR, NULL);
+ default_deinit();
+
+ return 0;
+ }
+ }
+#endif
if (data == 0) {
static int data_warning = 1;

View File

@ -1,29 +1,42 @@
--- daemons/hw_hiddev.c.orig Sun Jul 10 18:04:11 2005
+++ daemons/hw_hiddev.c Thu Nov 23 14:41:52 2006
@@ -19,14 +19,19 @@
--- daemons/hw_hiddev.c.orig
+++ daemons/hw_hiddev.c
@@ -22,9 +22,17 @@
#include <stdio.h>
#include <sys/fcntl.h>
#include <sys/ioctl.h>
+#include <errno.h>
+#ifdef __FreeBSD__
+#ifdef HAVE_USBHID_H
+#include <usbhid.h>
+#else /* assume Linux */
+#endif
+#ifdef HAVE_LINUX_TYPES_H
#include <linux/types.h>
+#endif
+#ifdef HAVE_LINUX_HIDDEV_H
#include <linux/hiddev.h>
+#endif
#include "hardware.h"
#include "ir_remote.h"
#include "lircd.h"
#include "receive.h"
-
+#include <errno.h>
+#include <string.h>
@@ -135,6 +143,7 @@ struct hardware hw_sb0540 = {
};
#endif
static int hiddev_init();
static int hiddev_deinit(void);
@@ -103,7 +108,11 @@
+#ifdef HAVE_LINUX_HIDDEV_H
/* Apple Mac mini USB IR Receiver */
struct hardware hw_macmini = {
"/dev/usb/hiddev0", /* "device" */
@@ -152,6 +161,7 @@ struct hardware hw_macmini = {
NULL, /* readdata */
"macmini" /* name */
};
+#endif
#ifdef HAVE_LINUX_HIDDEV_FLAG_UREF
/* Samsung USB IR Receiver */
@@ -191,7 +201,11 @@ int hiddev_init()
logprintf(LOG_INFO, "initializing '%s'", hw.device);
if ((hw.fd = open(hw.device, O_RDONLY)) < 0) {
- logprintf(LOG_ERR, "unable to open '%s'", hw.device);
+ logprintf(LOG_ERR,
@ -33,10 +46,10 @@
+ errno );
return 0;
}
@@ -143,38 +152,117 @@
}
@@ -235,8 +249,40 @@ int hiddev_decode(struct ir_remote *remo
return 1;
}
+/*
+ * Read a record from the remote control, decode it and return a
@ -69,34 +82,42 @@
+ struct hiddev_event
+ {
+ unsigned hid;
+ int16_t value;
+ int32_t value;
+ };
+#endif
struct hiddev_event event;
struct hiddev_event asus_events[8];
int rd;
/* Remotec Mediamaster specific */
static int wheel_count = 0;
static int x_movement = 0;
+ static int repeat_count = 0;
int y_movement=0;
int x_direction=0;
int y_direction=0;
LOGPRINTF(1, "hiddev_rec");
@@ -253,9 +299,41 @@ char *hiddev_rec(struct ir_remote *remot
last = end;
gettimeofday(&start, NULL);
+#ifdef __FreeBSD__
+ rd = read(hw.fd, inbuf, sizeof inbuf);
+ if (rd != sizeof inbuf) {
+ logprintf(LOG_ERR,
+ "Really read %d bytes from '%s', expected %d",
+ rd,
+ hw.device,
+ sizeof inbuf );
+ return 0;
+ if (!strcmp(hw.name, "dvico")) {
+ rd = read(hw.fd, inbuf, sizeof inbuf);
+ if (rd != sizeof inbuf) {
+ logprintf(LOG_ERR,
+ "Really read %d bytes from '%s', expected %d",
+ rd,
+ hw.device,
+ sizeof inbuf );
+ return 0;
+ }
+ event.hid = 0x10046; /* XXX not in FreeBSD */
+ event.value = * (int16_t *) (&inbuf [1]);
+ } else {
+ rd = read(hw.fd, &event.value, sizeof event.value);
+ if (rd != sizeof event.value) {
+ logprintf(LOG_ERR,
+ "Really read %d bytes from '%s', expected %d",
+ rd,
+ hw.device,
+ sizeof event.value );
+ return 0;
+ }
+ event.hid = 0x10046; /* XXX not in FreeBSD */
+ }
+ event.hid = 0x10046; /* XXX not in FreeBSD */
+ event.value = * (int16_t *) (&inbuf [1]);
+ rd = sizeof event; /* to make code happy */
+ rd = sizeof event; /* to make code happy */
+#else
rd = read(hw.fd, &event, sizeof event);
+#endif
@ -107,54 +128,22 @@
+ rd,
+ hw.device,
+ sizeof event );
logperror(LOG_ERR, NULL);
hiddev_deinit();
return 0;
}
@@ -515,6 +593,7 @@ char *sb0540_rec(struct ir_remote *remot
}
#endif
LOGPRINTF(1, "hid 0x%X value 0x%X", event.hid, event.value);
+#ifdef HAVE_LINUX_HIDDEV_H
/*
* Apple Mac mini USB IR Receiver specific code.
*
@@ -566,6 +645,7 @@ char *macmini_rec(struct ir_remote *remo
pre_code = event.hid;
- main_code = event.value;
-
+ main_code = event.value & 0xffff; /* only 16 bits */
/*
* This stuff is probably dvico specific.
* I don't have any other hid devices to test...
*/
- if (event.hid == 0x10046) {
- repeat_flag = (main_code & dvico_repeat_mask);
+ if (pre_code == 0x10046) {
+ if (main_code & dvico_repeat_mask) /* repeated press */
+ repeat_count++; /* count them */
+ else
+ repeat_count = 0; /* reset */
+ repeat_flag = repeat_count > 2; /* real repeat flag */
main_code = (main_code & ~dvico_repeat_mask);
- return decode_all(remotes);
+ /*
+ * Skip this if we're working around the premature
+ * repeat.
+ */
+ if (repeat_flag || (repeat_count == 0))
+ {
+ char *foo;
+
+ foo = decode_all(remotes);
+ /*
+ * XXX Experimental code. Chop off the first 12
+ * bytes of the hex code, which FreeBSD does not
+ * provide, and which I suspect nobody cares
+ * about.
+ *
+ * For some reason, we can get NULL back here,
+ * so we need to check for that before returning
+ * address 0xc.
+ */
+ if (foo)
+ foo = &foo [12]; /* chop off the leading chars. */
+ return foo;
+ }
+ else
+ return 0; /* no data */
}
/* Remotec Mediamaster specific code */
/* Y-Coordinate,
return decode_all(remotes);
}
+#endif
/*
* Samsung/Cypress USB IR Receiver specific code

View File

@ -0,0 +1,26 @@
--- daemons/hw_srm7500libusb.c.orig
+++ daemons/hw_srm7500libusb.c
@@ -54,6 +54,23 @@
#define USB_TIMEOUT (1000*10)
#define CONTROL_BUFFERSIZE 128
+#ifndef HAVE_STRNLEN
+size_t
+strnlen(const char *s, size_t maxlen)
+{
+ size_t ret = strlen(s);
+ return ret > maxlen ? maxlen : ret;
+}
+#endif
+
+#ifndef HAVE_STRCHRNUL
+char *strchrnul(const char *s, int ch)
+{
+ char *ret = strchr(s, ch);
+ return ret == NULL ? ((char *)s) + strlen(s) : ret;
+}
+#endif
+
static int srm7500_init();
static int srm7500_deinit();
static char *srm7500_rec(struct ir_remote *remotes);

View File

@ -1,18 +0,0 @@
--- daemons/lircd.c.orig Sun Jul 10 18:04:12 2005
+++ daemons/lircd.c Fri Nov 24 14:21:10 2006
@@ -755,9 +755,12 @@
strcpy(serv_addr.sun_path,lircdfile);
if(bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))==-1)
{
- fprintf(stderr,"%s: could not assign address to socket\n",
- progname);
- perror(progname);
+ fprintf(stderr,
+ "%s: could not assign address to socket %s: %s (%d)\n",
+ progname,
+ lircdfile,
+ strerror (errno),
+ errno );
goto start_server_failed1;
}

View File

@ -0,0 +1,23 @@
--- daemons/lircmd.c.orig
+++ daemons/lircmd.c
@@ -277,9 +277,9 @@ setup_error:
return -1;
}
+#ifdef __linux__
void write_uinput(__u16 type, __u16 code, __s32 value)
{
-#ifdef __linux__
struct input_event event;
memset(&event, 0, sizeof(event));
@@ -299,8 +299,8 @@ void write_uinput(__u16 type, __u16 code
syslog(LOG_ERR, "%m");
}
}
-#endif
}
+#endif
void msend(int dx, int dy, int dz, int rep, int buttp, int buttr)
{

View File

@ -1,94 +0,0 @@
--- daemons/serial.c.orig Mon Mar 7 20:03:48 2005
+++ daemons/serial.c Sun Aug 21 21:44:26 2005
@@ -29,6 +29,10 @@
#include "lircd.h"
+#define LOCKDIR "/var/spool/lock"
+
+static char *lockpath = NULL;
+
int tty_reset(int fd)
{
struct termios options;
@@ -183,7 +187,7 @@
int lock;
int len;
- strcpy(filename,"/var/lock/LCK..");
+ strcpy(filename,LOCKDIR "/LCK..");
last=strrchr(name,'/');
if(last!=NULL)
@@ -373,63 +377,22 @@
}
}
}
+ lockpath = strdup(filename);
return(1);
}
int tty_delete_lock(void)
{
- DIR *dp;
- struct dirent *ep;
- int lock;
- int len;
- char id[20+1],*endptr;
- char filename[FILENAME_MAX+1];
- long pid;
- int retval=1;
-
- dp=opendir("/var/lock/");
- if(dp!=NULL)
- {
- while((ep=readdir(dp)))
- {
- strcpy(filename,"/var/lock/");
- if(strlen(filename)+strlen(ep->d_name)>FILENAME_MAX)
- {retval=0;continue;}
- strcat(filename,ep->d_name);
- lock=open(filename,O_RDONLY);
- if(lock==-1) {retval=0;continue;}
- len=read(lock,id,20);
- close(lock);
- if(len<=0) {retval=0;continue;}
- id[len]=0;
- pid=strtol(id,&endptr,10);
- if(!*id || *endptr!='\n')
- {
- logprintf(LOG_WARNING,"invalid lockfile (%s) "
- "detected",filename);
- retval=0;
- continue;
- }
- if(pid==getpid())
- {
- if(unlink(filename)==-1)
- {
- logprintf(LOG_ERR,"could not delete "
- "file \"%s\"",filename);
- logperror(LOG_ERR,NULL);
- retval=0;
- continue;
- }
- }
- }
- closedir(dp);
- }
- else
+ if(unlink(lockpath)==-1)
{
- logprintf(LOG_ERR,"could not open directory \"/var/lock/\"");
+ logprintf(LOG_ERR,"could not delete "
+ "file \"%s\"",lockpath);
+ logperror(LOG_ERR,NULL);
+ free(lockpath);
return(0);
}
- return(retval);
+ free(lockpath);
+ return(1);
}
int tty_set(int fd,int rts,int dtr)

View File

@ -1,10 +1,21 @@
--- drivers/lirc.h.orig Sun Aug 21 21:45:04 2005
+++ drivers/lirc.h Sun Aug 21 21:45:11 2005
@@ -8,6 +8,7 @@
--- drivers/lirc.h.orig
+++ drivers/lirc.h
@@ -9,12 +9,17 @@
#if defined(__linux__)
#include <linux/types.h>
#include <linux/ioctl.h>
#else
#include <sys/types.h>
+#include <sys/ioctl.h>
typedef u_int32_t __u32;
-#elif defined(_NetBSD_)
+#elif defined(_NetBSD_) || defined(__FreeBSD__)
#include <sys/ioctl.h>
#elif defined(_CYGWIN_)
#define __USE_LINUX_IOCTL_DEFS
#include <sys/ioctl.h>
#endif
+#ifndef __linux__
+#include <stdint.h>
+#define __u32 uint32_t
+#define __u64 uint64_t
+#endif
#define PULSE_BIT 0x01000000
#define PULSE_MASK 0x00FFFFFF

View File

@ -0,0 +1,12 @@
--- tools/irsend.c.orig
+++ tools/irsend.c
@@ -40,6 +40,9 @@
#include <errno.h>
#include <signal.h>
#include <limits.h>
+#ifdef __FreeBSD__
+#include <netinet/in.h>
+#endif
#define PACKET_SIZE 256
/* three seconds */

View File

@ -0,0 +1,49 @@
**********************************************************************
This port does not contain any FreeBSD device drivers for infrared
devices. This port installs the LIRC daemons and tools for interacting
with drivers that support the LIRC device interface.
You will need to obtain third party device drivers or port the Linux
drivers in ${WRKSRC}/drivers to use the LIRC port.
Update for 0.9: Known working with this update are FTDI-based USB
IR receivers/transmitters like described here,
http://www.huitsing.nl/irftdi/
and if you use (at the time of writing, support probably will be
committed to the version in ports soon) webcamd svn,
http://www.selasky.org/hans_petter/video4bsd/
then MCE USB based ones driven by the Linux mceusb driver as well
remotes coming with USB DVB tuners that by default work with the
Linux drivers used in webcamd should also work, i.e. if webcamd
creates a /dev/lircX device node check if e.g.
mode2 -d /dev/lirc0
reports pulses and spaces when triggering the remote at the receiver,
if it does you probably will be able to use lirc.
Some other userland drivers will probably also work (like others
using libusb), they just were not tested.
The lirc documentation should be accessible at:
%%LOCALBASE%%/share/doc/lirc/html/index.html
Some example configs should have been installed here:
%%LOCALBASE%%/share/examples/lirc/remotes
USB DVB tuner remotes won't be in there though because the webcamd
svn /dev/lircX support for those is kind of a `hack' that works
different from Linux (emulating rc5-like pulses), but as long as
mode2 sees data (meaning the Linux drivers used by webcamd support
the remote), you should be able to create configs by using irrecord
like described here:
file://%%LOCALBASE%%/share/doc/lirc/html/help.html#new_remote
**********************************************************************

View File

@ -1,8 +0,0 @@
**********************************************************************
This port does not contain any FreeBSD device drivers for infrared
devices. This port installs the LIRC daemons and tools for interacting
with drivers that support the LIRC device interface.
You will need to obtain third party device drivers or port the Linux
drivers in ${WRKSRC}/drivers to use the LIRC port.
**********************************************************************

View File

@ -8,12 +8,13 @@ bin/irxevent
bin/lircrcd
bin/mode2
%%SMODE2%%bin/smode2
bin/pronto2lirc
bin/xmode2
include/lirc/lirc_client.h
lib/liblirc_client.a
lib/liblirc_client.la
lib/liblirc_client.so
lib/liblirc_client.so.1
lib/liblirc_client.so.2
sbin/lircd
sbin/lircmd
@dirrm include/lirc

View File

@ -7,7 +7,7 @@
PORTNAME= lirc
PORTVERSION= 0.0.5
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= comms python
MASTER_SITES= SF/py${PORTNAME}/py${PORTNAME}/${PORTVERSION}
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@ -16,7 +16,7 @@ DISTNAME= pylirc-${PORTVERSION}
MAINTAINER= lewiz@compsoc.man.ac.uk
COMMENT= Lirc support library for Python
LIB_DEPENDS= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS= lirc_client.2:${PORTSDIR}/comms/lirc
CFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib

View File

@ -7,6 +7,7 @@
PORTNAME= cchess
PORTVERSION= 1.4
PORTREVISION= 1
CATEGORIES= games
MASTER_SITES= ftp://local-distfiles.freebsd.org.cn/pub/china-ports/hamigua/
@ -14,7 +15,7 @@ MAINTAINER= ports@FreeBSD.org
COMMENT= Very simple Chinese chess program
LIB_DEPENDS= alleg.42:${PORTSDIR}/devel/allegro \
lirc_client.1:${PORTSDIR}/comms/lirc
lirc_client.2:${PORTSDIR}/comms/lirc
USE_GMAKE= yes

View File

@ -54,7 +54,7 @@ CONFIGURE_ARGS+=--disable-lcms
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
CONFIGURE_ARGS+=--enable-lirc
.else
CONFIGURE_ARGS+=--disable-lirc

View File

@ -119,7 +119,7 @@ PLIST_SUB+= ROCKLIGHTPLUGIN="@comment "
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
CONFIGURE_ARGS+=--enable-lirc
PLIST_SUB+= LIRCPLUGIN=""
.else

View File

@ -54,7 +54,7 @@ PLIST_SUB+= NLS=""
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
CONFIGURE_ARGS+= --enable-lirc
.else
CONFIGURE_ARGS+= --disable-lirc

View File

@ -174,7 +174,7 @@ CONFIGURE_ARGS+= --disable-caca
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
.else
CONFIGURE_ARGS+= --disable-lirc
.endif

View File

@ -83,7 +83,7 @@ PLIST_SUB+= BINDINGS="@comment "
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
.endif
.if defined(WITH_MYSQL_LOCAL)

View File

@ -80,7 +80,7 @@ PLIST_SUB+= TRACKER="@comment "
#.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
PLIST_SUB+= LIRC=""
TOTEM_PLUGINS:= ${TOTEM_PLUGINS} lirc
.else

View File

@ -52,6 +52,7 @@ lib/totem/plugins/gromit/libgromit.so
%%LIRC%%lib/totem/plugins/lirc/liblirc.a
%%LIRC%%lib/totem/plugins/lirc/liblirc.la
%%LIRC%%lib/totem/plugins/lirc/liblirc.so
%%LIRC%%lib/totem/plugins/lirc/totem_lirc_default
lib/totem/plugins/media-player-keys/libmedia_player_keys.a
lib/totem/plugins/media-player-keys/libmedia_player_keys.la
lib/totem/plugins/media-player-keys/libmedia_player_keys.so

View File

@ -82,8 +82,10 @@ CONFIGURE_ARGS+= --without-curl
.endif
.if defined(WITH_LIRC)
LIB_DEPENDS+= lirc_client.1:${PORTSDIR}/comms/lirc
LIB_DEPENDS+= lirc_client.2:${PORTSDIR}/comms/lirc
CONFIGURE_ARGS+= --enable-lirc
CONFIGURE_ENV+= LIRC_CFLAGS="-I${LOCALBASE}/include" \
LIRC_LIBS="-L${LOCALBASE}/libs -llirc_client"
.else
CONFIGURE_ARGS+= --disable-lirc
.endif