Skip to content

Commit

Permalink
IMU/Multi: define generic Components that initializes and defines get…
Browse files Browse the repository at this point in the history
… accessors for IMU controller wrappers, based on components property value

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
  • Loading branch information
rwaldron committed Sep 16, 2016
1 parent 42664a1 commit 48cb374
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions lib/imu.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,59 @@ var activeDrivers = new Map();

// The presense of this magic number is for computing meters from pressure and elevation (in meters)
// 0.0000225577
// TODO: make real const
var ACCELEROMETER = "accelerometer";
var ALTIMETER = "altimeter";
var BAROMETER = "barometer";
var GYRO = "gyro";
var HYGROMETER = "hygrometer";
var MAGNETOMETER = "magnetometer";
var ORIENTATION = "orientation";
var THERMOMETER = "thermometer";


function Components(controller, options) {
var state = priv.get(this);
var descriptors = Object.create(null);

this.components.forEach(function(component) {

// TODO: Can this be put inside the get accessor?
// - Lazy init?
state[component] = new Components[component](
Object.assign({
controller: options.controller || controller,
freq: options.freq,
board: this.board,
}, options)
);

descriptors[component] = {
get: function() {
return state[component];
}
};

if (backwardCompatibilityGarbageHacks[component]) {
descriptors[backwardCompatibilityGarbageHacks[component]] = descriptors[component];
}
});

Object.defineProperties(this, descriptors);
}

Components.accelerometer = require("./accelerometer");
Components.altimeter = require("./altimeter");
Components.barometer = require("./barometer");
Components.gyro = require("./gyro");
Components.hygrometer = require("./hygrometer");
Components.magnetometer = require("./compass");
Components.orientation = require("./orientation");
Components.thermometer = require("./thermometer");

var backwardCompatibilityGarbageHacks = {
thermometer: "temperature",
};

var Drivers = {
// https://cdn-shop.adafruit.com/product-files/2857/Sensirion_Humidity_SHT3x_Datasheet_digital-767294.pdf
Expand Down

0 comments on commit 48cb374

Please sign in to comment.