Skip to content

Commit

Permalink
Modify server example to use the new nodejs bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
MuneebMohammed committed Jun 14, 2018
1 parent 9d68f5f commit aa4f73c
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 40 deletions.
3 changes: 2 additions & 1 deletion examples/node-example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"main": "server.js",
"dependencies": {
"express": "~4.0.0",
"body-parser": "~1.0.1"
"body-parser": "~1.0.1",
"pruss": "../../node-bindings"
}


Expand Down
73 changes: 36 additions & 37 deletions examples/node-example/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@ var express = require('express'),
parser = require('body-parser'),
fs = require('fs'),
path = require('path'),
pruss = require('./node_modules/pruss');
pruss = require('pruss');

var p = pruss.PRUSS.get();
var pru = [p.pru0, p.pru1];
var pru = pruss.pru;
var port = process.env.PORT || 8088;
var router = express.Router();
var prussrouter = express.Router();
Expand All @@ -16,79 +15,79 @@ app.use(parser.json({ type: 'application/json' }));
app.use(parser.urlencoded({ extended: true }));
app.use(express.static('app'))

var states = ["NONE", "STOPPED", "RUNNING", "HALTED"];


router.get('/:no([0-1])', function(req, res){
res.json({ "status": states[pru[req.params.no].getState()] });
res.json({ "status": pru[req.params.no].getState() });
});

router.get('/:no([0-1])/stop', function(req, res){
res.json({ "return": pru[req.params.no].disable() });
pru[req.params.no].disable((ret) => {
res.json({ "return": ret });
});
});

router.get('/:no([0-1])/start', function(req, res){
res.json({ "return": pru[req.params.no].enable() });
pru[req.params.no].enable((ret) => {
res.json({ "return": ret });
});
});

router.get('/:no([0-1])/pause', function(req, res){
res.json({ "return": pru[req.params.no].pause() });
pru[req.params.no].pause((ret) => {
res.json({ "return": ret });
});
});

router.get('/:no([0-1])/resume', function(req, res){
res.json({ "return": pru[req.params.no].resume() });
pru[req.params.no].resume((ret) => {
res.json({ "return": ret });
});
});

router.post('/:no([0-1])/load', function(req, res){
var filepath = req.body.file;
res.json( { "return": pru[req.params.no].load(filepath) } )
pru[req.params.no].load(filepath, (ret) => {
res.json({ "return": ret });
});
});

router.get('/:no([0-1])/message', function(req, res){
res.json({ "message": pru[req.params.no].getMsg() });
pru[req.params.no].getMsg((ret) => {
res.json({ "message": ret });
});
});


router.get('/:no([0-1])/event/:time([0-9]{2,})?', function(req, res){

function eventwait(number, tout, cb){
var retr = pru[number].waitForEvent(tout)
console.log("wait over")
cb(retr)
}
function async_eventwait(no, timeout){
return new Promise(function(resolve){
eventwait(no, timeout, function(data){
resolve(data)
})
})
}

var timeout = (req.params.time==undefined)?-1:req.params.time;
async_eventwait(req.params.no, parseInt(timeout)).then(function(data){
res.json({ "return": data })
})
console.log("exited");
router.get('/:no([0-1])/event/:time([0-9])?', function(req, res){
pru[req.params.no].waitForEvent(req.params.time, (ret) => {
res.json({ "return": ret });
});

});

router.post('/:no([0-1])/message', function(req, res){
var msg = req.body.message;
res.json({ "return": pru[req.params.no].sendMsg(msg) });
pru[req.params.no].sendMsg(msg, (ret) => {
res.json({ "return": ret });
});
});

prussrouter.get('/', function(req, res){
var state = "off";
if(p.isOn())
if(pruss.isOn())
state = "on";
res.json({ "status": state });
});

prussrouter.get('/on', function(req, res){
res.json({ "return": p.bootUp() });
pruss.bootUp((ret) => {
res.json({ "return": ret });
});
});

prussrouter.get('/off', function(req, res){
res.json({ "return": p.shutDown() });
pruss.shutDown((ret) => {
res.json({ "return": ret });
});
});

app.use('/pru', router);
Expand Down
4 changes: 2 additions & 2 deletions node-bindings/pru.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,11 @@ class PRU {
return cb? cb(errno.ENODEV): errno.ENODEV;
if(this._state == 'RUNNING')
return cb? cb(errno.EALREADY): errno.EALREADY;
send('DISABLE_'+this._no, (data) => {
send('RESUME_'+this._no, (ret) => {
ret = parseInt(ret);
if(!ret)
this._state = 'RUNNING';
return cb? cb(data): data;
return cb? cb(ret): ret;
});
}
getRegs(cb) {
Expand Down
2 changes: 2 additions & 0 deletions prussd/prussd.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ def get_msg(cmd):
#timeout 0 in select => non-blocking read
while fd in select.select([fd], [], [], 0)[0]:
reply += fd.readline()
if reply == '':
return '\n'
return reply
except OSError as err:
return -err.errno
Expand Down

0 comments on commit aa4f73c

Please sign in to comment.