| #![no_std] |
| |
| use core::fmt::Write; |
| use libtock::adc::AdcBuffer; |
| use libtock::result::TockResult; |
| use libtock::syscalls; |
| use libtock::Drivers; |
| |
| #[libtock::main] |
| /// Reads a 128 byte sample into a buffer and prints the first value to the console. |
| async fn main() -> TockResult<()> { |
| let Drivers { |
| console_driver, |
| adc_driver, |
| .. |
| } = libtock::retrieve_drivers()?; |
| let mut console = console_driver.create_console(); |
| let mut adc_buffer = AdcBuffer::default(); |
| let mut temp_buffer = [0; libtock::adc::BUFFER_SIZE]; |
| |
| let adc_buffer = libtock::adc::Adc::init_buffer(&mut adc_buffer)?; |
| |
| let mut with_callback = adc_driver.with_callback(|_, _| { |
| adc_buffer.read_bytes(&mut temp_buffer[..]); |
| writeln!(console, "First sample in buffer: {}", temp_buffer[0]).unwrap(); |
| }); |
| |
| let adc = with_callback.init()?; |
| |
| loop { |
| adc.sample_continuous_buffered(0, 128)?; |
| unsafe { syscalls::raw::yieldk() }; |
| } |
| } |