Skip to content

Commit

Permalink
Initial support for functionality to find connected copters
Browse files Browse the repository at this point in the history
  • Loading branch information
deadprogram committed Feb 26, 2014
1 parent a85a4cc commit 95986b4
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 9 deletions.
30 changes: 29 additions & 1 deletion dist/adaptor.js
Expand Up @@ -42,8 +42,19 @@
}; };


Crazyflie.prototype.connect = function(callback) { Crazyflie.prototype.connect = function(callback) {
var port;
Logger.info("Connecting to Crazyflie '" + this.name + "' on port '" + this.connection.port + "'..."); Logger.info("Connecting to Crazyflie '" + this.name + "' on port '" + this.connection.port + "'...");
return this.copter.connect(this.connection.port.toString()).then(function() { port = this.connection.port.toString();
Logger.info(port);
if (port === "none") {
return this.connectFirstCopter(callback);
} else {
return this.doConnect(port, callback);
}
};

Crazyflie.prototype.doConnect = function(port, callback) {
return this.copter.connect(port).then(function() {
callback(null); callback(null);
return this.connection.emit('connect'); return this.connection.emit('connect');
}); });
Expand All @@ -58,6 +69,23 @@
return this.copter.driver.parameters.set(param, value); return this.copter.driver.parameters.set(param, value);
}; };


Crazyflie.prototype.connectFirstCopter = function(callback) {
return this.aerogelDriver.findCopters().then(function(copters) {
if (copters.length === 0) {
console.error('No copters found! Is your copter turned on?');
return process.exit(1);
} else {
return this.doConnect(copters[0], callback);
}
});
};

Crazyflie.prototype.findCopters = function(callback) {
return this.aerogelDriver.findCopters().then(function(copters) {
return callback(copters);
});
};

return Crazyflie; return Crazyflie;


})(Cylon.Adaptor); })(Cylon.Adaptor);
Expand Down
2 changes: 1 addition & 1 deletion dist/commands.js
Expand Up @@ -14,7 +14,7 @@
namespace = require('node-namespace'); namespace = require('node-namespace');


namespace("Cylon.Crazyflie", function() { namespace("Cylon.Crazyflie", function() {
return this.Commands = ['takeoff', 'land', 'hover', 'setPitch', 'setYaw', 'setThrust', 'shutdown', 'setParam']; return this.Commands = ['takeoff', 'land', 'hover', 'setPitch', 'setYaw', 'setThrust', 'shutdown', 'setParam', 'findCopters'];
}); });


}).call(this); }).call(this);
8 changes: 5 additions & 3 deletions examples/crazyflie.js
@@ -1,16 +1,18 @@
var Cylon = require('cylon'); var Cylon = require('cylon');


Cylon.robot({ Cylon.robot({
connection: { name: 'crazyflie', adaptor: 'crazyflie', port: 'radio://1/10/250KPS' }, connection: { name: 'crazyflie', adaptor: 'crazyflie', port: 'radio://1/20/1MPS' },
device: {name: 'drone', driver: 'crazyflie'}, device: {name: 'drone', driver: 'crazyflie'},


work: function(my) { work: function(my) {
my.drone.on('start', function() { my.drone.on('start', function() {
Logger.info('yo');

my.drone.takeoff(); my.drone.takeoff();
after((10).seconds(), function() { after((2).seconds(), function() {
my.drone.land(); my.drone.land();
}); });
after((15).seconds(), function() { after((5).seconds(), function() {
my.drone.stop(); my.drone.stop();
}); });
}); });
Expand Down
12 changes: 12 additions & 0 deletions examples/list-copters.js
@@ -0,0 +1,12 @@
var Cylon = require('cylon');

Cylon.robot({
connection: { name: 'crazyflie', adaptor: 'crazyflie', port: 'radio://1/20/1MPS' },
device: {name: 'drone', driver: 'crazyflie'},

work: function(my) {
my.crazyflie.findCopters(function(copters) {
Logger.info(copters);
});
}
}).start();
25 changes: 22 additions & 3 deletions src/adaptor.coffee
Expand Up @@ -27,10 +27,17 @@ namespace "Cylon.Adaptors", ->
commands: -> commands: ->
Cylon.Crazyflie.Commands Cylon.Crazyflie.Commands


connect: (callback) -> connect: (callback) ->
Logger.info "Connecting to Crazyflie '#{@name}' on port '#{@connection.port}'..." Logger.info "Connecting to Crazyflie '#{@name}' on port '#{@connection.port}'..."

port = @connection.port.toString()
@copter.connect(@connection.port.toString()).then -> Logger.info port
if port is "none"
@connectFirstCopter(callback)
else
@doConnect(port, callback)

doConnect: (port, callback) ->
@copter.connect(port).then ->
(callback)(null) (callback)(null)
@connection.emit 'connect' @connection.emit 'connect'


Expand All @@ -40,3 +47,15 @@ namespace "Cylon.Adaptors", ->


setParam: (param, value) -> setParam: (param, value) ->
@copter.driver.parameters.set(param, value) @copter.driver.parameters.set(param, value)

connectFirstCopter: (callback) ->
@aerogelDriver.findCopters().then (copters) ->
if copters.length is 0
console.error('No copters found! Is your copter turned on?');
process.exit(1)
else
@doConnect(copters[0], callback)

findCopters: (callback) ->
@aerogelDriver.findCopters().then (copters) ->
return (callback)(copters);
3 changes: 2 additions & 1 deletion src/commands.coffee
Expand Up @@ -27,5 +27,6 @@ namespace "Cylon.Crazyflie", ->
'setYaw', 'setYaw',
'setThrust', 'setThrust',
'shutdown', 'shutdown',
'setParam' 'setParam',
'findCopters'
] ]

0 comments on commit 95986b4

Please sign in to comment.