{"action":"created","comment":{"url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/comments/152810791","pull_request_review_id":78729777,"id":152810791,"diff_hunk":"@@ -0,0 +1,245 @@\n+/* mbed Microcontroller Library\n+ * Copyright (c) 2017, ARM Limited\n+ * 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 are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ * 3. Neither the name of STMicroelectronics nor the names of its contributors\n+ *    may be 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 \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+#if DEVICE_QSPI\n+\n+#include \"qspi_api.h\"\n+#include \"mbed_error.h\"\n+#include \"cmsis.h\"\n+#include \"pinmap.h\"\n+#include \"PeripheralPins.h\"\n+\n+#define QSPI_FLASH_SIZE_DEFAULT 32\n+\n+void qspi_prepare_command(const qspi_command_t *command, QSPI_CommandTypeDef *st_command) \n+{\n+    // TODO: shift these around to get more dynamic mapping\n+    switch (command->instruction.bus_width) {\n+        case QSPI_CFG_BUS_SINGLE:\n+            st_command->InstructionMode = QSPI_INSTRUCTION_1_LINE;\n+            break;\n+        case QSPI_CFG_BUS_DUAL:\n+            st_command->InstructionMode = QSPI_INSTRUCTION_2_LINES;\n+            break;\n+        case QSPI_CFG_BUS_QUAD:\n+            st_command->InstructionMode = QSPI_INSTRUCTION_4_LINES;\n+            break;\n+    }\n+\n+    st_command->Instruction = command->instruction.value;\n+    st_command->DummyCycles = command->dummy_count,\n+    // these are target specific settings, use default values\n+    st_command->SIOOMode = QSPI_SIOO_INST_EVERY_CMD;\n+    st_command->DdrMode = QSPI_DDR_MODE_DISABLE;\n+    st_command->DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;\n+\n+    switch (command->address.bus_width) {\n+        case QSPI_CFG_BUS_SINGLE:\n+            st_command->AddressMode = QSPI_ADDRESS_1_LINE;\n+            break;\n+        case QSPI_CFG_BUS_DUAL:\n+            st_command->AddressMode = QSPI_ADDRESS_2_LINES;\n+            break;\n+        case QSPI_CFG_BUS_QUAD:\n+            st_command->AddressMode = QSPI_ADDRESS_4_LINES;\n+            break;\n+        default:\n+            st_command->AddressMode = QSPI_ADDRESS_1_LINE;\n+            break;\n+    }\n+\n+    if (command->address.size == QSPI_CFG_ADDR_SIZE_NONE) {\n+        st_command->AddressMode = QSPI_ADDRESS_NONE;\n+    }\n+\n+    switch (command->alt.bus_width) {\n+        case QSPI_CFG_BUS_SINGLE:\n+            st_command->AlternateByteMode = QSPI_ALTERNATE_BYTES_1_LINE;\n+            break;\n+        case QSPI_CFG_BUS_DUAL:\n+            st_command->AlternateByteMode = QSPI_ALTERNATE_BYTES_2_LINES;\n+            break;\n+        case QSPI_CFG_BUS_QUAD:\n+            st_command->AlternateByteMode = QSPI_ALTERNATE_BYTES_4_LINES;\n+            break;\n+        default:\n+            st_command->AlternateByteMode = QSPI_ALTERNATE_BYTES_1_LINE;\n+            break;\n+    }\n+\n+    if (command->alt.size == QSPI_CFG_ALT_SIZE_NONE) {\n+        st_command->AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;\n+    }\n+\n+    switch (command->data.bus_width) {\n+        case QSPI_CFG_BUS_SINGLE:\n+            st_command->DataMode = QSPI_DATA_1_LINE;\n+            break;\n+        case QSPI_CFG_BUS_DUAL:\n+            st_command->DataMode = QSPI_DATA_2_LINES;\n+            break;\n+        case QSPI_CFG_BUS_QUAD:\n+            st_command->DataMode = QSPI_DATA_4_LINES;\n+            break;\n+        default:\n+            st_command->DataMode = QSPI_DATA_1_LINE;\n+            break;\n+    }\n+}\n+\n+\n+qspi_status_t qspi_init(qspi_t *obj, PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel, uint32_t hz, uint8_t mode)\n+{\n+    // Enable interface clock for QSPI\n+     __HAL_RCC_QSPI_CLK_ENABLE();\n+\n+    // Reset QSPI\n+    __HAL_RCC_QSPI_FORCE_RESET();\n+    __HAL_RCC_QSPI_RELEASE_RESET();\n+\n+    // Set default QSPI handle values\n+    obj->handle.Init.ClockPrescaler = 1;\n+    obj->handle.Init.FifoThreshold = 4;\n+    obj->handle.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE;\n+    obj->handle.Init.FlashSize = POSITION_VAL(QSPI_FLASH_SIZE_DEFAULT) - 1;\n+    obj->handle.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_2_CYCLE;\n+    obj->handle.Init.ClockMode = QSPI_CLOCK_MODE_0;\n+    obj->handle.Init.FlashID = QSPI_FLASH_ID_1;\n+    obj->handle.Init.DualFlash = QSPI_DUALFLASH_DISABLE;\n+\n+    obj->handle.Init.ClockMode = mode == 0 ? QSPI_CLOCK_MODE_0 : QSPI_CLOCK_MODE_3;\n+\n+    obj->handle.Instance = QUADSPI;\n+\n+    // TODO pinmap here for pins (enable clock)\n+    pinmap_pinout(io0, PinMap_QSPI_DATA);\n+    pinmap_pinout(io1, PinMap_QSPI_DATA);\n+    pinmap_pinout(io2, PinMap_QSPI_DATA);\n+    pinmap_pinout(io3, PinMap_QSPI_DATA);\n+\n+    pinmap_pinout(sclk, PinMap_QSPI_SCLK);\n+    pinmap_pinout(ssel, PinMap_QSPI_SSEL);\n+\n+    if (HAL_QSPI_Init(&obj->handle) != HAL_OK) {","path":"targets/TARGET_STM/qspi_api.c","position":148,"original_position":148,"commit_id":"0f78ab0590a06e5ec3bf6b78e5c0e06ec3fd9c09","original_commit_id":"d435874e3a77bb8718caf14e9481efdb3e5d8a81","user":{"login":"bcostm","id":5803932,"avatar_url":"https://avatars3.githubusercontent.com/u/5803932?v=4","gravatar_id":"","url":"https://api.github.com/users/bcostm","html_url":"https://github.com/bcostm","followers_url":"https://api.github.com/users/bcostm/followers","following_url":"https://api.github.com/users/bcostm/following{/other_user}","gists_url":"https://api.github.com/users/bcostm/gists{/gist_id}","starred_url":"https://api.github.com/users/bcostm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bcostm/subscriptions","organizations_url":"https://api.github.com/users/bcostm/orgs","repos_url":"https://api.github.com/users/bcostm/repos","events_url":"https://api.github.com/users/bcostm/events{/privacy}","received_events_url":"https://api.github.com/users/bcostm/received_events","type":"User","site_admin":false},"body":"Question: what about the DMA configuration as done CubeF4 QSPI example ?","created_at":"2017-11-23T14:16:40Z","updated_at":"2017-11-23T14:16:40Z","html_url":"https://github.com/ARMmbed/mbed-os/pull/5569#discussion_r152810791","pull_request_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/comments/152810791"},"html":{"href":"https://github.com/ARMmbed/mbed-os/pull/5569#discussion_r152810791"},"pull_request":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569"}}},"pull_request":{"url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569","id":154368714,"html_url":"https://github.com/ARMmbed/mbed-os/pull/5569","diff_url":"https://github.com/ARMmbed/mbed-os/pull/5569.diff","patch_url":"https://github.com/ARMmbed/mbed-os/pull/5569.patch","issue_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/5569","number":5569,"state":"open","locked":false,"title":"Feature QSPI: add STM32 implementation","user":{"login":"0xc0170","id":2963726,"avatar_url":"https://avatars0.githubusercontent.com/u/2963726?v=4","gravatar_id":"","url":"https://api.github.com/users/0xc0170","html_url":"https://github.com/0xc0170","followers_url":"https://api.github.com/users/0xc0170/followers","following_url":"https://api.github.com/users/0xc0170/following{/other_user}","gists_url":"https://api.github.com/users/0xc0170/gists{/gist_id}","starred_url":"https://api.github.com/users/0xc0170/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0xc0170/subscriptions","organizations_url":"https://api.github.com/users/0xc0170/orgs","repos_url":"https://api.github.com/users/0xc0170/repos","events_url":"https://api.github.com/users/0xc0170/events{/privacy}","received_events_url":"https://api.github.com/users/0xc0170/received_events","type":"User","site_admin":false},"body":"experimental QSPI stm32 (using disco-f469ni target), sharing here for review to accelerate the progress with this implementation\r\n\r\n@ARMmbed/team-st-mcd this is work in progress, there are two PR active that change HAL a bit, so this will be rebased .\r\n\r\nI am updating the test example to continue testing this implementaiton, once we have it ready will be shared. What is missing here is polling mode to get status, that one I believe is related to the QSPI custom instruction that is in another PR. To directly talk to the device to read its registers.\r\n\r\nIf you find a minute to review, and send feedback ?","created_at":"2017-11-23T12:48:12Z","updated_at":"2017-11-23T14:16:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c31bb1fc5909e8c99d62910988c4dcc89e96c854","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569/commits","review_comments_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569/comments","review_comment_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/5569/comments","statuses_url":"https://api.github.com/repos/ARMmbed/mbed-os/statuses/0f78ab0590a06e5ec3bf6b78e5c0e06ec3fd9c09","head":{"label":"0xc0170:feature-qspi-st","ref":"feature-qspi-st","sha":"0f78ab0590a06e5ec3bf6b78e5c0e06ec3fd9c09","user":{"login":"0xc0170","id":2963726,"avatar_url":"https://avatars0.githubusercontent.com/u/2963726?v=4","gravatar_id":"","url":"https://api.github.com/users/0xc0170","html_url":"https://github.com/0xc0170","followers_url":"https://api.github.com/users/0xc0170/followers","following_url":"https://api.github.com/users/0xc0170/following{/other_user}","gists_url":"https://api.github.com/users/0xc0170/gists{/gist_id}","starred_url":"https://api.github.com/users/0xc0170/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0xc0170/subscriptions","organizations_url":"https://api.github.com/users/0xc0170/orgs","repos_url":"https://api.github.com/users/0xc0170/repos","events_url":"https://api.github.com/users/0xc0170/events{/privacy}","received_events_url":"https://api.github.com/users/0xc0170/received_events","type":"User","site_admin":false},"repo":{"id":10604206,"name":"mbed-os","full_name":"0xc0170/mbed-os","owner":{"login":"0xc0170","id":2963726,"avatar_url":"https://avatars0.githubusercontent.com/u/2963726?v=4","gravatar_id":"","url":"https://api.github.com/users/0xc0170","html_url":"https://github.com/0xc0170","followers_url":"https://api.github.com/users/0xc0170/followers","following_url":"https://api.github.com/users/0xc0170/following{/other_user}","gists_url":"https://api.github.com/users/0xc0170/gists{/gist_id}","starred_url":"https://api.github.com/users/0xc0170/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/0xc0170/subscriptions","organizations_url":"https://api.github.com/users/0xc0170/orgs","repos_url":"https://api.github.com/users/0xc0170/repos","events_url":"https://api.github.com/users/0xc0170/events{/privacy}","received_events_url":"https://api.github.com/users/0xc0170/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/0xc0170/mbed-os","description":"mbed libraries and tools","fork":true,"url":"https://api.github.com/repos/0xc0170/mbed-os","forks_url":"https://api.github.com/repos/0xc0170/mbed-os/forks","keys_url":"https://api.github.com/repos/0xc0170/mbed-os/keys{/key_id}","collaborators_url":"https://api.github.com/repos/0xc0170/mbed-os/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/0xc0170/mbed-os/teams","hooks_url":"https://api.github.com/repos/0xc0170/mbed-os/hooks","issue_events_url":"https://api.github.com/repos/0xc0170/mbed-os/issues/events{/number}","events_url":"https://api.github.com/repos/0xc0170/mbed-os/events","assignees_url":"https://api.github.com/repos/0xc0170/mbed-os/assignees{/user}","branches_url":"https://api.github.com/repos/0xc0170/mbed-os/branches{/branch}","tags_url":"https://api.github.com/repos/0xc0170/mbed-os/tags","blobs_url":"https://api.github.com/repos/0xc0170/mbed-os/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/0xc0170/mbed-os/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/0xc0170/mbed-os/git/refs{/sha}","trees_url":"https://api.github.com/repos/0xc0170/mbed-os/git/trees{/sha}","statuses_url":"https://api.github.com/repos/0xc0170/mbed-os/statuses/{sha}","languages_url":"https://api.github.com/repos/0xc0170/mbed-os/languages","stargazers_url":"https://api.github.com/repos/0xc0170/mbed-os/stargazers","contributors_url":"https://api.github.com/repos/0xc0170/mbed-os/contributors","subscribers_url":"https://api.github.com/repos/0xc0170/mbed-os/subscribers","subscription_url":"https://api.github.com/repos/0xc0170/mbed-os/subscription","commits_url":"https://api.github.com/repos/0xc0170/mbed-os/commits{/sha}","git_commits_url":"https://api.github.com/repos/0xc0170/mbed-os/git/commits{/sha}","comments_url":"https://api.github.com/repos/0xc0170/mbed-os/comments{/number}","issue_comment_url":"https://api.github.com/repos/0xc0170/mbed-os/issues/comments{/number}","contents_url":"https://api.github.com/repos/0xc0170/mbed-os/contents/{+path}","compare_url":"https://api.github.com/repos/0xc0170/mbed-os/compare/{base}...{head}","merges_url":"https://api.github.com/repos/0xc0170/mbed-os/merges","archive_url":"https://api.github.com/repos/0xc0170/mbed-os/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/0xc0170/mbed-os/downloads","issues_url":"https://api.github.com/repos/0xc0170/mbed-os/issues{/number}","pulls_url":"https://api.github.com/repos/0xc0170/mbed-os/pulls{/number}","milestones_url":"https://api.github.com/repos/0xc0170/mbed-os/milestones{/number}","notifications_url":"https://api.github.com/repos/0xc0170/mbed-os/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/0xc0170/mbed-os/labels{/name}","releases_url":"https://api.github.com/repos/0xc0170/mbed-os/releases{/id}","deployments_url":"https://api.github.com/repos/0xc0170/mbed-os/deployments","created_at":"2013-06-10T16:09:18Z","updated_at":"2017-04-03T12:28:55Z","pushed_at":"2017-11-23T14:14:27Z","git_url":"git://github.com/0xc0170/mbed-os.git","ssh_url":"git@github.com:0xc0170/mbed-os.git","clone_url":"https://github.com/0xc0170/mbed-os.git","svn_url":"https://github.com/0xc0170/mbed-os","homepage":null,"size":179148,"stargazers_count":1,"watchers_count":1,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"ARMmbed:feature-qspi","ref":"feature-qspi","sha":"43d7caf5c38afbf69bd20a608e8635c28297b047","user":{"login":"ARMmbed","id":8916057,"avatar_url":"https://avatars3.githubusercontent.com/u/8916057?v=4","gravatar_id":"","url":"https://api.github.com/users/ARMmbed","html_url":"https://github.com/ARMmbed","followers_url":"https://api.github.com/users/ARMmbed/followers","following_url":"https://api.github.com/users/ARMmbed/following{/other_user}","gists_url":"https://api.github.com/users/ARMmbed/gists{/gist_id}","starred_url":"https://api.github.com/users/ARMmbed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARMmbed/subscriptions","organizations_url":"https://api.github.com/users/ARMmbed/orgs","repos_url":"https://api.github.com/users/ARMmbed/repos","events_url":"https://api.github.com/users/ARMmbed/events{/privacy}","received_events_url":"https://api.github.com/users/ARMmbed/received_events","type":"Organization","site_admin":false},"repo":{"id":8270972,"name":"mbed-os","full_name":"ARMmbed/mbed-os","owner":{"login":"ARMmbed","id":8916057,"avatar_url":"https://avatars3.githubusercontent.com/u/8916057?v=4","gravatar_id":"","url":"https://api.github.com/users/ARMmbed","html_url":"https://github.com/ARMmbed","followers_url":"https://api.github.com/users/ARMmbed/followers","following_url":"https://api.github.com/users/ARMmbed/following{/other_user}","gists_url":"https://api.github.com/users/ARMmbed/gists{/gist_id}","starred_url":"https://api.github.com/users/ARMmbed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ARMmbed/subscriptions","organizations_url":"https://api.github.com/users/ARMmbed/orgs","repos_url":"https://api.github.com/users/ARMmbed/repos","events_url":"https://api.github.com/users/ARMmbed/events{/privacy}","received_events_url":"https://api.github.com/users/ARMmbed/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ARMmbed/mbed-os","description":"ARM mbed OS is a platform operating system designed for the internet of things","fork":false,"url":"https://api.github.com/repos/ARMmbed/mbed-os","forks_url":"https://api.github.com/repos/ARMmbed/mbed-os/forks","keys_url":"https://api.github.com/repos/ARMmbed/mbed-os/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ARMmbed/mbed-os/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ARMmbed/mbed-os/teams","hooks_url":"https://api.github.com/repos/ARMmbed/mbed-os/hooks","issue_events_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/events{/number}","events_url":"https://api.github.com/repos/ARMmbed/mbed-os/events","assignees_url":"https://api.github.com/repos/ARMmbed/mbed-os/assignees{/user}","branches_url":"https://api.github.com/repos/ARMmbed/mbed-os/branches{/branch}","tags_url":"https://api.github.com/repos/ARMmbed/mbed-os/tags","blobs_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/refs{/sha}","trees_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ARMmbed/mbed-os/statuses/{sha}","languages_url":"https://api.github.com/repos/ARMmbed/mbed-os/languages","stargazers_url":"https://api.github.com/repos/ARMmbed/mbed-os/stargazers","contributors_url":"https://api.github.com/repos/ARMmbed/mbed-os/contributors","subscribers_url":"https://api.github.com/repos/ARMmbed/mbed-os/subscribers","subscription_url":"https://api.github.com/repos/ARMmbed/mbed-os/subscription","commits_url":"https://api.github.com/repos/ARMmbed/mbed-os/commits{/sha}","git_commits_url":"https://api.github.com/repos/ARMmbed/mbed-os/git/commits{/sha}","comments_url":"https://api.github.com/repos/ARMmbed/mbed-os/comments{/number}","issue_comment_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues/comments{/number}","contents_url":"https://api.github.com/repos/ARMmbed/mbed-os/contents/{+path}","compare_url":"https://api.github.com/repos/ARMmbed/mbed-os/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ARMmbed/mbed-os/merges","archive_url":"https://api.github.com/repos/ARMmbed/mbed-os/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ARMmbed/mbed-os/downloads","issues_url":"https://api.github.com/repos/ARMmbed/mbed-os/issues{/number}","pulls_url":"https://api.github.com/repos/ARMmbed/mbed-os/pulls{/number}","milestones_url":"https://api.github.com/repos/ARMmbed/mbed-os/milestones{/number}","notifications_url":"https://api.github.com/repos/ARMmbed/mbed-os/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ARMmbed/mbed-os/labels{/name}","releases_url":"https://api.github.com/repos/ARMmbed/mbed-os/releases{/id}","deployments_url":"https://api.github.com/repos/ARMmbed/mbed-os/deployments","created_at":"2013-02-18T15:23:11Z","updated_at":"2017-11-23T06:40:54Z","pushed_at":"2017-11-23T14:14:30Z","git_url":"git://github.com/ARMmbed/mbed-os.git","ssh_url":"git@github.com:ARMmbed/mbed-os.git","clone_url":"https://github.com/ARMmbed/mbed-os.git","svn_url":"https://github.com/ARMmbed/mbed-os","homepage":"https://mbed.com","size":181281,"stargazers_count":1318,"watchers_count":1318,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1229,"mirror_url":null,"archived":false,"open_issues_count":362,"forks":1229,"open_issues":362,"watchers":1318,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569"},"html":{"href":"https://github.com/ARMmbed/mbed-os/pull/5569"},"issue":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/issues/5569"},"comments":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/issues/5569/comments"},"review_comments":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569/comments"},"review_comment":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/pulls/5569/commits"},"statuses":{"href":"https://api.github.com/repos/ARMmbed/mbed-os/statuses/0f78ab0590a06e5ec3bf6b78e5c0e06ec3fd9c09"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"bcostm"}}