converted outside to a lib crate and integrated postcard
This commit is contained in:
parent
a9f835220a
commit
cffa942ac9
8 changed files with 83 additions and 109 deletions
87
outside/Cargo.lock
generated
87
outside/Cargo.lock
generated
|
@ -126,12 +126,6 @@ version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
|
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "base64"
|
|
||||||
version = "0.13.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "base64"
|
name = "base64"
|
||||||
version = "0.21.7"
|
version = "0.21.7"
|
||||||
|
@ -250,6 +244,12 @@ dependencies = [
|
||||||
"inout",
|
"inout",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cobs"
|
||||||
|
version = "0.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "codespan-reporting"
|
name = "codespan-reporting"
|
||||||
version = "0.11.1"
|
version = "0.11.1"
|
||||||
|
@ -260,12 +260,6 @@ dependencies = [
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "const-default"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0b396d1f76d455557e1218ec8066ae14bba60b4b36ecd55577ba979f5db7ecaa"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "const-oid"
|
name = "const-oid"
|
||||||
version = "0.9.6"
|
version = "0.9.6"
|
||||||
|
@ -813,18 +807,6 @@ dependencies = [
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "embedded-alloc"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8f2de9133f68db0d4627ad69db767726c99ff8585272716708227008d3f1bddd"
|
|
||||||
dependencies = [
|
|
||||||
"const-default",
|
|
||||||
"critical-section",
|
|
||||||
"linked_list_allocator",
|
|
||||||
"rlsf",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "embedded-graphics"
|
name = "embedded-graphics"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -1300,6 +1282,7 @@ dependencies = [
|
||||||
"atomic-polyfill",
|
"atomic-polyfill",
|
||||||
"hash32 0.2.1",
|
"hash32 0.2.1",
|
||||||
"rustc_version 0.4.1",
|
"rustc_version 0.4.1",
|
||||||
|
"serde",
|
||||||
"spin",
|
"spin",
|
||||||
"stable_deref_trait",
|
"stable_deref_trait",
|
||||||
]
|
]
|
||||||
|
@ -1449,12 +1432,6 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "linked_list_allocator"
|
|
||||||
version = "0.10.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "litrs"
|
name = "litrs"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
|
@ -1597,7 +1574,6 @@ dependencies = [
|
||||||
"embassy-time",
|
"embassy-time",
|
||||||
"embassy-usb",
|
"embassy-usb",
|
||||||
"embassy-usb-logger",
|
"embassy-usb-logger",
|
||||||
"embedded-alloc",
|
|
||||||
"embedded-graphics",
|
"embedded-graphics",
|
||||||
"embedded-hal 1.0.0",
|
"embedded-hal 1.0.0",
|
||||||
"embedded-hal-async",
|
"embedded-hal-async",
|
||||||
|
@ -1615,6 +1591,7 @@ dependencies = [
|
||||||
"pio",
|
"pio",
|
||||||
"pio-proc",
|
"pio-proc",
|
||||||
"portable-atomic",
|
"portable-atomic",
|
||||||
|
"postcard",
|
||||||
"rand",
|
"rand",
|
||||||
"reqwless",
|
"reqwless",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -1622,7 +1599,6 @@ dependencies = [
|
||||||
"smart-leds",
|
"smart-leds",
|
||||||
"st7789",
|
"st7789",
|
||||||
"static_cell",
|
"static_cell",
|
||||||
"talc",
|
|
||||||
"usbd-hid",
|
"usbd-hid",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1767,6 +1743,17 @@ dependencies = [
|
||||||
"critical-section",
|
"critical-section",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "postcard"
|
||||||
|
version = "1.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
|
||||||
|
dependencies = [
|
||||||
|
"cobs",
|
||||||
|
"heapless 0.7.17",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ppv-lite86"
|
name = "ppv-lite86"
|
||||||
version = "0.2.20"
|
version = "0.2.20"
|
||||||
|
@ -1919,7 +1906,7 @@ version = "0.12.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "66584b58c3b0cd8cfea750408a932fe86df79ee05ccc87ee745a8e6be4a1abe0"
|
checksum = "66584b58c3b0cd8cfea750408a932fe86df79ee05ccc87ee745a8e6be4a1abe0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.7",
|
"base64",
|
||||||
"buffered-io",
|
"buffered-io",
|
||||||
"defmt",
|
"defmt",
|
||||||
"embedded-io",
|
"embedded-io",
|
||||||
|
@ -1943,18 +1930,6 @@ dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rlsf"
|
|
||||||
version = "0.2.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "222fb240c3286247ecdee6fa5341e7cdad0ffdf8e7e401d9937f2d58482a20bf"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"const-default",
|
|
||||||
"libc",
|
|
||||||
"svgbobdoc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rp-pac"
|
name = "rp-pac"
|
||||||
version = "6.0.0"
|
version = "6.0.0"
|
||||||
|
@ -2206,19 +2181,6 @@ version = "2.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "svgbobdoc"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f2c04b93fc15d79b39c63218f15e3fdffaa4c227830686e3b7c5f41244eb3e50"
|
|
||||||
dependencies = [
|
|
||||||
"base64 0.13.1",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 1.0.109",
|
|
||||||
"unicode-width",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.109"
|
version = "1.0.109"
|
||||||
|
@ -2241,15 +2203,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "talc"
|
|
||||||
version = "4.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3fcad3be1cfe36eb7d716a04791eba36a197da9d9b6ea1e28e64ac569da3701d"
|
|
||||||
dependencies = [
|
|
||||||
"lock_api",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "term"
|
name = "term"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
|
|
|
@ -61,8 +61,7 @@ embedded-sdmmc = "0.7.0"
|
||||||
bt-hci = { version = "0.1.0", default-features = false, features = ["defmt"] }
|
bt-hci = { version = "0.1.0", default-features = false, features = ["defmt"] }
|
||||||
hex = { version = "0.4.3", default-features=false}
|
hex = { version = "0.4.3", default-features=false}
|
||||||
itoa = "1.0.14"
|
itoa = "1.0.14"
|
||||||
embedded-alloc = "0.6.0"
|
postcard = "1.0.0"
|
||||||
talc = "4.4.2"
|
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
debug = 2
|
debug = 2
|
||||||
|
|
|
@ -30,7 +30,7 @@ impl Authorized for Name {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
pub(crate) async fn send_badge(channel: Receiver<'static,CriticalSectionRawMutex,u64,1>,stack: embassy_net::Stack<'static>) -> ! {
|
pub async fn send_badge(channel: Receiver<'static,CriticalSectionRawMutex,u64,1>,stack: embassy_net::Stack<'static>) -> ! {
|
||||||
let mut rx_buffer = [0; 4096];
|
let mut rx_buffer = [0; 4096];
|
||||||
let mut tx_buffer = [0; 4096];
|
let mut tx_buffer = [0; 4096];
|
||||||
loop {
|
loop {
|
||||||
|
|
|
@ -15,7 +15,7 @@ use core::panic::PanicInfo;
|
||||||
use core::str::from_utf8;
|
use core::str::from_utf8;
|
||||||
use core::sync::atomic::{AtomicU8};
|
use core::sync::atomic::{AtomicU8};
|
||||||
|
|
||||||
use auth::send_badge;
|
use outside::auth::send_badge;
|
||||||
use bt_hci::cmd::info;
|
use bt_hci::cmd::info;
|
||||||
use critical_section::Mutex;
|
use critical_section::Mutex;
|
||||||
use cyw43::JoinOptions;
|
use cyw43::JoinOptions;
|
||||||
|
@ -42,35 +42,15 @@ use embassy_rp::pio::{InterruptHandler, Pio};
|
||||||
use embassy_rp::usb::Driver;
|
use embassy_rp::usb::Driver;
|
||||||
use embassy_time::{Timer};
|
use embassy_time::{Timer};
|
||||||
use embedded_io_async::{Read, ReadReady, Write};
|
use embedded_io_async::{Read, ReadReady, Write};
|
||||||
use music::{music_manager, COMMANDS};
|
use outside::music::{self, music_manager, COMMANDS};
|
||||||
use rand::RngCore;
|
use rand::RngCore;
|
||||||
use reqwless::response;
|
use reqwless::response;
|
||||||
use scanner::{data_extractor, spawn_poller};
|
use outside::scanner::{data_extractor, spawn_poller, CHANNEL};
|
||||||
use server::server_task;
|
use outside::server::server_task;
|
||||||
use static_cell::StaticCell;
|
use static_cell::StaticCell;
|
||||||
use defmt_rtt as _;
|
use defmt_rtt as _;
|
||||||
use wiggle::wiggle_manager;
|
use outside::wiggle::wiggle_manager;
|
||||||
|
use outside::Irqs;
|
||||||
mod wiggle;
|
|
||||||
mod music;
|
|
||||||
mod scanner;
|
|
||||||
mod auth;
|
|
||||||
mod arraymap;
|
|
||||||
mod server;
|
|
||||||
|
|
||||||
bind_interrupts!(struct Irqs {
|
|
||||||
PIO0_IRQ_0 => InterruptHandler<PIO0>;
|
|
||||||
USBCTRL_IRQ => embassy_rp::usb::InterruptHandler<USB>;
|
|
||||||
UART1_IRQ => BufferedInterruptHandler<UART1>;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
static READ_CARD: Mutex<RefCell<u64>> =
|
|
||||||
Mutex::new(RefCell::new(0));
|
|
||||||
static BIT: AtomicU8 = AtomicU8::new(0);
|
|
||||||
|
|
||||||
static CHANNEL: Channel<CriticalSectionRawMutex, u64, 1> = Channel::new();
|
|
||||||
static WAGS: AtomicU8 = AtomicU8::new(0);
|
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
async fn logger_task(driver: Driver<'static, USB>) {
|
async fn logger_task(driver: Driver<'static, USB>) {
|
||||||
|
|
|
@ -6,10 +6,13 @@ use embassy_time::Timer;
|
||||||
use embedded_io_async::Read;
|
use embedded_io_async::Read;
|
||||||
use embedded_io_async::Write;
|
use embedded_io_async::Write;
|
||||||
use rand::RngCore;
|
use rand::RngCore;
|
||||||
|
use serde::Deserialize;
|
||||||
|
use serde::Serialize;
|
||||||
|
|
||||||
use crate::server::NAMES;
|
use crate::server::NAMES;
|
||||||
|
use crate::wiggle::WAGS;
|
||||||
|
use crate::Irqs;
|
||||||
|
|
||||||
use super::WAGS;
|
|
||||||
|
|
||||||
use embassy_rp::uart::BufferedUart;
|
use embassy_rp::uart::BufferedUart;
|
||||||
|
|
||||||
|
@ -17,14 +20,13 @@ use embassy_rp::peripherals::PIN_21;
|
||||||
|
|
||||||
use embassy_rp::peripherals::PIN_20;
|
use embassy_rp::peripherals::PIN_20;
|
||||||
|
|
||||||
use super::Irqs;
|
|
||||||
|
|
||||||
use embassy_rp::peripherals::UART1;
|
use embassy_rp::peripherals::UART1;
|
||||||
use log::*;
|
use log::*;
|
||||||
|
|
||||||
pub static COMMANDS: Channel<CriticalSectionRawMutex, MusicCommand, 3> = Channel::new();
|
pub static COMMANDS: Channel<CriticalSectionRawMutex, MusicCommand, 3> = Channel::new();
|
||||||
|
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy, Serialize, Deserialize)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
pub enum Name {
|
pub enum Name {
|
||||||
Andy,
|
Andy,
|
||||||
|
@ -107,7 +109,7 @@ pub enum MusicCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
pub(crate) async fn music_manager(uart: UART1, irqs: Irqs, txp: PIN_20, rxp: PIN_21) -> ! {
|
pub async fn music_manager(uart: UART1, irqs: Irqs, txp: PIN_20, rxp: PIN_21) -> ! {
|
||||||
let mut config = uart::Config::default();
|
let mut config = uart::Config::default();
|
||||||
config.baudrate = 115200;
|
config.baudrate = 115200;
|
||||||
let mut rx = [0; 2048];
|
let mut rx = [0; 2048];
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
|
|
||||||
|
use core::cell::RefCell;
|
||||||
use core::sync::atomic::AtomicBool;
|
use core::sync::atomic::AtomicBool;
|
||||||
|
|
||||||
use embassy_rp::gpio::Input;
|
use embassy_rp::gpio::Input;
|
||||||
|
@ -7,20 +8,24 @@ use embassy_rp::multicore::Stack;
|
||||||
use embassy_rp::peripherals::CORE1;
|
use embassy_rp::peripherals::CORE1;
|
||||||
use embassy_rp::peripherals::PIN_16;
|
use embassy_rp::peripherals::PIN_16;
|
||||||
use embassy_rp::peripherals::PIN_17;
|
use embassy_rp::peripherals::PIN_17;
|
||||||
|
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
|
||||||
|
use embassy_sync::channel::Channel;
|
||||||
use embassy_time::Timer;
|
use embassy_time::Timer;
|
||||||
use log::info;
|
use log::info;
|
||||||
|
use critical_section::Mutex;
|
||||||
|
use core::sync::atomic::{AtomicU8};
|
||||||
|
|
||||||
use super::CHANNEL;
|
pub static READ_CARD: Mutex<RefCell<u64>> =
|
||||||
|
Mutex::new(RefCell::new(0));
|
||||||
|
static BIT: AtomicU8 = AtomicU8::new(0);
|
||||||
|
|
||||||
use super::BIT;
|
pub static CHANNEL: Channel<CriticalSectionRawMutex, u64, 1> = Channel::new();
|
||||||
|
|
||||||
use super::READ_CARD;
|
|
||||||
|
|
||||||
/// disable scanner when doing emf heavy operations
|
/// disable scanner when doing emf heavy operations
|
||||||
pub static LOCKOUT: AtomicBool = AtomicBool::new(false);
|
pub static LOCKOUT: AtomicBool = AtomicBool::new(false);
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
pub(crate) async fn data_extractor() -> ! {
|
pub async fn data_extractor() -> ! {
|
||||||
let mut last_bit = 0;
|
let mut last_bit = 0;
|
||||||
loop {
|
loop {
|
||||||
Timer::after_millis(75).await;
|
Timer::after_millis(75).await;
|
||||||
|
|
|
@ -4,12 +4,22 @@ use embassy_net::tcp::TcpSocket;
|
||||||
use embassy_sync::{blocking_mutex::raw::CriticalSectionRawMutex, mutex::Mutex};
|
use embassy_sync::{blocking_mutex::raw::CriticalSectionRawMutex, mutex::Mutex};
|
||||||
use embedded_io_async::Write;
|
use embedded_io_async::Write;
|
||||||
use log::*;
|
use log::*;
|
||||||
|
use postcard::from_bytes;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{arraymap::ArrayMap, music::Name, READ_CARD};
|
use crate::{arraymap::ArrayMap, music::{Name, COMMANDS}, scanner::READ_CARD};
|
||||||
|
|
||||||
pub static NAMES: Mutex<CriticalSectionRawMutex, RefCell<ArrayMap<64, u64, Name>>> =
|
pub static NAMES: Mutex<CriticalSectionRawMutex, RefCell<ArrayMap<64, u64, Name>>> =
|
||||||
Mutex::new(RefCell::new(ArrayMap::new()));
|
Mutex::new(RefCell::new(ArrayMap::new()));
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
pub enum Request {
|
||||||
|
RecentBadge,
|
||||||
|
SetRecentBadge(Name),
|
||||||
|
SetVolume(u8),
|
||||||
|
}
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
pub async fn server_task(stack: embassy_net::Stack<'static>) {
|
pub async fn server_task(stack: embassy_net::Stack<'static>) {
|
||||||
let mut rx_buffer = [0; 4096];
|
let mut rx_buffer = [0; 4096];
|
||||||
|
@ -39,9 +49,31 @@ pub async fn server_task(stack: embassy_net::Stack<'static>) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
match from_bytes::<Request>(&buf[..n]) {
|
||||||
|
Ok(Request::RecentBadge) => {
|
||||||
|
let card = critical_section::with(|cs| {
|
||||||
|
READ_CARD.borrow(cs).clone().into_inner()
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.write_all(itoa::Buffer::new().format(card).as_bytes()).await.unwrap();
|
||||||
|
},
|
||||||
|
Ok(Request::SetRecentBadge(name)) => {
|
||||||
|
let card = critical_section::with(|cs| {
|
||||||
|
READ_CARD.borrow(cs).clone().into_inner()
|
||||||
|
});
|
||||||
|
|
||||||
|
NAMES.lock().await.borrow_mut().insert(card, name);
|
||||||
|
}
|
||||||
|
Ok(Request::SetVolume(vol)) => {
|
||||||
|
COMMANDS.send(crate::music::MusicCommand::SetVolume(vol)).await;
|
||||||
|
}
|
||||||
|
Err(e) => { info!("parse error: {e}") }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
info!("rxd {}", from_utf8(&buf[..n]).unwrap());
|
info!("rxd {}", from_utf8(&buf[..n]).unwrap());
|
||||||
|
|
||||||
let mut segs = buf[..n].trim_ascii().split(|c| *c == ' ' as u8);
|
/*let mut segs = buf[..n].trim_ascii().split(|c| *c == ' ' as u8);
|
||||||
|
|
||||||
match char::from_u32(segs.next().unwrap()[0] as u32).unwrap() {
|
match char::from_u32(segs.next().unwrap()[0] as u32).unwrap() {
|
||||||
'B' => {
|
'B' => {
|
||||||
|
@ -62,6 +94,7 @@ pub async fn server_task(stack: embassy_net::Stack<'static>) {
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
use core::sync::atomic::AtomicU8;
|
||||||
|
|
||||||
use embassy_rp::clocks::RoscRng;
|
use embassy_rp::clocks::RoscRng;
|
||||||
|
|
||||||
use embassy_rp::pwm;
|
use embassy_rp::pwm;
|
||||||
|
@ -6,7 +8,7 @@ use rand::RngCore;
|
||||||
|
|
||||||
use crate::scanner::LOCKOUT;
|
use crate::scanner::LOCKOUT;
|
||||||
|
|
||||||
use super::WAGS;
|
pub static WAGS: AtomicU8 = AtomicU8::new(0);
|
||||||
|
|
||||||
use embassy_rp::pwm::Pwm;
|
use embassy_rp::pwm::Pwm;
|
||||||
|
|
||||||
|
@ -17,7 +19,7 @@ use embassy_rp::peripherals::PIN_26;
|
||||||
use embassy_rp::peripherals::PWM_SLICE5;
|
use embassy_rp::peripherals::PWM_SLICE5;
|
||||||
|
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
pub(crate) async fn wiggle_manager(pwm: PWM_SLICE5, head: PIN_26, tail: PIN_27) -> ! {
|
pub async fn wiggle_manager(pwm: PWM_SLICE5, head: PIN_26, tail: PIN_27) -> ! {
|
||||||
let mut c: pwm::Config = Default::default();
|
let mut c: pwm::Config = Default::default();
|
||||||
c.divider = 40.into();
|
c.divider = 40.into();
|
||||||
c.top = 62_500; // 20ms
|
c.top = 62_500; // 20ms
|
||||||
|
|
Loading…
Reference in a new issue