radxa-rock
Version:
GPIO interface for the Radxa Rock
45 lines (39 loc) • 945 B
JavaScript
var CONST = require('../../../index').CONST;
var reIsPort = /^J\d{1,2}_P\d{1,2}$/;
var keys = Object.keys(CONST);
var pins = {};
var pinNumber = 0;
var rock = require('./rock');
var getStatus = function(pinNumber){
return function(callback){
return rock.get(pinNumber, callback);
};
};
var setStatus = function(pinNumber){
return function(value, callback){
return rock.set(pinNumber, value, callback);
};
};
var mode = function(pinNumber){
return function(mode, callback){
return rock.pinMode(pinNumber, mode, callback);
};
};
keys.forEach(function(key){
pinNumber = CONST[key];
if(pinNumber === -1){
return;
}
if(!pins[pinNumber]){
pins[pinNumber] = {
pin: pinNumber,
keys: [],
get: getStatus(pinNumber),
set: setStatus(pinNumber),
mode: mode(pinNumber)
};
}
pins[pinNumber].keys.push(key);
pins[key] = pins[pinNumber];
});
module.exports = pins;