Commit Graph

359 Commits

Author SHA1 Message Date
Edgar Silva 1eabab6ec9 WIP: Change noop to use anonymous function and added tests. 2014-07-03 13:42:43 -05:00
Andrew Stewart f0d8b0360b Remove `self` references in favor of #bind 2014-07-03 09:35:24 -07:00
Edgar Silva ed8d6faeee Chance Adaptor#noop for Adaptor#_noop. 2014-07-02 20:06:40 -05:00
Edgar Silva afa7fe7495 Adds noop function to base adaptor. 2014-07-02 19:42:39 -05:00
Edgar Silva c4b10e66f4 Merge branch 'master' into servo-level-up 2014-07-02 17:05:15 -05:00
Andrew Stewart 5ce0d37640 Stop using #fetch here for now, it just breaks tests 2014-06-24 10:37:59 -07:00
Andrew Stewart 5974eb80cd Just use arguments directly instead of array 2014-06-18 16:02:54 -07:00
Andrew Stewart a9b874a917 Merge branch 'master' into dev
* master:
  Bump version to 0.15.1
  Only require the API/Express when using it
2014-06-18 15:19:53 -07:00
Andrew Stewart 856619e902 Only require the API/Express when using it
Fixes an issue with the Tessel, which cannot load Express.
2014-06-18 14:44:46 -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 6fa87fbf7c Consolidate logstring generation into private fn 2014-06-17 19:18:12 -07:00
Andrew Stewart e8520e3de2 Experiment with Utils.fetch in Driver class 2014-06-17 19:15:38 -07:00
Andrew Stewart 6f42b061b3 Add #fetch Utility function
The #fetch utility acts in (roughly) the same way as Ruby's Hash#fetch function.
This addition should hopefully make constructors more rigorous and help to
prevent a few classes of errors.
2014-06-17 16:02:54 -07:00
Andrew Stewart af8cfbe333 Fix JSHint errors 2014-06-16 13:09:13 -07:00
Andrew Stewart ca749fd03e Fix an edge case and improve tests for API 2014-06-16 12:22:11 -07:00
Andrew Stewart 587efe2fee Rename API variables for less confusion
api.express => the Express instance
api.server  => the actual server (@express or a https.Server instance)
2014-06-16 08:44:52 -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
edgarsilva 0869909521 Updated fromScale util to return top or bottom of scale, updated specs to reflect new fromScale behavior. 2014-06-11 16:32:40 -05:00
Andrew Stewart 9e1ffad6f6 Add more tests for BasicLogger class 2014-06-10 19:05:41 -07:00
Andrew Stewart 9bbc7faf5e Misc. JSHint-suggested cleanups in BasicLogger 2014-06-10 18:50:10 -07:00
Andrew Stewart 682bfc6536 Add missing semicolon to appease JSHint 2014-06-10 18:45:08 -07:00
Andrew Stewart f797cf4c48 Misc. cleanup in Basestar 2014-06-10 18:44:40 -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 3b312def0d Small cleanups in Device 2014-06-10 18:19:04 -07:00
Andrew Stewart 8d3c89076d Allow easier extension in subclasses w/ prototypes 2014-06-10 14:18:35 -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 9406fddaad Use same formatting for all log strings 2014-06-10 11:33:52 -07:00
Ron Evans 17c1d4609f Merge pull request #198 from hybridgroup/refactor/robot
Robot Refactors
2014-06-10 13:52:00 -04:00
Andrew Stewart 0517942253 Remove the 'connect' and 'start' events
These events are being removed, as they're essentially useless in most cases, as
the events will already have been emitted before the work block is run to set up
handlers for them.
2014-06-10 09:20:23 -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
edgarsilva 8c46aea525 Fix typo in IO utils. 2014-06-09 13:34:49 -05:00
Andrew Stewart b1d7dd8186 Generate BasicLogger methods, rather than duplicating code 2014-06-06 17:09:22 -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 af4bbd963b Clean up API implementation using middleware 2014-06-06 13:52:55 -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 2b5e991ef3 Clean up some of the utility functions 2014-06-05 16:30:05 -07:00
Edgar Silva a60f16b8ea Fix typo in utils param name. 2014-06-05 14:47:48 -05: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 789347f6f8 Improve inline docs for Utils functions 2014-06-05 09:32:20 -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
Andrew Stewart 9b352feeae Move API command param parsing to middleware 2014-06-04 15:54:23 -07:00
Andrew Stewart ac0a69e63f Move API routes to their own file 2014-06-04 13:39:30 -07:00
Andrew Stewart 789ce02ad0 Organize server creation into new function 2014-06-04 13:21:15 -07:00
Andrew Stewart a4cfc4b8ec Improve authentication middleware mounting 2014-06-04 13:17:17 -07:00
Andrew Stewart 5e21c52b95 Add mock request/response classes for testing 2014-06-04 12:51:35 -07:00
Andrew Stewart 014574a545 Move SSL certs to live under api dir 2014-06-04 11:58:54 -07:00
Andrew Stewart 6bc1e9d944 Move configuration to API class 2014-06-04 11:51:07 -07:00
Andrew Stewart e08a5df88b Bump Express version to 4.4.1 2014-06-04 11:06:02 -07:00
edgarsilva 62d4ef620e Fix typos in new sero IO util. 2014-06-02 18:02:02 -05:00
Edgar Silva 293594355c WIP on sero utils 2014-06-02 15:45:42 -05: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 43a9351921 Convert Cylon.Master to a plain JS object
Acts exactly the same with much, much less code complexity.

