dorita980-node18 – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 'use strict';
2  
3 const dgram = require('dgram');
4  
5 function discovery (cb, full) {
6 const server = dgram.createSocket('udp4');
7  
8 server.on('error', (err) => {
9 server.close();
10 cb(err);
11 });
12  
13 server.on('message', (msg) => {
14 try {
15 let parsedMsg = JSON.parse(msg);
16 if (parsedMsg.hostname && parsedMsg.ip && ((parsedMsg.hostname.split('-')[0] === 'Roomba') || (parsedMsg.hostname.split('-')[0] === 'iRobot'))) {
17 server.close();
18 console.log('Robot found! with blid/username: ' + parsedMsg.hostname.split('-')[1]);
19 console.log(parsedMsg);
20 cb(null, full ? parsedMsg : parsedMsg.ip);
21 }
22 } catch (e) {}
23 });
24  
25 server.on('listening', () => {
26 console.log('Looking for robots...');
27 });
28  
29 server.bind(5678, function () {
30 const message = new Buffer('irobotmcs');
31 server.setBroadcast(true);
32 server.send(message, 0, message.length, 5678, '255.255.255.255');
33 });
34 }
35  
36 function getRobotPublicInfo (ip, cb) {
37 const server = dgram.createSocket('udp4');
38  
39 server.on('error', (err) => {
40 server.close();
41 cb(err);
42 });
43  
44 server.on('message', (msg) => {
45 try {
46 let parsedMsg = JSON.parse(msg);
47 if (parsedMsg.hostname && parsedMsg.ip && ((parsedMsg.hostname.split('-')[0] === 'Roomba') || (parsedMsg.hostname.split('-')[0] === 'iRobot'))) {
48 server.close();
49 parsedMsg.blid = parsedMsg.hostname.split('-')[1];
50 cb(null, parsedMsg);
51 }
52 } catch (e) {}
53 });
54  
55 server.bind(5678, function () {
56 const message = new Buffer('irobotmcs');
57 server.send(message, 0, message.length, 5678, ip);
58 });
59 }
60 module.exports = {
61 discovery,
62 getRobotPublicInfo
63 };