Ticket #2897: dg834g.diff

File dg834g.diff, 1.7 KB (added by matteo, 10 years ago)

added vendor ID to upslug2

  • upslug2-11/nslu2_upgrade.cc

     
    99 
    1010namespace NSLU2Upgrade { 
    1111        /* Hardware ID field, add others as required. */ 
    12         static const unsigned char NSLU2ID0[32] = { 
    13                 4, 112, 49, 149, 88, 16, /* remainder 0 */ 
     12        static const unsigned char NSLU2ID0[][32] = { 
     13                {4, 112, 49, 149, 88, 16}, /* remainder 0 */ 
     14                {0x44, 0x47, 0x38, 0x33, 0x34, 0x56, 0x33},  /* remainder 0 */ 
     15                0 
    1416        }; 
    1517 
    1618        /* Real implementations. */ 
     
    5254                                 */ 
    5355                                if (receive.TypeOf() == NSLU2Protocol::HardwareInfo && 
    5456                                        receive.Sequence() == sequence && 
    55                                         receive.DataLength() == NSLU2Protocol::HardwareInfoLength && 
     57                                        receive.DataLength() == NSLU2Protocol::HardwareInfoLength 
    5658                                        /* Validate the non-variable parts of the hardware 
    5759                                         * info - this stuff is simply copied from the RedBoot 
    5860                                         * part of the image, however the data in question is 
    5961                                         * not actually from the RedBoot source/build - rather 
    6062                                         * it is inserted when the flash image is built.  This 
    6163                                         * code checks the 32 byte 'hardware id' for a match. 
    62                                          */ 
    63                                         memcmp(receive.Data()+4, NSLU2ID0, 32) == 0) { 
     64                                         */) { 
     65                                        /* try all IDs */ 
     66                                        int found = 0, i; 
     67                                        const unsigned char *d = receive.Data()+4+32+2; 
     68                                        for(i = 0; NSLU2ID0[i][0]; i++) 
     69                                                if(memcmp(receive.Data()+4, NSLU2ID0[i], 32) == 0) 
     70                                                        found = 1; 
     71                                        if(found == 0) 
     72                                                continue; 
     73                                                 
    6474                                        /* Copy out the ProductID, ProtocolID and 
    6575                                         * FirmwareVersion fields. 
    6676                                         */ 
    67                                         const unsigned char *d = receive.Data()+4+32+2; 
    6877                                        product_id       = (d[0]<<8) + d[1], d += 4; 
    6978                                        protocol_id      = (d[0]<<8) + d[1], d += 4; 
    7079                                        /* skip FunctionId */ d += 4;