| #![no_std] | |
| use libtock::adc::AdcBuffer; | |
| use libtock::println; | |
| use libtock::result::TockResult; | |
| use libtock::syscalls; | |
| libtock_core::stack_size! {0x800} | |
| #[libtock::main] | |
| /// Reads a 128 byte sample into a buffer and prints the first value to the console. | |
| async fn main() -> TockResult<()> { | |
| let mut drivers = libtock::retrieve_drivers()?; | |
| let adc_driver = drivers.adc.init_driver()?; | |
| drivers.console.create_console(); | |
| let mut adc_buffer = AdcBuffer::default(); | |
| let mut temp_buffer = [0; libtock::adc::BUFFER_SIZE]; | |
| let adc_buffer = adc_driver.init_buffer(&mut adc_buffer)?; | |
| let mut callback = |_, _| { | |
| adc_buffer.read_bytes(&mut temp_buffer[..]); | |
| println!("First sample in buffer: {}", temp_buffer[0]); | |
| }; | |
| let _subscription = adc_driver.subscribe(&mut callback)?; | |
| loop { | |
| adc_driver.sample_continuous_buffered(0, 128)?; | |
| unsafe { syscalls::raw::yieldk() }; | |
| } | |
| } |