]> cloudbase.mooo.com Git - irmp.git/blobdiff - irmp.c
git-svn-id: svn://mikrocontroller.net/irmp@23 aeb2e35e-bfc4-4214-b83c-9e8de998ed28
[irmp.git] / irmp.c
diff --git a/irmp.c b/irmp.c
index 4e45d5176cb762bf8b7fdccddcb726aec52d91b7..afcf5e6905fd5d7f968500c6c2f2871643e2aa42 100644 (file)
--- a/irmp.c
+++ b/irmp.c
@@ -3,7 +3,7 @@
  *\r
  * Copyright (c) 2009-2010 Frank Meyer - frank(at)fli4l.de\r
  *\r
- * $Id: irmp.c,v 1.35 2010/06/08 22:22:36 fm Exp $\r
+ * $Id: irmp.c,v 1.39 2010/06/10 10:09:47 fm Exp $\r
  *\r
  * ATMEGA88 @ 8 MHz\r
  *\r
@@ -521,25 +521,60 @@ typedef unsigned int16  uint16_t;
 #define AUTO_FRAME_REPETITION_LEN               (uint16_t)(F_INTERRUPTS * AUTO_FRAME_REPETITION_TIME + 0.5)       // use uint16_t!\r
 \r
 #ifdef DEBUG\r
-#define DEBUG_PUTCHAR(a)                        { if (! silent) { putchar (a);          } }\r
-#define DEBUG_PRINTF(...)                       { if (! silent) { printf (__VA_ARGS__); } }\r
+#define DEBUG_PUTCHAR(a)                        { if (! silent)             { putchar (a);          } }\r
+#define DEBUG_ONLY_NORMAL_PUTCHAR(a)            { if (! silent && !verbose) { putchar (a);          } }\r
+#define DEBUG_PRINTF(...)                       { if (verbose)              { printf (__VA_ARGS__); } }\r
+#define DEBUG_NEWLINE()                         { if (verbose)              { putchar ('\n');       } }\r
 static int      silent;\r
 static int      time_counter;\r
+static int      verbose;\r
 #else\r
 #define DEBUG_PUTCHAR(a)\r
+#define DEBUG_ONLY_NORMAL_PUTCHAR(a)\r
 #define DEBUG_PRINTF(...)\r
+#define DEBUG_NEWLINE()\r
 #endif\r
 \r
 #if IRMP_LOGGING == 1\r
-#define UART_BAUD                               9600L\r
+#define BAUD                                    9600L\r
+#include <util/setbaud.h>\r
+\r
+#ifdef UBRR0H\r
+\r
+#define UART0_UBRRH                             UBRR0H\r
+#define UART0_UBRRL                             UBRR0L\r
+#define UART0_UCSRA                             UCSR0A\r
+#define UART0_UCSRB                             UCSR0B\r
+#define UART0_UCSRC                             UCSR0C\r
+#define UART0_UDRE_BIT_VALUE                    (1<<UDRE0)\r
+#define UART0_UCSZ1_BIT_VALUE                   (1<<UCSZ01)\r
+#define UART0_UCSZ0_BIT_VALUE                   (1<<UCSZ00)\r
+#ifdef URSEL0\r
+#define UART0_URSEL_BIT_VALUE                   (1<<URSEL0)\r
+#else\r
+#define UART0_URSEL_BIT_VALUE                   (0)\r
+#endif\r
+#define UART0_TXEN_BIT_VALUE                    (1<<TXEN0)\r
+#define UART0_UDR                               UDR0\r
+\r
+#else\r
 \r
-// calculate real baud rate:\r
-#define UBRR_VAL                                ((F_CPU + UART_BAUD * 8) / (UART_BAUD * 16) - 1)    // round\r
-#define BAUD_REAL                               (F_CPU / (16 * (UBRR_VAL + 1)))                     // real baudrate\r
-#define BAUD_ERROR                              ((BAUD_REAL * 1000) / UART_BAUD)                    // error in promille\r
+#define UART0_UBRRH                             UBRRH\r
+#define UART0_UBRRL                             UBRRL\r
+#define UART0_UCSRA                             UCSRA\r
+#define UART0_UCSRB                             UCSRB\r
+#define UART0_UCSRC                             UCSRC\r
+#define UART0_UDRE_BIT_VALUE                    (1<<UDRE)\r
+#define UART0_UCSZ1_BIT_VALUE                   (1<<UCSZ1)\r
+#define UART0_UCSZ0_BIT_VALUE                   (1<<UCSZ0)\r
+#ifdef URSEL\r
+#define UART0_URSEL_BIT_VALUE                   (1<<URSEL)\r
+#else\r
+#define UART0_URSEL_BIT_VALUE                   (0)\r
+#endif\r
+#define UART0_TXEN_BIT_VALUE                    (1<<TXEN)\r
+#define UART0_UDR                               UDR\r
 \r
-#if ((BAUD_ERROR < 990) || (BAUD_ERROR > 1010))\r
-#  error Error of baud rate of RS232 UARTx is more than 1%. That is too high!\r
 #endif\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
@@ -550,9 +585,17 @@ static int      time_counter;
 void\r
 irmp_uart_init (void)\r
 {\r
-    UCSR0B |= (1<<TXEN0);                                                                   // activate UART0 TX\r
-    UBRR0H = UBRR_VAL >> 8;                                                                 // store baudrate (upper byte)\r
-    UBRR0L = UBRR_VAL & 0xFF;                                                               // store baudrate (lower byte)\r
+    UART0_UBRRH = UBRRH_VALUE;                                                                      // set baud rate\r
+    UART0_UBRRL = UBRRL_VALUE;\r
+\r
+#if USE_2X\r
+    UART0_UCSRA = (1<<U2X);\r
+#else\r
+    UART0_UCSRA = 0;\r
+#endif\r
+\r
+    UART0_UCSRC = UART0_UCSZ1_BIT_VALUE | UART0_UCSZ0_BIT_VALUE | UART0_URSEL_BIT_VALUE;\r
+    UART0_UCSRB |= UART0_TXEN_BIT_VALUE;                                                            // enable UART TX\r
 }\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
@@ -564,12 +607,12 @@ irmp_uart_init (void)
 void\r
 irmp_uart_putc (unsigned char ch)\r
 {\r
-    while (!(UCSR0A & (1<<UDRE0)))\r
+    while (!(UART0_UCSRA & UART0_UDRE_BIT_VALUE))\r
     {\r
         ;\r
     }\r
 \r
-    UDR0 = ch;\r
+    UART0_UDR = ch;\r
 }\r
 \r
 /*---------------------------------------------------------------------------------------------------------------------------------------------------\r
@@ -1206,7 +1249,7 @@ irmp_store_bit (uint8_t value)
  *  @details  ISR routine, called 10000 times per second\r
  *---------------------------------------------------------------------------------------------------------------------------------------------------\r
  */\r
-void\r
+uint8_t\r
 irmp_ISR (void)\r
 {\r
     static uint8_t    irmp_start_bit_detected;                                  // flag: start bit detected\r
@@ -1287,6 +1330,7 @@ irmp_ISR (void)
                     if (irmp_pause_time > IRMP_TIMEOUT_LEN)                     // timeout?\r
                     {                                                           // yes...\r
                         DEBUG_PRINTF ("error 1: pause after start bit pulse %d too long: %d\n", irmp_pulse_time, irmp_pause_time);\r
+                        DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                         irmp_start_bit_detected = 0;                            // reset flags, let's wait for another start bit\r
                         irmp_pulse_time         = 0;\r
                         irmp_pause_time         = 0;\r
@@ -1565,14 +1609,14 @@ irmp_ISR (void)
                         {\r
                           DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time);\r
                           DEBUG_PUTCHAR ('1');\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (1);\r
                         }\r
                         else if (! last_value)\r
                         {\r
                           DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time);\r
                           DEBUG_PUTCHAR ('0');\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (0);\r
                         }\r
                     }\r
@@ -1586,14 +1630,14 @@ irmp_ISR (void)
                         {\r
                           DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time);\r
                           DEBUG_PUTCHAR ('0');\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (0);\r
                         }\r
                         else if (! last_value)\r
                         {\r
                           DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time);\r
                           DEBUG_PUTCHAR ('1');\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (1);\r
                         }\r
                     }\r
@@ -1607,14 +1651,14 @@ irmp_ISR (void)
                         {\r
                           DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time);\r
                           DEBUG_PUTCHAR ('0');\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (0);\r
                         }\r
                         else if (! last_value)\r
                         {\r
                           DEBUG_PRINTF ("%8d [bit %2d: pulse = %3d, pause = %3d] ", time_counter, irmp_bit, irmp_pulse_time, irmp_pause_time);\r
                           DEBUG_PUTCHAR ('1');\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (1);\r
                         }\r
                     }\r
@@ -1629,13 +1673,13 @@ irmp_ISR (void)
                         if (irmp_pause_time >= DENON_1_PAUSE_LEN_MIN && irmp_pause_time <= DENON_1_PAUSE_LEN_MAX)\r
                         {                                                       // pause timings correct for "1"?\r
                           DEBUG_PUTCHAR ('1');                                  // yes, store 1\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (1);\r
                         }\r
                         else // if (irmp_pause_time >= DENON_0_PAUSE_LEN_MIN && irmp_pause_time <= DENON_0_PAUSE_LEN_MAX)\r
                         {                                                       // pause timings correct for "0"?\r
                           DEBUG_PUTCHAR ('0');                                  // yes, store 0\r
-                          DEBUG_PUTCHAR ('\n');\r
+                          DEBUG_NEWLINE ();\r
                           irmp_store_bit (0);\r
                         }\r
                     }\r
@@ -1767,6 +1811,7 @@ irmp_ISR (void)
                             else\r
                             {\r
                                 DEBUG_PRINTF ("error 2: pause %d after data bit %d too long\n", irmp_pause_time, irmp_bit);\r
+                                DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
 \r
                                 irmp_start_bit_detected = 0;                    // wait for another start bit...\r
                                 irmp_pulse_time         = 0;\r
@@ -1792,7 +1837,7 @@ irmp_ISR (void)
                             DEBUG_PUTCHAR ('1');\r
                             irmp_store_bit (1);\r
                             DEBUG_PUTCHAR ('0');\r
-                            DEBUG_PUTCHAR ('\n');\r
+                            DEBUG_NEWLINE ();\r
                             irmp_store_bit (0);\r
                             last_value = 0;\r
                         }\r
@@ -1812,7 +1857,7 @@ irmp_ISR (void)
                             }\r
 \r
                             DEBUG_PUTCHAR (rc5_value + '0');\r
-                            DEBUG_PUTCHAR ('\n');\r
+                            DEBUG_NEWLINE ();\r
                             irmp_store_bit (rc5_value);\r
                         }\r
 \r
@@ -1831,7 +1876,7 @@ irmp_ISR (void)
                             DEBUG_PUTCHAR ('0');\r
                             irmp_store_bit (0);\r
                             DEBUG_PUTCHAR ('1');\r
-                            DEBUG_PUTCHAR ('\n');\r
+                            DEBUG_NEWLINE ();\r
                             irmp_store_bit (1);\r
                             last_value = 1;\r
                         }\r
@@ -1851,7 +1896,7 @@ irmp_ISR (void)
                             }\r
 \r
                             DEBUG_PUTCHAR (grundig_value + '0');\r
-                            DEBUG_PUTCHAR ('\n');\r
+                            DEBUG_NEWLINE ();\r
                             irmp_store_bit (grundig_value);\r
                         }\r
 \r
@@ -1878,7 +1923,7 @@ irmp_ISR (void)
                                 DEBUG_PUTCHAR ('0');\r
                                 irmp_store_bit (0);\r
                                 last_value = 0;\r
-                                DEBUG_PUTCHAR ('\n');\r
+                                DEBUG_NEWLINE ();\r
                                 break;\r
 \r
                             default:\r
@@ -1887,7 +1932,7 @@ irmp_ISR (void)
                                     DEBUG_PUTCHAR ('0');\r
                                     irmp_store_bit (0);\r
                                     DEBUG_PUTCHAR ('1');\r
-                                    DEBUG_PUTCHAR ('\n');\r
+                                    DEBUG_NEWLINE ();\r
                                     irmp_store_bit (1);\r
                                     last_value = 1;\r
                                 }\r
@@ -1911,7 +1956,7 @@ irmp_ISR (void)
                                     }\r
 \r
                                     DEBUG_PUTCHAR (rc5_value + '0');\r
-                                    DEBUG_PUTCHAR ('\n');\r
+                                    DEBUG_NEWLINE ();\r
                                     irmp_store_bit (rc5_value);\r
                                 }\r
 \r
@@ -1932,7 +1977,7 @@ irmp_ISR (void)
                             DEBUG_PUTCHAR ('0');\r
                             irmp_store_bit (0);\r
                             DEBUG_PUTCHAR ('1');\r
-                            DEBUG_PUTCHAR ('\n');\r
+                            DEBUG_NEWLINE ();\r
                             irmp_store_bit (1);\r
                             last_value = 1;\r
                         }\r
@@ -1952,7 +1997,7 @@ irmp_ISR (void)
                             }\r
 \r
                             DEBUG_PUTCHAR (siemens_value + '0');\r
-                            DEBUG_PUTCHAR ('\n');\r
+                            DEBUG_NEWLINE ();\r
                             irmp_store_bit (siemens_value);\r
                         }\r
 \r
@@ -1983,14 +2028,14 @@ irmp_ISR (void)
                             if (irmp_pause_time >= SAMSUNG_1_PAUSE_LEN_MIN && irmp_pause_time <= SAMSUNG_1_PAUSE_LEN_MAX)\r
                             {\r
                                 DEBUG_PUTCHAR ('1');\r
-                                DEBUG_PUTCHAR ('\n');\r
+                                DEBUG_NEWLINE ();\r
                                 irmp_store_bit (1);\r
                                 wait_for_space = 0;\r
                             }\r
                             else\r
                             {\r
                                 DEBUG_PUTCHAR ('0');\r
-                                DEBUG_PUTCHAR ('\n');\r
+                                DEBUG_NEWLINE ();\r
                                 irmp_store_bit (0);\r
                                 wait_for_space = 0;\r
                             }\r
@@ -2000,6 +2045,7 @@ irmp_ISR (void)
                         else\r
                         {                                                           // timing incorrect!\r
                             DEBUG_PRINTF ("error 3 Samsung: timing not correct: data bit %d,  pulse: %d, pause: %d\n", irmp_bit, irmp_pulse_time, irmp_pause_time);\r
+                            DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                             irmp_start_bit_detected = 0;                            // reset flags and wait for next start bit\r
                             irmp_pause_time         = 0;\r
                         }\r
@@ -2024,6 +2070,7 @@ irmp_ISR (void)
                                 else\r
                                 {                                                   // timing incorrect!\r
                                     DEBUG_PRINTF ("error 3a B&O: timing not correct: data bit %d,  pulse: %d, pause: %d\n", irmp_bit, irmp_pulse_time, irmp_pause_time);\r
+                                    DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                                     irmp_start_bit_detected = 0;                    // reset flags and wait for next start bit\r
                                     irmp_pause_time         = 0;\r
                                 }\r