This also introduces a pattern for providing core modules to external libraries.

Whereas previously Cylon modules were able to rely on Cylon.Adaptor or
Cylon.Driver being present in the namespace (due to being required in
./lib/cylon), they will now need to require Cylon first, like this:

    var Cylon = require('cylon');

    var Driver = Cylon.Driver,
        Adaptor = Cylon.Adaptor,
        DigitalPin = Cylon.IO.DigitalPin;
2014-05-13 19:20:54 -07:00
Andrew Stewart 1e44224660 Refactor Logger 2014-05-13 19:05:01 -07:00
Andrew Stewart c99ce6571f Remove node-namespace from DigitalPin 2014-05-13 18:31:25 -07:00
Andrew Stewart 2cca04873d Remove node-namespace from Utils 2014-05-13 18:25:31 -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 a3974f38b7 Remove node-namespace from API 2014-05-07 15:19:23 -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
Andrew Stewart d46de63379 Remove node-namespace from Test Drivers/Adaptors 2014-05-06 18:56:13 -07:00
Andrew Stewart c8cb7f0e40 Remove node-namespace from Driver 2014-05-06 18:24:43 -07:00
Andrew Stewart 637bce0e6d Remove node-namespace from Adaptor 2014-05-06 18:19:56 -07:00
Andrew Stewart a9ae09bdce Remove Basestar from global scope 2014-04-24 16:31:58 -06:00
Andrew Stewart dc09be6bcc Remove class cruft and namespace from Basestar 2014-04-24 13:43:00 -06:00
Javier Cervantes 3caeb47b3a Removing unused requires 2014-04-24 11:25:56 -05:00
Javier Cervantes f05025ba68 Removing wrong conditional in api 2014-04-24 11:25:45 -05:00
Javier Cervantes 394691a8f2 Refactoring api optional ssl logic 2014-04-24 11:18:20 -05:00
Javier Cervantes 956e757e8e Updating ssl configuration keys and tests 2014-04-24 10:14:02 -05:00
Javier Cervantes 40b3db1dce Changing how ssl is configured
Expected configuration:

{
  ssl: {
    key: "/path/to/key",
    cert: "/path/to/cert"
  }
}

If ssl is false, use plain HTTP. If it's an empty object (the default)
use our self-signed certs. If it's set up like above, use the provided
certs.
2014-04-23 17:56:42 -05:00
Javier Cervantes 8f746f1d27 Renaming https to generic node 2014-04-23 17:55:42 -05:00
Javier Cervantes cc3dac9442 Adding optional ssl param in API
By default http is used for api, but you can pass a param to use ssl.

