{"action":"created","comment":{"url":"https://api.github.com/repos/3drobotics/Firmware/pulls/comments/60599225","id":60599225,"diff_hunk":"@@ -0,0 +1,389 @@\n+/****************************************************************************\n+ *\n+ * Copyright (c) 2016 PX4 Development Team. All rights reserved.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions\n+ * are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright\n+ *    notice, this list of conditions and the following disclaimer.\n+ * 2. Redistributions in binary form must reproduce the above copyright\n+ *    notice, this list of conditions and the following disclaimer in\n+ *    the documentation and/or other materials provided with the\n+ *    distribution.\n+ * 3. Neither the name PX4 nor the names of its contributors may be\n+ *    used to endorse or promote products derived from this software\n+ *    without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS\n+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ ****************************************************************************/\n+\n+/**\n+ * @file df_isl_wrapper.cpp\n+ * Driver to access the ISL of the DriverFramework.\n+ *\n+ * @author Nicolas de Palezieux <ndepal@gmail.com>\n+ */\n+\n+#include <px4_config.h>\n+\n+#include <sys/types.h>\n+#include <sys/stat.h>\n+#include <stdint.h>\n+#include <stddef.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <math.h>\n+#include <unistd.h>\n+#include <px4_getopt.h>\n+#include <errno.h>\n+#include <string>\n+\n+#include <systemlib/perf_counter.h>\n+#include <systemlib/err.h>\n+\n+#include <drivers/drv_range_finder.h>\n+\n+#include <uORB/uORB.h>\n+#include <uORB/topics/subsystem_info.h>\n+#include <uORB/topics/distance_sensor.h>\n+\n+#include <board_config.h>\n+\n+#include <isl/isl.hpp>\n+#include <DevMgr.hpp>\n+\n+\n+extern \"C\" { __EXPORT int df_isl_wrapper_main(int argc, char *argv[]); }\n+\n+using namespace DriverFramework;\n+\n+\n+class DfISLWrapper : public ISL\n+{\n+public:\n+\tDfISLWrapper();\n+\t~DfISLWrapper();\n+\n+\n+\t/**\n+\t * Start automatic measurement.\n+\t *\n+\t * @return 0 on success\n+\t */\n+\tint\t\tstart();\n+\n+\t/**\n+\t * Stop automatic measurement.\n+\t *\n+\t * @return 0 on success\n+\t */\n+\tint\t\tstop();\n+\n+private:\n+\tint _publish(struct range_sensor_data &data);\n+\n+\torb_advert_t\t\t_range_topic;\n+\n+\tint\t\t\t_orb_class_instance;\n+\n+\t// perf_counter_t\t\t_range_sample_perf;\n+\n+};\n+\n+DfISLWrapper::DfISLWrapper(/*enum Rotation rotation*/) :\n+\tISL(ISL_DEVICE_PATH),\n+\t_range_topic(nullptr),\n+\t_orb_class_instance(-1)\n+{\n+}\n+\n+DfISLWrapper::~DfISLWrapper()\n+{\n+}\n+\n+int DfISLWrapper::start()\n+{\n+\n+\tstruct distance_sensor_s d;\n+\t_range_topic = orb_advertise_multi(ORB_ID(distance_sensor), &d,\n+\t\t\t\t\t   &_orb_class_instance, ORB_PRIO_DEFAULT);\n+\n+\tint ret;\n+\tret = ISL::init();\n+\n+\tif (ret != 0) {\n+\t\tPX4_ERR(\"ISL init fail: %d\", ret);\n+\t\treturn ret;\n+\t}\n+\n+\tret = ISL::start();\n+\n+\tif (ret != 0) {\n+\t\tPX4_ERR(\"ISL start fail: %d\", ret);\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+int DfISLWrapper::stop()\n+{\n+\t/* Stop sensor. */\n+\tint ret = ISL::stop();\n+\n+\tif (ret != 0) {\n+\t\tPX4_ERR(\"ISL stop fail: %d\", ret);\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+int DfISLWrapper::_publish(struct range_sensor_data &data)\n+{\n+\tif (!_range_topic) {\n+\t\treturn 1;\n+\t}\n+\n+\tstruct distance_sensor_s d;\n+\n+\tmemset(&d, 0, sizeof(d));\n+\n+\td.timestamp = hrt_absolute_time();\n+\n+\td.min_distance = float(ISL_MIN_DISTANCE); /* m */\n+\n+\td.max_distance = float(ISL_MAX_DISTANCE); /* m */\n+\n+\td.current_distance = float(data.dist);\n+\n+\td.type = distance_sensor_s::MAV_DISTANCE_SENSOR_LASER;\n+\n+\td.id = 0; // TODO set proper ID\n+\n+\td.covariance = 0.0f;\n+\n+\torb_publish(ORB_ID(distance_sensor), _range_topic, &d);\n+\n+\t/* Notify anyone waiting for data. */\n+\tDevMgr::updateNotify(*this);\n+\n+\treturn 0;\n+};\n+\n+\n+namespace df_isl_wrapper\n+{\n+\n+DfISLWrapper *g_dev = nullptr;\n+\n+int start();\n+int stop();\n+int info();\n+int probe();\n+int calibration();\n+void usage();\n+\n+int start()\n+{\n+\tPX4_ERR(\"start\");\n+\tg_dev = new DfISLWrapper();\n+\n+\tif (g_dev == nullptr) {\n+\t\tPX4_ERR(\"failed instantiating DfISLWrapper object\");\n+\t\treturn -1;\n+\t}\n+\n+\tint ret = g_dev->start();\n+\n+\tif (ret != 0) {\n+\t\tPX4_ERR(\"DfISLWrapper start failed\");\n+\t\treturn ret;\n+\t}\n+\n+\t// Open the range sensor\n+\tDevHandle h;\n+\tDevMgr::getHandle(ISL_DEVICE_PATH, h);\n+\n+\tif (!h.isValid()) {\n+\t\tDF_LOG_INFO(\"Error: unable to obtain a valid handle for the receiver at: %s (%d)\",\n+\t\t\t    ISL_DEVICE_PATH, h.getError());\n+\t\treturn -1;\n+\t}\n+\n+\tDevMgr::releaseHandle(h);\n+\n+\treturn 0;\n+}\n+\n+int stop()\n+{\n+\tif (g_dev == nullptr) {\n+\t\tPX4_ERR(\"driver not running\");\n+\t\treturn 1;\n+\t}\n+\n+\tint ret = g_dev->stop();\n+\n+\tif (ret != 0) {\n+\t\tPX4_ERR(\"driver could not be stopped\");\n+\t\treturn ret;\n+\t}\n+\n+\tdelete g_dev;\n+\tg_dev = nullptr;\n+\treturn 0;\n+}\n+\n+/**\n+ * Print a little info about the driver.\n+ */\n+int\n+info()\n+{\n+\tif (g_dev == nullptr) {\n+\t\tPX4_ERR(\"driver not running\");\n+\t\treturn 1;\n+\t}\n+\n+\tPX4_DEBUG(\"state @ %p\", g_dev);\n+\n+\treturn 0;\n+}\n+\n+/**\n+ * Who am i\n+ */\n+int\n+probe()\n+{\n+\tint ret;\n+\n+\tif (g_dev == nullptr) {\n+\t\tret = start();\n+\n+\t\tif (ret) {\n+\t\t\tPX4_ERR(\"Failed to start\");\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\n+\tret = g_dev->probe();\n+\n+\tif (ret) {\n+\t\tPX4_ERR(\"Failed to probe\");\n+\t\treturn ret;\n+\t}\n+\n+\tPX4_DEBUG(\"state @ %p\", g_dev);\n+\n+\treturn 0;\n+}\n+\n+/**\n+ * Calibration\n+ */\n+int\n+calibration()\n+{\n+\tint ret;\n+\n+\tif (g_dev == nullptr) {\n+\t\tret = start();\n+\n+\t\tif (ret) {\n+\t\t\tPX4_ERR(\"Failed to start\");\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\n+\tret = g_dev->calibration();\n+\n+\tif (ret) {\n+\t\tPX4_ERR(\"Failed to probe\");\n+\t\treturn ret;\n+\t}\n+\n+\tPX4_DEBUG(\"state @ %p\", g_dev);\n+\n+\treturn 0;\n+}\n+\n+\n+void\n+usage()\n+{\n+\tPX4_WARN(\"Usage: df_isl_wrapper 'start', 'info', 'stop'\");","path":"src/platforms/posix/drivers/df_isl_wrapper/df_isl_wrapper.cpp","position":330,"original_position":330,"commit_id":"969651f232bcfe9151bb8a7e35e51a3aeb87f8aa","original_commit_id":"969651f232bcfe9151bb8a7e35e51a3aeb87f8aa","user":{"login":"julianoes","id":1419688,"avatar_url":"https://avatars.githubusercontent.com/u/1419688?v=3","gravatar_id":"","url":"https://api.github.com/users/julianoes","html_url":"https://github.com/julianoes","followers_url":"https://api.github.com/users/julianoes/followers","following_url":"https://api.github.com/users/julianoes/following{/other_user}","gists_url":"https://api.github.com/users/julianoes/gists{/gist_id}","starred_url":"https://api.github.com/users/julianoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/julianoes/subscriptions","organizations_url":"https://api.github.com/users/julianoes/orgs","repos_url":"https://api.github.com/users/julianoes/repos","events_url":"https://api.github.com/users/julianoes/events{/privacy}","received_events_url":"https://api.github.com/users/julianoes/received_events","type":"User","site_admin":false},"body":"Please add `probe` and `calib` here.","created_at":"2016-04-21T15:16:06Z","updated_at":"2016-04-21T15:16:06Z","html_url":"https://github.com/3drobotics/Firmware/pull/2#discussion_r60599225","pull_request_url":"https://api.github.com/repos/3drobotics/Firmware/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/3drobotics/Firmware/pulls/comments/60599225"},"html":{"href":"https://github.com/3drobotics/Firmware/pull/2#discussion_r60599225"},"pull_request":{"href":"https://api.github.com/repos/3drobotics/Firmware/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/3drobotics/Firmware/pulls/2","id":65828913,"html_url":"https://github.com/3drobotics/Firmware/pull/2","diff_url":"https://github.com/3drobotics/Firmware/pull/2.diff","patch_url":"https://github.com/3drobotics/Firmware/pull/2.patch","issue_url":"https://api.github.com/repos/3drobotics/Firmware/issues/2","number":2,"state":"open","locked":false,"title":"Intersil Driver","user":{"login":"bugobliterator","id":5697288,"avatar_url":"https://avatars.githubusercontent.com/u/5697288?v=3","gravatar_id":"","url":"https://api.github.com/users/bugobliterator","html_url":"https://github.com/bugobliterator","followers_url":"https://api.github.com/users/bugobliterator/followers","following_url":"https://api.github.com/users/bugobliterator/following{/other_user}","gists_url":"https://api.github.com/users/bugobliterator/gists{/gist_id}","starred_url":"https://api.github.com/users/bugobliterator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bugobliterator/subscriptions","organizations_url":"https://api.github.com/users/bugobliterator/orgs","repos_url":"https://api.github.com/users/bugobliterator/repos","events_url":"https://api.github.com/users/bugobliterator/events{/privacy}","received_events_url":"https://api.github.com/users/bugobliterator/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-04-08T18:38:19Z","updated_at":"2016-04-21T15:16:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"087f5b6cb1c5167218cabe081cceb0b2c70c5567","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/3drobotics/Firmware/pulls/2/commits","review_comments_url":"https://api.github.com/repos/3drobotics/Firmware/pulls/2/comments","review_comment_url":"https://api.github.com/repos/3drobotics/Firmware/pulls/comments{/number}","comments_url":"https://api.github.com/repos/3drobotics/Firmware/issues/2/comments","statuses_url":"https://api.github.com/repos/3drobotics/Firmware/statuses/969651f232bcfe9151bb8a7e35e51a3aeb87f8aa","head":{"label":"bugobliterator:catchup-1","ref":"catchup-1","sha":"969651f232bcfe9151bb8a7e35e51a3aeb87f8aa","user":{"login":"bugobliterator","id":5697288,"avatar_url":"https://avatars.githubusercontent.com/u/5697288?v=3","gravatar_id":"","url":"https://api.github.com/users/bugobliterator","html_url":"https://github.com/bugobliterator","followers_url":"https://api.github.com/users/bugobliterator/followers","following_url":"https://api.github.com/users/bugobliterator/following{/other_user}","gists_url":"https://api.github.com/users/bugobliterator/gists{/gist_id}","starred_url":"https://api.github.com/users/bugobliterator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bugobliterator/subscriptions","organizations_url":"https://api.github.com/users/bugobliterator/orgs","repos_url":"https://api.github.com/users/bugobliterator/repos","events_url":"https://api.github.com/users/bugobliterator/events{/privacy}","received_events_url":"https://api.github.com/users/bugobliterator/received_events","type":"User","site_admin":false},"repo":{"id":45699013,"name":"PX4Firmware","full_name":"bugobliterator/PX4Firmware","owner":{"login":"bugobliterator","id":5697288,"avatar_url":"https://avatars.githubusercontent.com/u/5697288?v=3","gravatar_id":"","url":"https://api.github.com/users/bugobliterator","html_url":"https://github.com/bugobliterator","followers_url":"https://api.github.com/users/bugobliterator/followers","following_url":"https://api.github.com/users/bugobliterator/following{/other_user}","gists_url":"https://api.github.com/users/bugobliterator/gists{/gist_id}","starred_url":"https://api.github.com/users/bugobliterator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bugobliterator/subscriptions","organizations_url":"https://api.github.com/users/bugobliterator/orgs","repos_url":"https://api.github.com/users/bugobliterator/repos","events_url":"https://api.github.com/users/bugobliterator/events{/privacy}","received_events_url":"https://api.github.com/users/bugobliterator/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bugobliterator/PX4Firmware","description":"PX4 Firmware for PX4FMU autopilot and PX4IO servo / failsafe board","fork":true,"url":"https://api.github.com/repos/bugobliterator/PX4Firmware","forks_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/forks","keys_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/teams","hooks_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/hooks","issue_events_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/issues/events{/number}","events_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/events","assignees_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/assignees{/user}","branches_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/branches{/branch}","tags_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/tags","blobs_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/git/refs{/sha}","trees_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/statuses/{sha}","languages_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/languages","stargazers_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/stargazers","contributors_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/contributors","subscribers_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/subscribers","subscription_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/subscription","commits_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/commits{/sha}","git_commits_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/git/commits{/sha}","comments_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/comments{/number}","issue_comment_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/issues/comments{/number}","contents_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/contents/{+path}","compare_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/merges","archive_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/downloads","issues_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/issues{/number}","pulls_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/pulls{/number}","milestones_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/milestones{/number}","notifications_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/labels{/name}","releases_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/releases{/id}","deployments_url":"https://api.github.com/repos/bugobliterator/PX4Firmware/deployments","created_at":"2015-11-06T18:16:41Z","updated_at":"2016-03-25T08:38:49Z","pushed_at":"2016-04-08T19:15:16Z","git_url":"git://github.com/bugobliterator/PX4Firmware.git","ssh_url":"git@github.com:bugobliterator/PX4Firmware.git","clone_url":"https://github.com/bugobliterator/PX4Firmware.git","svn_url":"https://github.com/bugobliterator/PX4Firmware","homepage":"https://pixhawk.ethz.ch/px4/","size":81172,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"3drobotics:catchup-1","ref":"catchup-1","sha":"dd99006b21b5922b405ce2547db550564ae214b2","user":{"login":"3drobotics","id":857602,"avatar_url":"https://avatars.githubusercontent.com/u/857602?v=3","gravatar_id":"","url":"https://api.github.com/users/3drobotics","html_url":"https://github.com/3drobotics","followers_url":"https://api.github.com/users/3drobotics/followers","following_url":"https://api.github.com/users/3drobotics/following{/other_user}","gists_url":"https://api.github.com/users/3drobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/3drobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/3drobotics/subscriptions","organizations_url":"https://api.github.com/users/3drobotics/orgs","repos_url":"https://api.github.com/users/3drobotics/repos","events_url":"https://api.github.com/users/3drobotics/events{/privacy}","received_events_url":"https://api.github.com/users/3drobotics/received_events","type":"Organization","site_admin":false},"repo":{"id":55471073,"name":"Firmware","full_name":"3drobotics/Firmware","owner":{"login":"3drobotics","id":857602,"avatar_url":"https://avatars.githubusercontent.com/u/857602?v=3","gravatar_id":"","url":"https://api.github.com/users/3drobotics","html_url":"https://github.com/3drobotics","followers_url":"https://api.github.com/users/3drobotics/followers","following_url":"https://api.github.com/users/3drobotics/following{/other_user}","gists_url":"https://api.github.com/users/3drobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/3drobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/3drobotics/subscriptions","organizations_url":"https://api.github.com/users/3drobotics/orgs","repos_url":"https://api.github.com/users/3drobotics/repos","events_url":"https://api.github.com/users/3drobotics/events{/privacy}","received_events_url":"https://api.github.com/users/3drobotics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/3drobotics/Firmware","description":"PX4 Pro Autopilot Software","fork":true,"url":"https://api.github.com/repos/3drobotics/Firmware","forks_url":"https://api.github.com/repos/3drobotics/Firmware/forks","keys_url":"https://api.github.com/repos/3drobotics/Firmware/keys{/key_id}","collaborators_url":"https://api.github.com/repos/3drobotics/Firmware/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/3drobotics/Firmware/teams","hooks_url":"https://api.github.com/repos/3drobotics/Firmware/hooks","issue_events_url":"https://api.github.com/repos/3drobotics/Firmware/issues/events{/number}","events_url":"https://api.github.com/repos/3drobotics/Firmware/events","assignees_url":"https://api.github.com/repos/3drobotics/Firmware/assignees{/user}","branches_url":"https://api.github.com/repos/3drobotics/Firmware/branches{/branch}","tags_url":"https://api.github.com/repos/3drobotics/Firmware/tags","blobs_url":"https://api.github.com/repos/3drobotics/Firmware/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/3drobotics/Firmware/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/3drobotics/Firmware/git/refs{/sha}","trees_url":"https://api.github.com/repos/3drobotics/Firmware/git/trees{/sha}","statuses_url":"https://api.github.com/repos/3drobotics/Firmware/statuses/{sha}","languages_url":"https://api.github.com/repos/3drobotics/Firmware/languages","stargazers_url":"https://api.github.com/repos/3drobotics/Firmware/stargazers","contributors_url":"https://api.github.com/repos/3drobotics/Firmware/contributors","subscribers_url":"https://api.github.com/repos/3drobotics/Firmware/subscribers","subscription_url":"https://api.github.com/repos/3drobotics/Firmware/subscription","commits_url":"https://api.github.com/repos/3drobotics/Firmware/commits{/sha}","git_commits_url":"https://api.github.com/repos/3drobotics/Firmware/git/commits{/sha}","comments_url":"https://api.github.com/repos/3drobotics/Firmware/comments{/number}","issue_comment_url":"https://api.github.com/repos/3drobotics/Firmware/issues/comments{/number}","contents_url":"https://api.github.com/repos/3drobotics/Firmware/contents/{+path}","compare_url":"https://api.github.com/repos/3drobotics/Firmware/compare/{base}...{head}","merges_url":"https://api.github.com/repos/3drobotics/Firmware/merges","archive_url":"https://api.github.com/repos/3drobotics/Firmware/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/3drobotics/Firmware/downloads","issues_url":"https://api.github.com/repos/3drobotics/Firmware/issues{/number}","pulls_url":"https://api.github.com/repos/3drobotics/Firmware/pulls{/number}","milestones_url":"https://api.github.com/repos/3drobotics/Firmware/milestones{/number}","notifications_url":"https://api.github.com/repos/3drobotics/Firmware/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/3drobotics/Firmware/labels{/name}","releases_url":"https://api.github.com/repos/3drobotics/Firmware/releases{/id}","deployments_url":"https://api.github.com/repos/3drobotics/Firmware/deployments","created_at":"2016-04-05T05:46:30Z","updated_at":"2016-04-05T05:46:38Z","pushed_at":"2016-04-14T01:52:09Z","git_url":"git://github.com/3drobotics/Firmware.git","ssh_url":"git@github.com:3drobotics/Firmware.git","clone_url":"https://github.com/3drobotics/Firmware.git","svn_url":"https://github.com/3drobotics/Firmware","homepage":"http://px4.io","size":86343,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/3drobotics/Firmware/pulls/2"},"html":{"href":"https://github.com/3drobotics/Firmware/pull/2"},"issue":{"href":"https://api.github.com/repos/3drobotics/Firmware/issues/2"},"comments":{"href":"https://api.github.com/repos/3drobotics/Firmware/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/3drobotics/Firmware/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/3drobotics/Firmware/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/3drobotics/Firmware/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/3drobotics/Firmware/statuses/969651f232bcfe9151bb8a7e35e51a3aeb87f8aa"}}}}