{"id":29596243,"url":"https://github.com/nav-solutions/binex","last_synced_at":"2025-09-14T05:09:43.012Z","repository":{"id":278964341,"uuid":"937293342","full_name":"nav-solutions/binex","owner":"nav-solutions","description":"BINEX (Binary EXchange) stream parser","archived":false,"fork":false,"pushed_at":"2025-09-13T14:40:17.000Z","size":38295,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-13T16:26:41.535Z","etag":null,"topics":["geodesy","gnss","gnss-receiver","parser","real-time"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nav-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-22T19:41:03.000Z","updated_at":"2025-07-25T13:40:33.000Z","dependencies_parsed_at":"2025-03-11T21:19:17.135Z","dependency_job_id":"34fff49f-8cb0-492b-bbb9-3a350e0d2930","html_url":"https://github.com/nav-solutions/binex","commit_stats":null,"previous_names":["rtk-rs/binex","nav-solutions/binex"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nav-solutions/binex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nav-solutions%2Fbinex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nav-solutions%2Fbinex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nav-solutions%2Fbinex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nav-solutions%2Fbinex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nav-solutions","download_url":"https://codeload.github.com/nav-solutions/binex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nav-solutions%2Fbinex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275062966,"owners_count":25398888,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geodesy","gnss","gnss-receiver","parser","real-time"],"created_at":"2025-07-20T09:31:39.931Z","updated_at":"2025-09-14T05:09:43.004Z","avatar_url":"https://github.com/nav-solutions.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BINEX\n\n[![Rust](https://github.com/nav-solutions/binex/actions/workflows/rust.yml/badge.svg)](https://github.com/nav-solutions/binex/actions/workflows/rust.yml)\n[![Rust](https://github.com/nav-solutions/binex/actions/workflows/daily.yml/badge.svg)](https://github.com/nav-solutions/binex/actions/workflows/daily.yml) [![crates.io](https://img.shields.io/crates/v/binex.svg)](https://crates.io/crates/binex) \n[![crates.io](https://docs.rs/binex/badge.svg)](https://docs.rs/binex/badge.svg)\n\n[![MRSV](https://img.shields.io/badge/MSRV-1.82.0-orange?style=for-the-badge)](https://github.com/rust-lang/rust/releases/tag/1.82.0)\n[![License](https://img.shields.io/badge/license-MPL_2.0-orange?style=for-the-badge\u0026logo=mozilla)](https://github.com/nav-solutions/binex/blob/main/LICENSE)\n\nBINEX is a simple library to decode and encode BINEX messages.  \nBINEX stands for BINary EXchange and is the \"real time\" stream oriented\nversion of the RINEX format. It is to this day, the only open source protocol\nto encode GNSS and navigation data.\n\nWhile RINEX is readable and based on line termination, BINEX is real-time and\nhardware orientated (at the GNSS receiver firmware level).\n\nThis library allows easy message encoding and decoding, and aims at providing seamless\nconvertion from RINEX back and forth.\n\nYou have two scenarios to approach a BINEX stream:\n\n* use our Decoder object, which works on I/O interface directly\nand can represent a stream of continuous of either Messages (open source)\nor undisclosed elements. (private prototypes)\n\n* or use Message::decode to work on your own buffer directly.\n\nCurrent limitations\n===================\n\n+ Big endian streams are fully validated \u0026 tested\n+ Little endian streams are tested \u0026 verified but we don't have a dataset to confirm yet\n+ Enhanced CRC (robust messaging) is not supported yet\n+ MD5 checksum (very lengthy message prototypes) is implemented but not verified yet\n\nMessage Decoding\n================\n\nUse the BINEX `Decoder` to decode a `Readable` interface streaming\nBINEX messages. Decoder exposes both open source Messages that\nwere fully interprated and closed source Messages (undisclosed prototypes)\nthat it cannot interprate:\n\n```rust\nuse std::fs::File;\nuse flate2::read::GzDecoder;\nuse binex::prelude::{Decoder, StreamElement, Provider, Error};\n\nlet fd = File::open(\"data/BIN/mfle20200105.bnx.gz\")\n    .unwrap();\n\nlet mut decoder = Decoder::new(GzDecoder::new(fd));\n\nloop {\n    match decoder.next() {\n        Some(Ok(StreamElement::OpenSource(msg))) =\u003e {\n            // fully interprated element\n        },\n        Some(Ok(StreamElement::ClosedSource(element))) =\u003e {\n            // grab content you will need to interpate\n            let closed_meta = element.closed_meta; \n            let open_meta = closed_meta.open_meta;\n\n            // verify this is your organization\n            if closed_meta.provider == Provider::JPL {\n\n                // grab fields that you probably need to decode\n                let big_endian = open_meta.big_endian;\n                let is_reversed = open_meta.reversed;\n                let enhanced_crc = open_meta.enhanced_crc;\n\n                let mid = closed_meta.mid; // message ID\n                let mlen = closed_meta.mlen; // total message length\n                let chunk_size = closed_meta.size; // chunk length\n\n                // now, proceed to interpretation of this element,\n                // using undisclosed method\n                element.interprate(\u0026|data| {\n                    match mid {\n                        _ =\u003e {},\n                    }\n                });\n            }\n        },\n        Some(Err(e)) =\u003e {\n            // it is possible that some frames may not\n            // be supported yet.\n            // Any I/O error should not happen.\n        },\n        None =\u003e {\n            // end of stream\n            break;\n        },\n    }\n}\n```\n\nMessage Forging\n===============\n\nThe BINEX library allows easy message forging. Each message can be easily encoded and then\nstreamed into a `Writable` interface:\n\n```rust\n```\n\nLicense\n=======\n\nThis library is part of the [NAV-Solutions framework](https://github.com/nav-solutions) which\nis delivered under the [Mozilla V2 Public](https://www.mozilla.org/en-US/MPL/2.0) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnav-solutions%2Fbinex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnav-solutions%2Fbinex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnav-solutions%2Fbinex/lists"}