Skip to content

Commit

Permalink
adc: Add adc support based on sysfs
Browse files Browse the repository at this point in the history
Inpired by IoT.js API, tested on ARTIK710:

```
NODE_PATH=lib node example/adc-example.js
1745
```

Change-Id: Ie9e006c667cbc39747c49251e41a7b25aa9d4607
Signed-off-by: Philippe Coval <[email protected]>
  • Loading branch information
rzr committed Sep 28, 2018
1 parent 2336386 commit cdff624
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
47 changes: 47 additions & 0 deletions example/adc-example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// -*- mode: js; js-indent-level:2; -*-
// Copyright 2018-present Samsung Electronics France and other contributors
//{
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//}

var adc = require('adc');

/// ADC0 on ARTIK710 interposer board
var DEFAULT_ADC_DEVICE = '/sys/bus/platform/devices/c0053000.adc/iio:device0/in_voltage0_raw';

var main = function(config)
{
config = config || {
device: DEFAULT_ADC_DEVICE
}
var port = adc.open(config, function(err) {
if (err) {
throw err;
}
console.log(port.readSync());
});
}

module.exports = main;

if (!module.parent) {
var device = process.argv[2] ? Number(process.argv[2]) : DEFAULT_ADC_DEVICE;
main({device: device});
}
43 changes: 43 additions & 0 deletions lib/adc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// -*- mode: js; js-indent-level:2; -*-
// Copyright 2018-present Samsung Electronics France and other contributors
//{
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//}

const fs = require('fs');

function Adc()
{
this.open = function(config, callback) {
this.config = config;
fs.access(config.device, fs.R_OK, callback);
return this;
}

this.readSync = function(err) {
var contents = fs.readFileSync(this.config.device, 'ascii');
return contents;
}

this.closeSync = function() {
}
}

module.exports = new Adc();

0 comments on commit cdff624

Please sign in to comment.