{"action":"created","comment":{"url":"https://api.github.com/repos/esp8266/Arduino/pulls/comments/244650598","pull_request_review_id":188570774,"id":244650598,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0NDY1MDU5OA==","diff_hunk":"@@ -233,73 +175,157 @@ static long ATTR_GDBFN gdbGetHexVal(unsigned char **ptr, int bits) {\n }\n \n //Swap an int into the form gdb wants it\n-static int ATTR_GDBFN iswap(int i) {\n-\tint r;\n-\tr=((i>>24)&0xff);\n-\tr|=((i>>16)&0xff)<<8;\n-\tr|=((i>>8)&0xff)<<16;\n-\tr|=((i>>0)&0xff)<<24;\n-\treturn r;\n+static int /*ATTR_GDBFN*/ iswap(int i) {\n+\treturn ((i >> 24) & 0xff)\n+\t\t| (((i >> 16) & 0xff) << 8)\n+\t\t| (((i >> 8) & 0xff) << 16)\n+\t\t| (((i >> 0) & 0xff) << 24);\n }\n \n //Read a byte from the ESP8266 memory.\n-static unsigned char ATTR_GDBFN readbyte(unsigned int p) {\n-\tint *i=(int*)(p&(~3));\n-\tif (p<0x20000000 || p>=0x60000000) return -1;\n-\treturn *i>>((p&3)*8);\n+static unsigned char /*ATTR_GDBFN*/ readbyte(unsigned int p) {\n+\tif (p < 0x20000000 || p >= 0x60000000) return -1;\n+\tint *i = (int*)(p & ~3);\n+\treturn *i >> ((p & 3) * 8);\n }\n \n //Write a byte to the ESP8266 memory.\n-static void ATTR_GDBFN writeByte(unsigned int p, unsigned char d) {\n-\tint *i=(int*)(p&(~3));\n-\tif (p<0x20000000 || p>=0x60000000) return;\n-\tif ((p&3)==0) *i=(*i&0xffffff00)|(d<<0);\n-\tif ((p&3)==1) *i=(*i&0xffff00ff)|(d<<8);\n-\tif ((p&3)==2) *i=(*i&0xff00ffff)|(d<<16);\n-\tif ((p&3)==3) *i=(*i&0x00ffffff)|(d<<24);\n+static void /*ATTR_GDBFN*/ writeByte(unsigned int p, unsigned char d) {\n+\tif (p < 0x20000000 || p >= 0x60000000) return;\n+\tint *i = (int*)(p & ~3);\n+\tif ((p & 3) == 0) *i = (*i & 0xffffff00) | (d << 0);\n+\telse if ((p & 3) == 1) *i = (*i & 0xffff00ff) | (d << 8);\n+\telse if ((p & 3) == 2) *i = (*i & 0xff00ffff) | (d << 16);\n+\telse if ((p & 3) == 3) *i = (*i & 0x00ffffff) | (d << 24);\n }\n \n //Returns 1 if it makes sense to write to addr p\n-static int ATTR_GDBFN validWrAddr(int p) {\n-\tif (p>=0x3ff00000 && p<0x40000000) return 1;\n-\tif (p>=0x40100000 && p<0x40140000) return 1;\n-\tif (p>=0x60000000 && p<0x60002000) return 1;\n-\treturn 0;\n+static int /*ATTR_GDBFN*/ validWrAddr(int p) {\n+\treturn (p >= 0x3ff00000 && p < 0x40000000)\n+\t\t|| (p >= 0x40100000 && p < 0x40140000)\n+\t\t|| (p >= 0x60000000 && p < 0x60002000);\n }\n \n-/*\n-Register file in the format lx106 gdb port expects it.\n-Inspired by gdb/regformats/reg-xtensa.dat from\n-https://github.com/jcmvbkbc/crosstool-NG/blob/lx106-g%2B%2B/overlays/xtensa_lx106.tar\n-As decoded by Cesanta.\n-*/\n-struct regfile {\n-\tuint32_t a[16];\n-\tuint32_t pc;\n-\tuint32_t sar;\n-\tuint32_t litbase;\n-\tuint32_t sr176;\n-\tuint32_t sr208;\n-\tuint32_t ps;\n-};\n+\n+static inline bool ATTR_GDBFN gdbRxFifoIsEmpty() {","path":"libraries/GDBStub/src/internal/gdbstub.c","position":346,"original_position":337,"commit_id":"fc7012f27cdb265dca802bf01b6808a1ca250d93","original_commit_id":"cc03543e7b9a6468dc2dc80a12b2c7130192fbd0","user":{"login":"earlephilhower","id":11875,"node_id":"MDQ6VXNlcjExODc1","avatar_url":"https://avatars0.githubusercontent.com/u/11875?v=4","gravatar_id":"","url":"https://api.github.com/users/earlephilhower","html_url":"https://github.com/earlephilhower","followers_url":"https://api.github.com/users/earlephilhower/followers","following_url":"https://api.github.com/users/earlephilhower/following{/other_user}","gists_url":"https://api.github.com/users/earlephilhower/gists{/gist_id}","starred_url":"https://api.github.com/users/earlephilhower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earlephilhower/subscriptions","organizations_url":"https://api.github.com/users/earlephilhower/orgs","repos_url":"https://api.github.com/users/earlephilhower/repos","events_url":"https://api.github.com/users/earlephilhower/events{/privacy}","received_events_url":"https://api.github.com/users/earlephilhower/received_events","type":"User","site_admin":false},"body":"Not worth it in my opinion after going through it a few times.\r\n\r\nThe GDB infrastructure is completely independent from the `struct uart_` stuff in `uart.c` in order to simplify the design (i.e. user can free a `uart_` structure by doing a Serial.end(). but GDB still needs to continue to run).\r\n\r\nThis also minimizes the logic changes in `uart.c` (an already hairy piece of code!) so it's also got that as a positive.","created_at":"2019-01-01T23:14:04Z","updated_at":"2019-01-01T23:14:04Z","html_url":"https://github.com/esp8266/Arduino/pull/5559#discussion_r244650598","pull_request_url":"https://api.github.com/repos/esp8266/Arduino/pulls/5559","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/comments/244650598"},"html":{"href":"https://github.com/esp8266/Arduino/pull/5559#discussion_r244650598"},"pull_request":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/5559"}},"in_reply_to_id":244257149},"pull_request":{"url":"https://api.github.com/repos/esp8266/Arduino/pulls/5559","id":241088839,"node_id":"MDExOlB1bGxSZXF1ZXN0MjQxMDg4ODM5","html_url":"https://github.com/esp8266/Arduino/pull/5559","diff_url":"https://github.com/esp8266/Arduino/pull/5559.diff","patch_url":"https://github.com/esp8266/Arduino/pull/5559.patch","issue_url":"https://api.github.com/repos/esp8266/Arduino/issues/5559","number":5559,"state":"open","locked":false,"title":"WIP - GDB support w/new toolchain and UART driver","user":{"login":"earlephilhower","id":11875,"node_id":"MDQ6VXNlcjExODc1","avatar_url":"https://avatars0.githubusercontent.com/u/11875?v=4","gravatar_id":"","url":"https://api.github.com/users/earlephilhower","html_url":"https://github.com/earlephilhower","followers_url":"https://api.github.com/users/earlephilhower/followers","following_url":"https://api.github.com/users/earlephilhower/following{/other_user}","gists_url":"https://api.github.com/users/earlephilhower/gists{/gist_id}","starred_url":"https://api.github.com/users/earlephilhower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earlephilhower/subscriptions","organizations_url":"https://api.github.com/users/earlephilhower/orgs","repos_url":"https://api.github.com/users/earlephilhower/repos","events_url":"https://api.github.com/users/earlephilhower/events{/privacy}","received_events_url":"https://api.github.com/users/earlephilhower/received_events","type":"User","site_admin":false},"body":"This extends #4386 by manually fixing the merge issues in @kylefleming 's original PR, fixing the linker literal assignment errors, and updating the PR to use the open source GDB protocol for Xtensa (as is included in the new toolchain).\r\n\r\nIt's still WIP because I've not tried everything out nor written up how to use it, but it's able to stop a program in mid-run, set a breakpoint, continue, show values, and change them.\r\n\r\n````\r\n#include <GDBStub.h>\r\nextern \"C\" void gdbstub_init();\r\nvoid setup() {\r\ngdbstub_init();\r\nSerial.begin(115200);\r\nSerial.printf(\"Starting...\\n\");\r\n}\r\n\r\nvoid loop() {\r\nstatic  uint32_t cnt = 0;\r\nSerial.printf(\"%d\\n\", cnt++);\r\n//*(int*)0=1;\r\ndelay(100);\r\n}\r\n````\r\n\r\n````\r\nearle@server:~/src/esp-quick-toolchain/repo/binutils-gdb/gdb$ ~/Arduino/hardware/esp8266com/esp8266/tools/xtensa-lx106-elf/bin/xtensa-lx106-elf-gdb\r\nGNU gdb (GDB) 8.2.50.20180723-git\r\nCopyright (C) 2018 Free Software Foundation, Inc.\r\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\r\nThis is free software: you are free to change and redistribute it.\r\nThere is NO WARRANTY, to the extent permitted by law.\r\nType \"show copying\" and \"show warranty\" for details.\r\nThis GDB was configured as \"--host=x86_64-linux-gnu --target=xtensa-lx106-elf\".\r\nType \"show configuration\" for configuration details.\r\nFor bug reporting instructions, please see:\r\n<http://www.gnu.org/software/gdb/bugs/>.\r\nFind the GDB manual and other documentation resources online at:\r\n    <http://www.gnu.org/software/gdb/documentation/>.\r\n\r\nFor help, type \"help\".\r\nType \"apropos word\" to search for commands related to \"word\".\r\n(gdb) set remote hardware-breakpoint-limit 1\r\n(gdb) set remote hardware-watchpoint-limit 1\r\n(gdb) set remote interrupt-on-connect on\r\n(gdb) set remote kill-packet off\r\n(gdb) set remote symbol-lookup-packet off\r\n(gdb) set remote verbose-resume-packet off\r\n(gdb) file /tmp/arduino_build_257110/sketch_dec26a.ino.elf\r\nReading symbols from /tmp/arduino_build_257110/sketch_dec26a.ino.elf...done.\r\n(gdb) mem 0x20000000 0x3fefffff ro cache\r\n(gdb) mem 0x3ff00000 0x3fffffff rw\r\n(gdb) mem 0x40000000 0x400fffff ro cache\r\n(gdb) mem 0x40100000 0x4013ffff rw cache\r\n(gdb) mem 0x40140000 0x5fffffff ro cache\r\n(gdb) mem 0x60000000 0x60001fff rw\r\n(gdb) set serial baud 115200\r\n(gdb) target remote /dev/ttyUSB0\r\nRemote debugging using /dev/ttyUSB0\r\n0x40000f68 in ?? ()\r\n(gdb) where\r\n#0  0x40000f68 in ?? ()\r\n#1  0x40000f58 in ?? ()\r\nBacktrace stopped: previous frame identical to this frame (corrupt stack?)\r\n(gdb) cont\r\nContinuing.\r\n290\r\n291\r\n292\r\n293\r\n294\r\n295\r\n296\r\n297\r\n298\r\n299\r\n300\r\n301\r\n302\r\n303\r\n304\r\n305\r\n306\r\n307\r\n308\r\n309\r\n310\r\n311\r\n^C\r\nProgram received signal SIGINT, Interrupt.\r\n0x40000f68 in ?? ()\r\n(gdb) where\r\n#0  0x40000f68 in ?? ()\r\n#1  0x40000f58 in ?? ()\r\nBacktrace stopped: previous frame identical to this frame (corrupt stack?)\r\n(gdb) lsit\r\nUndefined command: \"lsit\".  Try \"help\".\r\n(gdb) list\r\n1\t#include <Arduino.h>\r\n2\t#line 1 \"/home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino\"\r\n3\t#line 1 \"/home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino\"\r\n4\t#include <GDBStub.h>\r\n5\textern \"C\" \r\n6\tvoid gdbstub_init();\r\n7\t#line 4 \"/home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino\"\r\n8\tvoid setup();\r\n9\t#line 11 \"/home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino\"\r\n10\tvoid loop();\r\n(gdb) cont\r\nContinuing.\r\nbcn_timout,ap_probe_send_start\r\n312\r\n313\r\n314\r\n315\r\n^C\r\nProgram received signal SIGINT, Interrupt.\r\n0x40000f68 in ?? ()\r\n(gdb) break loop\r\nBreakpoint 1 at 0x402024d7: file /home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino, line 11.\r\n(gdb) cont\r\nContinuing.\r\nNote: automatically using hardware breakpoints for read-only addresses.\r\n\r\nBreakpoint 1, loop () at /home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino:11\r\n11\tvoid loop() {\r\n(gdb) where\r\n#0  loop () at /home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino:11\r\n#1  0x40202a40 in loop_wrapper () at /home/earle/Arduino/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp:124\r\n#2  0x401013f9 in cont_wrapper () at /home/earle/Arduino/hardware/esp8266com/esp8266/cores/esp8266/cont.S:80\r\n(gdb) info registers\r\npc             0x402024d7          0x402024d7 <loop()+3>\r\nlbeg           <unavailable>\r\nlend           <unavailable>\r\nlcount         <unavailable>\r\nsar            0x1e                30\r\nlitbase        0x0                 0\r\nps             0x20                32\r\nthreadptr      <unavailable>\r\nscompare1      <unavailable>\r\na0             0x40202a40          1075849792\r\na1             0x3fffffb0          1073741744\r\na2             0x3ffee3b8          1073669048\r\na3             0x40202a20          1075849760\r\na4             0x0                 0\r\na5             0x0                 0\r\na6             0x0                 0\r\na7             0x0                 0\r\na8             0xfffffffe          -2\r\na9             0xffffffff          -1\r\na10            0x3fffc6fc          1073727228\r\na11            0x1                 1\r\na12            0x3ffee558          1073669464\r\na13            0x0                 0\r\na14            0x3fffdad0          1073732304\r\na15            0x3ffee58c          1073669516\r\n(gdb) print cnt\r\nNo symbol \"cnt\" in current context.\r\n(gdb) next\r\nloop () at /home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino:14\r\n14\tSerial.printf(\"%d\\n\", cnt++);\r\n(gdb) print cnt\r\n$1 = 316\r\n(gdb) set cnt=2000\r\n(gdb) print cnt\r\n$2 = 2000\r\n(gdb) cont\r\nContinuing.\r\n2000\r\n\r\nBreakpoint 1, loop () at /home/earle/Arduino/sketch_dec26a/sketch_dec26a.ino:11\r\n11\tvoid loop() {\r\n(gdb) cont\r\nContinuing.\r\n2001\r\n````","created_at":"2018-12-27T07:00:05Z","updated_at":"2019-01-01T23:14:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a1061b58fe90956e264b4bd5b3c0f50271150f18","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/esp8266/Arduino/pulls/5559/commits","review_comments_url":"https://api.github.com/repos/esp8266/Arduino/pulls/5559/comments","review_comment_url":"https://api.github.com/repos/esp8266/Arduino/pulls/comments{/number}","comments_url":"https://api.github.com/repos/esp8266/Arduino/issues/5559/comments","statuses_url":"https://api.github.com/repos/esp8266/Arduino/statuses/fc7012f27cdb265dca802bf01b6808a1ca250d93","head":{"label":"earlephilhower:gdb","ref":"gdb","sha":"fc7012f27cdb265dca802bf01b6808a1ca250d93","user":{"login":"earlephilhower","id":11875,"node_id":"MDQ6VXNlcjExODc1","avatar_url":"https://avatars0.githubusercontent.com/u/11875?v=4","gravatar_id":"","url":"https://api.github.com/users/earlephilhower","html_url":"https://github.com/earlephilhower","followers_url":"https://api.github.com/users/earlephilhower/followers","following_url":"https://api.github.com/users/earlephilhower/following{/other_user}","gists_url":"https://api.github.com/users/earlephilhower/gists{/gist_id}","starred_url":"https://api.github.com/users/earlephilhower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earlephilhower/subscriptions","organizations_url":"https://api.github.com/users/earlephilhower/orgs","repos_url":"https://api.github.com/users/earlephilhower/repos","events_url":"https://api.github.com/users/earlephilhower/events{/privacy}","received_events_url":"https://api.github.com/users/earlephilhower/received_events","type":"User","site_admin":false},"repo":{"id":83385402,"node_id":"MDEwOlJlcG9zaXRvcnk4MzM4NTQwMg==","name":"Arduino","full_name":"earlephilhower/Arduino","private":false,"owner":{"login":"earlephilhower","id":11875,"node_id":"MDQ6VXNlcjExODc1","avatar_url":"https://avatars0.githubusercontent.com/u/11875?v=4","gravatar_id":"","url":"https://api.github.com/users/earlephilhower","html_url":"https://github.com/earlephilhower","followers_url":"https://api.github.com/users/earlephilhower/followers","following_url":"https://api.github.com/users/earlephilhower/following{/other_user}","gists_url":"https://api.github.com/users/earlephilhower/gists{/gist_id}","starred_url":"https://api.github.com/users/earlephilhower/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earlephilhower/subscriptions","organizations_url":"https://api.github.com/users/earlephilhower/orgs","repos_url":"https://api.github.com/users/earlephilhower/repos","events_url":"https://api.github.com/users/earlephilhower/events{/privacy}","received_events_url":"https://api.github.com/users/earlephilhower/received_events","type":"User","site_admin":false},"html_url":"https://github.com/earlephilhower/Arduino","description":"ESP8266 core for Arduino","fork":true,"url":"https://api.github.com/repos/earlephilhower/Arduino","forks_url":"https://api.github.com/repos/earlephilhower/Arduino/forks","keys_url":"https://api.github.com/repos/earlephilhower/Arduino/keys{/key_id}","collaborators_url":"https://api.github.com/repos/earlephilhower/Arduino/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/earlephilhower/Arduino/teams","hooks_url":"https://api.github.com/repos/earlephilhower/Arduino/hooks","issue_events_url":"https://api.github.com/repos/earlephilhower/Arduino/issues/events{/number}","events_url":"https://api.github.com/repos/earlephilhower/Arduino/events","assignees_url":"https://api.github.com/repos/earlephilhower/Arduino/assignees{/user}","branches_url":"https://api.github.com/repos/earlephilhower/Arduino/branches{/branch}","tags_url":"https://api.github.com/repos/earlephilhower/Arduino/tags","blobs_url":"https://api.github.com/repos/earlephilhower/Arduino/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/earlephilhower/Arduino/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/earlephilhower/Arduino/git/refs{/sha}","trees_url":"https://api.github.com/repos/earlephilhower/Arduino/git/trees{/sha}","statuses_url":"https://api.github.com/repos/earlephilhower/Arduino/statuses/{sha}","languages_url":"https://api.github.com/repos/earlephilhower/Arduino/languages","stargazers_url":"https://api.github.com/repos/earlephilhower/Arduino/stargazers","contributors_url":"https://api.github.com/repos/earlephilhower/Arduino/contributors","subscribers_url":"https://api.github.com/repos/earlephilhower/Arduino/subscribers","subscription_url":"https://api.github.com/repos/earlephilhower/Arduino/subscription","commits_url":"https://api.github.com/repos/earlephilhower/Arduino/commits{/sha}","git_commits_url":"https://api.github.com/repos/earlephilhower/Arduino/git/commits{/sha}","comments_url":"https://api.github.com/repos/earlephilhower/Arduino/comments{/number}","issue_comment_url":"https://api.github.com/repos/earlephilhower/Arduino/issues/comments{/number}","contents_url":"https://api.github.com/repos/earlephilhower/Arduino/contents/{+path}","compare_url":"https://api.github.com/repos/earlephilhower/Arduino/compare/{base}...{head}","merges_url":"https://api.github.com/repos/earlephilhower/Arduino/merges","archive_url":"https://api.github.com/repos/earlephilhower/Arduino/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/earlephilhower/Arduino/downloads","issues_url":"https://api.github.com/repos/earlephilhower/Arduino/issues{/number}","pulls_url":"https://api.github.com/repos/earlephilhower/Arduino/pulls{/number}","milestones_url":"https://api.github.com/repos/earlephilhower/Arduino/milestones{/number}","notifications_url":"https://api.github.com/repos/earlephilhower/Arduino/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/earlephilhower/Arduino/labels{/name}","releases_url":"https://api.github.com/repos/earlephilhower/Arduino/releases{/id}","deployments_url":"https://api.github.com/repos/earlephilhower/Arduino/deployments","created_at":"2017-02-28T03:31:42Z","updated_at":"2018-12-27T18:49:29Z","pushed_at":"2018-12-31T19:50:09Z","git_url":"git://github.com/earlephilhower/Arduino.git","ssh_url":"git@github.com:earlephilhower/Arduino.git","clone_url":"https://github.com/earlephilhower/Arduino.git","svn_url":"https://github.com/earlephilhower/Arduino","homepage":"","size":75211,"stargazers_count":5,"watchers_count":5,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":1,"open_issues":0,"watchers":5,"default_branch":"master"}},"base":{"label":"esp8266:master","ref":"master","sha":"eb5d636f0d2b5771ce5f59b68263912f5c6e975e","user":{"login":"esp8266","id":8943775,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg5NDM3NzU=","avatar_url":"https://avatars1.githubusercontent.com/u/8943775?v=4","gravatar_id":"","url":"https://api.github.com/users/esp8266","html_url":"https://github.com/esp8266","followers_url":"https://api.github.com/users/esp8266/followers","following_url":"https://api.github.com/users/esp8266/following{/other_user}","gists_url":"https://api.github.com/users/esp8266/gists{/gist_id}","starred_url":"https://api.github.com/users/esp8266/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esp8266/subscriptions","organizations_url":"https://api.github.com/users/esp8266/orgs","repos_url":"https://api.github.com/users/esp8266/repos","events_url":"https://api.github.com/users/esp8266/events{/privacy}","received_events_url":"https://api.github.com/users/esp8266/received_events","type":"Organization","site_admin":false},"repo":{"id":32969220,"node_id":"MDEwOlJlcG9zaXRvcnkzMjk2OTIyMA==","name":"Arduino","full_name":"esp8266/Arduino","private":false,"owner":{"login":"esp8266","id":8943775,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg5NDM3NzU=","avatar_url":"https://avatars1.githubusercontent.com/u/8943775?v=4","gravatar_id":"","url":"https://api.github.com/users/esp8266","html_url":"https://github.com/esp8266","followers_url":"https://api.github.com/users/esp8266/followers","following_url":"https://api.github.com/users/esp8266/following{/other_user}","gists_url":"https://api.github.com/users/esp8266/gists{/gist_id}","starred_url":"https://api.github.com/users/esp8266/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esp8266/subscriptions","organizations_url":"https://api.github.com/users/esp8266/orgs","repos_url":"https://api.github.com/users/esp8266/repos","events_url":"https://api.github.com/users/esp8266/events{/privacy}","received_events_url":"https://api.github.com/users/esp8266/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/esp8266/Arduino","description":"ESP8266 core for Arduino","fork":false,"url":"https://api.github.com/repos/esp8266/Arduino","forks_url":"https://api.github.com/repos/esp8266/Arduino/forks","keys_url":"https://api.github.com/repos/esp8266/Arduino/keys{/key_id}","collaborators_url":"https://api.github.com/repos/esp8266/Arduino/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/esp8266/Arduino/teams","hooks_url":"https://api.github.com/repos/esp8266/Arduino/hooks","issue_events_url":"https://api.github.com/repos/esp8266/Arduino/issues/events{/number}","events_url":"https://api.github.com/repos/esp8266/Arduino/events","assignees_url":"https://api.github.com/repos/esp8266/Arduino/assignees{/user}","branches_url":"https://api.github.com/repos/esp8266/Arduino/branches{/branch}","tags_url":"https://api.github.com/repos/esp8266/Arduino/tags","blobs_url":"https://api.github.com/repos/esp8266/Arduino/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/esp8266/Arduino/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/esp8266/Arduino/git/refs{/sha}","trees_url":"https://api.github.com/repos/esp8266/Arduino/git/trees{/sha}","statuses_url":"https://api.github.com/repos/esp8266/Arduino/statuses/{sha}","languages_url":"https://api.github.com/repos/esp8266/Arduino/languages","stargazers_url":"https://api.github.com/repos/esp8266/Arduino/stargazers","contributors_url":"https://api.github.com/repos/esp8266/Arduino/contributors","subscribers_url":"https://api.github.com/repos/esp8266/Arduino/subscribers","subscription_url":"https://api.github.com/repos/esp8266/Arduino/subscription","commits_url":"https://api.github.com/repos/esp8266/Arduino/commits{/sha}","git_commits_url":"https://api.github.com/repos/esp8266/Arduino/git/commits{/sha}","comments_url":"https://api.github.com/repos/esp8266/Arduino/comments{/number}","issue_comment_url":"https://api.github.com/repos/esp8266/Arduino/issues/comments{/number}","contents_url":"https://api.github.com/repos/esp8266/Arduino/contents/{+path}","compare_url":"https://api.github.com/repos/esp8266/Arduino/compare/{base}...{head}","merges_url":"https://api.github.com/repos/esp8266/Arduino/merges","archive_url":"https://api.github.com/repos/esp8266/Arduino/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/esp8266/Arduino/downloads","issues_url":"https://api.github.com/repos/esp8266/Arduino/issues{/number}","pulls_url":"https://api.github.com/repos/esp8266/Arduino/pulls{/number}","milestones_url":"https://api.github.com/repos/esp8266/Arduino/milestones{/number}","notifications_url":"https://api.github.com/repos/esp8266/Arduino/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/esp8266/Arduino/labels{/name}","releases_url":"https://api.github.com/repos/esp8266/Arduino/releases{/id}","deployments_url":"https://api.github.com/repos/esp8266/Arduino/deployments","created_at":"2015-03-27T05:22:06Z","updated_at":"2019-01-01T19:16:25Z","pushed_at":"2019-01-01T20:29:11Z","git_url":"git://github.com/esp8266/Arduino.git","ssh_url":"git@github.com:esp8266/Arduino.git","clone_url":"https://github.com/esp8266/Arduino.git","svn_url":"https://github.com/esp8266/Arduino","homepage":"","size":68312,"stargazers_count":8550,"watchers_count":8550,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":5988,"mirror_url":null,"archived":false,"open_issues_count":472,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":5988,"open_issues":472,"watchers":8550,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/5559"},"html":{"href":"https://github.com/esp8266/Arduino/pull/5559"},"issue":{"href":"https://api.github.com/repos/esp8266/Arduino/issues/5559"},"comments":{"href":"https://api.github.com/repos/esp8266/Arduino/issues/5559/comments"},"review_comments":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/5559/comments"},"review_comment":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/esp8266/Arduino/pulls/5559/commits"},"statuses":{"href":"https://api.github.com/repos/esp8266/Arduino/statuses/fc7012f27cdb265dca802bf01b6808a1ca250d93"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"earlephilhower"}}