[PATCH] [v4l-utils] keytable: add support for XMP IR protocol

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

 



---
 utils/keytable/keytable.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c
index 065ac3b..ba98cd3 100644
--- a/utils/keytable/keytable.c
+++ b/utils/keytable/keytable.c
@@ -86,6 +86,7 @@ enum ir_protocols {
 	LIRC		= 1 << 5,
 	SANYO		= 1 << 6,
 	RC_5_SZ		= 1 << 7,
+	XMP		= 1 << 8,
 	OTHER		= 1 << 31,
 };
 
@@ -110,7 +111,7 @@ static const char doc[] = "\nAllows get/set IR keycode/scancode tables\n"
 	"  SYSDEV   - the ir class as found at /sys/class/rc\n"
 	"  TABLE    - a file with a set of scancode=keycode value pairs\n"
 	"  SCANKEY  - a set of scancode1=keycode1,scancode2=keycode2.. value pairs\n"
-	"  PROTOCOL - protocol name (nec, rc-5, rc-6, jvc, sony, sanyo, rc-5-sz, lirc, other) to be enabled\n"
+	"  PROTOCOL - protocol name (nec, rc-5, rc-6, jvc, sony, sanyo, rc-5-sz, lirc, xmp, other) to be enabled\n"
 	"  DELAY    - Delay before repeating a keystroke\n"
 	"  PERIOD   - Period to repeat a keystroke\n"
 	"  CFGFILE  - configuration file that associates a driver/table name with a keymap file\n"
@@ -234,6 +235,8 @@ static error_t parse_keyfile(char *fname, char **table)
 							ch_proto |= SANYO;
 						else if (!strcasecmp(p,"rc-5-sz"))
 							ch_proto |= RC_5_SZ;
+						else if (!strcasecmp(p,"xmp"))
+							ch_proto |= XMP;
 						else if (!strcasecmp(p,"other") || !strcasecmp(p,"unknown"))
 							ch_proto |= OTHER;
 						else {
@@ -471,6 +474,8 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state)
 				ch_proto |= LIRC;
 			else if (!strcasecmp(p,"rc-5-sz"))
 				ch_proto |= RC_5_SZ;
+			else if (!strcasecmp(p,"xmp"))
+				ch_proto |= XMP;
 			else
 				goto err_inval;
 			p = strtok(NULL, ",;");
@@ -744,6 +749,8 @@ static enum ir_protocols v1_get_hw_protocols(char *name)
 			proto |= SANYO;
 		else if (!strcmp(p, "rc-5-sz"))
 			proto |= RC_5_SZ;
+		else if (!strcmp(p, "xmp"))
+			proto |= XMP;
 		else
 			proto |= OTHER;
 
@@ -790,6 +797,9 @@ static int v1_set_hw_protocols(struct rc_device *rc_dev)
 	if (rc_dev->current & RC_5_SZ)
 		fprintf(fp, "rc-5-sz ");
 
+	if (rc_dev->current & XMP)
+		fprintf(fp, "xmp ");
+
 	if (rc_dev->current & OTHER)
 		fprintf(fp, "unknown ");
 
@@ -921,6 +931,8 @@ static enum ir_protocols v2_get_protocols(struct rc_device *rc_dev, char *name)
 			proto = LIRC;
 		else if (!strcmp(p, "rc-5-sz"))
 			proto = RC_5_SZ;
+		else if (!strcmp(p, "xmp"))
+			proto = XMP;
 		else
 			proto = OTHER;
 
@@ -977,6 +989,9 @@ static int v2_set_protocols(struct rc_device *rc_dev)
 	if (rc_dev->current & RC_5_SZ)
 		fprintf(fp, "+rc-5-sz\n");
 
+	if (rc_dev->current & XMP)
+		fprintf(fp, "+xmp\n");
+
 	if (rc_dev->current & OTHER)
 		fprintf(fp, "+unknown\n");
 
@@ -1006,6 +1021,8 @@ static void show_proto(	enum ir_protocols proto)
 		fprintf (stderr, "LIRC ");
 	if (proto & RC_5_SZ)
 		fprintf (stderr, "RC-5-SZ ");
+	if (proto & XMP)
+		fprintf (stderr, "XMP ");
 	if (proto & OTHER)
 		fprintf (stderr, "other ");
 }
@@ -1128,6 +1145,10 @@ static int get_attribs(struct rc_device *rc_dev, char *sysfs_name)
 			rc_dev->supported |= SONY;
 			if (v1_get_sw_enabled_protocol(cur->name))
 				rc_dev->current |= SONY;
+		} else if (strstr(cur->name, "/xmp_decoder")) {
+			rc_dev->supported |= XMP;
+			if (v1_get_sw_enabled_protocol(cur->name))
+				rc_dev->current |= XMP;
 		}
 	}
 
@@ -1159,6 +1180,9 @@ static int set_proto(struct rc_device *rc_dev)
 		if (rc_dev->supported & SONY)
 			rc += v1_set_sw_enabled_protocol(rc_dev, "/sony_decoder",
 						      rc_dev->current & SONY);
+		if (rc_dev->supported & XMP)
+			rc += v1_set_sw_enabled_protocol(rc_dev, "/xmp_decoder",
+						      rc_dev->current & XMP);
 	} else {
 		rc = v1_set_hw_protocols(rc_dev);
 	}
-- 
1.9.3


-- 
     ======--------         Marcel J.E. Mol                MESA Consulting B.V.
    =======---------        ph. +31-(0)6-54724868          P.O. Box 112
    =======---------        marcel@xxxxxxx                 2630 AC  Nootdorp
__==== www.mesa.nl ---____U_n_i_x______I_n_t_e_r_n_e_t____ The Netherlands ____
 They couldn't think of a number,           Linux user 1148  --  counter.li.org
    so they gave me a name!  -- Rupert Hine  --  www.ruperthine.com
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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