{"action":"created","comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/23034822","id":23034822,"diff_hunk":"@@ -0,0 +1,271 @@\n+/*\n+ * Copyright (C) 2014 Martine Lenders <mlenders@inf.fu-berlin.de>\n+ * Copyright (C) 2015 Freie Universität Berlin\n+ *\n+ * This file is subject to the terms and conditions of the GNU Lesser\n+ * General Public License v2.1. See the file LICENSE in the top level\n+ * directory for more details.\n+ */\n+\n+/**\n+ * @defgroup    net_netdev Network device driver interface\n+ * @addtogroup  net\n+ * @{\n+ *\n+ * @file\n+ * @brief       Network device driver interface definition.\n+ *\n+ * @author      Martine Lenders <mlenders@inf.fu-berlin.de>\n+ * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>\n+ */\n+\n+#ifndef __NETDEV_H_\n+#define __NETDEV_H_\n+\n+#include <errno.h>\n+#include <stdint.h>\n+#include <stdlib.h>\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/**\n+ * @brief Type for @ref msg_t if device fired an event.\n+ */\n+#define NETDEV_MSG_EVENT_TYPE   (0x0100)\n+\n+/**\n+ * @brief   Definition of basic network device options.\n+ * @note    Feel free to expand if your device needs/supports more.\n+ */\n+typedef enum {\n+    NETDEV_OPT_CHANNEL,             /**< Channel for the device as unsigned value\n+                                         in host byte order */\n+    NETDEV_OPT_IS_CHANNEL_CLR,      /**< Check if channel is clear */\n+    NETDEV_OPT_ADDRESS,             /**< Hardware address for the device as\n+                                         unsigned value in host byte order */\n+    NETDEV_OPT_NID,                 /**< Network ID (e.g. PAN ID in IEEE 802.15.4)\n+                                         for the device as unsigned value in\n+                                         host byte order */\n+    NETDEV_OPT_ADDRESS_LONG,        /**< Longer hardware address for the device\n+                                         (e.g. EUI-64) for the device as\n+                                         unsigned value in host byte order */\n+    NETDEV_OPT_TX_POWER,            /**< The output of the device in dB as\n+                                         signed value in host byte order */\n+    NETDEV_OPT_MAX_PACKET_SIZE,     /**< Maximum packet size the device supports\n+                                         unsigned value in host byte order */\n+    NETDEV_OPT_SRC_LEN,             /**< Default mode the source address is\n+                                         set to as value of `size_t`. (e.g.\n+                                         either PAN-centric 16-bit address or\n+                                         EUI-64 in IEEE 802.15.4) */\n+    NETDEV_OPT_EN_PRELOADING,       /**< Enable pre-loading of data, transfer\n+                                         data to device using send_data(), send\n+                                         by calling trigger(NETDEV_ACTION_TX) */\n+    NETDEV_OPT_EN_PROMISCUOUSMODE   /**< Enable promiscuous mode */\n+    NETDEV_OPT_EN_AUTOACK,          /**< Automatically send link-layer ACKs */\n+    NETDEV_OPT_RSSI,                /**< Read the RSSI value from the last transfer */\n+    NETDEV_OPT_LQI,                 /**< Read the link quality indicator */\n+\n+    /**\n+     * @brief   Last value for @ref netdev_opt_t defined here\n+     *\n+     * @details Specific devices or modules like @ref netapi that utilize these\n+     *          values to may define higher values, but they must be greater\n+     *          or equal to @ref NETDEV_OPT_LAST.\n+     */\n+    NETDEV_OPT_LAST,\n+} netdev_opt_t;\n+\n+/**\n+ * @brief   Definition of basic network device.\n+ * @note    Feel free to expand if your device needs/supports more\n+ */\n+typedef enum {\n+    NETDEV_ACTION_POWEROFF = 0,\n+    NETDEV_ACTION_SLEEP,\n+    NETDEV_ACTION_IDLE,\n+    NETDEV_ACTION_RX,\n+    NETDEV_ACTION_TX,               /**< only needed if pre-loading is enabled */\n+} netdev_action_t;\n+\n+/**\n+ * TODO: document...\n+ */\n+typedef enum {\n+    NETDEV_EVENT_RX_STARTED = 0,\n+    NETDEV_EVENT_RX_COMPLETE,\n+    NETDEV_EVENT_TX_STARTED,\n+    NETDEV_EVENT_TX_COMPLETE\n+    /* probably more? */\n+} netdev_event_t;\n+\n+/**\n+ * @brief   Definition of basic network device.\n+ * @note    Feel free to expand if your device needs/supports more\n+ */\n+typedef enum {\n+    NETDEV_STATE_OFF = 0,           /**< Device is powered off */\n+    NETDEV_STATE_SLEEP,             /**< Device is sleeping */\n+    NETDEV_STATE_IDLE,              /**< Device is idle */\n+    NETDEV_STATE_RX,                /**< Device is in receive mode */\n+    NETDEV_STATE_TX,                /**< Device is transmit mode */\n+    NETDEV_STATE_PROMISCUOUS,       /**< Device is in receive mode and\n+                                         accepts all packets without regard\n+                                         for their destination */\n+    NETDEV_STATE_TX_BURST,          /**< Device is burst sending and\n+                                         does not accept packets */\n+} netdev_state_t;\n+\n+/**\n+ * @brief   The netdev data-structure holds the minimum information needed for\n+ *          interaction with MAC layers\n+ *\n+ * The netdev structure is the parent for all network device driver descriptors.\n+ */\n+typedef struct netdev_t netdev_t;\n+\n+/**\n+ * @brief   Event callback for signaling event to a MAC layer.\n+ *\n+ * @param[in] type          type of the event\n+ * @param[in] arg           event argument, can e.g. contain a pkt_t pointer\n+ */\n+typedef void (*netdev_event_cb_t)(netdev_event_t type, void *arg);","path":"sys/net/include/netdev.h","position":134,"original_position":134,"commit_id":"030f40ca471cc5fc51d6bdcfa69c18d2386b4a11","original_commit_id":"030f40ca471cc5fc51d6bdcfa69c18d2386b4a11","user":{"login":"authmillenon","id":675644,"avatar_url":"https://avatars.githubusercontent.com/u/675644?v=3","gravatar_id":"","url":"https://api.github.com/users/authmillenon","html_url":"https://github.com/authmillenon","followers_url":"https://api.github.com/users/authmillenon/followers","following_url":"https://api.github.com/users/authmillenon/following{/other_user}","gists_url":"https://api.github.com/users/authmillenon/gists{/gist_id}","starred_url":"https://api.github.com/users/authmillenon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/authmillenon/subscriptions","organizations_url":"https://api.github.com/users/authmillenon/orgs","repos_url":"https://api.github.com/users/authmillenon/repos","events_url":"https://api.github.com/users/authmillenon/events{/privacy}","received_events_url":"https://api.github.com/users/authmillenon/received_events","type":"User","site_admin":false},"body":"(the structure that comes into `arg` for what event should be well documented is what I want to say ;)) ","created_at":"2015-01-15T19:13:18Z","updated_at":"2015-01-15T19:13:18Z","html_url":"https://github.com/RIOT-OS/RIOT/pull/2297#discussion_r23034822","pull_request_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297","_links":{"self":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/23034822"},"html":{"href":"https://github.com/RIOT-OS/RIOT/pull/2297#discussion_r23034822"},"pull_request":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297"}}},"pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297","id":27294308,"html_url":"https://github.com/RIOT-OS/RIOT/pull/2297","diff_url":"https://github.com/RIOT-OS/RIOT/pull/2297.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/2297.patch","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2297","number":2297,"state":"open","locked":false,"title":"net: minimization and simplification of netdev (WIP)","user":{"login":"haukepetersen","id":620834,"avatar_url":"https://avatars.githubusercontent.com/u/620834?v=3","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"body":"This PR is not meant to produce production code, but as base for discussion (I guess it won't even compile...).\r\n\r\nI was looking at the netdev interface for the last two days and I think it has grown to complicated... Here is a proposal for simplification. One main idea is, that `netdev_t` is basically a parent class for network device descriptors, meaning that structs holding the state of a network device simply are forced to have their first two members being of type `kernel_pid_t` and `netdev_driver_t *`. The rest of the members are free to be defined by the driver itself, typically stuff like SPI device, GPIO pins used, internal state data and option fields...\r\n\r\nThe major changes are:\r\n- moved and renamed the interface to `sys/net/include/netdev.h`\r\n- removed specializations for 802.15.4 (as they are not needed in my opinion)\r\n- removed everything connnected to `hlists` -> this code is being moved to `pkt.h` anyhow... (#2158)\r\n- simplified parameters used in netdev functions\r\n- flattened the hierarchy for the `netdev_t` data structure\r\n- added some options (e.g. ENABLE_PRELOADING...)\r\n- changed `set_state(state)` to `trigger(action)` and added actions\r\n\r\nI further touched the `AT86RF231` driver slightly, to demonstrate the usage of the netapi interface:\r\n- I defined the device descriptor for the radio device (again: subclass of `netdev_t`). All functions of the radio driver should take this struct as their first argument\r\n- rewrote the receiving part of the radio driver to demonstrate the use of the packet buffer \r\n\r\nI think this simplifies matters quite a bit, please let me know what you think!\r\n","created_at":"2015-01-13T18:48:29Z","updated_at":"2015-01-15T19:13:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"552da337aff594f6a5f199d5fc7b17d72671235a","assignee":{"login":"authmillenon","id":675644,"avatar_url":"https://avatars.githubusercontent.com/u/675644?v=3","gravatar_id":"","url":"https://api.github.com/users/authmillenon","html_url":"https://github.com/authmillenon","followers_url":"https://api.github.com/users/authmillenon/followers","following_url":"https://api.github.com/users/authmillenon/following{/other_user}","gists_url":"https://api.github.com/users/authmillenon/gists{/gist_id}","starred_url":"https://api.github.com/users/authmillenon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/authmillenon/subscriptions","organizations_url":"https://api.github.com/users/authmillenon/orgs","repos_url":"https://api.github.com/users/authmillenon/repos","events_url":"https://api.github.com/users/authmillenon/events{/privacy}","received_events_url":"https://api.github.com/users/authmillenon/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297/commits","review_comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297/comments","review_comment_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/{number}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2297/comments","statuses_url":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/030f40ca471cc5fc51d6bdcfa69c18d2386b4a11","head":{"label":"haukepetersen:opt_minimize_netdev","ref":"opt_minimize_netdev","sha":"030f40ca471cc5fc51d6bdcfa69c18d2386b4a11","user":{"login":"haukepetersen","id":620834,"avatar_url":"https://avatars.githubusercontent.com/u/620834?v=3","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"repo":{"id":13741766,"name":"RIOT","full_name":"haukepetersen/RIOT","owner":{"login":"haukepetersen","id":620834,"avatar_url":"https://avatars.githubusercontent.com/u/620834?v=3","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/haukepetersen/RIOT","description":"RIOT OS -  The revolutionary IoT OS","fork":true,"url":"https://api.github.com/repos/haukepetersen/RIOT","forks_url":"https://api.github.com/repos/haukepetersen/RIOT/forks","keys_url":"https://api.github.com/repos/haukepetersen/RIOT/keys{/key_id}","collaborators_url":"https://api.github.com/repos/haukepetersen/RIOT/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/haukepetersen/RIOT/teams","hooks_url":"https://api.github.com/repos/haukepetersen/RIOT/hooks","issue_events_url":"https://api.github.com/repos/haukepetersen/RIOT/issues/events{/number}","events_url":"https://api.github.com/repos/haukepetersen/RIOT/events","assignees_url":"https://api.github.com/repos/haukepetersen/RIOT/assignees{/user}","branches_url":"https://api.github.com/repos/haukepetersen/RIOT/branches{/branch}","tags_url":"https://api.github.com/repos/haukepetersen/RIOT/tags","blobs_url":"https://api.github.com/repos/haukepetersen/RIOT/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/haukepetersen/RIOT/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/haukepetersen/RIOT/git/refs{/sha}","trees_url":"https://api.github.com/repos/haukepetersen/RIOT/git/trees{/sha}","statuses_url":"https://api.github.com/repos/haukepetersen/RIOT/statuses/{sha}","languages_url":"https://api.github.com/repos/haukepetersen/RIOT/languages","stargazers_url":"https://api.github.com/repos/haukepetersen/RIOT/stargazers","contributors_url":"https://api.github.com/repos/haukepetersen/RIOT/contributors","subscribers_url":"https://api.github.com/repos/haukepetersen/RIOT/subscribers","subscription_url":"https://api.github.com/repos/haukepetersen/RIOT/subscription","commits_url":"https://api.github.com/repos/haukepetersen/RIOT/commits{/sha}","git_commits_url":"https://api.github.com/repos/haukepetersen/RIOT/git/commits{/sha}","comments_url":"https://api.github.com/repos/haukepetersen/RIOT/comments{/number}","issue_comment_url":"https://api.github.com/repos/haukepetersen/RIOT/issues/comments/{number}","contents_url":"https://api.github.com/repos/haukepetersen/RIOT/contents/{+path}","compare_url":"https://api.github.com/repos/haukepetersen/RIOT/compare/{base}...{head}","merges_url":"https://api.github.com/repos/haukepetersen/RIOT/merges","archive_url":"https://api.github.com/repos/haukepetersen/RIOT/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/haukepetersen/RIOT/downloads","issues_url":"https://api.github.com/repos/haukepetersen/RIOT/issues{/number}","pulls_url":"https://api.github.com/repos/haukepetersen/RIOT/pulls{/number}","milestones_url":"https://api.github.com/repos/haukepetersen/RIOT/milestones{/number}","notifications_url":"https://api.github.com/repos/haukepetersen/RIOT/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/haukepetersen/RIOT/labels{/name}","releases_url":"https://api.github.com/repos/haukepetersen/RIOT/releases{/id}","created_at":"2013-10-21T12:31:38Z","updated_at":"2014-07-03T13:22:33Z","pushed_at":"2015-01-15T19:00:38Z","git_url":"git://github.com/haukepetersen/RIOT.git","ssh_url":"git@github.com:haukepetersen/RIOT.git","clone_url":"https://github.com/haukepetersen/RIOT.git","svn_url":"https://github.com/haukepetersen/RIOT","homepage":"https://github.com/RIOT-OS/RIOT/wiki","size":15611,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"RIOT-OS:master","ref":"master","sha":"cadea97760448fc55db2112d4fbbb26959db5dd8","user":{"login":"RIOT-OS","id":3079480,"avatar_url":"https://avatars.githubusercontent.com/u/3079480?v=3","gravatar_id":"","url":"https://api.github.com/users/RIOT-OS","html_url":"https://github.com/RIOT-OS","followers_url":"https://api.github.com/users/RIOT-OS/followers","following_url":"https://api.github.com/users/RIOT-OS/following{/other_user}","gists_url":"https://api.github.com/users/RIOT-OS/gists{/gist_id}","starred_url":"https://api.github.com/users/RIOT-OS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RIOT-OS/subscriptions","organizations_url":"https://api.github.com/users/RIOT-OS/orgs","repos_url":"https://api.github.com/users/RIOT-OS/repos","events_url":"https://api.github.com/users/RIOT-OS/events{/privacy}","received_events_url":"https://api.github.com/users/RIOT-OS/received_events","type":"Organization","site_admin":false},"repo":{"id":7370241,"name":"RIOT","full_name":"RIOT-OS/RIOT","owner":{"login":"RIOT-OS","id":3079480,"avatar_url":"https://avatars.githubusercontent.com/u/3079480?v=3","gravatar_id":"","url":"https://api.github.com/users/RIOT-OS","html_url":"https://github.com/RIOT-OS","followers_url":"https://api.github.com/users/RIOT-OS/followers","following_url":"https://api.github.com/users/RIOT-OS/following{/other_user}","gists_url":"https://api.github.com/users/RIOT-OS/gists{/gist_id}","starred_url":"https://api.github.com/users/RIOT-OS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RIOT-OS/subscriptions","organizations_url":"https://api.github.com/users/RIOT-OS/orgs","repos_url":"https://api.github.com/users/RIOT-OS/repos","events_url":"https://api.github.com/users/RIOT-OS/events{/privacy}","received_events_url":"https://api.github.com/users/RIOT-OS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RIOT-OS/RIOT","description":"RIOT -  The friendly OS for IoT","fork":false,"url":"https://api.github.com/repos/RIOT-OS/RIOT","forks_url":"https://api.github.com/repos/RIOT-OS/RIOT/forks","keys_url":"https://api.github.com/repos/RIOT-OS/RIOT/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RIOT-OS/RIOT/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RIOT-OS/RIOT/teams","hooks_url":"https://api.github.com/repos/RIOT-OS/RIOT/hooks","issue_events_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/events{/number}","events_url":"https://api.github.com/repos/RIOT-OS/RIOT/events","assignees_url":"https://api.github.com/repos/RIOT-OS/RIOT/assignees{/user}","branches_url":"https://api.github.com/repos/RIOT-OS/RIOT/branches{/branch}","tags_url":"https://api.github.com/repos/RIOT-OS/RIOT/tags","blobs_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/refs{/sha}","trees_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/{sha}","languages_url":"https://api.github.com/repos/RIOT-OS/RIOT/languages","stargazers_url":"https://api.github.com/repos/RIOT-OS/RIOT/stargazers","contributors_url":"https://api.github.com/repos/RIOT-OS/RIOT/contributors","subscribers_url":"https://api.github.com/repos/RIOT-OS/RIOT/subscribers","subscription_url":"https://api.github.com/repos/RIOT-OS/RIOT/subscription","commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/commits{/sha}","git_commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/commits{/sha}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/comments{/number}","issue_comment_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/comments/{number}","contents_url":"https://api.github.com/repos/RIOT-OS/RIOT/contents/{+path}","compare_url":"https://api.github.com/repos/RIOT-OS/RIOT/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RIOT-OS/RIOT/merges","archive_url":"https://api.github.com/repos/RIOT-OS/RIOT/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RIOT-OS/RIOT/downloads","issues_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues{/number}","pulls_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls{/number}","milestones_url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones{/number}","notifications_url":"https://api.github.com/repos/RIOT-OS/RIOT/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/labels{/name}","releases_url":"https://api.github.com/repos/RIOT-OS/RIOT/releases{/id}","created_at":"2012-12-29T20:38:40Z","updated_at":"2015-01-15T11:27:16Z","pushed_at":"2015-01-15T11:27:15Z","git_url":"git://github.com/RIOT-OS/RIOT.git","ssh_url":"git@github.com:RIOT-OS/RIOT.git","clone_url":"https://github.com/RIOT-OS/RIOT.git","svn_url":"https://github.com/RIOT-OS/RIOT","homepage":"https://github.com/RIOT-OS/RIOT/wiki","size":80183,"stargazers_count":229,"watchers_count":229,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":194,"mirror_url":null,"open_issues_count":262,"forks":194,"open_issues":262,"watchers":229,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297"},"html":{"href":"https://github.com/RIOT-OS/RIOT/pull/2297"},"issue":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2297"},"comments":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2297/comments"},"review_comments":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297/comments"},"review_comment":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2297/commits"},"statuses":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/030f40ca471cc5fc51d6bdcfa69c18d2386b4a11"}}}}