#![no_std]
#![no_main]
mod bsp;
use embassy_executor::Spawner;
use embedded_graphics::{
pixelcolor::BinaryColor,
prelude::*,
primitives::{Circle, Line, PrimitiveStyle, Rectangle},
};
use embedded_hal_async::delay::DelayNs;
use oled_async::{prelude::*, Builder};
use {defmt_rtt as _, panic_probe as _};
#[embassy_executor::main]
async fn main(_spawner: Spawner) {
let (di, mut reset, mut delay) = bsp::board::get_board();
type Display = oled_async::displays::sh1107::Sh1107_128_128;
let raw_disp = Builder::new(Display {})
.with_rotation(crate::DisplayRotation::Rotate180)
.connect(di);
let mut display: GraphicsMode<_, _> = raw_disp.into();
display.reset(&mut reset, &mut delay).unwrap();
display.init().await.unwrap();
display.clear();
display.flush().await.unwrap();
Line::new(Point::new(8, 16 + 16), Point::new(8 + 16, 16 + 16))
.into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 1))
.draw(&mut display)
.unwrap();
Line::new(Point::new(8, 16 + 16), Point::new(8 + 8, 16))
.into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 1))
.draw(&mut display)
.unwrap();
Line::new(Point::new(8 + 16, 16 + 16), Point::new(8 + 8, 16))
.into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 1))
.draw(&mut display)
.unwrap();
Rectangle::with_corners(Point::new(48, 16), Point::new(48 + 16, 16 + 16))
.into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 1))
.draw(&mut display)
.unwrap();
Circle::new(Point::new(88, 16), 16)
.into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 1))
.draw(&mut display)
.unwrap();
display.flush().await.unwrap();
loop {
delay.delay_ms(1000).await;
}
}