Commit Graph

92 Commits

Author SHA1 Message Date
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
Andrew Stewart e74675d65a Small fixes to robot.js 2014-10-02 11:35:33 -07:00
Andrew Stewart d865bac72b Add error triggering 2014-09-30 16:13:20 -07:00
Andrew Stewart 81dfda5732 Fixup specs 2014-09-30 12:22:00 -07:00
Andrew Stewart 8e0790ad9f Default to manual mode, prevent multiple #starts
Additionally adds #halt/#disconnect to built-in loopback/ping
2014-09-30 12:17:02 -07:00
Andrew Stewart de0a8fc0cb Emit 'ready' event, not 'work', when working 2014-09-29 10:21:29 -07:00
Andrew Stewart 6fa67f0e3b Trigger test mode by checking NODE_ENV
Adds CYLON_TEST var for tests to make sure tests run properly
2014-09-22 15:05:45 -07:00
Andrew Stewart 299ade796b Rename auto_start to 'auto' 2014-09-22 14:20:26 -07:00
Andrew Stewart c182c1316e Auto start by default, implement start of modes 2014-09-08 15:28:16 -07:00
Andrew Stewart 70bd524ebe Explain auto_start better 2014-09-08 14:33:07 -07:00
Adrian Zankich 69f066e432 async the auto start 2014-09-08 14:30:23 -07:00
Andrew Stewart 3ec6c2717a Switch to Logger.debug for default work, add test for #start return val 2014-09-08 14:14:11 -07:00
Andrew Stewart f0d0e4b738 Correct tests for auto-start, allow for non-truthy values 2014-09-08 14:12:14 -07:00
Adrian Zankich 12ae17eeb2 Fix typo 2014-09-08 13:43:11 -07:00
Adrian Zankich 021c1756dc Auto start by default 2014-09-08 13:41:59 -07:00
Andrew Stewart f1544e5a8f Add support for work to be triggered via an event 2014-09-08 12:57:56 -07:00
Andrew Stewart 9fe9700eef Restructure Halt/Disconnect Structure
Moves disconnecting event handlers up a level so adaptors/drivers don't have to
worry about it.

Now, Adaptor/Driver subclasses should simply execute the provided callback to
dindicate they're done disconnecting, rather than calling the superclass method
as before.
2014-09-05 09:38:12 -07:00
Andrew Stewart 179c486c80 Address namespace collisions for robots, devices, and connections 2014-09-04 14:51:44 -07:00
Andrew Stewart 48497b7b0e Default to no-op callbacks for #halt methods 2014-09-04 11:22:00 -07:00
Andrew Stewart d2b00c7d30 Attempt to stop drivers, then adaptors 2014-09-04 10:18:18 -07:00
Andrew Stewart 3b7c96e81e Add user configuration for Cylon internals 2014-09-03 15:08:48 -07:00
Andrew Stewart 11082b44a9 Remove extraneous Connection#halt method 2014-09-02 20:26:26 -07:00
Andrew Stewart 55f9445149 Remove #proxyTestStubs in favor of inline solution 2014-08-13 15:04:25 -07:00
Andrew Stewart bad414be39 Correctly avoid labelling 'work' as a command 2014-08-07 14:00:30 -07:00
Andrew Stewart e6c567a090 Add new command structure 2014-08-07 12:24:29 -07:00
Andrew Stewart 026d3777e6 Simplify coercion of Robot to JSON 2014-07-29 18:49:35 -07:00
Ron Evans 8762820d0c Merge pull request #213 from hybridgroup/refactor/threepio
Threepio Support
2014-07-19 01:08:19 +02:00