{"action":"created","comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/26989307","id":26989307,"diff_hunk":"@@ -0,0 +1,293 @@\n+/*\n+ * Copyright (C) 2015 Martine Lenders <mlenders@inf.fu-berlin.de>\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+ * @{\n+ *\n+ * @file\n+ */\n+\n+#include <stdbool.h>\n+#include <stdint.h>\n+#include <stdlib.h>\n+#include <string.h>\n+\n+#include \"kernel.h\"\n+#include \"kernel_types.h\"\n+#include \"msg.h\"\n+#include \"net/ng_netbase.h\"\n+#include \"periph/uart.h\"\n+#include \"ringbuffer.h\"\n+#include \"thread.h\"\n+#ifdef MODULE_NG_IPV6   /* TODO: remove guard when ng_ipv6 was merged */\n+#include \"net/ng_ipv6/hdr.h\"\n+#endif\n+\n+#include \"net/ng_slip.h\"\n+\n+#define ENABLE_DEBUG    (0)\n+#include \"debug.h\"\n+\n+#if UART_NUMOF\n+#define _SLIP_END         ('\\xc0')\n+#define _SLIP_ESC         ('\\xdb')\n+#define _SLIP_END_ESC     ('\\xdc')\n+#define _SLIP_ESC_ESC     ('\\xdd')\n+\n+#define _SLIP_MSG_TYPE          (0xc1dc)    /* chosen randomly */\n+#define _SLIP_STACK_SIZE        (KERNEL_CONF_STACKSIZE_DEFAULT)\n+#define _SLIP_NAME              \"SLIP\"\n+#define _SLIP_MSG_QUEUE_SIZE    (8U)\n+\n+static char _slip_stack[_SLIP_STACK_SIZE];\n+\n+static kernel_pid_t _slip_pid = KERNEL_PID_UNDEF;\n+static uint32_t _bytes = 0;\n+static uint8_t _esc = 0;\n+static ringbuffer_t *_in_buf;\n+\n+/* UART rx callback */\n+static void _slip_rx_cb(void *arg, char data)\n+{\n+    if (data == _SLIP_END) {\n+        msg_t msg;\n+\n+        msg.type = _SLIP_MSG_TYPE;\n+        msg.content.value = _bytes;\n+\n+        msg_send_int(&msg, _slip_pid);\n+\n+        _bytes = 0;\n+    }\n+\n+    if (_esc) {\n+        _esc = 0;\n+\n+        switch (data) {\n+            case (_SLIP_END_ESC):\n+                if (ringbuffer_add_one(_in_buf, _SLIP_END) < 0) {\n+                    _bytes++;\n+                }\n+\n+                break;\n+\n+            case (_SLIP_ESC_ESC):\n+                if (ringbuffer_add_one(_in_buf, _SLIP_ESC) < 0) {\n+                    _bytes++;\n+                }\n+\n+                break;\n+\n+            default:\n+                break;\n+        }\n+    }\n+    else if (data == _SLIP_ESC) {\n+        _esc = 1;\n+    }\n+    else {\n+        if (ringbuffer_add_one(_in_buf, data) < 0) {\n+            _bytes++;\n+        }\n+    }\n+}\n+\n+static void _slip_receive(size_t bytes)\n+{\n+    msg_t msg;\n+    ng_pktsnip_t *hdr = ng_netif_hdr_build(NULL, 0, NULL, 0);\n+    ng_netreg_entry_t *sendto;\n+\n+    if (hdr == NULL) {\n+        DEBUG(\"slip: no space left in packet buffer\\n\");\n+        return;\n+    }\n+\n+    ((ng_netif_hdr_t *)hdr->data)->if_pid = thread_getpid();\n+    ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, NULL, bytes, NG_NETTYPE_UNDEF);\n+\n+    if (pkt == NULL) {\n+        DEBUG(\"slip: no space left in packet buffer\\n\");\n+        ng_pktbuf_release(hdr);\n+        return;\n+    }\n+\n+    pkt->next = hdr;\n+\n+    if (ringbuffer_get(_in_buf, pkt->data, bytes) != bytes) {\n+        DEBUG(\"slip: could not read %zu bytes from ringbuffer\\n\", bytes);\n+        ng_pktbuf_release(pkt);\n+        return;\n+    }\n+\n+#ifdef MODULE_NG_IPV6\n+\n+    if (ng_ipv6_hdr_get_version((ng_ipv6_hdr_t *)pkt->data) == 6) {\n+        pkt->type = NG_NETTYPE_IPV6;\n+    }\n+\n+#endif\n+\n+    sendto = ng_netreg_lookup(pkt->type, NG_NETREG_DEMUX_CTX_ALL);\n+\n+    if (sendto == NULL) {\n+        DEBUG(\"slip: unable to forward packet of type %i\\n\", pkt->type);\n+        ng_pktbuf_release(pkt);\n+    }\n+\n+    ng_pktbuf_hold(pkt, ng_netreg_num(pkt->type, NG_NETREG_DEMUX_CTX_ALL) - 1);\n+\n+    msg.type = NG_NETAPI_MSG_TYPE_RCV;\n+    msg.content.ptr = (char *)pkt;\n+\n+    while (sendto != NULL) {\n+        DEBUG(\"slip: sending pkt %p to PID %u\\n\", pkt, sendto->pid);\n+        msg_send(&msg, sendto->pid);\n+        sendto = ng_netreg_getnext(sendto);\n+    }\n+}\n+\n+static void _slip_send(uart_t uart, ng_pktsnip_t *pkt)\n+{\n+    bool errored = false;\n+    ng_pktsnip_t *ptr;\n+\n+    ptr = pkt->next;    /* ignore ng_netif_hdr_t, we don't need it */\n+\n+    while ((ptr != NULL) && !errored) {\n+        DEBUG(\"slip: send pktsnip of length %zu over UART_%d\\n\", ptr->size, uart);\n+        uint8_t *data = ptr->data;\n+\n+        for (size_t i = 0; i < ptr->size; i++) {\n+            switch (data[i]) {\n+                case _SLIP_END:\n+                    DEBUG(\"slip: encountered END byte on send: stuff with ESC\\n\");\n+\n+                    if (uart_write(uart, _SLIP_ESC) < 0) {\n+                        errored = true;\n+                        break;\n+                    }\n+\n+                    if (uart_write(uart, _SLIP_END_ESC) < 0) {\n+                        errored = true;\n+                        break;\n+                    }\n+\n+                    break;\n+\n+                case _SLIP_ESC:\n+                    DEBUG(\"slip: encountered ESC byte on send: stuff with ESC\\n\");\n+\n+                    if (uart_write(uart, _SLIP_ESC) < 0) {\n+                        errored = true;\n+                        break;\n+                    }\n+\n+                    if (uart_write(uart, _SLIP_ESC_ESC) < 0) {\n+                        errored = true;\n+                        break;\n+                    }\n+\n+                    break;\n+\n+                default:\n+                    if (uart_write(uart, data[i]) < 0) {","path":"sys/net/link_layer/ng_slip/ng_slip.c","position":199,"original_position":199,"commit_id":"b0b0e6f935d69936e30150d0384efd7a4f8a2e36","original_commit_id":"b0b0e6f935d69936e30150d0384efd7a4f8a2e36","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":"you mean tx_cb, right?","created_at":"2015-03-23T22:57:10Z","updated_at":"2015-03-23T22:57:10Z","html_url":"https://github.com/RIOT-OS/RIOT/pull/2688#discussion_r26989307","pull_request_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688","_links":{"self":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/26989307"},"html":{"href":"https://github.com/RIOT-OS/RIOT/pull/2688#discussion_r26989307"},"pull_request":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688"}}},"pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688","id":31691562,"html_url":"https://github.com/RIOT-OS/RIOT/pull/2688","diff_url":"https://github.com/RIOT-OS/RIOT/pull/2688.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/2688.patch","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2688","number":2688,"state":"open","locked":false,"title":"ng_slip: initial import","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":"Updated version of #1454. I removed the `board_uart0` support for now, to keep it simple.\r\n\r\nDepends on #2575.","created_at":"2015-03-22T17:46:37Z","updated_at":"2015-03-23T22:57:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4bce5d93b2ea4fa865a2f6be859c25edc587b42d","assignee":{"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},"milestone":null,"commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688/commits","review_comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688/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/2688/comments","statuses_url":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/b0b0e6f935d69936e30150d0384efd7a4f8a2e36","head":{"label":"authmillenon:ng_slip/feat/initial","ref":"ng_slip/feat/initial","sha":"b0b0e6f935d69936e30150d0384efd7a4f8a2e36","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},"repo":{"id":7667624,"name":"RIOT","full_name":"authmillenon/RIOT","owner":{"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},"private":false,"html_url":"https://github.com/authmillenon/RIOT","description":"RIOT OS -  The revolutionary IoT OS","fork":true,"url":"https://api.github.com/repos/authmillenon/RIOT","forks_url":"https://api.github.com/repos/authmillenon/RIOT/forks","keys_url":"https://api.github.com/repos/authmillenon/RIOT/keys{/key_id}","collaborators_url":"https://api.github.com/repos/authmillenon/RIOT/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/authmillenon/RIOT/teams","hooks_url":"https://api.github.com/repos/authmillenon/RIOT/hooks","issue_events_url":"https://api.github.com/repos/authmillenon/RIOT/issues/events{/number}","events_url":"https://api.github.com/repos/authmillenon/RIOT/events","assignees_url":"https://api.github.com/repos/authmillenon/RIOT/assignees{/user}","branches_url":"https://api.github.com/repos/authmillenon/RIOT/branches{/branch}","tags_url":"https://api.github.com/repos/authmillenon/RIOT/tags","blobs_url":"https://api.github.com/repos/authmillenon/RIOT/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/authmillenon/RIOT/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/authmillenon/RIOT/git/refs{/sha}","trees_url":"https://api.github.com/repos/authmillenon/RIOT/git/trees{/sha}","statuses_url":"https://api.github.com/repos/authmillenon/RIOT/statuses/{sha}","languages_url":"https://api.github.com/repos/authmillenon/RIOT/languages","stargazers_url":"https://api.github.com/repos/authmillenon/RIOT/stargazers","contributors_url":"https://api.github.com/repos/authmillenon/RIOT/contributors","subscribers_url":"https://api.github.com/repos/authmillenon/RIOT/subscribers","subscription_url":"https://api.github.com/repos/authmillenon/RIOT/subscription","commits_url":"https://api.github.com/repos/authmillenon/RIOT/commits{/sha}","git_commits_url":"https://api.github.com/repos/authmillenon/RIOT/git/commits{/sha}","comments_url":"https://api.github.com/repos/authmillenon/RIOT/comments{/number}","issue_comment_url":"https://api.github.com/repos/authmillenon/RIOT/issues/comments{/number}","contents_url":"https://api.github.com/repos/authmillenon/RIOT/contents/{+path}","compare_url":"https://api.github.com/repos/authmillenon/RIOT/compare/{base}...{head}","merges_url":"https://api.github.com/repos/authmillenon/RIOT/merges","archive_url":"https://api.github.com/repos/authmillenon/RIOT/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/authmillenon/RIOT/downloads","issues_url":"https://api.github.com/repos/authmillenon/RIOT/issues{/number}","pulls_url":"https://api.github.com/repos/authmillenon/RIOT/pulls{/number}","milestones_url":"https://api.github.com/repos/authmillenon/RIOT/milestones{/number}","notifications_url":"https://api.github.com/repos/authmillenon/RIOT/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/authmillenon/RIOT/labels{/name}","releases_url":"https://api.github.com/repos/authmillenon/RIOT/releases{/id}","created_at":"2013-01-17T14:31:57Z","updated_at":"2015-03-23T14:13:36Z","pushed_at":"2015-03-23T22:21:50Z","git_url":"git://github.com/authmillenon/RIOT.git","ssh_url":"git@github.com:authmillenon/RIOT.git","clone_url":"https://github.com/authmillenon/RIOT.git","svn_url":"https://github.com/authmillenon/RIOT","homepage":null,"size":32294,"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":"RIOT-OS:master","ref":"master","sha":"e431dc81719779cd7d05d701aea60c18c262302d","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-03-23T22:23:26Z","pushed_at":"2015-03-23T22:25:50Z","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":89666,"stargazers_count":298,"watchers_count":298,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":246,"mirror_url":null,"open_issues_count":306,"forks":246,"open_issues":306,"watchers":298,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688"},"html":{"href":"https://github.com/RIOT-OS/RIOT/pull/2688"},"issue":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2688"},"comments":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2688/comments"},"review_comments":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2688/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/2688/commits"},"statuses":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/b0b0e6f935d69936e30150d0384efd7a4f8a2e36"}}}}