This is the same behaviour that we have currently in robot.
2014-04-23 17:02:25 -05:00
Andrew Stewart e66c1145d5 Simplify Master#api 2014-04-21 16:36:47 -07:00
edgarsilva 938c11872c Bumped version to 0.13.3 2014-04-21 18:15:30 -05:00
edgarsilva 283b05b08a Fixes bug with robot not halting, which caused connections, adaptors and devices to not disconnect. 2014-04-21 17:46:02 -05:00
Andrew Stewart d8152852a0 Correctly kill process 2014-04-14 15:11:07 -07:00
Andrew Stewart fcd771cadc Provide more indication where API is listening 2014-04-14 11:27:48 -07:00
Andrew Stewart c5428d89ab Allow Content-Type header to be set for CORS 2014-04-11 19:23:13 -07:00
Andrew Stewart 9e781a2ea1 Add basic tests for API server and routes 2014-04-11 12:33:32 -07:00
Andrew Stewart 1c56b5942f Implement Server-Sent-Events for device events 2014-04-08 13:21:03 -07:00
Andrew Stewart cf31cfa7b9 Switch from Express-IO to plain Express 2014-04-08 11:52:53 -07:00
Andrew Stewart 4b409f7777 Add CORS param for API config 2014-04-08 10:58:58 -07:00
Andrew Stewart c81740e339 Add basic auth support to API 2014-04-03 16:04:11 -07:00
Andrew Stewart 89a5bbae2f Support passing auth hash to API server 2014-04-03 15:49:13 -07:00
Andrew Stewart 29b7db0de8 Add support for manually specifying cert/key files 2014-04-03 15:03:21 -07:00
Andrew Stewart ea022d3880 Implement HTTPS API with self-signed cert
Switches API to serve all requests over HTTPS, using a self-signed SSL
certificate.
2014-04-03 14:32:56 -07:00
Andrew Stewart 34324dabd5 Clean up API logic 2014-04-03 12:28:27 -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 1cffa6067e Add Utils to global.Cylon namespace, add bootstrap
This commit moves Utils to live in the global Cylon namespace, so they can be
accessed in test suites. This is necessary because Mocha, when setting up for
tests, will override our #after method, making TDR not work if any robots
contain a #after call in their work block.

