Add a server module, which will be used for optional remote control with a mobile-friendly interface.

This commit is contained in:
mmcw-dev 2018-01-04 23:43:33 -05:00
parent 59b4a51cca
commit b1aac2054a
1 changed files with 72 additions and 0 deletions

72
app/lib/server/index.js Normal file
View File

@ -0,0 +1,72 @@
'use script'
let os
let restify
let app
let cam
let proj
let light
class Server {
constructor (mcopy) {
restify = require('restify')
os = require('os')
app = express()
this.getIp()
app.get('/', function (req, res) {
mcopy.mobile.log('Device connected');
res.send(fs.readFileSync('tmpl/mcopy_index.html', 'utf8'));
});
app.get('/js/mcopy_mobile.js', function (req, res) {
res.send(fs.readFileSync('js/mcopy_mobile.js', 'utf8'));
});
app.get('/js/jquery.js', function (req, res) {
res.send(fs.readFileSync('js/jquery.js', 'utf8'));
});
app.get('/cmd/:cmd', function (req, res) {
var cmd,
success = function (res) {
var obj = {
success: true,
cmd : cmd,
cam : mcopy.state.camera,
proj : mcopy.state.projector
}
res.json(obj);
};
if (typeof req.params.cmd !== 'undefined') {
mcopy.log('Receiving command from mobile: ' + req.params.cmd);
cmd = req.params.cmd;
if (cmd === 'CF'){
mcopy.cmd.cam_forward(success);
} else if (cmd === 'CB') {
mcopy.cmd.cam_backward(success);
} else if (cmd === 'PF') {
mcopy.cmd.proj_forward(success);
} else if (cmd === 'PB') {
mcopy.cmd.proj_backward(success);
} else {
mcopy.mobile.fail(res, 'Command ' + cmd + ' not found');
}
} else {
mcopy.mobile.fail(res, 'No command provided');
}
});
app.get('/state', function (req, res) {
res.json({
cam: mcopy.state.camera,
proj: mcopy.state.projector
});
});
var http = require('http');
http.createServer(app).listen(mcopy.cfg.ext_port);
}
end () {
app.close()
}
}
module.exports = Server