Macro avr_progmem::progmem
source · macro_rules! progmem { ($(#[$attr:meta])* static progmem $N:ident : $T:ty = $e:expr; $($t:tt)*) => { ... }; ($(#[$attr:meta])* pub static progmem $N:ident : $T:ty = $e:expr; $($t:tt)*) => { ... }; ($(#[$attr:meta])* pub ($($vis:tt)+) static progmem $N:ident : $T:ty = $e:expr; $($t:tt)*) => { ... }; () => { ... }; }
Expand description
Define a static in progmem.
This is a helper macro to simplify the definition of statics that are valid
to be wrapped in the ProgMem struct thus providing a safe way to work
with data in progmem.
Thus this macro essentially takes a user static definition and emits a
definition that is defined to be stored in the progmem section and then is
wrap in the ProgMem wrapper for safe access.
Examples
use avr_progmem::progmem;
progmem!{
/// Static string stored in progmem!
pub static progmem WORDS: [u8; 4] = *b"abcd";
}
let data: [u8; 4] = WORDS.load();
assert_eq!(b"abcd", &data);use avr_progmem::progmem;
progmem!{
/// 4kB string stored in progmem!
pub static progmem WORDS: [u8; 4096] = [b'X'; 4096];
}
let first_bytes: [u8; 16] = WORDS.load_sub_array(0);
assert_eq!([b'X'; 16], first_bytes);