To fix this, in test setup you can call global.Cylon.Utils.bootstrap();
which will re-setup our globals.
2014-04-01 12:31:13 -07:00
Andrew Stewart 2563e62de4 Catch MODULE_NOT_FOUND errors, throw others 2014-04-01 10:30:14 -07:00
Andrew Stewart 2d11e75434 Remove CLI tooling from Cylon
It now lives in hybridgroup/cylon-cli.
2014-03-27 14:45:36 -07:00
Andrew Stewart 337074f34f Add friendlier errors when no adaptor/driver found 2014-03-26 14:32:52 -07:00
Andrew Stewart 2acc07b443 Fix error with /robots route in API 2014-03-25 10:16:11 -07:00
Andrew Stewart e4c43c0cd5 Remove Port class
Ultimately unnecessary with Cylon, as opposed to Artoo where we do some
interesting/tricky stuff with Socket-To-Serial to make everything work.
2014-03-18 13:41:12 -07:00
Andrew Stewart 70dde8148c Refactor and clean up Cylon.IO.DigitalPin class 2014-03-14 16:06:32 -07:00
Adrian Zankich 1ee0b8b87a Ensure toScale stays within defined range 2014-03-11 18:33:39 -07:00
Andrew Stewart f9537d9af8 Rename #stop to #halt to avoid potential conflicts 2014-03-11 10:44:11 -07:00
Andrew Stewart 4c464f0d88 Remove Math.ceil from #toScale, JS has no integers/floats anyways 2014-03-10 15:25:39 -07:00
Andrew Stewart 3c6696a78f Reorganize Utils for easier testing 2014-03-10 12:00:48 -07:00
Andrew Stewart 56b66bded4 Add/improve specs for Connection class 2014-03-10 09:49:46 -07:00
Andrew Stewart a1b230c62d Added specs for Cylon#findRobotConnection 2014-03-09 19:06:06 -07:00
Andrew Stewart 691547a97f Add specs for Cylon#findRobotDevice 2014-03-09 18:56:42 -07:00
Andrew Stewart c0c4ce6958 Small changes to appease JSHint 2014-03-07 23:33:59 -08:00
Edgar O Silva dc22164c0f Prettyfy. 2014-03-07 18:03:44 -06:00
Edgar O Silva eae946e41f Remove logging. 2014-03-07 15:58:26 -06:00
Edgar O Silva 7412977d47 Remove logging 2014-03-07 15:57:56 -06:00
Edgar O Silva 541c7402ef Refactoring cli commands to make them more friendly and pretty. 2014-03-07 15:57:08 -06:00
Andrew Stewart 9c5d1c3496 Refactor API configuration method 2014-03-04 16:18:51 -08:00
Andrew Stewart 5120c35f7c Provide backing variables instead of functions 2014-03-04 16:10:49 -08:00
Ron Evans d702d1077a Merge pull request #128 from hybridgroup/add-stop-to-connection
Add a stop function to the base connection class.
2014-03-04 08:48:04 -08:00
edgarsilva d54c9419af Add a stop function to the base connection class. 2014-03-04 10:45:19 -06:00
Andrew Stewart 4c5937695b Add Cylon-provided globals to generated .jshintrc files 2014-03-03 14:41:05 -08:00
Andrew Stewart 89f0e43570 Clean up Windows readline-SIGINT support 2014-03-03 14:35:32 -08:00
Andrew Stewart d8de60a02d Clean up var declarations in robot.js 2014-03-03 14:33:29 -08:00
Andrew Stewart d12adc64b1 Clarify license year in generated adaptors 2014-03-03 14:32:01 -08:00
Andrew Stewart 707703cae2 Improve Device specs 2014-03-03 13:54:33 -08:00
Andrew Stewart 79ff3a1233 Clean up Connection and Device classes 2014-03-03 12:43:30 -08:00
deadprogram 182e8c3ee8 Make sure connection's port valid before adaptor init 2014-03-01 00:24:26 -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 f307aad0cd Add global.bind method and tests 2014-02-28 10:31:10 -08:00
Andrew Stewart 3a46ff7848 Minor cleanups in basestar.js 2014-02-27 21:35:12 -08:00
Andrew Stewart 84916f69e3 Add shortcut for defining adaptor/driver events 2014-02-27 21:17:44 -08:00
Andrew Stewart 473e0ab08f Remove 'source loading:' log messages from tests
Not really necessary now that we have actual tracebacks.
2014-02-27 20:59:21 -08:00
Andrew Stewart 520c523971 Refactor Basestar#defineEvent 2014-02-27 18:21:30 -08:00
Andrew Stewart 84f06afa5b Add specs for event proxying 2014-02-27 18:13:21 -08:00
Andrew Stewart cdd3f3310a Remove trailing whitespace 2014-02-27 17:39:02 -08:00
xixebombilla 933c5d2660 210 fix merge files andrew :) 2014-02-27 17:12:29 -06:00
xixebombilla 0067f33505 210 fix merge files 2014-02-27 16:56:11 -06:00
xixebombilla 642c5c8b1e 210 need fix merge 2014-02-27 16:45:14 -06:00
xixebombilla 8644399276 210 comments JS 2014-02-27 16:42:33 -06:00
Andrew Stewart 204bf89685 Remove trailing whitespace 2014-02-27 14:14:51 -08:00
Andrew Stewart df82352a96 Refactor cylon.js 2014-02-27 13:32:05 -08:00
Andrew Stewart bbf4e413d8 Refactor utils.js 2014-02-27 13:32:05 -08:00
Andrew Stewart 599a5bb288 Refactor logger.js 2014-02-27 13:32:05 -08:00
Andrew Stewart 82effb6b64 Merge pull request #121 from hybridgroup/pure-js-cli
Migrate cylon-cli to pure JS.
2014-02-27 12:56:53 -08:00
edgarsilva 655e7c5613 WIP on migrating cylon-cli to pure js. 2014-02-27 14:39:54 -06:00
deadprogram 3694361eea Add comments to adaptor functions 2014-02-27 11:45:09 -08:00
deadprogram 0113091f95 Refactor dogotal pin to pure JS style 2014-02-27 11:28:13 -08:00
deadprogram 452f07d4ab Refactor port & robot to pure JS style 2014-02-27 11:17:02 -08:00
Andrew Stewart ddc24eeca9 Update generator to create pure-JS adaptors 2014-02-27 11:00:35 -08:00
Andrew Stewart ce8107d607 Move generators from src to lib 2014-02-27 11:00:34 -08:00
deadprogram c28baa8eeb Refactor api, basestar & config to pure JS style 2014-02-27 10:58:50 -08:00
Andrew Stewart cc5d3e3335 Update generator to create pure-JS adaptors 2014-02-27 10:46:58 -08:00
deadprogram 30228c7f3c Refactor connection & device to pure JS style 2014-02-27 10:33:43 -08:00
Andrew Stewart 610a6fdf91 Move generators from src to lib 2014-02-27 09:59:41 -08:00
deadprogram 8b88e5dc10 Refactor adaptor & driver to pure JS style 2014-02-27 09:38:38 -08:00
deadprogram 1a63cefd60 Make tests all green, now the real work begins 2014-02-27 06:55:08 -08:00
deadprogram b27756abfc WIP on pure JS revamp 2014-02-27 06:44:53 -08:00