analogRead in bonescript fails on first attempt after reboot

Hello all,

I have a problem that mystifies me. After I boot my BB, the first time I try to issue an analogRead via node.js, I get the following error:

fs.js:549
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^

Error: ENOENT: no such file or directory, open ‘/sys/bus/iio/devices/iio:device0/in_voltage0_raw’
at Error (native)
at Object.fs.openSync (fs.js:549:18)
at Object.fs.readFileSync (fs.js:397:15)
at Object.exports.readAIN (/var/lib/cloud9/node_modules/bonescript/src/hw_mainline.js:211:30)
at Object.f.analogRead (/var/lib/cloud9/node_modules/bonescript/src/index.js:271:19)
at null._repeat (/var/lib/cloud9/autorun/app.js:86:13)
at wrapper [as _onTimeout] (timers.js:275:11)
at Timer.listOnTimeout (timers.js:92:15)

When I run my app again, immediately without changing anything else, it works fine. Any ideas?

Thanks in advance.

–Todd

Yeah it sound like bonescript, or the newer refactored version may not correctly handle the “file does not exist” exception correctly. As it currently sits.

Ideally, in code you would check that the file you’re about to use exists, and if it does not then you load the appropriate device tree file, or similar, then just carry on about your marry way. Silently.

What i mean by the above is that the library seems as though it does load the device tree, or export the ADC pin correctly. But it’s still sending the exception message to stderr, and then halting the application for some odd reason.

I’d have to read the code to be 100%, but right now I do not have the time. . .

Thanks for the reply. (For some reason, I didn’t get a notification from google groups so I had to do some searching just to find my own message!)

I’ll look into following your suggestion. I’m not too savvy on device trees, so it’ll be a learning experience.

Thanks for the reply. (For some reason, I didn’t get a notification from google groups so I had to do some searching just to find my own message!)

I’ll look into following your suggestion. I’m not too savvy on device trees, so it’ll be a learning experience.

If you’re decent with javascript it should not be too much of a big deal to fix. I can not think of the filename offhand in which the different library functions are in. Perhaps Jason K can chime in. But if I think is going on is true, it’ll be in a callback looking something like:

exports.export_name = function(param, callback){

var params = param;
var some_function = node_function( params, (error, param2, param3) => {
if(error){throw error;}

callback(param3);
});
};

I know . . . thats rather generic. But last I looked at bonescript it was rather complex and very involved. In some cases, I think it even includes the kitchen sink :wink: