diff --git a/examples/robot_commands/robot_commands.markdown b/examples/robot_commands/robot_commands.markdown index e36b92c..0ae7c46 100644 --- a/examples/robot_commands/robot_commands.markdown +++ b/examples/robot_commands/robot_commands.markdown @@ -12,46 +12,54 @@ http://localhost:8080/robots/frankie/commands/relax First, let's make sure to load up Cylon: - Cylon = require '../..' + var Cylon = require('../..'); Now that we've got that, let's set up a custom API port: - Cylon.api host: '0.0.0.0', port: '8080' + Cylon.api({ host: '0.0.0.0', port: '8080' }); And with that done let's define our robot. We'll make a class to contain this robot's logic: - class MyRobot + var MyRobot = (function() { + function MyRobot() {} To let the API know what commands this robot has, we need to provide a `commands` array. - commands: ["relax"] + MyRobot.prototype.commands = ["relax"]; And with that done, we can now define the method. The result of this method will be returned to the HTTP client as part of a JSON object. - relax: -> - "#{this.name} says relax" + MyRobot.prototype.relax = function() { + return "" + this.name + " says relax"; + }; Since we don't really care what actual work this robot does, but need to keep it busy, we'll just tell it to print it's name every second. - work: (me) -> - every 1.seconds(), -> - console.log me.name + MyRobot.prototype.work = function(me) { + every((1).seconds(), function() { + console.log(me.name); + }); + }; + + return MyRobot; + + })(); And with that all done, we can now instantiate our robot: - robot = new MyRobot + var robot = new MyRobot; Now we can just give it a name and send it off to Cylon. - robot.name = "frankie" - Cylon.robot robot + robot.name = "frankie"; + Cylon.robot(robot); And now that all the pieces are in place, we can start up Cylon: - Cylon.start() + Cylon.start(); Now the robot will print it's name to the console, and Cylon will serve an API to `localhost:8080`. Check it out!. diff --git a/examples/salesforce/salesforce.markdown b/examples/salesforce/salesforce.markdown index 87cc089..8806b74 100644 --- a/examples/salesforce/salesforce.markdown +++ b/examples/salesforce/salesforce.markdown @@ -2,45 +2,55 @@ First, let's import Cylon: - Cylon = require '../..' + var Cylon = require('../..'); Now that we have Cylon imported, we can start defining our robot - Cylon.robot + Cylon.robot({ Let's define the connections and devices: - connection: - name: 'sfcon' - adaptor: 'force' - sfuser: process.env.SF_USERNAME - sfpass: process.env.SF_SECURITY_TOKEN - orgCreds: - clientId: process.env.SF_CLIENT_ID - clientSecret: process.env.SF_CLIENT_SECRET + connection: { + name: 'sfcon', + adaptor: 'force', + sfuser: process.env.SF_USERNAME, + sfpass: process.env.SF_SECURITY_TOKEN, + orgCreds: { + clientId: process.env.SF_CLIENT_ID, + clientSecret: process.env.SF_CLIENT_SECRET, redirectUri: 'http://localhost:3000/oauth/_callback' + } + }, - device: { name: 'salesforce', driver: 'force' } + device: { name: 'salesforce', driver: 'force' }, Now that Cylon knows about the necessary hardware we're going to be using, we'll tell it what work we want to do: - work: (me) -> - me.salesforce.on 'start', () -> - me.salesforce.subscribe '/topic/SpheroMsgOutbound', (data) -> - msg = "Sphero: #{data.sobject.Sphero_Name__c}," - msg += "Bucks: #{data.sobject.Bucks__c}," - msg += "SM_Id: #{data.sobject.Id}" + work: function(me) { + me.salesforce.on('start', function() { + me.salesforce.subscribe('/topic/SpheroMsgOutbound', function(data) { + var msg = "Sphero: " + data.sobject.Sphero_Name__c + ","; + msg += "Bucks: " + data.sobject.Bucks__c + ","; + msg += "SM_Id: " + data.sobject.Id; - console.log msg + console.log(msg); + }); + }); - i = 0 + var i = 0; - every 2.seconds(), () -> - data = JSON.stringify { spheroName: "#{me.name}", bucks: "#{i}" } - me.salesforce.push 'SpheroController', 'POST', data + every((2).seconds(), function() { + var data = JSON.stringify({ + spheroName: "" + me.name, + bucks: "" + i + }); + + me.salesforce.push('SpheroController', 'POST', data); + }); + } Now that our robot knows what work to do, and the work it will be doing that hardware with, we can start it: - .start() + }).start(); diff --git a/examples/sf-sphero/sf-sphero.markdown b/examples/sf-sphero/sf-sphero.markdown index 1b6e9ec..f80611c 100644 --- a/examples/sf-sphero/sf-sphero.markdown +++ b/examples/sf-sphero/sf-sphero.markdown @@ -1,82 +1,108 @@ -# Sales Force Shpero +# Sales Force Sphero First, let's import Cylon: - Cylon = require '../..' + var Cylon = require('../..'); + +Now we'll define a `bind` helper function we'll use later: + + var bind = function(fn, me) { + return function() { return fn.apply(me, arguments); }; + }; Now that we have Cylon imported, we can start defining our robot - class SalesforceRobot + var SalesforceRobot = (function() { + function SalesforceRobot() {} Let's define the connections and devices: - connection: - name: 'sfcon' - adaptor: 'force' - sfuser: process.env.SF_USERNAME - sfpass: process.env.SF_SECURITY_TOKEN - orgCreds: - clientId: process.env.SF_CLIENT_ID - clientSecret: process.env.SF_CLIENT_SECRET + SalesforceRobot.prototype.connection = { + name: 'sfcon', + adaptor: 'force', + sfuser: process.env.SF_USERNAME, + sfpass: process.env.SF_SECURITY_TOKEN, + orgCreds: { + clientId: process.env.SF_CLIENT_ID, + clientSecret: process.env.SF_CLIENT_SECRET, redirectUri: 'http://localhost:3000/oauth/_callback' + } + }; - device: { name: 'salesforce', driver: 'force' } + SalesforceRobot.prototype.device = { name: 'salesforce', driver: 'force' }; Now that Cylon knows about the necessary hardware we're going to be using, we'll tell it what work we want to do: - work: (me) -> - me.salesforce.on 'start', () -> - me.salesforce.subscribe '/topic/SpheroMsgOutbound', (data) -> - msg = "Sphero: #{data.sobject.Sphero_Name__c}," - msg += "Bucks: #{data.sobject.Bucks__c}," - msg += "SM_Id: #{data.sobject.Id}" + SalesforceRobot.prototype.work = function(me) { + me.salesforce.on('start', function() { + me.salesforce.subscribe('/topic/SpheroMsgOutbound', function(data) { + var msg; + msg = "Sphero: " + data.sobject.Sphero_Name__c + ","; + msg += "Bucks: " + data.sobject.Bucks__c + ","; + msg += "SM_Id: " + data.sobject.Id; + console.log(msg); + me.master.findRobot(data.sobject.Sphero_Name__c, function(err, spheroBot) { + spheroBot.react(spheroBot.devices.sphero); + }); + }); + }); + }; - console.log msg + return SalesforceRobot; - me.master.findRobot data.sobject.Sphero_Name__c, (err, spheroBot) -> - spheroBot.react spheroBot.devices.sphero + })(); - class SpheroRobot - totalBucks: 0 + var SpheroRobot = (function() { + function SpheroRobot() { + this.react = bind(this.react, this); + } - connection: { name: 'sphero', adaptor: 'sphero' } + SpheroRobot.prototype.totalBucks = 0; - device: { name: 'sphero', driver: 'sphero' } + SpheroRobot.prototype.connection = { name: 'sphero', adaptor: 'sphero' }; + SpheroRobot.prototype.device = { name: 'sphero', driver: 'sphero' }; - react: (robot) => - robot.setRGB 0x00FF00 - robot.roll 90, Math.floor(Math.random() * 360) + SpheroRobot.prototype.react = function(robot) { + robot.setRGB(0x00FF00); + robot.roll(90, Math.floor(Math.random() * 360)); + }; - work: (me) -> - me.sphero.on 'connect', -> - console.log 'Setting up Collision Detection...' - me.sphero.detectCollisions() - me.sphero.stop() - me.sphero.setRGB 0x00FF00 - me.sphero.roll 90, Math.floor(Math.random() * 360) + SpheroRobot.prototype.work = function(me) { + me.sphero.on('connect', function() { + console.log('Setting up Collision Detection...'); + me.sphero.detectCollisions(); + me.sphero.stop(); + me.sphero.setRGB(0x00FF00); + me.sphero.roll(90, Math.floor(Math.random() * 360)); + }); + me.sphero.on('collision', function(data) { + me.sphero.setRGB(0x0000FF, me); + me.sphero.stop(); + data = JSON.stringify({ + spheroName: "" + me.name, + bucks: "" + (me.totalBucks++) + }); + me.master.findRobot('salesforce', function(err, sf) { + sf.devices.salesforce.push('SpheroController', 'POST', data); + }); + }); + }; - me.sphero.on 'collision', (data) -> - me.sphero.setRGB 0x0000FF, me - me.sphero.stop() + return SpheroRobot; - data = JSON.stringify - spheroName: "#{me.name}" - bucks: "#{me.totalBucks++}" + })(); - me.master.findRobot 'salesforce', (err, sf) -> - sf.devices.salesforce.push 'SpheroController', 'POST', data + var sfRobot = new SalesforceRobot(); + sfRobot.name = "salesforce"; + Cylon.robot(sfRobot); - sfRobot = new SalesforceRobot() - sfRobot.name = "salesforce" - Cylon.robot sfRobot - - spheroRobot = new SpheroRobot() - spheroRobot.name = 'ROY' - spheroRobot.connection.port = '/dev/rfcomm0' - Cylon.robot spheroRobot + var spheroRobot = new SpheroRobot(); + spheroRobot.name = 'ROY'; + spheroRobot.connection.port = '/dev/rfcomm0'; + Cylon.robot(spheroRobot); Now that our robot knows what work to do, and the work it will be doing that hardware with, we can start it: - Cylon.start() + Cylon.start(); diff --git a/examples/skynet/skynet-blink.markdown b/examples/skynet/skynet-blink.markdown index bfe515b..1adf39d 100644 --- a/examples/skynet/skynet-blink.markdown +++ b/examples/skynet/skynet-blink.markdown @@ -1,39 +1,50 @@ # Skynet Blink - + First, let's import Cylon: - Cylon = require '../..' + var Cylon = require('../..'); Now that we have Cylon imported, we can start defining our robot - Cylon.robot + Cylon.robot({ Let's define the connections and devices: connections: [ - { name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0' }, - # { name: 'skynet', adaptor: 'skynet', uuid: "742401f1-87a4-11e3-834d-670dadc0ddbf", token: "xjq9h3yzhemf5hfrme8y08fh0sm50zfr" } - { name: 'skynet', adaptor: 'skynet', host: 'localhost', portNumber: 3000, uuid: "18676eb1-9997-11e3-8c2a-f18a07a72684", token: "vbeo289aik65hfr1lns8vst273nmi" } - ] + { + name: 'arduino', + adaptor: 'firmata', + port: '/dev/ttyACM0' + }, + { + name: 'skynet', + adaptor: 'skynet', + uuid: "96630051-a3dc-11e3-8442-5bf31d98c912", + token: "2s67o7ek98pycik98f43reqr90t6s9k9" + } + ], - device: { name: 'led', driver: 'led', pin: 13, connection: 'arduino' } + device: { name: 'led13', driver: 'led', pin: 13, connection: 'arduino' }, Now that Cylon knows about the necessary hardware we're going to be using, we'll tell it what work we want to do: - work: (my) -> - Logger.info "connected..." - my.connections['skynet'].on 'message', (data) -> - console.log(data) - data = JSON.parse(data) - if data.message.red is 'on' - console.log("red on request received from skynet"); - my.led.turnOn() - else if data.message.red is 'off' - console.log("red off request received from skynet"); - my.led.turnOff() + work: function(my) { + Logger.info("Skynet is listening..."); + + my.skynet.on('message', function(data) { + Logger.info(data); + var data = JSON.parse(data); + if(data.message.red == 'on') { + my.led13.turnOn() + } + else if(data.message.red == 'off') { + my.led13.turnOff() + } + }); + } Now that our robot knows what work to do, and the work it will be doing that hardware with, we can start it: - .start() + }).start():