Commit Graph

118 Commits

Author SHA1 Message Date
Andrew Stewart 8fbe9b9c4d Automate auto-binding of prototype methods 2015-06-25 12:33:13 -07:00
Edgar O Silva fd564f61f8 Merge pull request #296 from hybridgroup/remove/async
Remove dependency on 'async'
2015-06-24 13:30:43 -05:00
Andrew Stewart 0b48851885 Remove unnecessary comments at start of files 2015-06-22 09:16:43 -07:00
Andrew Stewart 0719fa203c Remove dependency on 'async'
This commit removes the last current dependency of Cylon, 'async'.

In it's place, simplified versions of the methods used have been added
so lib/utils/helpers.js.
2015-06-18 15:40:33 -07:00
Andrew Stewart f3efa83643 Correct issue with Robot halting 2015-06-18 14:56:39 -07:00
Andrew Stewart 4238385be4 Extract out Robot param validation into new file 2015-06-17 09:03:26 -07:00
Andrew Stewart 681e197ed9 Stop giving robots random names, use inc. counter 2015-06-09 11:50:50 -07:00
Andrew Stewart 68ab6ad441 Remove leftover comment 2015-06-09 07:08:46 -07:00
Andrew Stewart 6cccc41aff Begin JSDoc-ing core 2015-06-08 22:57:49 -07:00
Andrew Stewart 3f4140bd08 Add util to verify constructor calls use 'new' 2015-05-12 18:47:27 -07:00
Andrew Stewart 62cbae7cff Switch to ESLint for linting 2015-04-15 08:59:34 -07:00
Andrew Stewart cccb376679 Consistent top-of-file doc blocks 2015-04-15 08:59:12 -07:00
Andrew Stewart 9b04a4ed15 Add basic DSL error checks 2015-04-02 12:22:19 -07:00
Andrew Stewart a17c70a18b Bind passed function to Robot by default 2015-03-17 14:22:14 -07:00
Andrew Stewart cb492c0747 Remove deprecated Connection / Device syntaxes
Removes deprecation warnings + support for single-object + array
syntaxes.

The array syntax will likely continue to work due to the `_.each`
abstraction, but since we don't use it anywhere, the requisite specs
have been removed.
2015-03-04 09:27:33 -08:00
Andrew Stewart 6e3d7c6667 Add helpers to replace some lodash functionality
Not a 1:1, and probably much slower than Lodash's ultra-optimised
implementations, but we do enough I/O that it's not really relevant,
is it?
2015-02-23 08:38:12 -08:00
Andrew Stewart 618aa8212d Remove lodash 2015-02-20 11:15:34 -08:00
deadprogram 64a0d76af1 Extract deprecation warning into separate function 2015-01-22 19:25:45 -08:00
Andrew Stewart 147816b366 First crack at removing seperate Device/Connection initialization 2015-01-22 14:41:58 -08:00
Andrew Stewart d56f9bc53f Add better error checking for Robot#halt 2015-01-21 08:56:13 -08:00
Andrew Stewart 8272efe060 Robot log messages should contain the bot name 2015-01-20 19:29:40 -08:00
Andrew Stewart 5354102c2e If bad start detected, shut down the Robot 2015-01-20 19:18:52 -08:00
deadprogram 6ac3cad7c1 Extract even more of function to DRY up code 2015-01-17 21:35:40 -08:00
deadprogram 5cea07602a Extract function to DRY up code 2015-01-17 21:29:07 -08:00
deadprogram a7e8caf19d Extract robot var init into separate function 2015-01-17 15:48:45 -08:00
Andrew Stewart eccdde81a9 Update copyright years 2015-01-07 12:58:50 -08:00
Andrew Stewart 8065644b4e Add support for nested device details inside conn
e.g.
    connections: {
      loopback: {
        adaptor: "loopback",
        devices: {
          ping: { driver: "ping", pin: 1 }
        }
      }
    }

