{"action":"created","comment":{"url":"https://api.github.com/repos/CreatorDev/contiki/pulls/comments/101972878","pull_request_review_id":22712869,"id":101972878,"diff_hunk":"@@ -0,0 +1,235 @@\n+/*\n+ * Copyright (c) 2017, Imagination Technologies Limited and/or its affiliated\n+ * group companies.\n+ *\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+ *\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+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ * contributors may be used to endorse or promote products derived from this\n+ * software 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\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+\n+#ifdef __USE_PWM__\n+\n+#include <p32xxxx.h>\n+#include <pic32_clock.h>\n+#include <pic32_pwm.h>\n+\n+#define PRESCALER_COUNT   (8)\n+\n+/* Number of bits in the decimal part in fixed-point format */\n+#define DECIMAL_COUNT     (4)\n+\n+/* Peripheral clock period in nanoseconds in fixed-point format */\n+#define PBCLK_PERIOD      (uint32_t)((1000 * 1000 * 1000) / (pic32_clock_get_peripheral_clock() >> DECIMAL_COUNT))\n+\n+/*----------------------------------------------------------------------------------------------*/\n+static const uint32_t prescaler_values[PRESCALER_COUNT] = {1, 2, 4, 8, 16, 32, 64, 256};\n+/*----------------------------------------------------------------------------------------------*/\n+/**\n+ * @brief Configure timer parameters\n+ *\n+ * PR and prescalers of timer need to be found such that the period of the timer is as close as possible\n+ * from the desired period. At the same time, PR needs to be as high as possible such that the resolution\n+ * is as high as possible.\n+ *\n+ * Note that all computations involving periods are done in fixed-point format. The reason is that computing\n+ * the period of the peripheral base clock in nanoseconds might not result in an integer and this leads\n+ * to errors in the computation of PR. The DECIMAL_COUNT macro represents the number of bits for the\n+ * decimal part.\n+ *\n+ * @param[in] period in nanoseconds\n+ * @param[out] prescaler_index\n+ * @param[out] pr Timer period\n+ * @return 0 if successful, 1 if output parameters are NULL, 2 if no suitable prescaler can be found,\n+ * 3 if the period error is too big.\n+ */\n+static uint8_t configure_timer(uint32_t period, uint8_t *prescaler_index, volatile unsigned int *pr)\n+{\n+  if (prescaler_index == NULL || pr == NULL)\n+    return 1;\n+\n+  /* Compute period and pb_period into fixed-point integers format */\n+  period <<= DECIMAL_COUNT;\n+  const uint32_t pb_period = PBCLK_PERIOD;\n+\n+  /* 1. Find minimum prescaler that we can use.\n+   * Since we use 16bit timer, PR maximum value is 65535.\n+   *\n+   * period of the timer = (PR + 1) * prescaler * pb_period\n+   *\n+   * Iterate over all prescalers in ascending order and find minimum prescaler such that:\n+   *\n+   *      desired_period\n+   *      -------------- < prescaler * pb_period\n+   *           65536\n+   */\n+  int8_t minimum_prescaler_index = 0;\n+  while (minimum_prescaler_index < PRESCALER_COUNT) {\n+    uint32_t max_prescaler_period = pb_period * prescaler_values[minimum_prescaler_index];\n+\n+    if ((period >> 16) < max_prescaler_period)\n+      break;\n+    ++minimum_prescaler_index;\n+  }\n+  if (minimum_prescaler_index == PRESCALER_COUNT)\n+    return 2;\n+\n+  /* 2. Find PR given prescaler.\n+   * Iterate over suitable prescaler, compute PR+1 and PR and their respective\n+   * periods:\n+   *\n+   * period'= (PR + 2) * pb_period * prescaler\n+   * period = (PR + 1) * pb_period * prescaler\n+   *\n+   * Since period' will always be greater than desired period, and period will\n+   * always be lower than the desired period, the computation of the error becomes:\n+   *\n+   * error' = period' - desired_period\n+   * error = desired_period - period\n+   *\n+   * If min(error,error') is less than max_error, then either PR or PR+1 is the\n+   * best pr.\n+   *\n+   * max error is a percentage of the desired period:\n+   *\n+   *              period\n+   * max error = ---------\n+   *              (1 << n)\n+   *\n+   * Since n = 5, max error = period / 32 = period * (1/32) = period * 3.125%\n+   */\n+  const uint32_t max_error = period >> 5;\n+  int8_t i;\n+  uint32_t best_pr = 0;\n+  for (i = minimum_prescaler_index; i < PRESCALER_COUNT; ++i) {\n+    uint32_t pr[2], actual_period[2], error[2];\n+\n+    /* Compute PR+1 and PR */\n+    pr[0] = (period / (pb_period * prescaler_values[i]));\n+    pr[1] = pr[0] - 1;\n+\n+    /* Compute periods */\n+    actual_period[0] = (pr[0] + 1) * pb_period * prescaler_values[i];\n+    actual_period[1] = actual_period[0] - pb_period * prescaler_values[i];\n+\n+    /* Compute error of (PR, prescaler) */\n+    error[0] = actual_period[0] - period;\n+    error[1] = period - actual_period[1];\n+    uint32_t err = error[0] < error[1] ? error[0] : error[1];\n+\n+    /* Since we go through the list of prescalers in ascending order, the first\n+     * (PR, prescaler) which gives an acceptable error is the best because PR\n+     * will be as high as possible, which gives the best resolution.\n+     */\n+    if (err < max_error) {\n+      best_pr = err == error[0] ? pr[0] : pr[1];\n+      break;\n+    }\n+  }\n+  if (i == PRESCALER_COUNT)\n+    return 3;\n+\n+  *pr = best_pr;\n+  *prescaler_index = i;\n+\n+  return 0;\n+}\n+/*----------------------------------------------------------------------------------------------*/\n+#define PWM(XX, YY)                                                                                                 \\\n+    int8_t pic32_pwm##XX##_init(uint32_t period)                                                                    \\\n+    {                                                                                                               \\\n+      uint8_t prescaler_index;                                                                                      \\\n+                                                                                                                    \\\n+      OC##XX##CON = 0;                                                                                              \\\n+      T##YY##CON = 0;                                                                                               \\\n+                                                                                                                    \\\n+      uint8_t ret = configure_timer(period, &prescaler_index, &PR##YY);                                             \\\n+      if (ret != 0)                                                                                                 \\\n+        return ret;                                                                                                 \\\n+      T##YY##CONbits.TCKPS = prescaler_index;                                                                       \\\n+      TMR##YY = 0;                                                                                                  \\\n+                                                                                                                    \\\n+      /* Set initial duty cycle to 0 */                                                                             \\\n+      OC##XX##RS = 0;                                                                                               \\\n+      OC##XX##R = 0;                                                                                                \\\n+                                                                                                                    \\\n+      /* Configure Output Compare module in PWM mode without fault pin */                                           \\\n+      OC##XX##CON = 0b110;                                                                                          \\\n+                                                                                                                    \\\n+      OC##XX##CONbits.OCTSEL = (YY) & 0x1;                                                                          \\\n+                                                                                                                    \\\n+      /* Disable interrupts */                                                                                      \\\n+      IEC0CLR = _IEC0_OC##XX##IE_MASK | _IEC0_T##YY##IE_MASK;                                                       \\\n+                                                                                                                    \\\n+      return ret;                                                                                                   \\\n+    }                                                                                                               \\\n+    int8_t pic32_pwm##XX##_set_duty_cycle(uint32_t duty_cycle)                                                      \\\n+    {                                                                                                               \\\n+      duty_cycle <<= DECIMAL_COUNT; /* Convert to fixed-point format */                                             \\\n+      duty_cycle /= (prescaler_values[T##YY##CONbits.TCKPS] * PBCLK_PERIOD);                                        \\\n+      OC##XX##RS = duty_cycle;                                                                                      \\\n+      return 0;                                                                                                     \\\n+    }                                                                                                               \\\n+    uint32_t pic32_pwm##XX##_get_duty_cycle(void)                                                                   \\\n+    {                                                                                                               \\\n+      uint32_t duty_cycle = OC##XX##RS * prescaler_values[T##YY##CONbits.TCKPS] * PBCLK_PERIOD;                     \\\n+      duty_cycle >>= DECIMAL_COUNT; /* Discard decimal bits */                                                      \\\n+      return duty_cycle;                                                                                            \\\n+    }                                                                                                               \\\n+    uint32_t pic32_pwm##XX##_get_maximum_duty_cycle(void)                                                           \\\n+    {                                                                                                               \\\n+      uint32_t max_duty_cycle = (PR##YY + 1) * prescaler_values[T##YY##CONbits.TCKPS] * PBCLK_PERIOD;               \\\n+      max_duty_cycle >>= DECIMAL_COUNT; /* Discard decimal bits */                                                  \\\n+      return max_duty_cycle;                                                                                        \\\n+    }                                                                                                               \\\n+    int8_t pic32_pwm##XX##_enable(void)                                                                             \\\n+    {                                                                                                               \\\n+      T##YY##CONSET = _T##YY##CON_TON_MASK;                                                                         \\\n+      OC##XX##CONSET = _OC##XX##CON_ON_MASK;                                                                        \\\n+      return 0;                                                                                                     \\\n+    }                                                                                                               \\\n+    int8_t pic32_pwm##XX##_disable(void)                                                                            \\\n+    {                                                                                                               \\\n+      T##YY##CONCLR = _T##YY##CON_TON_MASK;                                                                         \\\n+      OC##XX##CONCLR = _OC##XX##CON_ON_MASK;                                                                        \\\n+      return 0;                                                                                                     \\\n+    }                                                                                                               \\\n+    int8_t pic32_pwm##XX##_release(void)                                                                            \\\n+    {                                                                                                               \\\n+      /* For now, just disable the Timer and the Output Compare modules */                                          \\\n+      OC##XX##CON = 0;                                                                                              \\\n+      T##YY##CON = 0;                                                                                               \\\n+      return 0;                                                                                                     \\\n+    }\n+\n+#ifdef __32MX470F512H__\n+  #ifdef __USE_PWM_5__\n+  PWM(5, 3)     /* Use timer 3 */\n+  #endif /* __USE_PWM_5__ */\n+#endif\n+\n+#endif","path":"cpu/pic32/lib/pic32_pwm.c","position":235,"original_position":235,"commit_id":"bd7a86a41ad95ed6f790bd1be22c7d6712b3db30","original_commit_id":"bd7a86a41ad95ed6f790bd1be22c7d6712b3db30","user":{"login":"Avinash95","id":10851069,"avatar_url":"https://avatars.githubusercontent.com/u/10851069?v=3","gravatar_id":"","url":"https://api.github.com/users/Avinash95","html_url":"https://github.com/Avinash95","followers_url":"https://api.github.com/users/Avinash95/followers","following_url":"https://api.github.com/users/Avinash95/following{/other_user}","gists_url":"https://api.github.com/users/Avinash95/gists{/gist_id}","starred_url":"https://api.github.com/users/Avinash95/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Avinash95/subscriptions","organizations_url":"https://api.github.com/users/Avinash95/orgs","repos_url":"https://api.github.com/users/Avinash95/repos","events_url":"https://api.github.com/users/Avinash95/events{/privacy}","received_events_url":"https://api.github.com/users/Avinash95/received_events","type":"User","site_admin":false},"body":"/* __USE_PWM__ */","created_at":"2017-02-20T09:15:21Z","updated_at":"2017-02-20T09:18:54Z","html_url":"https://github.com/CreatorDev/contiki/pull/50#discussion_r101972878","pull_request_url":"https://api.github.com/repos/CreatorDev/contiki/pulls/50","_links":{"self":{"href":"https://api.github.com/repos/CreatorDev/contiki/pulls/comments/101972878"},"html":{"href":"https://github.com/CreatorDev/contiki/pull/50#discussion_r101972878"},"pull_request":{"href":"https://api.github.com/repos/CreatorDev/contiki/pulls/50"}}},"pull_request":{"url":"https://api.github.com/repos/CreatorDev/contiki/pulls/50","id":105646200,"html_url":"https://github.com/CreatorDev/contiki/pull/50","diff_url":"https://github.com/CreatorDev/contiki/pull/50.diff","patch_url":"https://github.com/CreatorDev/contiki/pull/50.patch","issue_url":"https://api.github.com/repos/CreatorDev/contiki/issues/50","number":50,"state":"open","locked":false,"title":"Add PWM driver to PIC32 on clicker","user":{"login":"francois-berder-imgtec","id":17022691,"avatar_url":"https://avatars.githubusercontent.com/u/17022691?v=3","gravatar_id":"","url":"https://api.github.com/users/francois-berder-imgtec","html_url":"https://github.com/francois-berder-imgtec","followers_url":"https://api.github.com/users/francois-berder-imgtec/followers","following_url":"https://api.github.com/users/francois-berder-imgtec/following{/other_user}","gists_url":"https://api.github.com/users/francois-berder-imgtec/gists{/gist_id}","starred_url":"https://api.github.com/users/francois-berder-imgtec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francois-berder-imgtec/subscriptions","organizations_url":"https://api.github.com/users/francois-berder-imgtec/orgs","repos_url":"https://api.github.com/users/francois-berder-imgtec/repos","events_url":"https://api.github.com/users/francois-berder-imgtec/events{/privacy}","received_events_url":"https://api.github.com/users/francois-berder-imgtec/received_events","type":"User","site_admin":false},"body":"This connects to #40 .","created_at":"2017-02-10T15:14:49Z","updated_at":"2017-02-20T09:18:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1558518e006bc8ce4a0fc5ea1b89b77edc11ff53","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/CreatorDev/contiki/pulls/50/commits","review_comments_url":"https://api.github.com/repos/CreatorDev/contiki/pulls/50/comments","review_comment_url":"https://api.github.com/repos/CreatorDev/contiki/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CreatorDev/contiki/issues/50/comments","statuses_url":"https://api.github.com/repos/CreatorDev/contiki/statuses/bd7a86a41ad95ed6f790bd1be22c7d6712b3db30","head":{"label":"francois-berder-imgtec:pwm","ref":"pwm","sha":"bd7a86a41ad95ed6f790bd1be22c7d6712b3db30","user":{"login":"francois-berder-imgtec","id":17022691,"avatar_url":"https://avatars.githubusercontent.com/u/17022691?v=3","gravatar_id":"","url":"https://api.github.com/users/francois-berder-imgtec","html_url":"https://github.com/francois-berder-imgtec","followers_url":"https://api.github.com/users/francois-berder-imgtec/followers","following_url":"https://api.github.com/users/francois-berder-imgtec/following{/other_user}","gists_url":"https://api.github.com/users/francois-berder-imgtec/gists{/gist_id}","starred_url":"https://api.github.com/users/francois-berder-imgtec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francois-berder-imgtec/subscriptions","organizations_url":"https://api.github.com/users/francois-berder-imgtec/orgs","repos_url":"https://api.github.com/users/francois-berder-imgtec/repos","events_url":"https://api.github.com/users/francois-berder-imgtec/events{/privacy}","received_events_url":"https://api.github.com/users/francois-berder-imgtec/received_events","type":"User","site_admin":false},"repo":{"id":76577093,"name":"contiki","full_name":"francois-berder-imgtec/contiki","owner":{"login":"francois-berder-imgtec","id":17022691,"avatar_url":"https://avatars.githubusercontent.com/u/17022691?v=3","gravatar_id":"","url":"https://api.github.com/users/francois-berder-imgtec","html_url":"https://github.com/francois-berder-imgtec","followers_url":"https://api.github.com/users/francois-berder-imgtec/followers","following_url":"https://api.github.com/users/francois-berder-imgtec/following{/other_user}","gists_url":"https://api.github.com/users/francois-berder-imgtec/gists{/gist_id}","starred_url":"https://api.github.com/users/francois-berder-imgtec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francois-berder-imgtec/subscriptions","organizations_url":"https://api.github.com/users/francois-berder-imgtec/orgs","repos_url":"https://api.github.com/users/francois-berder-imgtec/repos","events_url":"https://api.github.com/users/francois-berder-imgtec/events{/privacy}","received_events_url":"https://api.github.com/users/francois-berder-imgtec/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/francois-berder-imgtec/contiki","description":"The official git repository for Contiki, the open source OS for the Internet of Things","fork":true,"url":"https://api.github.com/repos/francois-berder-imgtec/contiki","forks_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/forks","keys_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/keys{/key_id}","collaborators_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/teams","hooks_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/hooks","issue_events_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/issues/events{/number}","events_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/events","assignees_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/assignees{/user}","branches_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/branches{/branch}","tags_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/tags","blobs_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/git/refs{/sha}","trees_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/git/trees{/sha}","statuses_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/statuses/{sha}","languages_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/languages","stargazers_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/stargazers","contributors_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/contributors","subscribers_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/subscribers","subscription_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/subscription","commits_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/commits{/sha}","git_commits_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/git/commits{/sha}","comments_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/comments{/number}","issue_comment_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/issues/comments{/number}","contents_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/contents/{+path}","compare_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/compare/{base}...{head}","merges_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/merges","archive_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/downloads","issues_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/issues{/number}","pulls_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/pulls{/number}","milestones_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/milestones{/number}","notifications_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/labels{/name}","releases_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/releases{/id}","deployments_url":"https://api.github.com/repos/francois-berder-imgtec/contiki/deployments","created_at":"2016-12-15T16:35:16Z","updated_at":"2016-12-15T16:35:28Z","pushed_at":"2017-02-17T15:53:45Z","git_url":"git://github.com/francois-berder-imgtec/contiki.git","ssh_url":"git@github.com:francois-berder-imgtec/contiki.git","clone_url":"https://github.com/francois-berder-imgtec/contiki.git","svn_url":"https://github.com/francois-berder-imgtec/contiki","homepage":"http://www.contiki-os.org/","size":73145,"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":"3.0-mikro-e"}},"base":{"label":"CreatorDev:3.0-mikro-e","ref":"3.0-mikro-e","sha":"51852c67df6ae4496a60e5ed4cd56027c4de1d3b","user":{"login":"CreatorDev","id":18185398,"avatar_url":"https://avatars.githubusercontent.com/u/18185398?v=3","gravatar_id":"","url":"https://api.github.com/users/CreatorDev","html_url":"https://github.com/CreatorDev","followers_url":"https://api.github.com/users/CreatorDev/followers","following_url":"https://api.github.com/users/CreatorDev/following{/other_user}","gists_url":"https://api.github.com/users/CreatorDev/gists{/gist_id}","starred_url":"https://api.github.com/users/CreatorDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CreatorDev/subscriptions","organizations_url":"https://api.github.com/users/CreatorDev/orgs","repos_url":"https://api.github.com/users/CreatorDev/repos","events_url":"https://api.github.com/users/CreatorDev/events{/privacy}","received_events_url":"https://api.github.com/users/CreatorDev/received_events","type":"Organization","site_admin":false},"repo":{"id":69642244,"name":"contiki","full_name":"CreatorDev/contiki","owner":{"login":"CreatorDev","id":18185398,"avatar_url":"https://avatars.githubusercontent.com/u/18185398?v=3","gravatar_id":"","url":"https://api.github.com/users/CreatorDev","html_url":"https://github.com/CreatorDev","followers_url":"https://api.github.com/users/CreatorDev/followers","following_url":"https://api.github.com/users/CreatorDev/following{/other_user}","gists_url":"https://api.github.com/users/CreatorDev/gists{/gist_id}","starred_url":"https://api.github.com/users/CreatorDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CreatorDev/subscriptions","organizations_url":"https://api.github.com/users/CreatorDev/orgs","repos_url":"https://api.github.com/users/CreatorDev/repos","events_url":"https://api.github.com/users/CreatorDev/events{/privacy}","received_events_url":"https://api.github.com/users/CreatorDev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CreatorDev/contiki","description":"The official git repository for Contiki, the open source OS for the Internet of Things","fork":true,"url":"https://api.github.com/repos/CreatorDev/contiki","forks_url":"https://api.github.com/repos/CreatorDev/contiki/forks","keys_url":"https://api.github.com/repos/CreatorDev/contiki/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CreatorDev/contiki/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CreatorDev/contiki/teams","hooks_url":"https://api.github.com/repos/CreatorDev/contiki/hooks","issue_events_url":"https://api.github.com/repos/CreatorDev/contiki/issues/events{/number}","events_url":"https://api.github.com/repos/CreatorDev/contiki/events","assignees_url":"https://api.github.com/repos/CreatorDev/contiki/assignees{/user}","branches_url":"https://api.github.com/repos/CreatorDev/contiki/branches{/branch}","tags_url":"https://api.github.com/repos/CreatorDev/contiki/tags","blobs_url":"https://api.github.com/repos/CreatorDev/contiki/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CreatorDev/contiki/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CreatorDev/contiki/git/refs{/sha}","trees_url":"https://api.github.com/repos/CreatorDev/contiki/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CreatorDev/contiki/statuses/{sha}","languages_url":"https://api.github.com/repos/CreatorDev/contiki/languages","stargazers_url":"https://api.github.com/repos/CreatorDev/contiki/stargazers","contributors_url":"https://api.github.com/repos/CreatorDev/contiki/contributors","subscribers_url":"https://api.github.com/repos/CreatorDev/contiki/subscribers","subscription_url":"https://api.github.com/repos/CreatorDev/contiki/subscription","commits_url":"https://api.github.com/repos/CreatorDev/contiki/commits{/sha}","git_commits_url":"https://api.github.com/repos/CreatorDev/contiki/git/commits{/sha}","comments_url":"https://api.github.com/repos/CreatorDev/contiki/comments{/number}","issue_comment_url":"https://api.github.com/repos/CreatorDev/contiki/issues/comments{/number}","contents_url":"https://api.github.com/repos/CreatorDev/contiki/contents/{+path}","compare_url":"https://api.github.com/repos/CreatorDev/contiki/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CreatorDev/contiki/merges","archive_url":"https://api.github.com/repos/CreatorDev/contiki/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CreatorDev/contiki/downloads","issues_url":"https://api.github.com/repos/CreatorDev/contiki/issues{/number}","pulls_url":"https://api.github.com/repos/CreatorDev/contiki/pulls{/number}","milestones_url":"https://api.github.com/repos/CreatorDev/contiki/milestones{/number}","notifications_url":"https://api.github.com/repos/CreatorDev/contiki/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CreatorDev/contiki/labels{/name}","releases_url":"https://api.github.com/repos/CreatorDev/contiki/releases{/id}","deployments_url":"https://api.github.com/repos/CreatorDev/contiki/deployments","created_at":"2016-09-30T06:59:36Z","updated_at":"2016-11-23T12:04:04Z","pushed_at":"2017-02-17T15:53:47Z","git_url":"git://github.com/CreatorDev/contiki.git","ssh_url":"git@github.com:CreatorDev/contiki.git","clone_url":"https://github.com/CreatorDev/contiki.git","svn_url":"https://github.com/CreatorDev/contiki","homepage":"http://www.contiki-os.org/","size":70921,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"open_issues_count":28,"forks":8,"open_issues":28,"watchers":0,"default_branch":"3.0-mikro-e"}},"_links":{"self":{"href":"https://api.github.com/repos/CreatorDev/contiki/pulls/50"},"html":{"href":"https://github.com/CreatorDev/contiki/pull/50"},"issue":{"href":"https://api.github.com/repos/CreatorDev/contiki/issues/50"},"comments":{"href":"https://api.github.com/repos/CreatorDev/contiki/issues/50/comments"},"review_comments":{"href":"https://api.github.com/repos/CreatorDev/contiki/pulls/50/comments"},"review_comment":{"href":"https://api.github.com/repos/CreatorDev/contiki/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CreatorDev/contiki/pulls/50/commits"},"statuses":{"href":"https://api.github.com/repos/CreatorDev/contiki/statuses/bd7a86a41ad95ed6f790bd1be22c7d6712b3db30"}}}}
{"actor":{"display_login":"Avinash95"}}