[PATCH v4l-utils 2/2] ir-ctl: fix encoding pulse_length bpf encoder

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Transmitting pulse_length is broken and never worked. The most common
user of this protocol is Sony, which already has its own encoder.

Signed-off-by: Sean Young <sean@xxxxxxxx>
---
 utils/ir-ctl/bpf_encoder.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/utils/ir-ctl/bpf_encoder.c b/utils/ir-ctl/bpf_encoder.c
index 886f046f..2bc7b541 100644
--- a/utils/ir-ctl/bpf_encoder.c
+++ b/utils/ir-ctl/bpf_encoder.c
@@ -61,24 +61,25 @@ static void encode_pulse_length(struct keymap *map, uint32_t scancode, int *buf,
 	if (keymap_param(map, "reverse", 0)) {
 		for (i = 0; i < bits; i++) {
 			if (scancode & (1 << i))
-				buf[len++] = keymap_param(map, "bit_1_space", 1625);
+				buf[len++] = keymap_param(map, "bit_1_pulse", 1625);
 			else
-				buf[len++] = keymap_param(map, "bit_0_space", 375);
+				buf[len++] = keymap_param(map, "bit_0_pulse", 375);
 
-			buf[len++] = keymap_param(map, "bit_pulse", 625);
+			buf[len++] = keymap_param(map, "bit_space", 625);
 		}
 	} else {
 		for (i = bits - 1; i >= 0; i--) {
 			if (scancode & (1 << i))
-				buf[len++] = keymap_param(map, "bit_1_space", 1625);
+				buf[len++] = keymap_param(map, "bit_1_pulse", 1625);
 			else
-				buf[len++] = keymap_param(map, "bit_0_space", 375);
+				buf[len++] = keymap_param(map, "bit_0_pulse", 375);
 
-			buf[len++] = keymap_param(map, "bit_pulse", 625);
+			buf[len++] = keymap_param(map, "bit_space", 625);
 		}
 	}
 
-	*length = len;
+	/* drop trailing space */
+	*length = len - 1;
 }
 
 static void manchester_advance_space(int *buf, int *len, unsigned length)
@@ -121,8 +122,8 @@ static void encode_manchester(struct keymap *map, uint32_t scancode, int *buf, i
 		}
 	}
 
-	/* drop any trailing pulse */
-        *length = (len % 2) ? len : len + 1;
+	/* drop any trailing space */
+	*length = (len % 2) ? len : len + 1;
 }
 
 bool encode_bpf_protocol(struct keymap *map, uint32_t scancode, int *buf, int *length)
-- 
2.44.0





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux