Add print_inverted_bits() to replace a duplicated code block.
[libftdi] / src / ftdi.c
index c62428d..bad338d 100644 (file)
@@ -3065,6 +3065,7 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi)
             {
                 output[0x1a + j] = eeprom->cbus_function[j];
             }
+            output[0x0b] = eeprom->invert;
             break;
     }
 
@@ -3389,6 +3390,8 @@ int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose)
         eeprom->group1_drive   = (buf[0x0c] >> 4) & 0x03;
         eeprom->group1_schmitt = (buf[0x0c] >> 4) & IS_SCHMITT;
         eeprom->group1_slew    = (buf[0x0c] >> 4) & SLOW_SLEW;
+
+        eeprom->invert = buf[0xb];
     }
 
     if (verbose)
@@ -3512,6 +3515,8 @@ int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose)
                 if (eeprom->cbus_function[i]<= CBUSH_AWAKE)
                     fprintf(stdout,"CBUS%d Function: %s\n", i, cbush_mux[eeprom->cbus_function[i]]);
             }
+            if(eeprom->invert )
+              print_inverted_bits(eeprom->invert);
         }
 
         if (ftdi->type == TYPE_R)
@@ -3523,14 +3528,8 @@ int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose)
             char *cbus_BB[] = {"RXF","TXE","RD", "WR"};
 
             if (eeprom->invert)
-            {
-                char *r_bits[] = {"TXD","RXD","RTS", "CTS","DTR","DSR","DCD","RI"};
-                fprintf(stdout,"Inverted bits:");
-                for (i=0; i<8; i++)
-                    if ((eeprom->invert & (1<<i)) == (1<<i))
-                        fprintf(stdout," %s",r_bits[i]);
-                fprintf(stdout,"\n");
-            }
+              print_inverted_bits(eeprom->invert);
+
             for (i=0; i<5; i++)
             {
                 if (eeprom->cbus_function[i]<CBUS_BB)
@@ -3923,6 +3922,8 @@ int ftdi_set_eeprom_value(struct ftdi_context *ftdi, enum ftdi_eeprom_value valu
             break;
         case CHIP_SIZE:
             ftdi_error_return(-2, "EEPROM Value can't be changed");
+            break;
+
         default :
             ftdi_error_return(-1, "Request to unknown EEPROM value");
     }
@@ -4289,4 +4290,15 @@ char *ftdi_get_error_string (struct ftdi_context *ftdi)
     return ftdi->error_str;
 }
 
+void print_inverted_bits(int invert)
+{
+    int i;
+    char *r_bits[] = {"TXD","RXD","RTS","CTS","DTR","DSR","DCD","RI"};
+    fprintf(stdout,"Inverted bits:");
+    for (i=0; i<8; i++)
+        if ((invert & (1<<i)) == (1<<i))
+            fprintf(stdout," %s",r_bits[i]);
+    fprintf(stdout,"\n");
+}
+
 /* @} end of doxygen libftdi group */