#![no_std]

use core::fmt::Write;
use libtock::adc;
use libtock::adc::AdcBuffer;
use libtock::console::Console;
use libtock::result::TockResult;
use libtock::syscalls;

#[libtock::main]
/// Reads a 128 byte sample into a buffer and prints the first value to the console.
async fn main() -> TockResult<()> {
    let mut console = Console::default();
    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::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() };
    }
}