In the event of a name collision between the `devices` hash and a nested
device, the nested device will 'win'.
2015-01-07 10:21:51 -08:00
Andrew Stewart cf0d24f785 Add API event publication
This update gives Cylon support for the latest changes to the CPPP-IO
spec.
2015-01-05 12:20:53 -08:00
Andrew Stewart c9e16fe8c2 Use _.result to get commands from options. 2014-12-17 15:07:03 -08:00
Andrew Stewart 6cbf2db122 Lodashify 2014-12-17 14:45:57 -08:00
Andrew Stewart ac6b09fe50 Clean up lib for JSHint 2014-12-15 11:15:29 -08:00
Andrew Stewart 9fe92967bb Make use of `thisArg` instead of #bind 2014-11-30 15:17:57 -08:00
Andrew Stewart 3eb1da8481 Simplify halt code in Robot slightly 2014-11-30 11:47:33 -08:00
Andrew Stewart 29583c0bd5 Add back debug logging for device/connection start 2014-11-28 14:42:26 -08:00
Andrew Stewart ca8e22f1e2 Fluent #device/#connection update
Now pass name, then object of details

    #device({ name: 'ping', driver: 'ping' });
    // vs
    #device('ping', { driver: 'ping' });
2014-11-26 09:33:19 -08:00
Andrew Stewart 9047797c9f Deprecate 'connection' and 'device' Robot opts 2014-11-25 14:43:57 -08:00
Andrew Stewart 15c9b96333 Extract out Connection/Device initialization
Simple extraction out of Connection/Device initialization code inside
Robot.

This yields an interesting boon, however - this is now a valid Cylon
program:

    var Cylon = require('cylon');

    Cylon
      .robot()
      .connection({ name: 'loopback', adaptor: 'loopback' })
      .device({ name: 'ping', driver: 'ping' })
      .on('ready', function(bot) {
        console.log("Bot working!");

        every(1000, function() {
          console.log(bot.ping.ping());
        })
      });

    Cylon.start();

For those that prefer imperative programs with Cylon, this is a nice
syntax addition.
2014-11-20 08:43:08 -08:00
Andrew Stewart 38bf5fdfed Refer to Adaptor instances as 'Connection' 2014-11-14 10:56:45 -08:00
Andrew Stewart ce87a355f0 Modifications, fix test suite 2014-11-11 11:41:23 -08:00
Andrew Stewart e67ae19882 Remove Connection and Device classes
They are now functions that return instances of Adaptors and Drivers
respectively.
2014-11-10 16:06:10 -08:00
Andrew Stewart f1b982fedd Support providing connections/devices as an object
Before:

  connections: [
    { name: 'loopback', adaptor: 'loopback', port: 13 }
  ],

Now:

  connections: {
    loopback: { adaptor: 'loopback', port: 13 }
  }

Array syntax still works, but has been marked as deprecated.
2014-11-10 10:52:55 -08:00
Andrew Stewart e9f73228f1 Move requires around to make Browserify cooperate 2014-11-05 15:24:50 -08:00
Andrew Stewart 1c922f02c1 Address bugs w/ connections 2014-10-31 13:48:05 -07:00
Andrew Stewart 44075a1a30 Hook Repository class up, change-up module loading
Cylon modules were previously styled something like this:

    module.exports = {
      adaptor: function(args) {
        return new Adaptor(args);
      },

      register: function(robot) {
        Cylon.Logger.debug("Registering Firmata adaptor for " + robot.name);
        robot.registerAdaptor('cylon-firmata', 'firmata');

        GPIO.register(robot);
        I2C.register(robot);
      }
    };

Now, they should be something more like this:

    module.exports = {
      adaptors: ['firmata'],
      dependencies: ['cylon-gpio', 'cylon-i2c'],

      adaptor: function(args) {
        return new Adaptor(args);
      },
    };
2014-10-30 13:29:06 -07:00
Ron Evans 3ceb6cda85 Merge pull request #234 from hybridgroup/workMode
Work mode configuration
2014-10-28 17:37:24 +00:00
Andrew Stewart a8b16a3469 Proxy all opts that aren't already used internally 2014-10-27 13:40:38 -07:00
Andrew Stewart 3f9a7cf148 Fixup some Browserify errors, indicate support in README 2014-10-21 11:31:22 -07:00
Andrew Stewart 157fcec25e Avoid creating functions inside loop, properly terminates now 2014-10-14 10:25:58 -07:00
Adrian Zankich b80ad6e167 start the robots in parallel 2014-10-04 00:56:08 -07:00
Adrian Zankich d4ed3117f3 enable async or sync work modes 2014-10-03 23:07:07 -07:00