X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=ftdi_eeprom%2Fmain.c;h=455f1560489578a94c73b5d26310f68feb67d9df;hp=b27922338889f4a53793d4b203f7b5238780e041;hb=a0763384857a48c3d886b1b8a54ef0908987216c;hpb=f6ac3c2570f8e9c4d63ad3cb287404c7b0b91223 diff --git a/ftdi_eeprom/main.c b/ftdi_eeprom/main.c index b279223..455f156 100644 --- a/ftdi_eeprom/main.c +++ b/ftdi_eeprom/main.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -109,6 +110,35 @@ static int parse_cbusx(cfg_t *cfg, cfg_opt_t *opt, const char *value, void *resu return -1; } +static int parse_chtype(cfg_t *cfg, cfg_opt_t *opt, const char *value, void *result) +{ + static const struct + { + char* key; + int opt; + } options[] = + { + { "UART", CHANNEL_IS_UART }, + { "FIFO", CHANNEL_IS_FIFO }, + { "OPTO", CHANNEL_IS_OPTO }, + { "CPU", CHANNEL_IS_CPU }, + { "FT1284", CHANNEL_IS_FT1284} + }; + + int i; + for (i=0; i 0) { - FILE *fp = fopen (filename, "wb"); - fwrite (eeprom_buf, 1, my_eeprom_size, fp); - fclose (fp); + + if(fp) + { + fwrite(eeprom_buf, 1, my_eeprom_size, fp); + fclose(fp); + } + else + fprintf(stderr, "Could not open output file %s: %s\n", filename, strerror(errno)); } else { @@ -446,14 +492,24 @@ int main(int argc, char *argv[]) if (cfg_getbool(cfg, "invert_ri")) invert |= INVERT_RI; eeprom_set_value(ftdi, INVERT, invert); - eeprom_set_value(ftdi, CHANNEL_A_DRIVER, DRIVER_VCP); - eeprom_set_value(ftdi, CHANNEL_B_DRIVER, DRIVER_VCP); - eeprom_set_value(ftdi, CHANNEL_C_DRIVER, DRIVER_VCP); - eeprom_set_value(ftdi, CHANNEL_D_DRIVER, DRIVER_VCP); - eeprom_set_value(ftdi, CHANNEL_A_RS485, 0); - eeprom_set_value(ftdi, CHANNEL_B_RS485, 0); - eeprom_set_value(ftdi, CHANNEL_C_RS485, 0); - eeprom_set_value(ftdi, CHANNEL_D_RS485, 0); + if (cfg_getint(cfg, "cha_type") != -1) + eeprom_set_value(ftdi, CHANNEL_A_TYPE, cfg_getint(cfg, "cha_type")); + if (cfg_getint(cfg, "chb_type") != -1) + eeprom_set_value(ftdi, CHANNEL_B_TYPE, cfg_getint(cfg, "chb_type")); + + eeprom_set_value(ftdi, CHANNEL_A_DRIVER, + cfg_getbool(cfg, "cha_vcp") ? DRIVER_VCP : 0); + eeprom_set_value(ftdi, CHANNEL_B_DRIVER, + cfg_getbool(cfg, "chb_vcp") ? DRIVER_VCP : 0); + eeprom_set_value(ftdi, CHANNEL_C_DRIVER, + cfg_getbool(cfg, "chc_vcp") ? DRIVER_VCP : 0); + eeprom_set_value(ftdi, CHANNEL_D_DRIVER, + cfg_getbool(cfg, "chd_vcp") ? DRIVER_VCP : 0); + + eeprom_set_value(ftdi, CHANNEL_A_RS485, cfg_getbool(cfg, "cha_rs485")); + eeprom_set_value(ftdi, CHANNEL_B_RS485, cfg_getbool(cfg, "chb_rs485")); + eeprom_set_value(ftdi, CHANNEL_C_RS485, cfg_getbool(cfg, "chc_rs485")); + eeprom_set_value(ftdi, CHANNEL_D_RS485, cfg_getbool(cfg, "chd_rs485")); if (command == COMMAND_ERASE) {