Skip to content
This is the development version of the documentation. It may change before the next release. See 0.14.x for the latest release.

ConfigPattern

ConfigPattern is a low-level command that configures the playback parameters of the Pattern bank. The settings are only written; send ActivatePatternBank to activate them.

ConfigPattern {
bank,
config,
size,
loop_behavior,
};
Field Type Description
bank PatternBank Target bank
config SamplingConfig Playback sampling frequency
size usize Number of samples in the bank. 1 for a static Pattern
loop_behavior LoopBehavior Playback loop count (Infinite / Finite)

loop_behavior only takes effect when switching to a bank different from the current one via ActivatePatternBank.

size = 1 (a static Pattern) is valid only with loop_behavior = Infinite. Use size of 2 or more when a finite loop is needed.

use core::num::NonZeroU16;
use autd3_rs::commands::{
ActivatePatternBank, Clear, ConfigPattern, Synchronize, WritePatternBuffer,
};
use autd3_rs::geometry::{Autd3, Geometry, offset};
use autd3_rs::units::{m, mm, s};
use autd3_rs::value::{Intensity, LoopBehavior, PatternBank, SamplingConfig, TransitionMode};
use autd3_rs::Client;
use autd3_rs::udp::TransportOption;
use autd3_rs_pattern::{focus, wavelength};
let geometry = Geometry::new(vec![Autd3::default()]);
let option = TransportOption::default();
let mut client = Client::open(&geometry, &option).await?;
client.send(Clear).await?;
client.send(Synchronize).await?;
let mut phases = geometry.phase_buffer();
focus(
&geometry,
geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm),
wavelength(340.0 * m / s),
&mut phases,
);
let bank = PatternBank::B0;
client
.send(WritePatternBuffer::new(bank, 0, &[phases], Intensity::MAX))
.await?;
client.send(ConfigPattern {
bank,
config: SamplingConfig::new(NonZeroU16::MAX),
size: 1,
loop_behavior: LoopBehavior::Infinite,
}).await?;
client.send(ActivatePatternBank {
bank,
transition_mode: TransitionMode::Immediate,
}).await?;