{"action":"created","comment":{"url":"https://api.github.com/repos/RustyGecko/emlib/pulls/comments/25845403","id":25845403,"diff_hunk":"@@ -0,0 +1,258 @@\n+use core::prelude::*;\n+use core::default::Default;\n+\n+use collections::vec::Vec;\n+use collections::string::String;\n+\n+use {cmu, gpio, usart};\n+use gpio::Port;\n+\n+use self::Location::*;\n+\n+type PortPin = Option<(Port, u32)>;\n+\n+/// Possible locations for the different Usart's. Not all locations is available for every Usart.\n+#[derive(Copy, Debug)]\n+pub enum Location {\n+    Loc0,\n+    Loc1,\n+    Loc2,\n+    Loc3,\n+    Loc4,\n+    Loc5,\n+}\n+\n+/// Possible different Usart's to configure.\n+#[derive(Copy, Debug)]\n+pub enum Config {\n+    Usart0(Location),\n+    Usart1(Location),\n+    Usart2(Location),\n+}\n+\n+#[allow(dead_code)]\n+pub struct Usart {\n+    config: Config,\n+    baudrate: u32,\n+    usart: &'static mut usart::Usart,\n+    line_break: &'static str,\n+}\n+\n+/// Initializes and returns a new Usart1 instance with Location 1 and a baudrate of 9600.\n+impl Default for Usart {\n+    fn default() -> Usart {\n+        let mut usart = Usart {\n+            config: Config::Usart1(Loc1),\n+            baudrate: 9600,\n+            usart: usart::Usart::usart1(),\n+            line_break: \"\\0\\r\",\n+        };\n+\n+        usart.init();\n+        usart\n+    }\n+}\n+\n+impl Usart {\n+    /// Returns a new Usart instance. The Usart have to be manually initialized and it is\n+    /// configured to return Strings when it receives either a `\\0` or a `\\r` character.\n+    pub fn new(config: Config, baudrate: u32) -> Usart {\n+        Usart {\n+            config: config,\n+            baudrate: baudrate,\n+            usart: match config {\n+                Config::Usart0(_) => usart::Usart::usart0(),\n+                Config::Usart1(_) => usart::Usart::usart1(),\n+                Config::Usart2(_) => usart::Usart::usart2(),\n+            },\n+            line_break: \"\\0\\r\",\n+        }\n+    }\n+\n+    /// Called in order to initialize the Usart according to it's config\n+    pub fn init(&mut self) {\n+        // Enable clock for HF peripherals\n+        cmu::clock_select_set(cmu::Clock::HF, cmu::Select::HFRCO);\n+\n+        // Configure usart\n+        let (usart_clock, usart) = match self.config {\n+            Config::Usart0(_) => (cmu::Clock::USART0, usart::Usart::usart0()),\n+            Config::Usart1(_) => (cmu::Clock::USART1, usart::Usart::usart1()),\n+            Config::Usart2(_) => (cmu::Clock::USART2, usart::Usart::usart2()),\n+        };\n+        self.usart = usart;\n+        cmu::clock_enable(usart_clock, true);\n+        self.usart.init_async(&usart::InitAsync {\n+            enable: usart::Enable::Disable,\n+            baudrate: self.baudrate,\n+            .. Default::default()\n+        });\n+\n+        // Configure TX, RX, CLK, CS pins and Usart location\n+        self.init_location_and_gpio();\n+\n+        // Enable Usart\n+        self.usart.enable(usart::Enable::Enable);\n+    }\n+\n+    /// Performs a blocking send of one `char`.\n+    pub fn putc(&self, data: u8) {\n+        self.usart.tx(data);\n+    }\n+\n+    /// Blocks until one `char` is received.\n+    pub fn getc(&self) -> u8 {\n+        self.usart.rx()\n+    }\n+\n+    /// Performs a blocking send of a `&str`\n+    pub fn write_str(&self, string: &str) {\n+        for c in string.chars() {\n+            self.putc(c as u8);\n+        }\n+    }\n+\n+    /// Blocks and returns a `String` that is terminated by either one of the\n+    /// characters in `line_break`.\n+    ///\n+    /// #Panics\n+    /// Panics if it fails to parse the received characters to a UTF8 String.\n+    pub fn read_string(&self) -> String {\n+        let mut bytes = Vec::new();\n+\n+        loop {\n+            match self.getc() as char {\n+                c if self.line_break.contains_char(c) => { break; }\n+                c => { bytes.push(c as u8); }\n+            }\n+        }\n+\n+        String::from_utf8(bytes).unwrap_or_else(|e| {\n+            panic!(\"{}\", e)\n+        })\n+    }\n+\n+    /// Returns `true` if a `char` is available to read.\n+    pub fn readable(&self) -> bool {\n+        (self.usart.IF & usart::STATUS_RXDATAV) != 0\n+    }\n+\n+    /// Returns `true` if there is space available to write a `char`.\n+    pub fn writeable(&self) -> bool {\n+        (self.usart.IF & usart::STATUS_TXBL) != 0\n+    }\n+\n+\n+    fn init_location_and_gpio(&mut self) {\n+        let location = match self.config {\n+            Config::Usart0(loc) => {\n+                match loc {\n+                    Loc0 => {\n+                        self.init_gpio(Some((Port::E, 10)), Some((Port::E, 11)),\n+                            Some((Port::E, 12)), Some((Port::E, 13)));\n+                        usart::ROUTE_LOCATION_LOC0\n+                    },\n+                    Loc1 => {\n+                        self.init_gpio(Some((Port::E, 7)), Some((Port::E, 6)),\n+                            Some((Port::E, 5)), Some((Port::E, 4)));\n+                        usart::ROUTE_LOCATION_LOC1\n+                    },\n+                    Loc2 => {\n+                        self.init_gpio(Some((Port::C, 11)), Some((Port::C, 10)),\n+                            Some((Port::C, 9)), Some((Port::C, 8)));\n+                        usart::ROUTE_LOCATION_LOC2\n+                    },\n+                    Loc3 => {\n+                        self.init_gpio(Some((Port::E, 13)), Some((Port::E, 12)),\n+                            None, None);\n+                        usart::ROUTE_LOCATION_LOC3\n+                    },\n+                    Loc4 => {\n+                        self.init_gpio(Some((Port::B, 7)), Some((Port::B, 8)),\n+                            Some((Port::B, 13)), Some((Port::B, 14)));\n+                        usart::ROUTE_LOCATION_LOC4\n+                    },\n+                    Loc5 => {\n+                        self.init_gpio(Some((Port::C, 0)), Some((Port::C, 1)),\n+                            Some((Port::B, 13)), Some((Port::B, 14)));\n+                        usart::ROUTE_LOCATION_LOC5\n+                    },\n+                }\n+            },\n+            Config::Usart1(loc) => {\n+                match loc {\n+                    Loc0 => {\n+                        self.init_gpio(Some((Port::C, 0)), Some((Port::C, 1)),\n+                            Some((Port::B, 7)), Some((Port::B, 8)));\n+                        usart::ROUTE_LOCATION_LOC0\n+                    },\n+                    Loc1 => {\n+                        self.init_gpio(Some((Port::D, 0)), Some((Port::D, 1)),\n+                            Some((Port::D, 2)), Some((Port::D, 3)));\n+                        usart::ROUTE_LOCATION_LOC1\n+                    },\n+                    Loc2 => {\n+                        self.init_gpio(Some((Port::D, 7)), Some((Port::D, 6)),\n+                            Some((Port::F, 0)), Some((Port::F, 1)));\n+                        usart::ROUTE_LOCATION_LOC2\n+                    },\n+                    _ => panic!(\"Invalid location for Usart1: {:?}\", loc)\n+                }\n+            },\n+            Config::Usart2(loc) => {\n+                match loc {\n+                    Loc0 => {\n+                        self.init_gpio(Some((Port::C, 2)), Some((Port::C, 3)),\n+                            Some((Port::C, 4)), Some((Port::C, 5)));\n+                        usart::ROUTE_LOCATION_LOC0\n+                    },\n+                    Loc1 => {\n+                        self.init_gpio(Some((Port::B, 3)), Some((Port::B, 4)),\n+                            Some((Port::B, 5)), Some((Port::B, 6)));\n+                        usart::ROUTE_LOCATION_LOC1\n+                    },\n+                    _ => panic!(\"Invalid location for Usart2: {:?}\", loc)\n+                }\n+            },\n+        };\n+        self.usart.ROUTE = (self.usart.ROUTE & !usart::ROUTE_LOCATION_MASK) | location;\n+    }\n+\n+    fn init_gpio(&mut self, rx: PortPin, tx: PortPin, clk: PortPin, cs: PortPin) {","path":"src/modules/usart.rs","position":221,"original_position":221,"commit_id":"74c33b35abc6b325e395a2ceec8d378ba9daf6d0","original_commit_id":"74c33b35abc6b325e395a2ceec8d378ba9daf6d0","user":{"login":"havardh","id":451855,"avatar_url":"https://avatars.githubusercontent.com/u/451855?v=3","gravatar_id":"","url":"https://api.github.com/users/havardh","html_url":"https://github.com/havardh","followers_url":"https://api.github.com/users/havardh/followers","following_url":"https://api.github.com/users/havardh/following{/other_user}","gists_url":"https://api.github.com/users/havardh/gists{/gist_id}","starred_url":"https://api.github.com/users/havardh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/havardh/subscriptions","organizations_url":"https://api.github.com/users/havardh/orgs","repos_url":"https://api.github.com/users/havardh/repos","events_url":"https://api.github.com/users/havardh/events{/privacy}","received_events_url":"https://api.github.com/users/havardh/received_events","type":"User","site_admin":false},"body":"`fn init_gpio(&mut self, rx: Option<PortPin>, tx: Option<PortPin>, clk: Option<PortPin>, cs: Option<PortPin>)`","created_at":"2015-03-05T08:11:13Z","updated_at":"2015-03-05T08:11:13Z","html_url":"https://github.com/RustyGecko/emlib/pull/25#discussion_r25845403","pull_request_url":"https://api.github.com/repos/RustyGecko/emlib/pulls/25","_links":{"self":{"href":"https://api.github.com/repos/RustyGecko/emlib/pulls/comments/25845403"},"html":{"href":"https://github.com/RustyGecko/emlib/pull/25#discussion_r25845403"},"pull_request":{"href":"https://api.github.com/repos/RustyGecko/emlib/pulls/25"}}},"pull_request":{"url":"https://api.github.com/repos/RustyGecko/emlib/pulls/25","id":30456393,"html_url":"https://github.com/RustyGecko/emlib/pull/25","diff_url":"https://github.com/RustyGecko/emlib/pull/25.diff","patch_url":"https://github.com/RustyGecko/emlib/pull/25.patch","issue_url":"https://api.github.com/repos/RustyGecko/emlib/issues/25","number":25,"state":"open","locked":false,"title":"Easy usart","user":{"login":"sondrele","id":1423083,"avatar_url":"https://avatars.githubusercontent.com/u/1423083?v=3","gravatar_id":"","url":"https://api.github.com/users/sondrele","html_url":"https://github.com/sondrele","followers_url":"https://api.github.com/users/sondrele/followers","following_url":"https://api.github.com/users/sondrele/following{/other_user}","gists_url":"https://api.github.com/users/sondrele/gists{/gist_id}","starred_url":"https://api.github.com/users/sondrele/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sondrele/subscriptions","organizations_url":"https://api.github.com/users/sondrele/orgs","repos_url":"https://api.github.com/users/sondrele/repos","events_url":"https://api.github.com/users/sondrele/events{/privacy}","received_events_url":"https://api.github.com/users/sondrele/received_events","type":"User","site_admin":false},"body":"All Usart's tested and verified on DK3750","created_at":"2015-03-04T11:11:40Z","updated_at":"2015-03-05T08:11:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"46c9b57baa3a8df1e094ce8bb5242d95d7fd8be7","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/RustyGecko/emlib/pulls/25/commits","review_comments_url":"https://api.github.com/repos/RustyGecko/emlib/pulls/25/comments","review_comment_url":"https://api.github.com/repos/RustyGecko/emlib/pulls/comments{/number}","comments_url":"https://api.github.com/repos/RustyGecko/emlib/issues/25/comments","statuses_url":"https://api.github.com/repos/RustyGecko/emlib/statuses/74c33b35abc6b325e395a2ceec8d378ba9daf6d0","head":{"label":"RustyGecko:easy-usart","ref":"easy-usart","sha":"74c33b35abc6b325e395a2ceec8d378ba9daf6d0","user":{"login":"RustyGecko","id":10725791,"avatar_url":"https://avatars.githubusercontent.com/u/10725791?v=3","gravatar_id":"","url":"https://api.github.com/users/RustyGecko","html_url":"https://github.com/RustyGecko","followers_url":"https://api.github.com/users/RustyGecko/followers","following_url":"https://api.github.com/users/RustyGecko/following{/other_user}","gists_url":"https://api.github.com/users/RustyGecko/gists{/gist_id}","starred_url":"https://api.github.com/users/RustyGecko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RustyGecko/subscriptions","organizations_url":"https://api.github.com/users/RustyGecko/orgs","repos_url":"https://api.github.com/users/RustyGecko/repos","events_url":"https://api.github.com/users/RustyGecko/events{/privacy}","received_events_url":"https://api.github.com/users/RustyGecko/received_events","type":"Organization","site_admin":false},"repo":{"id":30063826,"name":"emlib","full_name":"RustyGecko/emlib","owner":{"login":"RustyGecko","id":10725791,"avatar_url":"https://avatars.githubusercontent.com/u/10725791?v=3","gravatar_id":"","url":"https://api.github.com/users/RustyGecko","html_url":"https://github.com/RustyGecko","followers_url":"https://api.github.com/users/RustyGecko/followers","following_url":"https://api.github.com/users/RustyGecko/following{/other_user}","gists_url":"https://api.github.com/users/RustyGecko/gists{/gist_id}","starred_url":"https://api.github.com/users/RustyGecko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RustyGecko/subscriptions","organizations_url":"https://api.github.com/users/RustyGecko/orgs","repos_url":"https://api.github.com/users/RustyGecko/repos","events_url":"https://api.github.com/users/RustyGecko/events{/privacy}","received_events_url":"https://api.github.com/users/RustyGecko/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RustyGecko/emlib","description":"Bindings for Silicon Labs emlib","fork":false,"url":"https://api.github.com/repos/RustyGecko/emlib","forks_url":"https://api.github.com/repos/RustyGecko/emlib/forks","keys_url":"https://api.github.com/repos/RustyGecko/emlib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RustyGecko/emlib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RustyGecko/emlib/teams","hooks_url":"https://api.github.com/repos/RustyGecko/emlib/hooks","issue_events_url":"https://api.github.com/repos/RustyGecko/emlib/issues/events{/number}","events_url":"https://api.github.com/repos/RustyGecko/emlib/events","assignees_url":"https://api.github.com/repos/RustyGecko/emlib/assignees{/user}","branches_url":"https://api.github.com/repos/RustyGecko/emlib/branches{/branch}","tags_url":"https://api.github.com/repos/RustyGecko/emlib/tags","blobs_url":"https://api.github.com/repos/RustyGecko/emlib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RustyGecko/emlib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RustyGecko/emlib/git/refs{/sha}","trees_url":"https://api.github.com/repos/RustyGecko/emlib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RustyGecko/emlib/statuses/{sha}","languages_url":"https://api.github.com/repos/RustyGecko/emlib/languages","stargazers_url":"https://api.github.com/repos/RustyGecko/emlib/stargazers","contributors_url":"https://api.github.com/repos/RustyGecko/emlib/contributors","subscribers_url":"https://api.github.com/repos/RustyGecko/emlib/subscribers","subscription_url":"https://api.github.com/repos/RustyGecko/emlib/subscription","commits_url":"https://api.github.com/repos/RustyGecko/emlib/commits{/sha}","git_commits_url":"https://api.github.com/repos/RustyGecko/emlib/git/commits{/sha}","comments_url":"https://api.github.com/repos/RustyGecko/emlib/comments{/number}","issue_comment_url":"https://api.github.com/repos/RustyGecko/emlib/issues/comments{/number}","contents_url":"https://api.github.com/repos/RustyGecko/emlib/contents/{+path}","compare_url":"https://api.github.com/repos/RustyGecko/emlib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RustyGecko/emlib/merges","archive_url":"https://api.github.com/repos/RustyGecko/emlib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RustyGecko/emlib/downloads","issues_url":"https://api.github.com/repos/RustyGecko/emlib/issues{/number}","pulls_url":"https://api.github.com/repos/RustyGecko/emlib/pulls{/number}","milestones_url":"https://api.github.com/repos/RustyGecko/emlib/milestones{/number}","notifications_url":"https://api.github.com/repos/RustyGecko/emlib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RustyGecko/emlib/labels{/name}","releases_url":"https://api.github.com/repos/RustyGecko/emlib/releases{/id}","created_at":"2015-01-30T08:44:25Z","updated_at":"2015-03-04T14:26:50Z","pushed_at":"2015-03-04T14:26:50Z","git_url":"git://github.com/RustyGecko/emlib.git","ssh_url":"git@github.com:RustyGecko/emlib.git","clone_url":"https://github.com/RustyGecko/emlib.git","svn_url":"https://github.com/RustyGecko/emlib","homepage":null,"size":816,"stargazers_count":1,"watchers_count":1,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":4,"forks":1,"open_issues":4,"watchers":1,"default_branch":"master"}},"base":{"label":"RustyGecko:master","ref":"master","sha":"04db9577abe551465995f6f02abad14f7e115569","user":{"login":"RustyGecko","id":10725791,"avatar_url":"https://avatars.githubusercontent.com/u/10725791?v=3","gravatar_id":"","url":"https://api.github.com/users/RustyGecko","html_url":"https://github.com/RustyGecko","followers_url":"https://api.github.com/users/RustyGecko/followers","following_url":"https://api.github.com/users/RustyGecko/following{/other_user}","gists_url":"https://api.github.com/users/RustyGecko/gists{/gist_id}","starred_url":"https://api.github.com/users/RustyGecko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RustyGecko/subscriptions","organizations_url":"https://api.github.com/users/RustyGecko/orgs","repos_url":"https://api.github.com/users/RustyGecko/repos","events_url":"https://api.github.com/users/RustyGecko/events{/privacy}","received_events_url":"https://api.github.com/users/RustyGecko/received_events","type":"Organization","site_admin":false},"repo":{"id":30063826,"name":"emlib","full_name":"RustyGecko/emlib","owner":{"login":"RustyGecko","id":10725791,"avatar_url":"https://avatars.githubusercontent.com/u/10725791?v=3","gravatar_id":"","url":"https://api.github.com/users/RustyGecko","html_url":"https://github.com/RustyGecko","followers_url":"https://api.github.com/users/RustyGecko/followers","following_url":"https://api.github.com/users/RustyGecko/following{/other_user}","gists_url":"https://api.github.com/users/RustyGecko/gists{/gist_id}","starred_url":"https://api.github.com/users/RustyGecko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RustyGecko/subscriptions","organizations_url":"https://api.github.com/users/RustyGecko/orgs","repos_url":"https://api.github.com/users/RustyGecko/repos","events_url":"https://api.github.com/users/RustyGecko/events{/privacy}","received_events_url":"https://api.github.com/users/RustyGecko/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RustyGecko/emlib","description":"Bindings for Silicon Labs emlib","fork":false,"url":"https://api.github.com/repos/RustyGecko/emlib","forks_url":"https://api.github.com/repos/RustyGecko/emlib/forks","keys_url":"https://api.github.com/repos/RustyGecko/emlib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RustyGecko/emlib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RustyGecko/emlib/teams","hooks_url":"https://api.github.com/repos/RustyGecko/emlib/hooks","issue_events_url":"https://api.github.com/repos/RustyGecko/emlib/issues/events{/number}","events_url":"https://api.github.com/repos/RustyGecko/emlib/events","assignees_url":"https://api.github.com/repos/RustyGecko/emlib/assignees{/user}","branches_url":"https://api.github.com/repos/RustyGecko/emlib/branches{/branch}","tags_url":"https://api.github.com/repos/RustyGecko/emlib/tags","blobs_url":"https://api.github.com/repos/RustyGecko/emlib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RustyGecko/emlib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RustyGecko/emlib/git/refs{/sha}","trees_url":"https://api.github.com/repos/RustyGecko/emlib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RustyGecko/emlib/statuses/{sha}","languages_url":"https://api.github.com/repos/RustyGecko/emlib/languages","stargazers_url":"https://api.github.com/repos/RustyGecko/emlib/stargazers","contributors_url":"https://api.github.com/repos/RustyGecko/emlib/contributors","subscribers_url":"https://api.github.com/repos/RustyGecko/emlib/subscribers","subscription_url":"https://api.github.com/repos/RustyGecko/emlib/subscription","commits_url":"https://api.github.com/repos/RustyGecko/emlib/commits{/sha}","git_commits_url":"https://api.github.com/repos/RustyGecko/emlib/git/commits{/sha}","comments_url":"https://api.github.com/repos/RustyGecko/emlib/comments{/number}","issue_comment_url":"https://api.github.com/repos/RustyGecko/emlib/issues/comments{/number}","contents_url":"https://api.github.com/repos/RustyGecko/emlib/contents/{+path}","compare_url":"https://api.github.com/repos/RustyGecko/emlib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RustyGecko/emlib/merges","archive_url":"https://api.github.com/repos/RustyGecko/emlib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RustyGecko/emlib/downloads","issues_url":"https://api.github.com/repos/RustyGecko/emlib/issues{/number}","pulls_url":"https://api.github.com/repos/RustyGecko/emlib/pulls{/number}","milestones_url":"https://api.github.com/repos/RustyGecko/emlib/milestones{/number}","notifications_url":"https://api.github.com/repos/RustyGecko/emlib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RustyGecko/emlib/labels{/name}","releases_url":"https://api.github.com/repos/RustyGecko/emlib/releases{/id}","created_at":"2015-01-30T08:44:25Z","updated_at":"2015-03-04T14:26:50Z","pushed_at":"2015-03-04T14:26:50Z","git_url":"git://github.com/RustyGecko/emlib.git","ssh_url":"git@github.com:RustyGecko/emlib.git","clone_url":"https://github.com/RustyGecko/emlib.git","svn_url":"https://github.com/RustyGecko/emlib","homepage":null,"size":816,"stargazers_count":1,"watchers_count":1,"language":"Rust","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":4,"forks":1,"open_issues":4,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/RustyGecko/emlib/pulls/25"},"html":{"href":"https://github.com/RustyGecko/emlib/pull/25"},"issue":{"href":"https://api.github.com/repos/RustyGecko/emlib/issues/25"},"comments":{"href":"https://api.github.com/repos/RustyGecko/emlib/issues/25/comments"},"review_comments":{"href":"https://api.github.com/repos/RustyGecko/emlib/pulls/25/comments"},"review_comment":{"href":"https://api.github.com/repos/RustyGecko/emlib/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/RustyGecko/emlib/pulls/25/commits"},"statuses":{"href":"https://api.github.com/repos/RustyGecko/emlib/statuses/74c33b35abc6b325e395a2ceec8d378ba9daf6d0"}}}}