@@ -2040,6 +2087,7 @@ irmp_ISR (void)
                                 else\r
                                 {                                                   // timing incorrect!\r
                                     DEBUG_PRINTF ("error 3b B&O: timing not correct: data bit %d,  pulse: %d, pause: %d\n", irmp_bit, irmp_pulse_time, irmp_pause_time);\r
+                                    DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                                     irmp_start_bit_detected = 0;                    // reset flags and wait for next start bit\r
                                     irmp_pause_time         = 0;\r
                                 }\r
@@ -2049,7 +2097,7 @@ irmp_ISR (void)
                                 if (irmp_pause_time >= BANG_OLUFSEN_1_PAUSE_LEN_MIN && irmp_pause_time <= BANG_OLUFSEN_1_PAUSE_LEN_MAX)\r
                                 {                                                   // pulse & pause timings correct for "1"?\r
                                     DEBUG_PUTCHAR ('1');\r
-                                    DEBUG_PUTCHAR ('\n');\r
+                                    DEBUG_NEWLINE ();\r
                                     irmp_store_bit (1);\r
                                     last_value = 1;\r
                                     wait_for_space = 0;\r
@@ -2057,7 +2105,7 @@ irmp_ISR (void)
                                 else if (irmp_pause_time >= BANG_OLUFSEN_0_PAUSE_LEN_MIN && irmp_pause_time <= BANG_OLUFSEN_0_PAUSE_LEN_MAX)\r
                                 {                                                   // pulse & pause timings correct for "0"?\r
                                     DEBUG_PUTCHAR ('0');\r
-                                    DEBUG_PUTCHAR ('\n');\r
+                                    DEBUG_NEWLINE ();\r
                                     irmp_store_bit (0);\r
                                     last_value = 0;\r
                                     wait_for_space = 0;\r
@@ -2065,13 +2113,14 @@ irmp_ISR (void)
                                 else if (irmp_pause_time >= BANG_OLUFSEN_R_PAUSE_LEN_MIN && irmp_pause_time <= BANG_OLUFSEN_R_PAUSE_LEN_MAX)\r
                                 {\r
                                     DEBUG_PUTCHAR (last_value + '0');\r
-                                    DEBUG_PUTCHAR ('\n');\r
+                                    DEBUG_NEWLINE ();\r
                                     irmp_store_bit (last_value);\r
                                     wait_for_space = 0;\r
                                 }\r
                                 else\r
                                 {                                                   // timing incorrect!\r
                                     DEBUG_PRINTF ("error 3c B&O: timing not correct: data bit %d,  pulse: %d, pause: %d\n", irmp_bit, irmp_pulse_time, irmp_pause_time);\r
+                                    DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                                     irmp_start_bit_detected = 0;                    // reset flags and wait for next start bit\r
                                     irmp_pause_time         = 0;\r
                                 }\r
@@ -2080,6 +2129,7 @@ irmp_ISR (void)
                         else\r
                         {                                                           // timing incorrect!\r
                             DEBUG_PRINTF ("error 3d B&O: timing not correct: data bit %d,  pulse: %d, pause: %d\n", irmp_bit, irmp_pulse_time, irmp_pause_time);\r
+                            DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                             irmp_start_bit_detected = 0;                            // reset flags and wait for next start bit\r
                             irmp_pause_time         = 0;\r
                         }\r
@@ -2091,7 +2141,7 @@ irmp_ISR (void)
                         irmp_pause_time >= irmp_param.pause_1_len_min && irmp_pause_time <= irmp_param.pause_1_len_max)\r
                     {                                                               // pulse & pause timings correct for "1"?\r
                         DEBUG_PUTCHAR ('1');\r
-                        DEBUG_PUTCHAR ('\n');\r
+                        DEBUG_NEWLINE ();\r
                         irmp_store_bit (1);\r
                         wait_for_space = 0;\r
                     }\r
@@ -2099,13 +2149,14 @@ irmp_ISR (void)
                              irmp_pause_time >= irmp_param.pause_0_len_min && irmp_pause_time <= irmp_param.pause_0_len_max)\r
                     {                                                               // pulse & pause timings correct for "0"?\r
                         DEBUG_PUTCHAR ('0');\r
-                        DEBUG_PUTCHAR ('\n');\r
+                        DEBUG_NEWLINE ();\r
                         irmp_store_bit (0);\r
                         wait_for_space = 0;\r
                     }\r
                     else\r
                     {                                                               // timing incorrect!\r
                         DEBUG_PRINTF ("error 3: timing not correct: data bit %d,  pulse: %d, pause: %d\n", irmp_bit, irmp_pulse_time, irmp_pause_time);\r
+                        DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
                         irmp_start_bit_detected = 0;                                // reset flags and wait for next start bit\r
                         irmp_pause_time         = 0;\r
                     }\r
