Crates.io | embedded-crc-macros |
lib.rs | embedded-crc-macros |
version | 1.0.0 |
source | src |
created_at | 2020-08-09 08:19:37.897207 |
updated_at | 2021-05-13 07:12:00.65805 |
description | Macros implementing portable CRC calculation algorithms for use in no_std. |
homepage | https://github.com/eldruin/embedded-crc-macros-rs |
repository | https://github.com/eldruin/embedded-crc-macros-rs |
max_upload_size | |
id | 274576 |
size | 62,580 |
This crate provides macros that define portable CRC-8 algorithm implementations
with the parameters directly provided at compile time and without any dependencies.
Intended for use in no_std
.
There is a number of crates implementing CRC algorithms but their intention is to be configurable, generic, use acceleration via SIMD instructions, etc.
This crate provides macros that define portable and non-configurable CRC-8 algorithm implementations with the parameters provided at compile time (optionally using a pre-calculated lookup table) and without any dependencies.
This should allow the compiler to make good optimizations and allows for use of the algorithm in any target architecture with minimal code bloat.
Furthermore, this crate provides macros to generate the lookup tables on build time.
This makes this crate specially well suited for use in no_std
environments.
use embedded_crc_macros::crc8;
crc8!(fn pec, 7 /* x^8+x^2+x+1 */, 0, "SMBus Packet Error Code");
const ADDRESS: u8 = 0x5A;
const REGISTER: u8 = 0x06;
fn main() {
let crc = pec(&[ADDRESS << 1, REGISTER, 0xAB, 0xCD]);
println!("PEC: {}", crc); // prints 95
}
For questions, issues, feature requests, other changes, or just feedback, please file an issue in the github project.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.