GitHub PullRequestReviewCommentEvent at 2014-07-15 06:51:51
Repository: openrov-software
Actor: codewithpassion
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/OpenROV/openrov-software/pulls/comments/14919479","id":14919479,"diff_hunk":"@@ -45,6 +45,263 @@\n     }, SAMPLE_PERIOD);\n     this.listen();\n \n+    // =============== input settings =============\n+    // Lasers\n+    rov.cockpit.emit('inputController.register',\n+      [\n+        {\n+          name: \"rovPilot.laserToggle\",\n+          description: \"Toggles the lasers on or off.\",\n+          defaults: { keyboard: 'l' },\n+          down: function() { rov.cockpit.emit('rovpilot.toggleLasers'); }\n+        },\n+\n+        // lights increment\n+        {\n+          name: \"rovPilot.adjustLights_increment\",\n+          description: \"Makes the ROV lights brighter.\",\n+          defaults: { keyboard: 'p', gamepad: 'DPAD_UP' },\n+          down: function() { rov.cockpit.emit('rovpilot.adjustLights', 0.1); }\n+        },\n+\n+        // lights decrement\n+        {\n+          name: \"rovPilot.adjustLights_decrement\",\n+          description: \"Makes the ROV lights dimmer.\",\n+          defaults: { keyboard: 'o', gamepad: 'DPAD_DOWN' },\n+\n+          down: function() { rov.cockpit.emit('rovpilot.adjustLights', -0.1); }\n+        },\n+\n+        // lights toggle\n+        {\n+          name: \"rovPilot.toggleLights\",\n+          description: \"Toggles the ROV lights on/off.\",\n+          defaults: { keyboard: 'i' },\n+          down: function() { rov.cockpit.emit('rovpilot.toggleLights'); }\n+        },\n+\n+        // camera up/centre/down\n+        {\n+          name: \"rovPilot.adjustCameraTilt_down\",\n+          description: \"Point the camera further down.\",\n+          defaults: { keyboard: 'z', gamepad: 'Y' },\n+          down: function() { rov.cockpit.emit('rovpilot.adjustCameraTilt', 0.1); }\n+        },\n+        {\n+          name: \"rovPilot.adjustCameraTilt_centre\",\n+          description: \"Point the camera straight ahead.\",\n+          defaults: { keyboard: 'a', gamepad: 'B' },\n+          down: function() { rov.cockpit.emit('rovpilot.setCameraTilt', 0); }\n+        },\n+        {\n+          name: \"rovPilot.adjustCameraTilt_up\",\n+          description: \"Point the camera further up.\",\n+          defaults: { keyboard: 'q', gamepad: 'A' },\n+          down: function() { rov.cockpit.emit('rovpilot.adjustCameraTilt', -0.1); }\n+        },\n+\n+        // All Trim hold toggle\n+        {\n+          name: \"rovPilot.toogleAllTrimHold\",\n+          description: \"Toogle all trim hold functions on/off\",\n+          defaults: { gamepad: 'RB' },\n+          down: function() { rov.cockpit.emit('rovpilot.toggleAllTrimHold'); }\n+        },\n+\n+        // Increment power level\n+        {\n+          name: \"rovPilot.toogleIncrementPowerLevel\",\n+          description: \"Increment the thruster power level\",\n+          defaults: { gamepad: 'START' },\n+          down: function() { rov.cockpit.emit('rovpilot.incrimentPowerLevel'); }\n+        },\n+\n+        // All Stop\n+        {\n+          name: \"rovPilot.allStop\",\n+          description: \"Stop all motor action\",\n+          defaults: { keyboard: 'space' /*space*/ },\n+          down: function() { rov.cockpit.emit('rovpilot.allStop'); }\n+        },\n+\n+        // Up / Forward\n+        {\n+          name: \"rovPilot.moveForward\",\n+          description: \"Set throttle forward.\",\n+          defaults: { keyboard: 'up' },\n+          down: function() { rov.cockpit.emit('rovpilot.setThrottle', 1);},\n+          up: function() { rov.cockpit.emit('rovpilot.setThrottle', 0); }\n+        },\n+\n+        // Throttle axis\n+        {\n+          name: \"rovPilot.moveThrottle\",\n+          description: \"Set throttle via axis input.\",\n+          defaults: { gamepad: 'LEFT_STICK_Y' },\n+          axis: function (v) { rov.cockpit.emit('rovpilot.setThrottle', -1 * v); }\n+        },\n+\n+      // Down / Backwards\n+        {\n+          name: \"rovPilot.moveBackwards\",\n+          description: \"Set throttle backwards (aft).\",\n+          defaults: { keyboard: 'down' },\n+          down: function() { rov.cockpit.emit('rovpilot.setThrottle', -1); },\n+          up: function() { rov.cockpit.emit('rovpilot.setThrottle', 0); }\n+        },\n+\n+        // yaw\n+        {\n+          name: \"rovPilot.moveYaw\",\n+          description: \"Turn the ROV via axis input.\",\n+          defaults: { gamepad: 'LEFT_STICK_X' },\n+          axis: function (v) { rov.cockpit.emit('rovpilot.setYaw', v); }\n+        },\n+\n+        // left\n+        {\n+          name: \"rovPilot.moveLeft\",\n+          description: \"Turn the ROV to the port side (left).\",\n+          defaults: { keyboard: 'left' },\n+          down: function() { rov.cockpit.emit('rovpilot.setYaw', -1); },\n+          up: function() { rov.cockpit.emit('rovpilot.setYaw', 0); }\n+        },\n+\n+        // right\n+        {\n+          name: \"rovPilot.moveRight\",\n+          description: \"Turn the ROV to the starboard side (right).\",\n+          defaults: { keyboard: 'right' },\n+          down: function() { rov.cockpit.emit('rovpilot.setYaw', 1); },\n+          up: function() { rov.cockpit.emit('rovpilot.setYaw', 0); }\n+        },\n+\n+        // lift axis\n+        {\n+          name: \"rovPilot.moveLift\",\n+          description: \"Bring the ROV shallower or deeper via axis input.\",\n+          defaults: { gamepad: 'RIGHT_STICK_Y' },\n+          axis: function (v) { rov.cockpit.emit('rovpilot.setLift', -1 * v); }\n+        },\n+        // Lift up\n+        {\n+          name: \"rovPilot.moveUp\",\n+          description: \"Bring the ROV shallower (up).\",\n+          defaults: { keyboard: 'shift' },\n+          down: function() { rov.cockpit.emit('rovpilot.setLift', -1); },\n+          up: function() { rov.cockpit.emit('rovpilot.setLift', 0); }\n+        },\n+        // Push down\n+        {\n+          name: \"rovPilot.moveDown\",\n+          description: \"Bring the ROV deeper (down).\",\n+          defaults: { keyboard: 'ctrl' },\n+          down: function() { rov.cockpit.emit('rovpilot.setLift', 1); },\n+          up: function() { rov.cockpit.emit('rovpilot.setLift', 0); }\n+        },\n+\n+        // power level 1\n+        {\n+          name: \"rovPilot.powerLevel1\",\n+          description: \"Set the power level of the ROV to level 1.\",\n+          defaults: { keyboard: '1' },\n+          down: function() { rov.cockpit.emit('rovpilot.powerLevel', 1); }\n+        },\n+        // power level 2\n+        {\n+          name: \"rovPilot.powerLevel2\",\n+          description: \"Set the power level of the ROV to level 2.\",\n+          defaults: { keyboard: '2' },\n+          down: function() { rov.cockpit.emit('rovpilot.powerLevel', 2); }\n+        },\n+        // power level 3\n+        {\n+          name: \"rovPilot.powerLevel3\",\n+          description: \"Set the power level of the ROV to level 3.\",\n+          defaults: { keyboard: '3' },\n+          down: function() { rov.cockpit.emit('rovpilot.powerLevel', 3); }\n+        },\n+        // power level 4\n+        {\n+          name: \"rovPilot.powerLevel4\",\n+          description: \"Set the power level of the ROV to level 4.\",\n+          defaults: { keyboard: '4' },\n+          down: function() { rov.cockpit.emit('rovpilot.powerLevel', 4); }\n+        },\n+        // power level 5\n+        {\n+          name: \"rovPilot.powerLevel5\",\n+          description: \"Set the power level of the ROV to level 5.\",\n+          defaults: { keyboard: '5' },\n+          down: function() { rov.cockpit.emit('rovpilot.powerLevel', 5); }\n+        },\n+\n+        // vtrim +\n+        {\n+          name: \"rovPilot.adjustVerticleTrim_increase\",\n+          description: \"Increase the vertical trim\",\n+          defaults: { keyboard: '7' },\n+          down: function() { rov.cockpit.emit('rovpilot.adjustVerticleTrim', 1); }\n+        },\n+\n+        // vtrim -\n+        {\n+          name: \"rovPilot.adjustVerticleTrim_decrease\",\n+          description: \"Decrease the vertical trim\",\n+          defaults: { keyboard: '8' },\n+          down: function() { rov.cockpit.emit('rovpilot.adjustVerticleTrim', -1); }\n+        },\n+\n+        // ttrim +\n+        {\n+          name: \"rovPilot.adjustThrottleTrim_increase\",\n+          description: \"Increase the throttle trim\",\n+          defaults: { keyboard: '-' },\n+          down: function() { rov.cockpit.emit('rovpilot.adjustThrottleTrim', -1); }\n+        },\n+\n+        // ttrim -\n+        {\n+          name: \"rovPilot.adjustThrottleTrim_decrease\",\n+          description: \"Decrease the Throttle trim\",\n+          defaults: { keyboard: '0' },","path":"src/plugins/rovpilot/public/js/rovpilot.js","position":224,"original_position":224,"commit_id":"fcfa6b99750f61351ce3cf7040cc045be4558ff1","original_commit_id":"fcfa6b99750f61351ce3cf7040cc045be4558ff1","user":{"login":"codewithpassion","id":1607486,"avatar_url":"https://avatars.githubusercontent.com/u/1607486?","gravatar_id":"14621a1e0ff6d4b67de0c4c830351adb","url":"https://api.github.com/users/codewithpassion","html_url":"https://github.com/codewithpassion","followers_url":"https://api.github.com/users/codewithpassion/followers","following_url":"https://api.github.com/users/codewithpassion/following{/other_user}","gists_url":"https://api.github.com/users/codewithpassion/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithpassion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithpassion/subscriptions","organizations_url":"https://api.github.com/users/codewithpassion/orgs","repos_url":"https://api.github.com/users/codewithpassion/repos","events_url":"https://api.github.com/users/codewithpassion/events{/privacy}","received_events_url":"https://api.github.com/users/codewithpassion/received_events","type":"User","site_admin":false},"body":"Probably a copy/past error. Wasn't on purpose.\r\nOn Jul 15, 2014 8:38 AM, \"badevguru\" <notifications@github.com> wrote:\r\n\r\n> In src/plugins/rovpilot/public/js/rovpilot.js:\r\n>\r\n> > +          down: function() { rov.cockpit.emit('rovpilot.adjustVerticleTrim', -1); }\r\n> > +        },\r\n> > +\r\n> > +        // ttrim +\r\n> > +        {\r\n> > +          name: \"rovPilot.adjustThrottleTrim_increase\",\r\n> > +          description: \"Increase the throttle trim\",\r\n> > +          defaults: { keyboard: '-' },\r\n> > +          down: function() { rov.cockpit.emit('rovpilot.adjustThrottleTrim', -1); }\r\n> > +        },\r\n> > +\r\n> > +        // ttrim -\r\n> > +        {\r\n> > +          name: \"rovPilot.adjustThrottleTrim_decrease\",\r\n> > +          description: \"Decrease the Throttle trim\",\r\n> > +          defaults: { keyboard: '0' },\r\n>\r\n> This was keyboard 9 before. Did you move to 0 on purpose?\r\n>\r\n> —\r\n> Reply to this email directly or view it on GitHub\r\n> <https://github.com/OpenROV/openrov-software/pull/255/files#r14919219>.\r\n>","created_at":"2014-07-15T06:51:51Z","updated_at":"2014-07-15T06:51:51Z","html_url":"https://github.com/OpenROV/openrov-software/pull/255#discussion_r14919479","pull_request_url":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255","_links":{"self":{"href":"https://api.github.com/repos/OpenROV/openrov-software/pulls/comments/14919479"},"html":{"href":"https://github.com/OpenROV/openrov-software/pull/255#discussion_r14919479"},"pull_request":{"href":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255"}}},"pull_request":{"url":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255","id":18221633,"html_url":"https://github.com/OpenROV/openrov-software/pull/255","diff_url":"https://github.com/OpenROV/openrov-software/pull/255.diff","patch_url":"https://github.com/OpenROV/openrov-software/pull/255.patch","issue_url":"https://api.github.com/repos/OpenROV/openrov-software/issues/255","number":255,"state":"open","title":"Feature/253 centralised input controller (fixes #253)","user":{"login":"codewithpassion","id":1607486,"avatar_url":"https://avatars.githubusercontent.com/u/1607486?","gravatar_id":"14621a1e0ff6d4b67de0c4c830351adb","url":"https://api.github.com/users/codewithpassion","html_url":"https://github.com/codewithpassion","followers_url":"https://api.github.com/users/codewithpassion/followers","following_url":"https://api.github.com/users/codewithpassion/following{/other_user}","gists_url":"https://api.github.com/users/codewithpassion/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithpassion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithpassion/subscriptions","organizations_url":"https://api.github.com/users/codewithpassion/orgs","repos_url":"https://api.github.com/users/codewithpassion/repos","events_url":"https://api.github.com/users/codewithpassion/events{/privacy}","received_events_url":"https://api.github.com/users/codewithpassion/received_events","type":"User","site_admin":false},"body":"## TL;DR\r\nTo simplify the wiring of keyboard and gamepad and to lay the base for a user configurable keyboard/gamepad mapping, this CR introduces a input controller.\r\n\r\n## A few things to note:\r\n* introduction of namespaces (so far used only in the input controller system plugin) to prevent possible name clashes. see the utilities.js\r\n* Creation of a 'system-plugins' structure for components that are central to the software but need to be loaded prior to plugins. The same mechanisms as loading plugins are used for the system plugins.\r\n* There are no global variables for the gamepad and keyboard anymore\r\n* if the same keynboard or gamepad mapping is registered again, the first one is overriden.\r\n* It's possible to register keycombinations for the keyboard and, to some extent, for the gamepad (used for the heads-up-menu that will be added in a subsequent PR)\r\n\r\n## How to register controls\r\nRegistration of controls is done through a emitted event: \r\n\r\n    this.cockpit.emit('inputController.register',\r\n      {\r\n        name: \"example.keyBoardMapping\",\r\n        description: \"Example for keymapping.\",\r\n        defaults: { keyboard: 'alt+0', gamepad: 'X' },\r\n        down: function() { console.log('0 down'); },\r\n        up: function() { console.log('0 up'); }\r\n      });\r\n\r\nThis registers a mapping for the keyboard (keycombination alt+0) and a gamepad mapping button X.\r\n\r\n__The 'register' function can accept a single object or a object array!__\r\n\r\nFor more examples, see the RovPilot.js file.\r\n\r\n## Unregistering\r\nFor the Tankcontrol we needed a way to override and unregister (aka reapply old bindings) commands.\r\n\r\nTo override a given command, simply register a new command.\r\nTo unregister use:\r\n     \r\n      rov.cockpit.emit('inputController.unregister', ['example.keyBoardMapping', 'example.keyBoardMapping2']);\r\n \r\n__The 'unregister' function can accept a single string or a string array!__\r\n\r\nAfter the unregistration, the InputController will reapply all other bindings automatically.\r\n","created_at":"2014-07-10T14:14:36Z","updated_at":"2014-07-15T06:51:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"358cb2ec180a00b20fa7ce9c0767ce3c41382e6a","assignee":{"login":"BrianAdams","id":1471826,"avatar_url":"https://avatars.githubusercontent.com/u/1471826?","gravatar_id":"78df2a095cefe46f3bd2396aef489845","url":"https://api.github.com/users/BrianAdams","html_url":"https://github.com/BrianAdams","followers_url":"https://api.github.com/users/BrianAdams/followers","following_url":"https://api.github.com/users/BrianAdams/following{/other_user}","gists_url":"https://api.github.com/users/BrianAdams/gists{/gist_id}","starred_url":"https://api.github.com/users/BrianAdams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BrianAdams/subscriptions","organizations_url":"https://api.github.com/users/BrianAdams/orgs","repos_url":"https://api.github.com/users/BrianAdams/repos","events_url":"https://api.github.com/users/BrianAdams/events{/privacy}","received_events_url":"https://api.github.com/users/BrianAdams/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255/commits","review_comments_url":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255/comments","review_comment_url":"https://api.github.com/repos/OpenROV/openrov-software/pulls/comments/{number}","comments_url":"https://api.github.com/repos/OpenROV/openrov-software/issues/255/comments","statuses_url":"https://api.github.com/repos/OpenROV/openrov-software/statuses/fcfa6b99750f61351ce3cf7040cc045be4558ff1","head":{"label":"codewithpassion:feature/253-centralised-input-controller","ref":"feature/253-centralised-input-controller","sha":"fcfa6b99750f61351ce3cf7040cc045be4558ff1","user":{"login":"codewithpassion","id":1607486,"avatar_url":"https://avatars.githubusercontent.com/u/1607486?","gravatar_id":"14621a1e0ff6d4b67de0c4c830351adb","url":"https://api.github.com/users/codewithpassion","html_url":"https://github.com/codewithpassion","followers_url":"https://api.github.com/users/codewithpassion/followers","following_url":"https://api.github.com/users/codewithpassion/following{/other_user}","gists_url":"https://api.github.com/users/codewithpassion/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithpassion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithpassion/subscriptions","organizations_url":"https://api.github.com/users/codewithpassion/orgs","repos_url":"https://api.github.com/users/codewithpassion/repos","events_url":"https://api.github.com/users/codewithpassion/events{/privacy}","received_events_url":"https://api.github.com/users/codewithpassion/received_events","type":"User","site_admin":false},"repo":{"id":5093012,"name":"openrov-software","full_name":"codewithpassion/openrov-software","owner":{"login":"codewithpassion","id":1607486,"avatar_url":"https://avatars.githubusercontent.com/u/1607486?","gravatar_id":"14621a1e0ff6d4b67de0c4c830351adb","url":"https://api.github.com/users/codewithpassion","html_url":"https://github.com/codewithpassion","followers_url":"https://api.github.com/users/codewithpassion/followers","following_url":"https://api.github.com/users/codewithpassion/following{/other_user}","gists_url":"https://api.github.com/users/codewithpassion/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithpassion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithpassion/subscriptions","organizations_url":"https://api.github.com/users/codewithpassion/orgs","repos_url":"https://api.github.com/users/codewithpassion/repos","events_url":"https://api.github.com/users/codewithpassion/events{/privacy}","received_events_url":"https://api.github.com/users/codewithpassion/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/codewithpassion/openrov-software","description":"","fork":true,"url":"https://api.github.com/repos/codewithpassion/openrov-software","forks_url":"https://api.github.com/repos/codewithpassion/openrov-software/forks","keys_url":"https://api.github.com/repos/codewithpassion/openrov-software/keys{/key_id}","collaborators_url":"https://api.github.com/repos/codewithpassion/openrov-software/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/codewithpassion/openrov-software/teams","hooks_url":"https://api.github.com/repos/codewithpassion/openrov-software/hooks","issue_events_url":"https://api.github.com/repos/codewithpassion/openrov-software/issues/events{/number}","events_url":"https://api.github.com/repos/codewithpassion/openrov-software/events","assignees_url":"https://api.github.com/repos/codewithpassion/openrov-software/assignees{/user}","branches_url":"https://api.github.com/repos/codewithpassion/openrov-software/branches{/branch}","tags_url":"https://api.github.com/repos/codewithpassion/openrov-software/tags","blobs_url":"https://api.github.com/repos/codewithpassion/openrov-software/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/codewithpassion/openrov-software/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/codewithpassion/openrov-software/git/refs{/sha}","trees_url":"https://api.github.com/repos/codewithpassion/openrov-software/git/trees{/sha}","statuses_url":"https://api.github.com/repos/codewithpassion/openrov-software/statuses/{sha}","languages_url":"https://api.github.com/repos/codewithpassion/openrov-software/languages","stargazers_url":"https://api.github.com/repos/codewithpassion/openrov-software/stargazers","contributors_url":"https://api.github.com/repos/codewithpassion/openrov-software/contributors","subscribers_url":"https://api.github.com/repos/codewithpassion/openrov-software/subscribers","subscription_url":"https://api.github.com/repos/codewithpassion/openrov-software/subscription","commits_url":"https://api.github.com/repos/codewithpassion/openrov-software/commits{/sha}","git_commits_url":"https://api.github.com/repos/codewithpassion/openrov-software/git/commits{/sha}","comments_url":"https://api.github.com/repos/codewithpassion/openrov-software/comments{/number}","issue_comment_url":"https://api.github.com/repos/codewithpassion/openrov-software/issues/comments/{number}","contents_url":"https://api.github.com/repos/codewithpassion/openrov-software/contents/{+path}","compare_url":"https://api.github.com/repos/codewithpassion/openrov-software/compare/{base}...{head}","merges_url":"https://api.github.com/repos/codewithpassion/openrov-software/merges","archive_url":"https://api.github.com/repos/codewithpassion/openrov-software/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/codewithpassion/openrov-software/downloads","issues_url":"https://api.github.com/repos/codewithpassion/openrov-software/issues{/number}","pulls_url":"https://api.github.com/repos/codewithpassion/openrov-software/pulls{/number}","milestones_url":"https://api.github.com/repos/codewithpassion/openrov-software/milestones{/number}","notifications_url":"https://api.github.com/repos/codewithpassion/openrov-software/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/codewithpassion/openrov-software/labels{/name}","releases_url":"https://api.github.com/repos/codewithpassion/openrov-software/releases{/id}","created_at":"2012-07-18T07:27:39Z","updated_at":"2014-07-09T22:56:02Z","pushed_at":"2014-07-15T00:08:28Z","git_url":"git://github.com/codewithpassion/openrov-software.git","ssh_url":"git@github.com:codewithpassion/openrov-software.git","clone_url":"https://github.com/codewithpassion/openrov-software.git","svn_url":"https://github.com/codewithpassion/openrov-software","homepage":"openrov.com","size":29657,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"OpenROV:master","ref":"master","sha":"a77b868f0cf641a7ac6707e9f30c924b305885b0","user":{"login":"OpenROV","id":1270394,"avatar_url":"https://avatars.githubusercontent.com/u/1270394?","gravatar_id":"7458c67ad3d51d1a199f5491b2e0968c","url":"https://api.github.com/users/OpenROV","html_url":"https://github.com/OpenROV","followers_url":"https://api.github.com/users/OpenROV/followers","following_url":"https://api.github.com/users/OpenROV/following{/other_user}","gists_url":"https://api.github.com/users/OpenROV/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenROV/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenROV/subscriptions","organizations_url":"https://api.github.com/users/OpenROV/orgs","repos_url":"https://api.github.com/users/OpenROV/repos","events_url":"https://api.github.com/users/OpenROV/events{/privacy}","received_events_url":"https://api.github.com/users/OpenROV/received_events","type":"Organization","site_admin":false},"repo":{"id":3070288,"name":"openrov-software","full_name":"OpenROV/openrov-software","owner":{"login":"OpenROV","id":1270394,"avatar_url":"https://avatars.githubusercontent.com/u/1270394?","gravatar_id":"7458c67ad3d51d1a199f5491b2e0968c","url":"https://api.github.com/users/OpenROV","html_url":"https://github.com/OpenROV","followers_url":"https://api.github.com/users/OpenROV/followers","following_url":"https://api.github.com/users/OpenROV/following{/other_user}","gists_url":"https://api.github.com/users/OpenROV/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenROV/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenROV/subscriptions","organizations_url":"https://api.github.com/users/OpenROV/orgs","repos_url":"https://api.github.com/users/OpenROV/repos","events_url":"https://api.github.com/users/OpenROV/events{/privacy}","received_events_url":"https://api.github.com/users/OpenROV/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenROV/openrov-software","description":"Software for OpenROV. Includes arduino code and node.js code running on the BeagleBone.","fork":false,"url":"https://api.github.com/repos/OpenROV/openrov-software","forks_url":"https://api.github.com/repos/OpenROV/openrov-software/forks","keys_url":"https://api.github.com/repos/OpenROV/openrov-software/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenROV/openrov-software/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenROV/openrov-software/teams","hooks_url":"https://api.github.com/repos/OpenROV/openrov-software/hooks","issue_events_url":"https://api.github.com/repos/OpenROV/openrov-software/issues/events{/number}","events_url":"https://api.github.com/repos/OpenROV/openrov-software/events","assignees_url":"https://api.github.com/repos/OpenROV/openrov-software/assignees{/user}","branches_url":"https://api.github.com/repos/OpenROV/openrov-software/branches{/branch}","tags_url":"https://api.github.com/repos/OpenROV/openrov-software/tags","blobs_url":"https://api.github.com/repos/OpenROV/openrov-software/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenROV/openrov-software/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenROV/openrov-software/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenROV/openrov-software/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenROV/openrov-software/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenROV/openrov-software/languages","stargazers_url":"https://api.github.com/repos/OpenROV/openrov-software/stargazers","contributors_url":"https://api.github.com/repos/OpenROV/openrov-software/contributors","subscribers_url":"https://api.github.com/repos/OpenROV/openrov-software/subscribers","subscription_url":"https://api.github.com/repos/OpenROV/openrov-software/subscription","commits_url":"https://api.github.com/repos/OpenROV/openrov-software/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenROV/openrov-software/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenROV/openrov-software/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenROV/openrov-software/issues/comments/{number}","contents_url":"https://api.github.com/repos/OpenROV/openrov-software/contents/{+path}","compare_url":"https://api.github.com/repos/OpenROV/openrov-software/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenROV/openrov-software/merges","archive_url":"https://api.github.com/repos/OpenROV/openrov-software/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenROV/openrov-software/downloads","issues_url":"https://api.github.com/repos/OpenROV/openrov-software/issues{/number}","pulls_url":"https://api.github.com/repos/OpenROV/openrov-software/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenROV/openrov-software/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenROV/openrov-software/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenROV/openrov-software/labels{/name}","releases_url":"https://api.github.com/repos/OpenROV/openrov-software/releases{/id}","created_at":"2011-12-29T18:38:37Z","updated_at":"2014-07-12T16:46:01Z","pushed_at":"2014-07-09T21:43:52Z","git_url":"git://github.com/OpenROV/openrov-software.git","ssh_url":"git@github.com:OpenROV/openrov-software.git","clone_url":"https://github.com/OpenROV/openrov-software.git","svn_url":"https://github.com/OpenROV/openrov-software","homepage":"openrov.com","size":30163,"stargazers_count":133,"watchers_count":133,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":67,"mirror_url":null,"open_issues_count":63,"forks":67,"open_issues":63,"watchers":133,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255"},"html":{"href":"https://github.com/OpenROV/openrov-software/pull/255"},"issue":{"href":"https://api.github.com/repos/OpenROV/openrov-software/issues/255"},"comments":{"href":"https://api.github.com/repos/OpenROV/openrov-software/issues/255/comments"},"review_comments":{"href":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255/comments"},"review_comment":{"href":"https://api.github.com/repos/OpenROV/openrov-software/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/OpenROV/openrov-software/pulls/255/commits"},"statuses":{"href":"https://api.github.com/repos/OpenROV/openrov-software/statuses/fcfa6b99750f61351ce3cf7040cc045be4558ff1"}}}}