@@ -2252,6 +2303,10 @@ irmp_ISR (void)
 \r
                     repetition_counter = 0;\r
                 }\r
+                else\r
+                {\r
+                    DEBUG_ONLY_NORMAL_PUTCHAR ('\n');\r
+                }\r
 \r
                 irmp_start_bit_detected = 0;                                        // and wait for next start bit\r
                 irmp_tmp_command        = 0;\r
@@ -2260,6 +2315,7 @@ irmp_ISR (void)
             }\r
         }\r
     }\r
+    return (irmp_ir_detected);\r
 }\r
 \r
 #ifdef DEBUG\r
@@ -2320,7 +2376,6 @@ int
 main (int argc, char ** argv)\r
 {\r
     int         i;\r
-    int         verbose = FALSE;\r
     int         analyze = FALSE;\r
     int         ch;\r
     int         last_ch = 0;\r
@@ -2371,7 +2426,6 @@ main (int argc, char ** argv)
         else if (! strcmp (argv[1], "-a"))\r
         {\r
             analyze = TRUE;\r
-            verbose = TRUE;\r
         }\r
         else if (! strcmp (argv[1], "-s"))\r
         {\r
@@ -2392,7 +2446,7 @@ main (int argc, char ** argv)
         {\r
             if (last_ch != ch)\r
             {\r
-                if (verbose && pause > 0)\r
+                if (analyze && pause > 0)\r
                 {\r
                     printf ("pause: %d\n", pause);\r
 \r
@@ -2457,7 +2511,7 @@ main (int argc, char ** argv)
         {\r
             if (last_ch != ch)\r
             {\r
-                if (verbose)\r
+                if (analyze)\r
                 {\r
                     printf ("pulse: %d ", pulse);\r
 \r
@@ -2514,7 +2568,7 @@ main (int argc, char ** argv)
         {\r
             IRMP_PIN = 0xff;\r
 \r
-            if (verbose && pause > 0)\r
+            if (analyze && pause > 0)\r
             {\r
                 printf ("pause: %d\n", pause);\r
             }\r
@@ -2524,7 +2578,7 @@ main (int argc, char ** argv)
             {\r
                 for (i = 0; i < 8000; i++)                                              // newline: long pause of 800 msec\r
                 {\r
-                    irmp_ISR ();\r
+                    (void) irmp_ISR ();\r
                 }\r
             }\r
             first_pulse = TRUE;\r
@@ -2549,12 +2603,13 @@ main (int argc, char ** argv)
 \r
         if (! analyze)\r
         {\r
-            irmp_ISR ();\r
+            (void) irmp_ISR ();\r
         }\r
 \r
         if (irmp_get_data (&irmp_data))\r
         {\r
-            printf ("protcol = %d, address = 0x%04x, code = 0x%04x, flags = 0x%02x\n",\r
+            DEBUG_ONLY_NORMAL_PUTCHAR (' ');\r
+            printf ("p = %2d, a = 0x%04x, c = 0x%04x, f = 0x%02x\n",\r
                     irmp_data.protocol, irmp_data.address, irmp_data.command, irmp_data.flags);\r
         }\r
     }\r