--- irzol01-1.3rc1/irzol01.c	2007-09-05 11:07:16.000000000 +0200
+++ irzol01-1.3rc1ag/irzol01.c	2008-05-04 23:10:32.000000000 +0200
@@ -34,7 +34,7 @@
 /* Default USB device
  */
 #define USB_VENDOR  0x147a
-#define USB_PRODUCT 0xe019
+#define USB_PRODUCT 0xe017
 
 /* Timeout for repeated key press, ms
  */
@@ -90,7 +90,7 @@
 } param;
 
 
-/* The device sends 4 byte packets.
+/* The device sends 4 byte packets. !!! 8
  *  {0x00 0xf7 KeyNum ~KeyNum}
  *
  * Zol100: key numbers range from 0x00 to 0x0d (14 keys)
@@ -219,7 +219,7 @@
 
 /* Write key press details to stdout
  */
-void write_out(int repeat, unsigned char x[4])
+void write_out(int repeat, unsigned char x[8])
 {
   printf("%d", repeat);
   if (x[0] == 0x00 && x[1] == 0xf7 && (x[2] ^ x[3]) == 0xff) {
@@ -239,8 +239,8 @@
     if (param.key) printf(" Dev0x%2x Key0x%2x", dev, key);
   }
   else {
-    if (param.num) printf(" %d %d %d %d", x[0], x[1], x[2], x[3]);
-    if (param.key) printf(" 1:%2x 2:%2x 3:%2x 4:%2x", x[0], x[1], x[2], x[3]);
+    if (param.num) printf(" %d %d %d %d %d %d %d %d", x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]);
+    if (param.key) printf(" 1:%2x 2:%2x 3:%2x 4:%2x 5:%2x 6:%2x 7:%2x 8:%2x", x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]);
   }
   putchar('\n');
   fflush(stdout);
@@ -270,7 +270,7 @@
 }
 
 /* Simulate an IR pulse train to send to lirc over UDP.
- * A 34*4 = 136 byte UDP message is generated.
+ * A 34*4 = 136 byte UDP message is generated.  !!! 34*8=272
  */
 #define mS(x) ((uint16_t) ((x) * 16384 / 1000))
 #define NEC_PULSE mS(0.560)
@@ -295,9 +295,9 @@
   elapsed += space + mark;
 }
 
-void udp_send(int rpt, unsigned char x[4])
+void udp_send(int rpt, unsigned char x[8])
 {
-  unsigned char buffer[136];
+  unsigned char buffer[272];
   unsigned char *p = buffer;
 
   if (rpt == 0) {
@@ -305,24 +305,24 @@
 
     add2buf(p, NEC_PAUSE, NEC_AGC);
     elapsed = NEC_AGC;
-    p += 4;
+    p += 8;
     add2buf(p, NEC_HEAD, NEC_PULSE);
-    p += 4;
+    p += 8;
 
-    for (i = 0; i < 4; i++) {
+    for (i = 0; i < 8; i++) {
       unsigned char y = x[i];
       for (b = 0; b < 8; b++, y <<= 1) {
 	add2buf(p, (y & 0x80) ? NEC_1 : NEC_0, NEC_PULSE);
-	p += 4;
+	p += 8;
       }
     }
   }
   else {
     add2buf(p, NEC_AGAIN - elapsed, NEC_AGC);
     elapsed = NEC_AGC;
-    p += 4;
+    p += 8;
     add2buf(p, NEC_RPT, NEC_PULSE);
-    p += 4;
+    p += 8;
   }
 
   write(udp, buffer, p - buffer);
@@ -334,34 +334,34 @@
 {
   int timeout = 0;
   int repeat = 0;
-  unsigned char prev[4];
+  unsigned char prev[8];
 
-  memset(prev, 0, 4);
+  memset(prev, 0, 8);
 
   for (;;) {
-    unsigned char x[4];
+    unsigned char x[8];
 
-    int e = usb_interrupt_read(dev, 1, (char *)x, 4, timeout);
+    int e = usb_interrupt_read(dev, 1, (char *)x, 8, timeout);
 
     if (e < 0)
       if (e == -ETIMEDOUT) {
 	timeout = 0;
 	repeat = 0;
-	memset(prev, 0, 4);
+	memset(prev, 0, 8);
 	if (param.debug) fprintf(stderr, "Repeat timeout\n");
       }
       else {
 	fprintf(stderr, "Interrupt read: %s\n", strerror(-e));
 	return;
       } 
-    else if (e == 4) {
+    else if (e == 8) {
       if (param.debug)
-	fprintf(stderr, "USB message: {%02x %02x %02x %02x}.\n",
-		x[0], x[1], x[2], x[3]);
+	fprintf(stderr, "USB message: {%02x %02x %02x %02x %02x %02x %02x %02x}.\n",
+		x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]);
 
-      if (memcmp(x, prev, 4) != 0) {
+      if (memcmp(x, prev, 8) != 0) {
 	repeat = 0;
-	memcpy(prev, x, 4);
+	memcpy(prev, x, 8);
       }
       timeout = REPEAT_TIME;
 

