autd3-cpu-wire 0.9.0

Shared wire-protocol contract (command opcodes, error codes, frame layout) for the AUTD3 CPU firmware and its clients.
Documentation
use crate::frame::PAYLOAD_BYTES;
use crate::params::{EMISSION_MAX_INDICES, NUM_TRANSDUCERS};
use crate::payload::{UpdateChunkPayload, WriteModPayload, WritePatternPayload};

pub use crate::params::{EMISSION_SLOT_WORDS, FOCUS_WORDS, MOD_BUFFER_SAMPLES, PWE_TABLE_SIZE};

pub const BUFFER_SIZE_MIN: usize = 2;

pub const EMISSION_RAM_WORDS: usize = EMISSION_SLOT_WORDS * EMISSION_MAX_INDICES as usize;
pub const MAX_FOCI_TOTAL: usize = EMISSION_RAM_WORDS / FOCUS_WORDS;

pub const OUTPUT_MASK_WORDS: usize = NUM_TRANSDUCERS.div_ceil(16);
pub const GPIO_OUT_NUM: usize = 4;

pub const MOD_WRITE_MAX_DATA_LEN: usize = PAYLOAD_BYTES - core::mem::size_of::<WriteModPayload>();
pub const PATTERN_WRITE_MAX_DATA_LEN: usize =
    PAYLOAD_BYTES - core::mem::size_of::<WritePatternPayload>();
pub const MAX_FOCI_PER_FRAME: usize = PATTERN_WRITE_MAX_DATA_LEN / (FOCUS_WORDS * 2);
pub const UPDATE_CHUNK_MAX_DATA_LEN: usize =
    PAYLOAD_BYTES - core::mem::size_of::<UpdateChunkPayload>();