Commit Graph

108 Commits

Author SHA1 Message Date
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
Andrew Stewart d7987f959e Fix typo 2014-07-15 11:54:16 -07:00
Adrian Zankich 0184efb4cd Merge pull request #211 from hybridgroup/fix/require-connection
Require a connection if a robot has any devices
2014-07-14 07:57:20 -10:00
Andrew Stewart 1c8e84cfb2 Clean up robot initialization 2014-07-12 10:48:57 -07:00
Andrew Stewart 4dd7e013ed Require a connection if a robot has any devices 2014-07-11 10:46:22 -07:00
Andrew Stewart f0d8b0360b Remove `self` references in favor of #bind 2014-07-03 09:35:24 -07:00
Andrew Stewart 5acfd4aed4 Remove Utils#bind in preference of built-in fn
We were re-implementing Function.prototype.bind, so let's just use that.
2014-06-17 19:35:07 -07:00
Andrew Stewart 6de922f2fc Make halting on SIGINT async
This change gives adaptors/drivers more flexibility in halting. Additionally,
now, by default, all Adaptors/Drivers will remove all their event listeners
before halting, which should prevent some additional commands from being sent to
the adaptor during shutdown.
2014-06-12 15:31:49 -07:00
Andrew Stewart 9c60700c0f Clean up declaration of default work block 2014-06-10 18:38:55 -07:00
Andrew Stewart b66a1d3fee Remove unused param for #start callback 2014-06-10 18:38:00 -07:00
Andrew Stewart 594c73dc60 Declare missingModuleError before it's used 2014-06-10 18:37:19 -07:00
Andrew Stewart 1832e20e17 Expose commands as array, instead of function
For appropriate classes, #commands is now an array, instead of a function that
returns the same array.
2014-06-10 12:29:44 -07:00
Andrew Stewart 3672a1b712 General cleanup of single-line statements 2014-06-09 14:02:06 -07:00
Andrew Stewart dd553a55f2 Clean up #start to use Async.series 2014-06-09 13:55:44 -07:00
Andrew Stewart 4e43483e9d Slightly refactor constructor 2014-06-09 13:41:46 -07:00
Andrew Stewart dbde3d5b7d Remove circular reference from Robot 2014-06-09 13:24:42 -07:00
Ron Evans 3717c4dc31 Merge pull request #195 from hybridgroup/refactor/robots-collection
Refactor Robots collection
2014-06-06 18:36:19 -04:00
Andrew Stewart ebdeeccd12 Use implicit object conversion with #toJSON
JSON.stringify, if told to convert an object with a #toJSON method, will instead
stringify the result of the #toJSON method.
2014-06-06 14:15:43 -07:00
Andrew Stewart 81fa260963 Store robots in an dict, rather than array
Also removes the find{Robot,RobotConnection,RobotDevice} methods. Additionally,
stops passing the Master through to the Robot constructor, we can just
require('./cylon') if we need to access anything in there.
2014-06-06 11:36:22 -07:00
Andrew Stewart f91dd7d5c3 Refactor Utils (mostly) out of global namespace
This commit reframes the Utils module to be more self-contained, and now only
the Number prototype methods and the every/after/constantly methods are exposed
globally.

I'm unsure about whether these methods can be more scoped such that people can
turn them off if they want, but that's potentially something to look into in the
future.

This commit also updates most of the other source files in Cylon, requiring the
Utils module rather than assuming the methods are in the global namespace.

A similar batch of commits will need to be made for all other Cylon modules to
make sure they don't explode when they can't find #subclass or something like
that.

To make the previously-global methods available, both in submodules and for
people looking for them, all the utility functions are exported in Cylon.Utils.
2014-06-05 12:17:29 -07:00
Andrew Stewart a5241e57b5 All work and no play makes Jack a dull boy
Robots can now take a break and have #play functions instead of #work.
Internally they're treated the same, but it's a fun easter egg!

Example:

Cylon.robot({
  name: 'Jack',

  connections: [],
  devices: [],

  play: function play(my) {
    every((5).seconds(), function() {
      console.log("All work and no play makes %s a dull boy.", my.name);
    });
  }
});

I sincerely apologize for the repeated reference to The Shining, blame
@deadprogram.

Closes #189.
2014-06-04 16:33:20 -07:00
deadprogram 69cc76b6a6 Ability to pass the name of module to use for an adaptor. Specifically for case where a module contains multiple adaptors 2014-05-23 18:42:29 -07:00
Andrew Stewart c22ef95239 Remove Logger from global namespace 2014-05-13 19:44:40 -07:00
Andrew Stewart c99ce6571f Remove node-namespace from DigitalPin 2014-05-13 18:31:25 -07:00
Andrew Stewart 17a0a5d08f Remove node-namespace from Config 2014-05-13 18:14:36 -07:00
Andrew Stewart f20ae55bf6 Remove node-namespace from Robot 2014-05-08 08:57:20 -07:00
Andrew Stewart 7bab3ff65f Remove node-namespace from Connection 2014-05-07 08:38:06 -07:00
Andrew Stewart f8e546a6e0 Remove node-namespace from Device 2014-05-06 19:18:13 -07:00
edgarsilva de360ba2b3 Add error handler for devices that fail to initialize.
Do not start work if devices fail to initialize and throw err insted.
2014-04-01 17:53:34 -06:00
Andrew Stewart 2563e62de4 Catch MODULE_NOT_FOUND errors, throw others 2014-04-01 10:30:14 -07:00
Andrew Stewart 337074f34f Add friendlier errors when no adaptor/driver found 2014-03-26 14:32:52 -07:00
Andrew Stewart f9537d9af8 Rename #stop to #halt to avoid potential conflicts 2014-03-11 10:44:11 -07:00
Andrew Stewart c0c4ce6958 Small changes to appease JSHint 2014-03-07 23:33:59 -08:00
Andrew Stewart d8de60a02d Clean up var declarations in robot.js 2014-03-03 14:33:29 -08:00
Andrew Stewart ef3aaf6591 Clean up initialization methods for adaptors/drivers 2014-02-28 20:50:45 -08:00
Andrew Stewart 5650ce1d60 Clean up starter and #stop functions 2014-02-28 20:37:23 -08:00
Andrew Stewart 862a3702b7 Refactor device/connection initialization methods 2014-02-28 20:30:12 -08:00
Andrew Stewart 89baebd3c1 Refactor #data method 2014-02-28 12:22:32 -08:00
Andrew Stewart 1ee35f1487 Clean up constructor 2014-02-28 12:13:19 -08:00
Andrew Stewart cdd3f3310a Remove trailing whitespace 2014-02-27 17:39:02 -08:00
xixebombilla 8644399276 210 comments JS 2014-02-27 16:42:33 -06:00
deadprogram 452f07d4ab Refactor port & robot to pure JS style 2014-02-27 11:17:02 -08:00
deadprogram b27756abfc WIP on pure JS revamp 2014-02-27 06:44:53 -08:00