parent
c38d577c48
commit
0f418eec86
@ -0,0 +1,36 @@
|
||||
From 5d933bee5c100e119c26476e45b69e019b392323 Mon Sep 17 00:00:00 2001
|
||||
From: Alec Leamas <leamas.alec@gmail.com>
|
||||
Date: Wed, 17 Aug 2016 21:28:00 +0200
|
||||
Subject: [PATCH] plugins: audio_alsa: Fix byte truncating in 16-bit data
|
||||
(#218):
|
||||
|
||||
This fixes a bug introduced in 82305c72 which basically was
|
||||
about muting a "dereferencing type-punned pointer will break
|
||||
strict-aliasing rules" compiler warning.
|
||||
---
|
||||
plugins/audio_alsa.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/audio_alsa.c b/plugins/audio_alsa.c
|
||||
index 20022f3..ff0d8a9 100644
|
||||
--- a/plugins/audio_alsa.c
|
||||
+++ b/plugins/audio_alsa.c
|
||||
@@ -436,11 +436,12 @@ var_reset: /* Reset variables */
|
||||
for (i = 0; i < count; i++) {
|
||||
/* cs == current sample */
|
||||
unsigned char cs, as, sl, sz, xz;
|
||||
- short stmp;
|
||||
+ unsigned short stmp;
|
||||
|
||||
if (bytes_per_sample == 2) {
|
||||
- stmp = buff[i * bytes_per_sample * alsa_hw.num_channels +
|
||||
- bytes_per_sample * alsa_hw.channel];
|
||||
+ int ix = i * bytes_per_sample * alsa_hw.num_channels +
|
||||
+ bytes_per_sample * alsa_hw.channel;
|
||||
+ memcpy(&stmp, &buff[ix], sizeof(stmp));
|
||||
cs = stmp >> 8;
|
||||
cs ^= 0x80;
|
||||
} else {
|
||||
--
|
||||
2.5.5
|
||||
|
@ -0,0 +1,31 @@
|
||||
From 6b8fad0fdfd026d437ab6b953e701f2ece307e45 Mon Sep 17 00:00:00 2001
|
||||
From: Alec Leamas <leamas.alec@gmail.com>
|
||||
Date: Thu, 18 Aug 2016 21:04:07 +0200
|
||||
Subject: [PATCH] contrib: Fix usb devices' acl permissions (rhbz #1364744).
|
||||
|
||||
---
|
||||
contrib/60-lirc.rules | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/contrib/60-lirc.rules b/contrib/60-lirc.rules
|
||||
index 8147546..687009b 100644
|
||||
--- a/contrib/60-lirc.rules
|
||||
+++ b/contrib/60-lirc.rules
|
||||
@@ -1,8 +1,9 @@
|
||||
-# Installing this udev rule will make the /dev/lirc* devices accessible
|
||||
-# for users in the group "lirc" using regular group permissions. USB
|
||||
-# devices grants rw permission to the lirc group using ACL.
|
||||
-# To enable, copy to /etc/udev/rules.d.
|
||||
+# Make the /dev/lirc* devices accessible for users in the group "lirc"
|
||||
+# using regular group permissions.
|
||||
|
||||
KERNEL=="lirc[0-9]*", SUBSYSTEM=="lirc", GROUP="lirc", MODE="0660"
|
||||
-ACTION=="add", SUBSYSTEM=="usb", \
|
||||
+
|
||||
+# Grant rw permission to the lirc group for USB devices using acl(5).
|
||||
+
|
||||
+ACTION=="add", SUBSYSTEM=="usb", ENV{DEVNAME}=="?*", \
|
||||
RUN+="/usr/bin/setfacl -m g:lirc:rw $env{DEVNAME}"
|
||||
--
|
||||
2.5.5
|
||||
|
@ -0,0 +1,182 @@
|
||||
From 5dd37205a06a44e6b9cdbae5a3901e39270f0975 Mon Sep 17 00:00:00 2001
|
||||
From: Alec Leamas <leamas.alec@gmail.com>
|
||||
Date: Thu, 18 Aug 2016 22:35:31 +0200
|
||||
Subject: [PATCH 6/7] include: Update bundled lirc.h.
|
||||
|
||||
---
|
||||
include/media/lirc.h | 95 ++++++----------------------------------------------
|
||||
1 file changed, 10 insertions(+), 85 deletions(-)
|
||||
|
||||
diff --git a/include/media/lirc.h b/include/media/lirc.h
|
||||
index 601fccb..991ab45 100644
|
||||
--- a/include/media/lirc.h
|
||||
+++ b/include/media/lirc.h
|
||||
@@ -1,39 +1,13 @@
|
||||
-/**
|
||||
- * @file lirc.c
|
||||
- * This file contains some general definitions, like feature flags.
|
||||
- * It's a bundled copy from the kernel sources. Being part of
|
||||
- * kernel sources is a bug, see
|
||||
- * https://bugzilla.kernel.org/show_bug.cgi?id=75751.
|
||||
- * The file is upstreamed to the kernel from 4.6.
|
||||
- */
|
||||
-
|
||||
-#ifndef LIRC_BASE_H
|
||||
-#define LIRC_BASE_H
|
||||
-
|
||||
-#ifdef __cplusplus
|
||||
-extern "C" {
|
||||
-#endif
|
||||
-
|
||||
-/**
|
||||
- * This data type, with its extremely carefully selected name, is used as
|
||||
- * data type for the signal durations.
|
||||
- */
|
||||
-#define lirc_t int
|
||||
-
|
||||
/*
|
||||
* lirc.h - linux infrared remote control header file
|
||||
- * last modified 2010/06/03 by Jarod Wilson
|
||||
+ * last modified 2010/07/13 by Jarod Wilson
|
||||
*/
|
||||
|
||||
-#if defined(__linux__)
|
||||
+#ifndef _LINUX_LIRC_H
|
||||
+#define _LINUX_LIRC_H
|
||||
+
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
-#elif defined(_NetBSD_)
|
||||
-#include <sys/ioctl.h>
|
||||
-#elif defined(_CYGWIN_)
|
||||
-#define __USE_LINUX_IOCTL_DEFS
|
||||
-#include <sys/ioctl.h>
|
||||
-#endif
|
||||
|
||||
#define PULSE_BIT 0x01000000
|
||||
#define PULSE_MASK 0x00FFFFFF
|
||||
@@ -59,6 +33,9 @@ extern "C" {
|
||||
#define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
|
||||
#define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
|
||||
|
||||
+/* used heavily by lirc userspace */
|
||||
+#define lirc_t int
|
||||
+
|
||||
/*** lirc compatible hardware features ***/
|
||||
|
||||
#define LIRC_MODE2SEND(x) (x)
|
||||
@@ -79,16 +56,8 @@ extern "C" {
|
||||
|
||||
#define LIRC_CAN_SEND_MASK 0x0000003f
|
||||
|
||||
-/** This flag indicates that the transmitter is capable of setting the
|
||||
- * IR carrier frequency. */
|
||||
#define LIRC_CAN_SET_SEND_CARRIER 0x00000100
|
||||
-
|
||||
-/** This flag indicates that the transmitter is capable of setting the
|
||||
- * duty cycle of generated IR signals. */
|
||||
#define LIRC_CAN_SET_SEND_DUTY_CYCLE 0x00000200
|
||||
-
|
||||
-/** This flag indicates that the transmitter is capable of setting a
|
||||
- * transmitter mask, i.e., probably has several transmitters. */
|
||||
#define LIRC_CAN_SET_TRANSMITTER_MASK 0x00000400
|
||||
|
||||
#define LIRC_CAN_REC_RAW LIRC_MODE2REC(LIRC_MODE_RAW)
|
||||
@@ -107,16 +76,10 @@ extern "C" {
|
||||
#define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
|
||||
#define LIRC_CAN_SET_REC_FILTER 0x08000000
|
||||
|
||||
-
|
||||
-/** This flag indicates that the receiver is capable of estimating
|
||||
- * the carrier frequency of received IR signals. */
|
||||
#define LIRC_CAN_MEASURE_CARRIER 0x02000000
|
||||
#define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
|
||||
|
||||
-/** Extract sending features from its argument. */
|
||||
#define LIRC_CAN_SEND(x) ((x)&LIRC_CAN_SEND_MASK)
|
||||
-
|
||||
-/** Extract receiving features from its argument. */
|
||||
#define LIRC_CAN_REC(x) ((x)&LIRC_CAN_REC_MASK)
|
||||
|
||||
#define LIRC_CAN_NOTIFY_DECODE 0x01000000
|
||||
@@ -127,20 +90,11 @@ extern "C" {
|
||||
|
||||
#define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
|
||||
#define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
|
||||
-#define LIRC_GET_SEND_CARRIER _IOR('i', 0x00000003, __u32)
|
||||
-#define LIRC_GET_REC_CARRIER _IOR('i', 0x00000004, __u32)
|
||||
-#define LIRC_GET_SEND_DUTY_CYCLE _IOR('i', 0x00000005, __u32)
|
||||
-#define LIRC_GET_REC_DUTY_CYCLE _IOR('i', 0x00000006, __u32)
|
||||
#define LIRC_GET_REC_RESOLUTION _IOR('i', 0x00000007, __u32)
|
||||
|
||||
#define LIRC_GET_MIN_TIMEOUT _IOR('i', 0x00000008, __u32)
|
||||
#define LIRC_GET_MAX_TIMEOUT _IOR('i', 0x00000009, __u32)
|
||||
|
||||
-#define LIRC_GET_MIN_FILTER_PULSE _IOR('i', 0x0000000a, __u32)
|
||||
-#define LIRC_GET_MAX_FILTER_PULSE _IOR('i', 0x0000000b, __u32)
|
||||
-#define LIRC_GET_MIN_FILTER_SPACE _IOR('i', 0x0000000c, __u32)
|
||||
-#define LIRC_GET_MAX_FILTER_SPACE _IOR('i', 0x0000000d, __u32)
|
||||
-
|
||||
/* code length in bits, currently only for LIRC_MODE_LIRCCODE */
|
||||
#define LIRC_GET_LENGTH _IOR('i', 0x0000000f, __u32)
|
||||
|
||||
@@ -150,7 +104,6 @@ extern "C" {
|
||||
#define LIRC_SET_SEND_CARRIER _IOW('i', 0x00000013, __u32)
|
||||
#define LIRC_SET_REC_CARRIER _IOW('i', 0x00000014, __u32)
|
||||
#define LIRC_SET_SEND_DUTY_CYCLE _IOW('i', 0x00000015, __u32)
|
||||
-#define LIRC_SET_REC_DUTY_CYCLE _IOW('i', 0x00000016, __u32)
|
||||
#define LIRC_SET_TRANSMITTER_MASK _IOW('i', 0x00000017, __u32)
|
||||
|
||||
/*
|
||||
@@ -164,45 +117,17 @@ extern "C" {
|
||||
#define LIRC_SET_REC_TIMEOUT_REPORTS _IOW('i', 0x00000019, __u32)
|
||||
|
||||
/*
|
||||
- * pulses shorter than this are filtered out by hardware (software
|
||||
- * emulation in lirc_dev?)
|
||||
- */
|
||||
-#define LIRC_SET_REC_FILTER_PULSE _IOW('i', 0x0000001a, __u32)
|
||||
-/*
|
||||
- * spaces shorter than this are filtered out by hardware (software
|
||||
- * emulation in lirc_dev?)
|
||||
- */
|
||||
-#define LIRC_SET_REC_FILTER_SPACE _IOW('i', 0x0000001b, __u32)
|
||||
-/*
|
||||
- * if filter cannot be set independantly for pulse/space, this should
|
||||
- * be used
|
||||
- */
|
||||
-#define LIRC_SET_REC_FILTER _IOW('i', 0x0000001c, __u32)
|
||||
-
|
||||
-/*
|
||||
* if enabled from the next key press on the driver will send
|
||||
* LIRC_MODE2_FREQUENCY packets
|
||||
*/
|
||||
-#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32)
|
||||
+#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32)
|
||||
|
||||
/*
|
||||
- * to set a range use
|
||||
- * LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE with the
|
||||
- * lower bound first and later
|
||||
- * LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER with the upper bound
|
||||
+ * to set a range use LIRC_SET_REC_CARRIER_RANGE with the
|
||||
+ * lower bound first and later LIRC_SET_REC_CARRIER with the upper bound
|
||||
*/
|
||||
-
|
||||
-#define LIRC_SET_REC_DUTY_CYCLE_RANGE _IOW('i', 0x0000001e, __u32)
|
||||
#define LIRC_SET_REC_CARRIER_RANGE _IOW('i', 0x0000001f, __u32)
|
||||
|
||||
-#define LIRC_NOTIFY_DECODE _IO('i', 0x00000020)
|
||||
-
|
||||
-#define LIRC_SETUP_START _IO('i', 0x00000021)
|
||||
-#define LIRC_SETUP_END _IO('i', 0x00000022)
|
||||
#define LIRC_SET_WIDEBAND_RECEIVER _IOW('i', 0x00000023, __u32)
|
||||
|
||||
-#ifdef __cplusplus
|
||||
-}
|
||||
#endif
|
||||
-
|
||||
-#endif //LIRC_BASE_H
|
||||
--
|
||||
2.5.5
|
||||
|
@ -0,0 +1,110 @@
|
||||
From 6a57d48e1a233dfc55d436e8d064509cb03973d1 Mon Sep 17 00:00:00 2001
|
||||
From: Alec Leamas <leamas.alec@gmail.com>
|
||||
Date: Fri, 19 Aug 2016 04:48:02 +0200
|
||||
Subject: [PATCH 7/7] lircd: Remove use of functions killed in kernel 4.8.0
|
||||
|
||||
From 4.8.0 the kernel no longer supports LIRC_NOTIFY_DECODE,
|
||||
LIRC_SETUP_START/LIRC_SETUP_END and several constants related
|
||||
to initiating filters. Remove corresponding calls from lircd.
|
||||
---
|
||||
daemons/lircd.cpp | 51 ++-------------------------------------------------
|
||||
lib/driver.h | 7 +++++++
|
||||
2 files changed, 9 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/daemons/lircd.cpp b/daemons/lircd.cpp
|
||||
index a7dbc94..a50d11f 100644
|
||||
--- a/daemons/lircd.cpp
|
||||
+++ b/daemons/lircd.cpp
|
||||
@@ -464,50 +464,6 @@ static int setup_timeout(void)
|
||||
}
|
||||
|
||||
|
||||
-static int setup_filter(void)
|
||||
-{
|
||||
- int ret1, ret2;
|
||||
- lirc_t min_pulse_supported = 0, max_pulse_supported = 0;
|
||||
- lirc_t min_space_supported = 0, max_space_supported = 0;
|
||||
-
|
||||
- if (!(curr_driver->features & LIRC_CAN_SET_REC_FILTER))
|
||||
- return 1;
|
||||
- if (curr_driver->drvctl_func(LIRC_GET_MIN_FILTER_PULSE,
|
||||
- &min_pulse_supported) == -1 ||
|
||||
- curr_driver->drvctl_func(LIRC_GET_MAX_FILTER_PULSE, &max_pulse_supported) == -1
|
||||
- || curr_driver->drvctl_func(LIRC_GET_MIN_FILTER_SPACE, &min_space_supported) == -1
|
||||
- || curr_driver->drvctl_func(LIRC_GET_MAX_FILTER_SPACE, &max_space_supported) == -1) {
|
||||
- log_error("could not get filter range");
|
||||
- log_perror_err(__func__);
|
||||
- }
|
||||
-
|
||||
- if (setup_min_pulse > max_pulse_supported)
|
||||
- setup_min_pulse = max_pulse_supported;
|
||||
- else if (setup_min_pulse < min_pulse_supported)
|
||||
- setup_min_pulse = 0; /* disable filtering */
|
||||
-
|
||||
- if (setup_min_space > max_space_supported)
|
||||
- setup_min_space = max_space_supported;
|
||||
- else if (setup_min_space < min_space_supported)
|
||||
- setup_min_space = 0; /* disable filtering */
|
||||
-
|
||||
- ret1 = curr_driver->drvctl_func(LIRC_SET_REC_FILTER_PULSE, &setup_min_pulse);
|
||||
- ret2 = curr_driver->drvctl_func(LIRC_SET_REC_FILTER_SPACE, &setup_min_space);
|
||||
- if (ret1 == -1 || ret2 == -1) {
|
||||
- if (curr_driver->
|
||||
- drvctl_func(LIRC_SET_REC_FILTER,
|
||||
- setup_min_pulse < setup_min_space ? &setup_min_pulse : &setup_min_space) == -1) {
|
||||
- log_error("could not set filter");
|
||||
- log_perror_err(__func__);
|
||||
- return 0;
|
||||
- }
|
||||
- }
|
||||
- return 1;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
static int setup_hardware(void)
|
||||
{
|
||||
int ret = 1;
|
||||
@@ -516,10 +472,7 @@ static int setup_hardware(void)
|
||||
if ((curr_driver->features & LIRC_CAN_SET_REC_CARRIER)
|
||||
|| (curr_driver->features & LIRC_CAN_SET_REC_TIMEOUT)
|
||||
|| (curr_driver->features & LIRC_CAN_SET_REC_FILTER)) {
|
||||
- (void)curr_driver->drvctl_func(LIRC_SETUP_START, NULL);
|
||||
- ret = setup_frequency() && setup_timeout()
|
||||
- && setup_filter();
|
||||
- (void)curr_driver->drvctl_func(LIRC_SETUP_END, NULL);
|
||||
+ ret = setup_frequency() && setup_timeout();
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@@ -2162,7 +2115,7 @@ void loop(void)
|
||||
int reps;
|
||||
|
||||
if (curr_driver->drvctl_func && (curr_driver->features & LIRC_CAN_NOTIFY_DECODE))
|
||||
- curr_driver->drvctl_func(LIRC_NOTIFY_DECODE, NULL);
|
||||
+ curr_driver->drvctl_func(DRVCTL_NOTIFY_DECODE, NULL);
|
||||
|
||||
get_release_data(&remote_name, &button_name, &reps);
|
||||
|
||||
diff --git a/lib/driver.h b/lib/driver.h
|
||||
index c7c4a6a..fc7318e 100644
|
||||
--- a/lib/driver.h
|
||||
+++ b/lib/driver.h
|
||||
@@ -97,6 +97,13 @@ int drv_handle_options(const char* options);
|
||||
/** drvctl cmd: Free memory in argument obtained using DRVCTL_GET_DEVICES. */
|
||||
#define DRVCTL_FREE_DEVICES 6
|
||||
|
||||
+/**
|
||||
+ * The former LIRC_NOTIFY_DECODE, informs drier that signal is successfully
|
||||
+ * decoded e. g., to initiate some visual feedback through a LED.
|
||||
+ */
|
||||
+
|
||||
+#define DRVCTL_NOTIFY_DECODE 7
|
||||
+
|
||||
/** Last well-known command. Remaining is used in driver-specific controls.*/
|
||||
#define DRVCTL_MAX 128
|
||||
|
||||
--
|
||||
2.5.5
|
||||
|
Loading…
Reference in new issue