#![no_std]
extern crate alloc;
#[macro_use]
extern crate sys;
extern crate playdate_system as system;
use core::ptr::NonNull;
use sys::EventLoopCtrl;
use sys::ffi::*;
use system::System;
use system::event::SystemEventExt as _;
use system::update::UpdateCtrl;
#[no_mangle]
fn event_handler(_api: NonNull<PlaydateAPI>, event: PDSystemEvent, _: u32) -> EventLoopCtrl {
if event != PDSystemEvent::Init {
return EventLoopCtrl::Continue;
}
let mut counter: u32 = 0;
let callback = move |msg| {
counter += 1;
println!("[{counter}/3] serial_message_callback: '{}'", msg);
if counter == 3 {
println!("stop receiving serial messages");
System::Default().set_serial_message_callback(None::<fn(_)>);
}
};
System::Default().set_serial_message_callback(Some(callback));
System::Default().set_update_callback_static(Some(on_update), ());
EventLoopCtrl::Continue
}
fn on_update(_: &mut ()) -> UpdateCtrl {
UpdateCtrl::Continue
}
ll_symbols!();