{"action":"created","comment":{"url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/comments/291891892","pull_request_review_id":247464147,"id":291891892,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI5MTg5MTg5Mg==","diff_hunk":"@@ -0,0 +1,571 @@\n+/*\n+ * Copyright (c) 2018 Nordic Semiconductor ASA\n+ *\n+ * SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic\n+ */\n+\n+#include <zephyr.h>\n+#include <stdio.h>\n+#include <uart.h>\n+#include <string.h>\n+\n+#include <net/mqtt.h>\n+#include <net/socket.h>\n+#include <net/aws_fota.h>\n+#include <lte_lc.h>\n+#if defined(CONFIG_BSD_LIBRARY)\n+\n+#include \"nrf_inbuilt_key.h\"\n+#endif\n+\n+#define CONFIG_NRF_CLOUD_SEC_TAG 16842753\n+#define CONFIG_AWS_HOSTNAME \"a25jld2wxwm7qs-ats.iot.eu-central-1.amazonaws.com\"\n+\n+#include \"aws_cert/rootca_ec.h\"\n+#include \"aws_cert/private_key.h\"\n+#include \"aws_cert/pubcert.h\"\n+\n+#if !defined(CONFIG_CLIENT_ID)\n+#define IMEI_LEN 15\n+#define CLIENT_ID_LEN (IMEI_LEN + 4)\n+#else\n+#define CLIENT_ID_LEN (sizeof(CLOUD_CLIENT_ID) - 1)\n+#endif\n+static u8_t client_id_buf[CLIENT_ID_LEN+1];\n+\n+/* Buffers for MQTT client. */\n+static u8_t rx_buffer[CONFIG_MQTT_MESSAGE_BUFFER_SIZE];\n+static u8_t tx_buffer[CONFIG_MQTT_MESSAGE_BUFFER_SIZE];\n+static u8_t payload_buf[CONFIG_MQTT_PAYLOAD_BUFFER_SIZE];\n+\n+/* MQTT Broker details. */\n+static struct sockaddr_storage broker;\n+\n+/* File descriptor */\n+static struct pollfd fds;\n+\n+\n+#if defined(CONFIG_BSD_LIBRARY)\n+\n+/**@brief Recoverable BSD library error. */\n+void bsd_recoverable_error_handler(uint32_t err)\n+{\n+\tprintk(\"bsdlib recoverable error: %u\\n\", err);\n+}\n+\n+/**@brief Irrecoverable BSD library error. */\n+void bsd_irrecoverable_error_handler(uint32_t err)\n+{\n+\tprintk(\"bsdlib irrecoverable error: %u\\n\", err);\n+\n+\t__ASSERT_NO_MSG(false);\n+}\n+\n+#endif /* defined(CONFIG_BSD_LIBRARY) */\n+\n+/**@brief Function to print strings without null-termination\n+*/\n+static void data_print(u8_t *prefix, u8_t *data, size_t len)\n+{\n+\tchar buf[len + 1];\n+\n+\tmemcpy(buf, data, len);\n+\tbuf[len] = 0;\n+\tprintk(\"%s%s\\n\", prefix, buf);\n+}\n+\n+/**@brief Function to publish data on the configured topic\n+*/\n+static int data_publish(struct mqtt_client *c, enum mqtt_qos qos,\n+\t\t\tu8_t *data, size_t len)\n+{\n+\tstruct mqtt_publish_param param;\n+\n+\tparam.message.topic.qos = qos;\n+\tparam.message.topic.topic.utf8 = CONFIG_MQTT_PUB_TOPIC;\n+\tparam.message.topic.topic.size = strlen(CONFIG_MQTT_PUB_TOPIC);\n+\tparam.message.payload.data = data;\n+\tparam.message.payload.len = len;\n+\tparam.message_id = sys_rand32_get();\n+\tparam.dup_flag = 0;\n+\tparam.retain_flag = 0;\n+\n+\tdata_print(\"publishing: \", data, len);\n+\treturn mqtt_publish(c, &param);\n+}\n+\n+\n+\n+/**@brief Function to read the published payload.\n+*/\n+static int publish_get_payload(struct mqtt_client *c, size_t length)\n+{\n+\tu8_t *buf = payload_buf;\n+\tu8_t *end = buf + length;\n+\n+\tif (length > sizeof(payload_buf)) {\n+\t\treturn -EMSGSIZE;\n+\t}\n+\n+\twhile (buf < end) {\n+\t\tint ret = mqtt_read_publish_payload(c, buf, end - buf);\n+\n+\t\tif (ret < 0) {\n+\t\t\tint err;\n+\n+\t\t\tif (ret != -EAGAIN) {\n+\t\t\t\treturn ret;\n+\t\t\t}\n+\t\t\tprintk(\"mqtt_read_publish_payload: EAGAIN\\n\");\n+\n+\t\t\terr = poll(&fds, 1, K_SECONDS(CONFIG_MQTT_KEEPALIVE));\n+\t\t\tif (err > 0 && (fds.revents & POLLIN) == POLLIN) {\n+\t\t\t\tcontinue;\n+\t\t\t} else {\n+\t\t\t\treturn -EIO;\n+\t\t\t}\n+\t\t}\n+\n+\t\tif (ret == 0) {\n+\t\t\treturn -EIO;\n+\t\t}\n+\n+\t\tbuf += ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+/**@brief MQTT client event handler\n+*/\n+void mqtt_evt_handler(struct mqtt_client * const c,\n+\t\t      const struct mqtt_evt *evt)\n+{\n+\tint err;\n+\n+\terr = aws_fota_mqtt_evt_handler(c, evt);\n+\tif (err > 0) {\n+\t\t/* Event handled by FOTA library so we can skip it */\n+\t\treturn;\n+\t}\n+\n+\tswitch (evt->type) {\n+\tcase MQTT_EVT_CONNACK:\n+\t\tif (evt->result != 0) {\n+\t\t\tprintk(\"MQTT connect failed %d\\n\", evt->result);\n+\t\t\tbreak;\n+\t\t}\n+\n+\t\tprintk(\"[%s:%d] MQTT client connected!\\n\", __func__, __LINE__);\n+\t\tif (err) {\n+\t\t\tprintk(\"Unable to initialize AWS jobs upon connection\\n\");\n+\t\t\terr = mqtt_disconnect(c);\n+\t\t\tif (err) {\n+\t\t\t\tprintk(\"Could not disconnect: %d\\n\", err);\n+\t\t\t}\n+\t\t}\n+\t\tbreak;\n+\n+\tcase MQTT_EVT_DISCONNECT:\n+\t\tprintk(\"[%s:%d] MQTT client disconnected %d\\n\", __func__,\n+\t\t       __LINE__, evt->result);\n+\t\tbreak;\n+\n+\tcase MQTT_EVT_PUBLISH: {\n+\t\tconst struct mqtt_publish_param *p = &evt->param.publish;\n+\n+\t\tprintk(\"[%s:%d] MQTT PUBLISH result=%d len=%d\\n\", __func__,\n+\t\t       __LINE__, evt->result, p->message.payload.len);\n+\t\terr = publish_get_payload(c, p->message.payload.len);\n+\t\tif (err) {\n+\t\t\tprintk(\"mqtt_read_publish_payload: Failed! %d\\n\", err);\n+\t\t\tprintk(\"Disconnecting MQTT client...\\n\");\n+\n+\t\t\terr = mqtt_disconnect(c);\n+\t\t\tif (err) {\n+\t\t\t\tprintk(\"Could not disconnect: %d\\n\", err);\n+\t\t\t}\n+\t\t}\n+\n+\t\tif (p->message.topic.qos == MQTT_QOS_1_AT_LEAST_ONCE) {\n+\t\t\tconst struct mqtt_puback_param ack = {\n+\t\t\t\t.message_id = p->message_id\n+\t\t\t};\n+\n+\t\t\t/* Send acknowledgment. */\n+\t\t\terr = mqtt_publish_qos1_ack(c, &ack);\n+\t\t\tif (err) {\n+\t\t\t\tprintk(\"unable to ack\\n\");\n+\t\t\t}\n+\t\t}\n+\t\tdata_print(\"Received: \", payload_buf, p->message.payload.len);\n+\t\tbreak;\n+\t}\n+\n+\tcase MQTT_EVT_PUBACK:\n+\t\tif (evt->result != 0) {\n+\t\t\tprintk(\"MQTT PUBACK error %d\\n\", evt->result);\n+\t\t\tbreak;\n+\t\t}\n+\n+\t\tprintk(\"[%s:%d] PUBACK packet id: %u\\n\", __func__, __LINE__,\n+\t\t       evt->param.puback.message_id);\n+\t\tbreak;\n+\n+\tcase MQTT_EVT_SUBACK:\n+\t\tif (evt->result != 0) {\n+\t\t\tprintk(\"MQTT SUBACK error %d\\n\", evt->result);\n+\t\t\tbreak;\n+\t\t}\n+\n+\t\tprintk(\"[%s:%d] SUBACK packet id: %u\\n\", __func__, __LINE__,\n+\t\t       evt->param.suback.message_id);\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tprintk(\"[%s:%d] default: %d\\n\", __func__, __LINE__,\n+\t\t       evt->type);\n+\t\tbreak;\n+\t}\n+}\n+\n+\n+/**@brief Resolves the configured hostname and\n+ * initializes the MQTT broker structure\n+ */\n+static void broker_init(void)\n+{\n+\tint err;\n+\tstruct addrinfo *result;\n+\tstruct addrinfo *addr;\n+\tstruct addrinfo hints = {\n+\t\t.ai_family = AF_INET,\n+\t\t.ai_socktype = SOCK_STREAM\n+\t};\n+\n+\terr = getaddrinfo(CONFIG_AWS_HOSTNAME, NULL, &hints, &result);\n+\tif (err) {\n+\t\tprintk(\"ERROR: getaddrinfo failed %d\\n\", err);\n+\n+\t\treturn;\n+\t}\n+\n+\taddr = result;\n+\terr = -ENOENT;\n+\n+\t/* Look for address of the broker. */\n+\twhile (addr != NULL) {\n+\t\t/* IPv4 Address. */\n+\t\tif (addr->ai_addrlen == sizeof(struct sockaddr_in)) {\n+\t\t\tstruct sockaddr_in *broker4 =\n+\t\t\t\t((struct sockaddr_in *)&broker);\n+\n+\t\t\tbroker4->sin_addr.s_addr =\n+\t\t\t\t((struct sockaddr_in *)addr->ai_addr)\n+\t\t\t\t->sin_addr.s_addr;\n+\t\t\tbroker4->sin_family = AF_INET;\n+\t\t\tbroker4->sin_port = htons(8883);\n+\t\t\tprintk(\"IPv4 Address found 0x%08x\\n\",\n+\t\t\t       broker4->sin_addr.s_addr);\n+\t\t\tbreak;\n+\t\t} else {\n+\t\t\tprintk(\"ai_addrlen = %u should be %u or %u\\n\",\n+\t\t\t       (unsigned int)addr->ai_addrlen,\n+\t\t\t       (unsigned int)sizeof(struct sockaddr_in),\n+\t\t\t       (unsigned int)sizeof(struct sockaddr_in6));\n+\t\t}\n+\n+\t\taddr = addr->ai_next;\n+\t\tbreak;\n+\t}\n+\n+\t/* Free the address. */\n+\tfreeaddrinfo(result);\n+}\n+\n+static int provision(void)\n+{\n+\tint err;\n+\n+\terr = tls_credential_add(CONFIG_NRF_CLOUD_SEC_TAG,\n+\t\t\t\t TLS_CREDENTIAL_CA_CERTIFICATE,\n+\t\t\t\t\tAmazonRootCA3_pem,\n+\t\t\t\t\tAmazonRootCA3_pem_len);\n+\tif (err < 0) {\n+\t\tprintk(\"Failed to register ca certificate: %d\",\n+\t\t       err);\n+\t\treturn err;\n+\t}\n+\terr = tls_credential_add(CONFIG_NRF_CLOUD_SEC_TAG,\n+\t\t\t\t TLS_CREDENTIAL_PRIVATE_KEY,\n+\t\t\t\t private_pem_key,\n+\t\t\t\t private_pem_key_len);\n+\tif (err < 0) {\n+\t\tprintk(\"Failed to register private key: %d\",\n+\t\t       err);\n+\t\treturn err;\n+\t}\n+\terr = tls_credential_add(CONFIG_NRF_CLOUD_SEC_TAG,\n+\t\t\t\t TLS_CREDENTIAL_SERVER_CERTIFICATE,\n+\t\t\t\t public_pem,\n+\t\t\t\t public_pem_len);\n+\tif (err < 0) {\n+\t\tprintk(\"Failed to register public certificate: %d\",\n+\t\t       err);\n+\t\treturn err;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int provision_modem_key(void)\n+{\n+\tstatic sec_tag_t sec_tag_list[] = {CONFIG_NRF_CLOUD_SEC_TAG};\n+\n+#if defined(CONFIG_BSD_LIBRARY)\n+\t{\n+\t\tint err;\n+\n+\t\t/* Delete certificates */","path":"samples/nrf9160/aws_fota/src/main.c","position":317,"original_position":329,"commit_id":"ffaebc74e1f1c498c667d0e03b2fff219279a320","original_commit_id":"58d3a32857ce2eb678f5fc7a16988457fff999a3","user":{"login":"sigvartmh","id":3646850,"node_id":"MDQ6VXNlcjM2NDY4NTA=","avatar_url":"https://avatars2.githubusercontent.com/u/3646850?v=4","gravatar_id":"","url":"https://api.github.com/users/sigvartmh","html_url":"https://github.com/sigvartmh","followers_url":"https://api.github.com/users/sigvartmh/followers","following_url":"https://api.github.com/users/sigvartmh/following{/other_user}","gists_url":"https://api.github.com/users/sigvartmh/gists{/gist_id}","starred_url":"https://api.github.com/users/sigvartmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sigvartmh/subscriptions","organizations_url":"https://api.github.com/users/sigvartmh/orgs","repos_url":"https://api.github.com/users/sigvartmh/repos","events_url":"https://api.github.com/users/sigvartmh/events{/privacy}","received_events_url":"https://api.github.com/users/sigvartmh/received_events","type":"User","site_admin":false},"body":"In case old certificates are stored in those spots.","created_at":"2019-06-10T06:22:26Z","updated_at":"2019-06-10T06:22:26Z","html_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/pull/828#discussion_r291891892","pull_request_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/comments/291891892"},"html":{"href":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/pull/828#discussion_r291891892"},"pull_request":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828"}},"in_reply_to_id":291235761},"pull_request":{"url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828","id":284819153,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjg0ODE5MTUz","html_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/pull/828","diff_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/pull/828.diff","patch_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/pull/828.patch","issue_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues/828","number":828,"state":"open","locked":false,"title":"subsys: net: lib: aws_fota: Library for supporting FOTA with AWS jobs","user":{"login":"sigvartmh","id":3646850,"node_id":"MDQ6VXNlcjM2NDY4NTA=","avatar_url":"https://avatars2.githubusercontent.com/u/3646850?v=4","gravatar_id":"","url":"https://api.github.com/users/sigvartmh","html_url":"https://github.com/sigvartmh","followers_url":"https://api.github.com/users/sigvartmh/followers","following_url":"https://api.github.com/users/sigvartmh/following{/other_user}","gists_url":"https://api.github.com/users/sigvartmh/gists{/gist_id}","starred_url":"https://api.github.com/users/sigvartmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sigvartmh/subscriptions","organizations_url":"https://api.github.com/users/sigvartmh/orgs","repos_url":"https://api.github.com/users/sigvartmh/repos","events_url":"https://api.github.com/users/sigvartmh/events{/privacy}","received_events_url":"https://api.github.com/users/sigvartmh/received_events","type":"User","site_admin":false},"body":"Look at the last commit as it is based on top of `aws_jobs`. This opened as a draft PR for early feedback of the current API design, not much implementation details is present but it will come during the day. @hakonfam @oyvindronningstad So location should be decided and if it should be a lib or one should just create an sample which implements what this library actually does. @osaether \r\n\r\nDefines, enums and typedefs will be moved to a header :)","created_at":"2019-06-04T05:20:20Z","updated_at":"2019-06-10T06:22:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ed976266a4da72f7009adf67d19f5439b31334b4","assignee":null,"assignees":[],"requested_reviewers":[{"login":"lemrey","id":1151289,"node_id":"MDQ6VXNlcjExNTEyODk=","avatar_url":"https://avatars1.githubusercontent.com/u/1151289?v=4","gravatar_id":"","url":"https://api.github.com/users/lemrey","html_url":"https://github.com/lemrey","followers_url":"https://api.github.com/users/lemrey/followers","following_url":"https://api.github.com/users/lemrey/following{/other_user}","gists_url":"https://api.github.com/users/lemrey/gists{/gist_id}","starred_url":"https://api.github.com/users/lemrey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lemrey/subscriptions","organizations_url":"https://api.github.com/users/lemrey/orgs","repos_url":"https://api.github.com/users/lemrey/repos","events_url":"https://api.github.com/users/lemrey/events{/privacy}","received_events_url":"https://api.github.com/users/lemrey/received_events","type":"User","site_admin":false},{"login":"ioannisg","id":2333931,"node_id":"MDQ6VXNlcjIzMzM5MzE=","avatar_url":"https://avatars2.githubusercontent.com/u/2333931?v=4","gravatar_id":"","url":"https://api.github.com/users/ioannisg","html_url":"https://github.com/ioannisg","followers_url":"https://api.github.com/users/ioannisg/followers","following_url":"https://api.github.com/users/ioannisg/following{/other_user}","gists_url":"https://api.github.com/users/ioannisg/gists{/gist_id}","starred_url":"https://api.github.com/users/ioannisg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ioannisg/subscriptions","organizations_url":"https://api.github.com/users/ioannisg/orgs","repos_url":"https://api.github.com/users/ioannisg/repos","events_url":"https://api.github.com/users/ioannisg/events{/privacy}","received_events_url":"https://api.github.com/users/ioannisg/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":{"url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/milestones/4","html_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/milestone/4","labels_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/milestones/4/labels","id":4217724,"node_id":"MDk6TWlsZXN0b25lNDIxNzcyNA==","number":4,"title":"1.0.0","description":"First production version.","creator":{"login":"carlescufi","id":12450381,"node_id":"MDQ6VXNlcjEyNDUwMzgx","avatar_url":"https://avatars3.githubusercontent.com/u/12450381?v=4","gravatar_id":"","url":"https://api.github.com/users/carlescufi","html_url":"https://github.com/carlescufi","followers_url":"https://api.github.com/users/carlescufi/followers","following_url":"https://api.github.com/users/carlescufi/following{/other_user}","gists_url":"https://api.github.com/users/carlescufi/gists{/gist_id}","starred_url":"https://api.github.com/users/carlescufi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlescufi/subscriptions","organizations_url":"https://api.github.com/users/carlescufi/orgs","repos_url":"https://api.github.com/users/carlescufi/repos","events_url":"https://api.github.com/users/carlescufi/events{/privacy}","received_events_url":"https://api.github.com/users/carlescufi/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":19,"state":"open","created_at":"2019-04-10T15:01:05Z","updated_at":"2019-06-08T14:20:57Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828/commits","review_comments_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828/comments","review_comment_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/comments{/number}","comments_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues/828/comments","statuses_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/statuses/ffaebc74e1f1c498c667d0e03b2fff219279a320","head":{"label":"sigvartmh:feature/aws_fota_lib_v2","ref":"feature/aws_fota_lib_v2","sha":"ffaebc74e1f1c498c667d0e03b2fff219279a320","user":{"login":"sigvartmh","id":3646850,"node_id":"MDQ6VXNlcjM2NDY4NTA=","avatar_url":"https://avatars2.githubusercontent.com/u/3646850?v=4","gravatar_id":"","url":"https://api.github.com/users/sigvartmh","html_url":"https://github.com/sigvartmh","followers_url":"https://api.github.com/users/sigvartmh/followers","following_url":"https://api.github.com/users/sigvartmh/following{/other_user}","gists_url":"https://api.github.com/users/sigvartmh/gists{/gist_id}","starred_url":"https://api.github.com/users/sigvartmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sigvartmh/subscriptions","organizations_url":"https://api.github.com/users/sigvartmh/orgs","repos_url":"https://api.github.com/users/sigvartmh/repos","events_url":"https://api.github.com/users/sigvartmh/events{/privacy}","received_events_url":"https://api.github.com/users/sigvartmh/received_events","type":"User","site_admin":false},"repo":{"id":162447592,"node_id":"MDEwOlJlcG9zaXRvcnkxNjI0NDc1OTI=","name":"fw-nrfconnect-nrf-1","full_name":"sigvartmh/fw-nrfconnect-nrf-1","private":false,"owner":{"login":"sigvartmh","id":3646850,"node_id":"MDQ6VXNlcjM2NDY4NTA=","avatar_url":"https://avatars2.githubusercontent.com/u/3646850?v=4","gravatar_id":"","url":"https://api.github.com/users/sigvartmh","html_url":"https://github.com/sigvartmh","followers_url":"https://api.github.com/users/sigvartmh/followers","following_url":"https://api.github.com/users/sigvartmh/following{/other_user}","gists_url":"https://api.github.com/users/sigvartmh/gists{/gist_id}","starred_url":"https://api.github.com/users/sigvartmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sigvartmh/subscriptions","organizations_url":"https://api.github.com/users/sigvartmh/orgs","repos_url":"https://api.github.com/users/sigvartmh/repos","events_url":"https://api.github.com/users/sigvartmh/events{/privacy}","received_events_url":"https://api.github.com/users/sigvartmh/received_events","type":"User","site_admin":false},"html_url":"https://github.com/sigvartmh/fw-nrfconnect-nrf-1","description":"nRF Connect SDK nrf tree","fork":true,"url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1","forks_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/forks","keys_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/teams","hooks_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/hooks","issue_events_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/issues/events{/number}","events_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/events","assignees_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/assignees{/user}","branches_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/branches{/branch}","tags_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/tags","blobs_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/statuses/{sha}","languages_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/languages","stargazers_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/stargazers","contributors_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/contributors","subscribers_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/subscribers","subscription_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/subscription","commits_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/contents/{+path}","compare_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/merges","archive_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/downloads","issues_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/issues{/number}","pulls_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/pulls{/number}","milestones_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/milestones{/number}","notifications_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/labels{/name}","releases_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/releases{/id}","deployments_url":"https://api.github.com/repos/sigvartmh/fw-nrfconnect-nrf-1/deployments","created_at":"2018-12-19T14:18:11Z","updated_at":"2018-12-19T14:18:14Z","pushed_at":"2019-06-10T05:31:26Z","git_url":"git://github.com/sigvartmh/fw-nrfconnect-nrf-1.git","ssh_url":"git@github.com:sigvartmh/fw-nrfconnect-nrf-1.git","clone_url":"https://github.com/sigvartmh/fw-nrfconnect-nrf-1.git","svn_url":"https://github.com/sigvartmh/fw-nrfconnect-nrf-1","homepage":"http://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/","size":4760,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":1,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"NordicPlayground:master","ref":"master","sha":"b7fb4ee10faa2e9b6a8a216fe6ebc7052ae41f3f","user":{"login":"NordicPlayground","id":5527425,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU1Mjc0MjU=","avatar_url":"https://avatars2.githubusercontent.com/u/5527425?v=4","gravatar_id":"","url":"https://api.github.com/users/NordicPlayground","html_url":"https://github.com/NordicPlayground","followers_url":"https://api.github.com/users/NordicPlayground/followers","following_url":"https://api.github.com/users/NordicPlayground/following{/other_user}","gists_url":"https://api.github.com/users/NordicPlayground/gists{/gist_id}","starred_url":"https://api.github.com/users/NordicPlayground/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NordicPlayground/subscriptions","organizations_url":"https://api.github.com/users/NordicPlayground/orgs","repos_url":"https://api.github.com/users/NordicPlayground/repos","events_url":"https://api.github.com/users/NordicPlayground/events{/privacy}","received_events_url":"https://api.github.com/users/NordicPlayground/received_events","type":"Organization","site_admin":false},"repo":{"id":121516035,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE1MTYwMzU=","name":"fw-nrfconnect-nrf","full_name":"NordicPlayground/fw-nrfconnect-nrf","private":false,"owner":{"login":"NordicPlayground","id":5527425,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU1Mjc0MjU=","avatar_url":"https://avatars2.githubusercontent.com/u/5527425?v=4","gravatar_id":"","url":"https://api.github.com/users/NordicPlayground","html_url":"https://github.com/NordicPlayground","followers_url":"https://api.github.com/users/NordicPlayground/followers","following_url":"https://api.github.com/users/NordicPlayground/following{/other_user}","gists_url":"https://api.github.com/users/NordicPlayground/gists{/gist_id}","starred_url":"https://api.github.com/users/NordicPlayground/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NordicPlayground/subscriptions","organizations_url":"https://api.github.com/users/NordicPlayground/orgs","repos_url":"https://api.github.com/users/NordicPlayground/repos","events_url":"https://api.github.com/users/NordicPlayground/events{/privacy}","received_events_url":"https://api.github.com/users/NordicPlayground/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf","description":"nRF Connect SDK nrf tree","fork":false,"url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf","forks_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/forks","keys_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/teams","hooks_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/hooks","issue_events_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues/events{/number}","events_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/events","assignees_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/assignees{/user}","branches_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/branches{/branch}","tags_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/tags","blobs_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/git/refs{/sha}","trees_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/statuses/{sha}","languages_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/languages","stargazers_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/stargazers","contributors_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/contributors","subscribers_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/subscribers","subscription_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/subscription","commits_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/commits{/sha}","git_commits_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/git/commits{/sha}","comments_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/comments{/number}","issue_comment_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues/comments{/number}","contents_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/contents/{+path}","compare_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/merges","archive_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/downloads","issues_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues{/number}","pulls_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls{/number}","milestones_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/milestones{/number}","notifications_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/labels{/name}","releases_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/releases{/id}","deployments_url":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/deployments","created_at":"2018-02-14T13:50:55Z","updated_at":"2019-06-07T09:36:45Z","pushed_at":"2019-06-10T05:31:29Z","git_url":"git://github.com/NordicPlayground/fw-nrfconnect-nrf.git","ssh_url":"git@github.com:NordicPlayground/fw-nrfconnect-nrf.git","clone_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf.git","svn_url":"https://github.com/NordicPlayground/fw-nrfconnect-nrf","homepage":"http://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/","size":4463,"stargazers_count":49,"watchers_count":49,"language":"C","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":137,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":26,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":137,"open_issues":26,"watchers":49,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828"},"html":{"href":"https://github.com/NordicPlayground/fw-nrfconnect-nrf/pull/828"},"issue":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues/828"},"comments":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/issues/828/comments"},"review_comments":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828/comments"},"review_comment":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/pulls/828/commits"},"statuses":{"href":"https://api.github.com/repos/NordicPlayground/fw-nrfconnect-nrf/statuses/ffaebc74e1f1c498c667d0e03b2fff219279a320"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"sigvartmh"}}