Example #1
0
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);
};