Changeset 17140


Ignore:
Timestamp:
2009-08-06T11:15:05+02:00 (9 years ago)
Author:
juhosg
Message:

[tools] firmware-utils/addpattern: add support for the WRT160NL

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/firmware-utils/src/addpattern.c

    r15245 r17140  
    3030 
    3131/* January 12, 2005 
    32  *  
     32 * 
    3333 * Modified by rodent at rodent dot za dot net 
    3434 * Support added for the new WRT54G v2.2 and WRT54GS v1.1 "flags" 
    3535 * Without the flags set to 0x7, the above units will refuse to flash. 
    36  *  
     36 * 
    3737 * Extensions: 
    3838 *  -{0|1|2} sets {0|1} sets hw_ver flag to 0/1. {2} sets hw_ver to 1 
     
    8888} ; 
    8989 
     90struct board_info { 
     91        char    *id; 
     92        char    *pattern; 
     93        char    hw_ver; 
     94        char    unused; 
     95        char    flags[2]; 
     96}; 
     97 
     98struct board_info boards[] = { 
     99        { 
     100                .id             = "WRT160NL", 
     101                .pattern        = "NL16", 
     102                .hw_ver         = 0x00, 
     103                .unused         = 0x0f, 
     104                .flags          = {0x3f, 0x00}, 
     105        }, { 
     106                /* Terminating entry */ 
     107                .id     = NULL, 
     108        } 
     109}; 
     110 
    90111/**********************************************************************/ 
    91112 
     
    94115void usage(void) 
    95116{ 
    96         fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-r #.#] [-{0|1|2|4}] -h\n"); 
     117        fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-B board_id] [-p pattern] [-g] [-b] [-v v#.#.#] [-r #.#] [-{0|1|2|4}] -h\n"); 
    97118        exit(EXIT_FAILURE); 
     119} 
     120 
     121struct board_info *find_board(char *id) 
     122{ 
     123        struct board_info *board; 
     124 
     125        for (board = boards; board->id != NULL; board++) 
     126                if (strcasecmp(id, board->id) == 0) 
     127                        return board; 
     128 
     129        return NULL; 
    98130} 
    99131 
     
    109141        char *pbotpat = PBOT_PATTERN; 
    110142        char *version = CYBERTAN_VERSION; 
     143        char *board_id = NULL; 
     144        struct board_info *board = NULL; 
    111145        int gflag = 0; 
    112146        int pbotflag = 0; 
     
    122156        memset(hdr, 0, sizeof(struct code_header)); 
    123157 
    124         while ((c = getopt(argc, argv, "i:o:p:gbv:0124hr:")) != -1) { 
     158        while ((c = getopt(argc, argv, "i:o:p:gbv:0124hr:B:")) != -1) { 
    125159                switch (c) { 
    126160                        case 'i': 
     
    162196                                hdr->hw_ver = (char)(atof(optarg)*10)+0x30; 
    163197                                break; 
     198                        case 'B': 
     199                                board_id = optarg; 
     200                                break; 
    164201 
    165202                        case 'h': 
     
    172209                fprintf(stderr, "illegal arg \"%s\"\n", argv[optind]); 
    173210                usage(); 
     211        } 
     212 
     213        if (board_id) { 
     214                board = find_board(board_id); 
     215                if (board == NULL) { 
     216                        fprintf(stderr, "unknown board \"%s\"\n", board_id); 
     217                        usage(); 
     218                } 
     219                pattern = board->pattern; 
     220                hdr->hw_ver = board->hw_ver; 
     221                hdr->unused = board->unused; 
     222                hdr->flags[0] = board->flags[0]; 
     223                hdr->flags[1] = board->flags[1]; 
    174224        } 
    175225 
     
    240290                } 
    241291        } 
    242          
     292 
    243293        if (ferror(in)) { 
    244294                goto FREAD_ERROR; 
Note: See TracChangeset for help on using the changeset viewer.