{"action":"created","comment":{"url":"https://api.github.com/repos/mbedmicro/mbed/pulls/comments/24480615","id":24480615,"diff_hunk":"@@ -22,6 +22,36 @@ void notify_performance_coefficient(const char* measurement_name, const int valu\n void notify_performance_coefficient(const char* measurement_name, const unsigned int value);\n void notify_performance_coefficient(const char* measurement_name, const double value);\n \n+// Host test auto-detection API\n+void notify_host_test_name(const char *host_test);\n+void notify_timeout(int timeout);\n+void notify_test_id(const char *test_id);\n+void notify_test_description(const char *description);\n+\n+// Host test auto-detection API\n+#define TEST_START(TESTID)      notify_test_id(TESTID); notify_start()","path":"libraries/tests/mbed/env/test_env.h","position":11,"original_position":11,"commit_id":"6ecf8da1c6bfb1f10cac2e5f72b1c733aa92d8a7","original_commit_id":"6ecf8da1c6bfb1f10cac2e5f72b1c733aa92d8a7","user":{"login":"PrzemekWirkus","id":6360720,"avatar_url":"https://avatars.githubusercontent.com/u/6360720?v=3","gravatar_id":"","url":"https://api.github.com/users/PrzemekWirkus","html_url":"https://github.com/PrzemekWirkus","followers_url":"https://api.github.com/users/PrzemekWirkus/followers","following_url":"https://api.github.com/users/PrzemekWirkus/following{/other_user}","gists_url":"https://api.github.com/users/PrzemekWirkus/gists{/gist_id}","starred_url":"https://api.github.com/users/PrzemekWirkus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PrzemekWirkus/subscriptions","organizations_url":"https://api.github.com/users/PrzemekWirkus/orgs","repos_url":"https://api.github.com/users/PrzemekWirkus/repos","events_url":"https://api.github.com/users/PrzemekWirkus/events{/privacy}","received_events_url":"https://api.github.com/users/PrzemekWirkus/received_events","type":"User","site_admin":false},"body":"Yes, you are right, I will change it to something more ```mbed``` specific / descriptive.","created_at":"2015-02-11T08:58:59Z","updated_at":"2015-02-11T08:58:59Z","html_url":"https://github.com/mbedmicro/mbed/pull/900#discussion_r24480615","pull_request_url":"https://api.github.com/repos/mbedmicro/mbed/pulls/900","_links":{"self":{"href":"https://api.github.com/repos/mbedmicro/mbed/pulls/comments/24480615"},"html":{"href":"https://github.com/mbedmicro/mbed/pull/900#discussion_r24480615"},"pull_request":{"href":"https://api.github.com/repos/mbedmicro/mbed/pulls/900"}}},"pull_request":{"url":"https://api.github.com/repos/mbedmicro/mbed/pulls/900","id":29058461,"html_url":"https://github.com/mbedmicro/mbed/pull/900","diff_url":"https://github.com/mbedmicro/mbed/pull/900.diff","patch_url":"https://github.com/mbedmicro/mbed/pull/900.patch","issue_url":"https://api.github.com/repos/mbedmicro/mbed/issues/900","number":900,"state":"open","locked":false,"title":"Host test autodetection","user":{"login":"PrzemekWirkus","id":6360720,"avatar_url":"https://avatars.githubusercontent.com/u/6360720?v=3","gravatar_id":"","url":"https://api.github.com/users/PrzemekWirkus","html_url":"https://github.com/PrzemekWirkus","followers_url":"https://api.github.com/users/PrzemekWirkus/followers","following_url":"https://api.github.com/users/PrzemekWirkus/following{/other_user}","gists_url":"https://api.github.com/users/PrzemekWirkus/gists{/gist_id}","starred_url":"https://api.github.com/users/PrzemekWirkus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PrzemekWirkus/subscriptions","organizations_url":"https://api.github.com/users/PrzemekWirkus/orgs","repos_url":"https://api.github.com/users/PrzemekWirkus/repos","events_url":"https://api.github.com/users/PrzemekWirkus/events{/privacy}","received_events_url":"https://api.github.com/users/PrzemekWirkus/received_events","type":"User","site_admin":false},"body":"# Description\r\nIn order to achieve leaner test suite functionality and in the future decouple functionality such as:\r\n* mbed-enabled board auto-detection - mbed-ls project, former mbed-lmtools.\r\n* Host tests in worskace_tools/host_tests - set of test supervising scripts.\r\n* Test suite CLI (command line interface)\r\n* Building mechanism such as build.py, make.py and singletest.py will be replaced in future with separate project build tool.\r\n\r\n## mbed-ls - cool mbed-enabled platform auto-detection on your host!\r\nmbed-ls is Python module used to detect and list mbed-enabled devices connected to host computer. package will support Windows 7, Ubuntu and MacOS. It will be delivered as redistributable Python module (package) and command line tool.\r\nCurrently mbed-ls module is under development but already decoupled mbed-ls functionality is delivered to mbed SDK's test suite.\r\n\r\nYou will be able for example to use this tool from command line!\r\n```\r\n$ mbedls\r\n+---------------------+-------------------+-------------------+--------------------------------+\r\n|platform_name        |mount_point        |serial_port        |target_id                       |\r\n+---------------------+-------------------+-------------------+--------------------------------+\r\n|KL25Z                |I:                 |COM89              |02000203240881BBD9F47C43        |\r\n|NUCLEO_F302R8        |E:                 |COM34              |07050200623B61125D5EF72A        |\r\n+---------------------+-------------------+-------------------+--------------------------------+\r\n```\r\nNew command line switch ```--auto``` and ```--tc``` are added to ```workspace_tools/singletest.py``` script and replace (not completely, you will be still able to use configuration files just because they are more powerful than mbed-ls) existing file based test configuration.\r\n\r\nCurrently you will execute your automated tests like this:\r\n```\r\n$ singletest.py -i test_spec.json -M muts_all.json\r\n```\r\nWith mbed-ls tools you will be able to auto-detect all connected to your host devices and just decide which toolchains you want to include.\r\nBelow command is replacement for ```-i``` and ```-M``` combo. Tests will be built using default compiler for each detected mbed-enabled platform.\r\nNote: Now mbed-ls tools will detect devices for you, pair serial ports and disks (mount points) and based on TargetID determine mbed-enabled target generic name.\r\n```\r\n$ singletest.py --auto\r\n```\r\nor just for example specify that you want to build tests using default toolchains (per platform) and GCC_ARM for all platforms.\r\n```\r\n$ singletest.py --auto --tc default,GCC_ARM\r\n```\r\n\r\nNew ```--auto``` command is compatible with existing command line switches so you can for example:\r\n\r\n* Check your auto-detected configuration:\r\n```\r\n$ singletest.py --auto --config\r\nMBEDLS: Detecting connected mbed-enabled devices...\r\nMBEDLS: Detected NUCLEO_F302R8, port: COM34, mounted: E:\r\nMBEDLS: Detected KL25Z, port: COM89, mounted: I:\r\nMUTs configuration in auto-detected:\r\n+-------+-------------+---------------+------+-------+\r\n| index | peripherals | mcu           | disk | port  |\r\n+-------+-------------+---------------+------+-------+\r\n| 1     |             | NUCLEO_F302R8 | E:   | COM34 |\r\n| 2     |             | KL25Z         | I:   | COM89 |\r\n+-------+-------------+---------------+------+-------+\r\n\r\nTest specification in auto-detected:\r\n+---------------+-----+------+\r\n| mcu           | ARM | uARM |\r\n+---------------+-----+------+\r\n| KL25Z         | Yes | -    |\r\n| NUCLEO_F302R8 | -   | Yes  |\r\n+---------------+-----+------+\r\n```\r\n* Check supported toolchains for each platform (with optional filter ```-f```):\r\n```\r\n$ singletest.py -S -f F302\r\n+---------------+-----------+---------+-----------+--------+--------+-----------+------------+---------------+\r\n| Platform      |    ARM    |   uARM  |  GCC_ARM  | GCC_CS | GCC_CR |    IAR    | GCC_CW_EWL | GCC_CW_NEWLIB |\r\n+---------------+-----------+---------+-----------+--------+--------+-----------+------------+---------------+\r\n| NUCLEO_F302R8 | Supported | Default | Supported |   -    |   -    | Supported |     -      |       -       |\r\n+---------------+-----------+---------+-----------+--------+--------+-----------+------------+---------------+\r\n*Default - default on-line compiler\r\n*Supported - supported off-line compiler\r\n\r\nTotal platforms: 1\r\nTotal permutations: 4\r\n```\r\n* Test suite will check for you if you configured settings and your toolchain path(s):\r\n```\r\n$ singletest.py --auto --config --tc all\r\nMBEDLS: Detecting connected mbed-enabled devices...\r\nMBEDLS: Detected NUCLEO_F302R8, port: COM34, mounted: E:\r\nMBEDLS: Detected KL25Z, port: COM89, mounted: I:\r\nMUTs configuration in auto-detected:\r\n+-------+-------------+---------------+------+-------+\r\n| index | peripherals | mcu           | disk | port  |\r\n+-------+-------------+---------------+------+-------+\r\n| 1     |             | NUCLEO_F302R8 | E:   | COM34 |\r\n| 2     |             | KL25Z         | I:   | COM89 |\r\n+-------+-------------+---------------+------+-------+\r\n\r\nTest specification in auto-detected:\r\n+---------------+-----+---------+------------+---------------+-----+------+\r\n| mcu           | ARM | GCC_ARM | GCC_CW_EWL | GCC_CW_NEWLIB | IAR | uARM |\r\n+---------------+-----+---------+------------+---------------+-----+------+\r\n| KL25Z         | Yes | Yes     | Yes#       | Yes#          | Yes | -    |\r\n| NUCLEO_F302R8 | Yes | Yes     | -#         | -#            | Yes | Yes  |\r\n+---------------+-----+---------+------------+---------------+-----+------+\r\nToolchain conflicts:\r\n        # Toolchain GCC_CW_EWL path not found: C:/Freescale/CW MCU v10.3/MCU/ARM_GCC_Support/ewl/lib\r\n        # Toolchain GCC_CW_NEWLIB path not found: C:/Freescale/CW MCU v10.3/Cross_Tools/arm-none-eabi-gcc-4_6_2/bin\r\n```\r\n* Use test verbose mode ```-V``` to see test printouts in real time, choose test(s) you want to execute with ```-n``` option and define your favorite toolchain(s) with ```--tc```:\r\n```\r\n$ singletest.py --auto --tc GCC_ARM -V -n DTCT_1\r\nMBEDLS: Detecting connected mbed-enabled devices...\r\nMBEDLS: Detected NUCLEO_F302R8, port: COM34, mounted: E:\r\nBuilding library CMSIS (NUCLEO_F302R8, GCC_ARM)\r\nBuilding library MBED (NUCLEO_F302R8, GCC_ARM)\r\nBuilding project DETECT (NUCLEO_F302R8, GCC_ARM)\r\nExecuting 'python host_test.py -d E: -f \"C:\\Work\\mbed-przemek\\build\\test\\NUCLEO_F302R8\\GCC_ARM\\DTCT_1\\detect.bin\" -p COM34 -t 10 -C 1.5 -m NUCLEO_F302R8'\r\nTest::Output::Start\r\nMBED: Instrumentation: \"COM34\" and disk: \"E:\"\r\nHOST: Copy image onto target...\r\nHOST: Initialize serial port...\r\nHOST: Reset target...\r\nHOST: Property 'timeout' = '10'\r\nHOST: Property 'host_test_name' = 'detect_auto'\r\nHOST: Property 'description' = 'Simple detect test'\r\nHOST: Property 'test_id' = 'DTCT_1'\r\nHOST: Start test...\r\n{{start}}\r\nHOST: Detecting target name...\r\nMBED: Target 'NUCLEO_F302R8'\r\nHOST: MUT Target name 'NUCLEO_F302R8', expected 'NUCLEO_F302R8'... [OK]\r\nMBED: Test ID 'DTCT_1'\r\nMBED: UUID '04dab79c-a6c8-4bf0-8b1e-3771b4540bb8'\r\n\r\n{{success}}\r\n{{end}}\r\nTest::Output::Finish\r\nTargetTest::NUCLEO_F302R8::GCC_ARM::DTCT_1::Simple detect test [OK] in 1.07 of 10 sec\r\nTest summary:\r\n+--------+---------------+-----------+---------+--------------------+--------------------+---------------+-------+\r\n| Result | Target        | Toolchain | Test ID | Test Description   | Elapsed Time (sec) | Timeout (sec) | Loops |\r\n+--------+---------------+-----------+---------+--------------------+--------------------+---------------+-------+\r\n| OK     | NUCLEO_F302R8 | GCC_ARM   | DTCT_1  | Simple detect test |        1.07        |       10      |  1/1  |\r\n+--------+---------------+-----------+---------+--------------------+--------------------+---------------+-------+\r\nResult: 1 OK\r\n\r\nCompleted in 4.33 sec\r\n```\r\n\r\n## Host test script auto-detection\r\nStructure for host tests and C/C++ test source code changed. In the future tests will be deployed together with corresponding modules. For now mbed SDK tests have to improve. We want to remove dependency on ```workspace_tools/tests.py``` test meta-data and move test / test runner handshake inside test source code.\r\n* Example target test, look how new macros ```TEST_*``` are used to notify host test system about prefered host test handler. Now test will decide which host test should handle it, not extra meta-data.\r\n```C++\r\n#include \"mbed.h\"\r\n#include \"test_env.h\"\r\n\r\nint main() {\r\n    TEST_TIMEOUT(10);\r\n    TEST_HOSTTEST(detect_auto);\r\n    TEST_DESCRIPTION(Simple detect test);\r\n    TEST_START(\"DTCT_1\");\r\n\r\n    // Test case body start\r\n    notify_start();\r\n    printf(\"MBED: Target '%s'\\r\\n\", TEST_SUITE_TARGET_NAME);\r\n    printf(\"MBED: Test ID '%s'\\r\\n\", TEST_SUITE_TEST_ID);\r\n    printf(\"MBED: UUID '%s'\\r\\n\", TEST_SUITE_UUID);\r\n    // Test case body end\r\n\r\n    TEST_RESULT(true);\r\n}\r\n```\r\nNote, things like:\r\n* Test case timeout (real time of execution) is defined in macro ```TEST_TIMEOUT()```.\r\n* Test case description is encapsulated with macro ```TEST_DESCRIPTION()```.\r\n* Preferred host test handler is defined in macro ```TEST_HOSTTEST()```.\r\n* Test case result can be send to test suite environment using ``` TEST_RESULT()``` macro - if applicable. Host test can decide about test case result in many cases.\r\n\r\n## mbed SDK is now in color!\r\nColorama is new package dependency added so CLI is now colorful (Hard to say if this is good or bad).\r\nBelow sample of new color format:\r\n![autodetection_1](https://cloud.githubusercontent.com/assets/6360720/6139087/8f4f846c-b17f-11e4-9664-602f71664db5.png)\r\n\r\n# Testing\r\nSolution tested with 8 of mbed-enabled boards. Both test auto-detection for ```test_env``` and unit tests using ```CppUTest``` works well.\r\nThis solution will be tested with greater number of boards soon, so pelase wait for notification in this pool request.","created_at":"2015-02-11T00:16:11Z","updated_at":"2015-02-11T08:58:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"00ef92e2e7b09ff7261ca3acbb9fd1e6e202ffe6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mbedmicro/mbed/pulls/900/commits","review_comments_url":"https://api.github.com/repos/mbedmicro/mbed/pulls/900/comments","review_comment_url":"https://api.github.com/repos/mbedmicro/mbed/pulls/comments/{number}","comments_url":"https://api.github.com/repos/mbedmicro/mbed/issues/900/comments","statuses_url":"https://api.github.com/repos/mbedmicro/mbed/statuses/6ecf8da1c6bfb1f10cac2e5f72b1c733aa92d8a7","head":{"label":"PrzemekWirkus:host_test_autodetection","ref":"host_test_autodetection","sha":"6ecf8da1c6bfb1f10cac2e5f72b1c733aa92d8a7","user":{"login":"PrzemekWirkus","id":6360720,"avatar_url":"https://avatars.githubusercontent.com/u/6360720?v=3","gravatar_id":"","url":"https://api.github.com/users/PrzemekWirkus","html_url":"https://github.com/PrzemekWirkus","followers_url":"https://api.github.com/users/PrzemekWirkus/followers","following_url":"https://api.github.com/users/PrzemekWirkus/following{/other_user}","gists_url":"https://api.github.com/users/PrzemekWirkus/gists{/gist_id}","starred_url":"https://api.github.com/users/PrzemekWirkus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PrzemekWirkus/subscriptions","organizations_url":"https://api.github.com/users/PrzemekWirkus/orgs","repos_url":"https://api.github.com/users/PrzemekWirkus/repos","events_url":"https://api.github.com/users/PrzemekWirkus/events{/privacy}","received_events_url":"https://api.github.com/users/PrzemekWirkus/received_events","type":"User","site_admin":false},"repo":{"id":25822040,"name":"mbed","full_name":"PrzemekWirkus/mbed","owner":{"login":"PrzemekWirkus","id":6360720,"avatar_url":"https://avatars.githubusercontent.com/u/6360720?v=3","gravatar_id":"","url":"https://api.github.com/users/PrzemekWirkus","html_url":"https://github.com/PrzemekWirkus","followers_url":"https://api.github.com/users/PrzemekWirkus/followers","following_url":"https://api.github.com/users/PrzemekWirkus/following{/other_user}","gists_url":"https://api.github.com/users/PrzemekWirkus/gists{/gist_id}","starred_url":"https://api.github.com/users/PrzemekWirkus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PrzemekWirkus/subscriptions","organizations_url":"https://api.github.com/users/PrzemekWirkus/orgs","repos_url":"https://api.github.com/users/PrzemekWirkus/repos","events_url":"https://api.github.com/users/PrzemekWirkus/events{/privacy}","received_events_url":"https://api.github.com/users/PrzemekWirkus/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/PrzemekWirkus/mbed","description":"mbed libraries and tools","fork":true,"url":"https://api.github.com/repos/PrzemekWirkus/mbed","forks_url":"https://api.github.com/repos/PrzemekWirkus/mbed/forks","keys_url":"https://api.github.com/repos/PrzemekWirkus/mbed/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PrzemekWirkus/mbed/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PrzemekWirkus/mbed/teams","hooks_url":"https://api.github.com/repos/PrzemekWirkus/mbed/hooks","issue_events_url":"https://api.github.com/repos/PrzemekWirkus/mbed/issues/events{/number}","events_url":"https://api.github.com/repos/PrzemekWirkus/mbed/events","assignees_url":"https://api.github.com/repos/PrzemekWirkus/mbed/assignees{/user}","branches_url":"https://api.github.com/repos/PrzemekWirkus/mbed/branches{/branch}","tags_url":"https://api.github.com/repos/PrzemekWirkus/mbed/tags","blobs_url":"https://api.github.com/repos/PrzemekWirkus/mbed/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PrzemekWirkus/mbed/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PrzemekWirkus/mbed/git/refs{/sha}","trees_url":"https://api.github.com/repos/PrzemekWirkus/mbed/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PrzemekWirkus/mbed/statuses/{sha}","languages_url":"https://api.github.com/repos/PrzemekWirkus/mbed/languages","stargazers_url":"https://api.github.com/repos/PrzemekWirkus/mbed/stargazers","contributors_url":"https://api.github.com/repos/PrzemekWirkus/mbed/contributors","subscribers_url":"https://api.github.com/repos/PrzemekWirkus/mbed/subscribers","subscription_url":"https://api.github.com/repos/PrzemekWirkus/mbed/subscription","commits_url":"https://api.github.com/repos/PrzemekWirkus/mbed/commits{/sha}","git_commits_url":"https://api.github.com/repos/PrzemekWirkus/mbed/git/commits{/sha}","comments_url":"https://api.github.com/repos/PrzemekWirkus/mbed/comments{/number}","issue_comment_url":"https://api.github.com/repos/PrzemekWirkus/mbed/issues/comments/{number}","contents_url":"https://api.github.com/repos/PrzemekWirkus/mbed/contents/{+path}","compare_url":"https://api.github.com/repos/PrzemekWirkus/mbed/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PrzemekWirkus/mbed/merges","archive_url":"https://api.github.com/repos/PrzemekWirkus/mbed/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PrzemekWirkus/mbed/downloads","issues_url":"https://api.github.com/repos/PrzemekWirkus/mbed/issues{/number}","pulls_url":"https://api.github.com/repos/PrzemekWirkus/mbed/pulls{/number}","milestones_url":"https://api.github.com/repos/PrzemekWirkus/mbed/milestones{/number}","notifications_url":"https://api.github.com/repos/PrzemekWirkus/mbed/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PrzemekWirkus/mbed/labels{/name}","releases_url":"https://api.github.com/repos/PrzemekWirkus/mbed/releases{/id}","created_at":"2014-10-27T14:08:07Z","updated_at":"2015-01-26T10:28:01Z","pushed_at":"2015-02-11T00:48:22Z","git_url":"git://github.com/PrzemekWirkus/mbed.git","ssh_url":"git@github.com:PrzemekWirkus/mbed.git","clone_url":"https://github.com/PrzemekWirkus/mbed.git","svn_url":"https://github.com/PrzemekWirkus/mbed","homepage":null,"size":20931,"stargazers_count":1,"watchers_count":1,"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":1,"default_branch":"master"}},"base":{"label":"mbedmicro:master","ref":"master","sha":"be043144193cb9a3dda5066fea1a21999fffff58","user":{"login":"mbedmicro","id":3626466,"avatar_url":"https://avatars.githubusercontent.com/u/3626466?v=3","gravatar_id":"","url":"https://api.github.com/users/mbedmicro","html_url":"https://github.com/mbedmicro","followers_url":"https://api.github.com/users/mbedmicro/followers","following_url":"https://api.github.com/users/mbedmicro/following{/other_user}","gists_url":"https://api.github.com/users/mbedmicro/gists{/gist_id}","starred_url":"https://api.github.com/users/mbedmicro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbedmicro/subscriptions","organizations_url":"https://api.github.com/users/mbedmicro/orgs","repos_url":"https://api.github.com/users/mbedmicro/repos","events_url":"https://api.github.com/users/mbedmicro/events{/privacy}","received_events_url":"https://api.github.com/users/mbedmicro/received_events","type":"Organization","site_admin":false},"repo":{"id":8270972,"name":"mbed","full_name":"mbedmicro/mbed","owner":{"login":"mbedmicro","id":3626466,"avatar_url":"https://avatars.githubusercontent.com/u/3626466?v=3","gravatar_id":"","url":"https://api.github.com/users/mbedmicro","html_url":"https://github.com/mbedmicro","followers_url":"https://api.github.com/users/mbedmicro/followers","following_url":"https://api.github.com/users/mbedmicro/following{/other_user}","gists_url":"https://api.github.com/users/mbedmicro/gists{/gist_id}","starred_url":"https://api.github.com/users/mbedmicro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbedmicro/subscriptions","organizations_url":"https://api.github.com/users/mbedmicro/orgs","repos_url":"https://api.github.com/users/mbedmicro/repos","events_url":"https://api.github.com/users/mbedmicro/events{/privacy}","received_events_url":"https://api.github.com/users/mbedmicro/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mbedmicro/mbed","description":"mbed libraries and tools","fork":false,"url":"https://api.github.com/repos/mbedmicro/mbed","forks_url":"https://api.github.com/repos/mbedmicro/mbed/forks","keys_url":"https://api.github.com/repos/mbedmicro/mbed/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mbedmicro/mbed/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mbedmicro/mbed/teams","hooks_url":"https://api.github.com/repos/mbedmicro/mbed/hooks","issue_events_url":"https://api.github.com/repos/mbedmicro/mbed/issues/events{/number}","events_url":"https://api.github.com/repos/mbedmicro/mbed/events","assignees_url":"https://api.github.com/repos/mbedmicro/mbed/assignees{/user}","branches_url":"https://api.github.com/repos/mbedmicro/mbed/branches{/branch}","tags_url":"https://api.github.com/repos/mbedmicro/mbed/tags","blobs_url":"https://api.github.com/repos/mbedmicro/mbed/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mbedmicro/mbed/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mbedmicro/mbed/git/refs{/sha}","trees_url":"https://api.github.com/repos/mbedmicro/mbed/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mbedmicro/mbed/statuses/{sha}","languages_url":"https://api.github.com/repos/mbedmicro/mbed/languages","stargazers_url":"https://api.github.com/repos/mbedmicro/mbed/stargazers","contributors_url":"https://api.github.com/repos/mbedmicro/mbed/contributors","subscribers_url":"https://api.github.com/repos/mbedmicro/mbed/subscribers","subscription_url":"https://api.github.com/repos/mbedmicro/mbed/subscription","commits_url":"https://api.github.com/repos/mbedmicro/mbed/commits{/sha}","git_commits_url":"https://api.github.com/repos/mbedmicro/mbed/git/commits{/sha}","comments_url":"https://api.github.com/repos/mbedmicro/mbed/comments{/number}","issue_comment_url":"https://api.github.com/repos/mbedmicro/mbed/issues/comments/{number}","contents_url":"https://api.github.com/repos/mbedmicro/mbed/contents/{+path}","compare_url":"https://api.github.com/repos/mbedmicro/mbed/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mbedmicro/mbed/merges","archive_url":"https://api.github.com/repos/mbedmicro/mbed/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mbedmicro/mbed/downloads","issues_url":"https://api.github.com/repos/mbedmicro/mbed/issues{/number}","pulls_url":"https://api.github.com/repos/mbedmicro/mbed/pulls{/number}","milestones_url":"https://api.github.com/repos/mbedmicro/mbed/milestones{/number}","notifications_url":"https://api.github.com/repos/mbedmicro/mbed/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mbedmicro/mbed/labels{/name}","releases_url":"https://api.github.com/repos/mbedmicro/mbed/releases{/id}","created_at":"2013-02-18T15:23:11Z","updated_at":"2015-02-11T08:22:09Z","pushed_at":"2015-02-11T08:22:09Z","git_url":"git://github.com/mbedmicro/mbed.git","ssh_url":"git@github.com:mbedmicro/mbed.git","clone_url":"https://github.com/mbedmicro/mbed.git","svn_url":"https://github.com/mbedmicro/mbed","homepage":null,"size":35087,"stargazers_count":338,"watchers_count":338,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":339,"mirror_url":null,"open_issues_count":65,"forks":339,"open_issues":65,"watchers":338,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mbedmicro/mbed/pulls/900"},"html":{"href":"https://github.com/mbedmicro/mbed/pull/900"},"issue":{"href":"https://api.github.com/repos/mbedmicro/mbed/issues/900"},"comments":{"href":"https://api.github.com/repos/mbedmicro/mbed/issues/900/comments"},"review_comments":{"href":"https://api.github.com/repos/mbedmicro/mbed/pulls/900/comments"},"review_comment":{"href":"https://api.github.com/repos/mbedmicro/mbed/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/mbedmicro/mbed/pulls/900/commits"},"statuses":{"href":"https://api.github.com/repos/mbedmicro/mbed/statuses/6ecf8da1c6bfb1f10cac2e5f72b1c733aa92d8a7"}}}}