From 07d3572091f993e2844b82818285e7ce6d6e9de2 Mon Sep 17 00:00:00 2001 From: Hermann Kraus Date: Wed, 18 Aug 2010 10:05:14 +0200 Subject: [PATCH] Support for FT232R eeprom features --- src/main.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 65 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 03c9eb5..81e6e93 100644 --- a/src/main.c +++ b/src/main.c @@ -25,6 +25,25 @@ #include #include +int str_to_cbus(char *str, int max_allowed) +{ + #define MAX_OPTION 14 + const char* options[MAX_OPTION] = { + "TXDEN", "PWREN", "RXLED", "TXLED", "TXRXLED", "SLEEP", + "CLK48", "CLK24", "CLK12", "CLK6", + "IO_MODE", "BITBANG_WR", "BITBANG_RD", "SPECIAL"}; + int i; + max_allowed += 1; + if (max_allowed > MAX_OPTION) max_allowed = MAX_OPTION; + for (i=0; i 0 || _erase > 0 || _flash > 0) { @@ -163,9 +218,12 @@ int main(int argc, char *argv[]) ftdi_eeprom_decode(&eeprom, eeprom_buf, ftdi.eeprom_size); /* Debug output */ /* + const char* chip_types[] = {"other", "BM", "R"}; printf("vendor_id = \"%04x\"\n", eeprom.vendor_id); printf("product_id = \"%04x\"\n", eeprom.product_id); - printf("BM_type_chip = \"%s\"\n", eeprom.BM_type_chip?"true":"false"); + printf("chip_type = \"%s\"\n", + (eeprom.chip_type > 0x06) || (eeprom.chip_type & 0x01) ? "unknown": + chip_types[eeprom.chip_type>>1]); printf("self_powered = \"%s\"\n", eeprom.self_powered?"true":"false"); printf("remote_wakeup = \"%s\"\n", eeprom.remote_wakeup?"true":"false"); printf("max_power = \"%d\"\n", eeprom.max_power); @@ -200,11 +258,14 @@ int main(int argc, char *argv[]) } size_check = ftdi_eeprom_build(&eeprom, eeprom_buf); + if (size_check == -1) { printf ("Sorry, the eeprom can only contain 128 bytes (100 bytes for your strings).\n"); printf ("You need to short your string by: %d bytes\n", size_check); goto cleanup; + } else if (size_check < 0) { + printf ("ftdi_eeprom_build(): error: %d\n", size_check); } else { -- 1.7.1