var fillCapeEepromData = exports.fillCapeEepromData = function(data) { eepromData.fill(); eepromData.hexWrite('aa5533ee', 0, 4); eepromData.write('A0', 4, 2, 'ascii'); if(data.boardName.length > 32) { data.boardName.length = 32; } eepromData.write(data.boardName, 6, 32, 'ascii'); if(data.version.length > 4) { data.version.length = 4; } eepromData.write(data.version, 38, 4, 'ascii'); if(data.manufacturer.length > 16) { data.manufacturer.length = 16; } eepromData.write(data.manufacturer, 42, 16, 'ascii'); if(data.partNumber.length > 16) { data.partNumber.length = 16; } eepromData.write(data.partNumber, 58, 16, 'ascii'); eepromData.writeUint16BE(data.numPins, 74, 'ascii'); if(data.serialNumber.length > 12) { data.serialNumber.length = 12; } eepromData.write(data.serialNumber, 76, 12, 'ascii'); eepromData.writeUint16BE(data.currentVDD_3V3EXP, 236); eepromData.writeUint16BE(data.currentVDD_5V, 238); eepromData.writeUint16BE(data.currentSYS_5V, 240); eepromData.writeUint16BE(data.DCSupplied, 242); for(var pin in data.mux) { if(typeof pinmap[pin].eeprom != 'undefined') { var pinOffset = pinmap[pin].eeprom * 2 + 88; var pinObject = data.mux[pin]; var pinData = 0; if(pinObject.used == 'used') pinData |= 0x8000; switch(pinObject.direction) { case 'in': pinData |= 0x2000; break; case 'out': pinData |= 0x4000; break; case 'bidir': pinData |= 0x6000; break; default: winston.error('Unknown direction value: '+pinObject.direction); pinData |= 0x2000; } if(pinObject.slew == 'slow') pinData |= 0x40; if(pinObject.rx == 'enabled') pinData |= 0x20; var pullup = (pinData & 0x18) >> 3; switch(pinObject.pullup) { case 'disabled': pinData |= 0x08; break; case 'pullup': pinData |= 0x10; break; case 'pulldown': break; default: winston.error('Unknown pullup value: '+pullup); } pinData |= (pinObject.mode & 0x0007); eepromData.writeUint16BE(pinData, pinOffset); } } return(eepromData); };