#![no_std] #![no_main] #![allow(async_fn_in_trait)] use core::array; use core::borrow::BorrowMut; use core::cell::RefCell; use core::fmt::Formatter; use core::marker::PhantomData; use core::mem::MaybeUninit; use core::panic::PanicInfo; use core::str::from_utf8; use core::sync::atomic::{AtomicU8}; use auth::send_badge; use bt_hci::cmd::info; use critical_section::Mutex; use cyw43::JoinOptions; use cyw43_pio::PioSpi; use embassy_futures::join::join; use embassy_futures::yield_now; use embassy_rp::interrupt::typelevel::{Handler, Interrupt, IO_IRQ_BANK0}; use embassy_rp::multicore::{spawn_core1, Stack}; use embassy_rp::pwm::{self}; use embassy_rp::uart::{BufferedInterruptHandler}; use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; use embassy_sync::channel::{Channel}; use fixed::FixedU16; use log::*; //use embassy_rp::i2c::InterruptHandler; use embassy_executor::{InterruptExecutor, Spawner}; use embassy_net::tcp::TcpSocket; use embassy_net::{Config, IpEndpoint, Ipv4Address, StackResources}; use embassy_rp::{bind_interrupts, interrupt}; use embassy_rp::clocks::RoscRng; use embassy_rp::gpio::{AnyPin, Input, InterruptTrigger, Level, Output}; use embassy_rp::peripherals::{DMA_CH0, PIN_22, PIO0, UART1, USB}; use embassy_rp::pio::{InterruptHandler, Pio}; use embassy_rp::usb::Driver; use embassy_time::{Timer}; use embedded_io_async::{Read, ReadReady, Write}; use music::{music_manager, COMMANDS}; use rand::RngCore; use reqwless::response; use scanner::{data_extractor, spawn_poller}; use server::server_task; use static_cell::StaticCell; use defmt_rtt as _; use wiggle::wiggle_manager; pub mod wiggle; pub mod music; pub mod scanner; pub mod auth; pub mod arraymap; pub mod server; bind_interrupts!(pub struct Irqs { PIO0_IRQ_0 => InterruptHandler; USBCTRL_IRQ => embassy_rp::usb::InterruptHandler; UART1_IRQ => BufferedInterruptHandler; });