{"id":15295048,"url":"https://github.com/samcrow/canadensis","last_synced_at":"2025-04-04T21:05:55.121Z","repository":{"id":37407323,"uuid":"266954359","full_name":"samcrow/canadensis","owner":"samcrow","description":"A Rust implementation of Cyphal","archived":false,"fork":false,"pushed_at":"2025-03-28T04:29:39.000Z","size":1528,"stargazers_count":47,"open_issues_count":10,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T05:24:42.496Z","etag":null,"topics":["cyphal","rust","uavcan"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samcrow.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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}},"created_at":"2020-05-26T05:40:48.000Z","updated_at":"2025-03-28T04:29:44.000Z","dependencies_parsed_at":"2025-01-07T04:32:36.646Z","dependency_job_id":"9f121333-0ef7-4079-a6c0-cd38b5fa80f4","html_url":"https://github.com/samcrow/canadensis","commit_stats":{"total_commits":385,"total_committers":4,"mean_commits":96.25,"dds":"0.023376623376623384","last_synced_commit":"c92cf8081a6f4bf072793e4eb88965439be813c0"},"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samcrow%2Fcanadensis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samcrow%2Fcanadensis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samcrow%2Fcanadensis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samcrow%2Fcanadensis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samcrow","download_url":"https://codeload.github.com/samcrow/canadensis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249524,"owners_count":20908212,"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","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":["cyphal","rust","uavcan"],"created_at":"2024-09-30T17:08:25.174Z","updated_at":"2025-04-04T21:05:55.102Z","avatar_url":"https://github.com/samcrow.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Canadensis: A Cyphal implementation\n\nThis project implements (most of) [Cyphal](https://opencyphal.org/) (previously called UAVCAN v1.0). As the Cyphal\nwebsite explains, \"Cyphal is an open technology for real-time intravehicular distributed computing and communication\nbased on modern networking standards (Ethernet, CAN FD, etc.). It was created to address the challenge of on-board\ndeterministic computing and data distribution in next-generation intelligent vehicles: manned and unmanned aircraft,\nspacecraft, robots, and cars.\"\n\nThis is currently an independent project, not affiliated with the Cyphal Consortium.\n\n## Submodule note\n\nThis repository uses a submodule for the [public regulated data types](https://github.com/OpenCyphal/public_regulated_data_types).\nWhen cloning, use `git clone --recursive`. If you have already cloned the repository without the\nrecursive option, run `git submodule init` followed by `git submodule update`. Otherwise, some tests will fail.\n\n## Published crates\n\nCrate | Description\n------|------------\n[`canadensis`](https://crates.io/crates/canadensis) ([documentation](https://docs.rs/canadensis)) | The main library with all core transport-independent functionality\n[`canadensis_data_types`](https://crates.io/crates/canadensis_data_types) ([documentation](https://docs.rs/canadensis_data_types)) | Rust types corresponding to the [Cyphal public regulated data types](https://github.com/OpenCyphal/public_regulated_data_types)\n[`canadensis_can`](https://crates.io/crates/canadensis_can) ([documentation](https://docs.rs/canadensis_bxcan)) | Cyphal/CAN transport\n[`canadensis_bxcan`](https://crates.io/crates/canadensis_bxcan) ([documentation](https://docs.rs/canadensis_bxcan)) | Compatibility for bxCAN embedded CAN controllers\n[`canadensis_linux`](https://crates.io/crates/canadensis_linux) ([documentation](https://docs.rs/canadensis_linux)) | Compatibility for Linux SocketCAN interfaces\n[`canadensis_serial`](https://crates.io/crates/canadensis_serial) ([documentation](https://docs.rs/canadensis_serial)) | Experimental Cyphal/Serial transport\n[`canadensis_udp`](https://crates.io/crates/canadensis_udp) ([documentation](https://docs.rs/canadensis_udp)) | Experimental Cyphal/UDP transport\n[`canadensis_pnp_client`](https://crates.io/crates/canadensis_pnp_client) ([documentation](https://docs.rs/canadensis_pnp_client)) | A client library for plug-and-play node ID allocation\n[`canadensis_crc`](https://crates.io/crates/canadensis_crc) ([documentation](https://docs.rs/canadensis_crc)) | Access to the software image CRC\n[`canadensis_write_crc`](https://crates.io/crates/canadensis_write_crc) ([documentation](https://docs.rs/canadensis_write_crc)) | A tool to calculate and write the CRC of a software image for use with `canadensis_crc`\n[`canadensis_codegen_rust`](https://crates.io/crates/canadensis_codegen_rust) ([documentation](https://docs.rs/canadensis_codegen_rust)) | A DSDL processor that generates Rust data types and serialization code\n[`canadensis_macro`](https://crates.io/crates/canadensis_macro) ([documentation](https://docs.rs/canadensis_macro)) | A procedural macro that generates Rust data types and serialization code from inline and/or external DSDL files\n\n\nOther crates (`canadensis_bit_length_set`, `canadensis_core`, `canadensis_derive_register_block`,\n`canadensis_dsdl_frontend`, `canadensis_dsdl_parser`, `canadensis_encoding`, and\n`canadensis_filter_config`) are re-exported in various places, so you normally will not need to depend on them directly.\n\n## Status\n\nThis code is intended to conform to version 1.0-beta of the Cyphal specification.\n\nMost of the functionality works. Some parts are incomplete:\n\n* There are some tests, but there are probably several bugs in areas that have not been tested.\n* The amount of dynamic memory allocation can be reduced, or at least documented better.\n* It needs better documentation\n\n## Principles\n\n* Runs on embedded devices\n* Uses dynamic memory allocation, but only when necessary\n* Supports Cyphal/CAN (classic CAN and CAN FD)\n* Supports Cyphal/Serial and Cyphal/UDP (these transports are not fully specified yet, but the canadensis\n  implementations were compatible with `pycyphal` when they were released)\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamcrow%2Fcanadensis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamcrow%2Fcanadensis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamcrow%2Fcanadensis/lists"}