diff --git a/examples/node-example/package.json b/examples/node-example/package.json index bed9bf7..bf5e6d1 100644 --- a/examples/node-example/package.json +++ b/examples/node-example/package.json @@ -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" } diff --git a/examples/node-example/server.js b/examples/node-example/server.js index be1eaf2..d16c5df 100644 --- a/examples/node-example/server.js +++ b/examples/node-example/server.js @@ -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(); @@ -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); diff --git a/node-bindings/pru.js b/node-bindings/pru.js index f1bf643..34e6409 100644 --- a/node-bindings/pru.js +++ b/node-bindings/pru.js @@ -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) { diff --git a/prussd/prussd.py b/prussd/prussd.py index 2eb22f5..bb04efa 100755 --- a/prussd/prussd.py +++ b/prussd/prussd.py @@ -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