diff --git a/.idea/Rust-for-Arduboy.iml b/.idea/Rust-for-Arduboy.iml index 54e6913..dc2ba17 100644 --- a/.idea/Rust-for-Arduboy.iml +++ b/.idea/Rust-for-Arduboy.iml @@ -32,6 +32,7 @@ + diff --git a/Cargo.lock b/Cargo.lock index a02629b..aa3a67a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -265,6 +265,13 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "test_game" +version = "0.1.0" +dependencies = [ + "arduboy-rust", +] + [[package]] name = "tone" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 7a28d50..fd3721a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,4 @@ + [workspace] -members = ["arduboy-rust", "Examples/Arduboy-Tutorials/eeprom", "Examples/Arduboy-Tutorials/eeprom_byte", "Examples/Arduboy-Tutorials/progmem", "Examples/Arduboy-Tutorials/tone", "Examples/Arduboy-Tutorials/serial", "Examples/Arduboy-Tutorials/demo2", "Examples/Arduboy-Tutorials/demo3", "Examples/Arduboy-Tutorials/demo4", "Examples/Arduboy-Tutorials/demo5", "Examples/Arduboy-Tutorials/demo6", "Examples/Arduboy-Tutorials/demo7", "Examples/Arduboy-Tutorials/demo9", "Examples/ArduboyFX/fxbasicexample", "Examples/ArduboyFX/fxchompies", "Examples/ArduboyFX/fxdrawballs", "Examples/ArduboyFX/fxdrawframes", "Examples/ArduboyFX/fxhelloworld", "Examples/ArduboyFX/fxloadgamestate", "Examples/drboy", "Examples/ardvoice", "Examples/rustacean", "Examples/snake", "Project/game"] +members = ["arduboy-rust", "Examples/Arduboy-Tutorials/eeprom", "Examples/Arduboy-Tutorials/eeprom_byte", "Examples/Arduboy-Tutorials/progmem", "Examples/Arduboy-Tutorials/tone", "Examples/Arduboy-Tutorials/serial", "Examples/Arduboy-Tutorials/demo2", "Examples/Arduboy-Tutorials/demo3", "Examples/Arduboy-Tutorials/demo4", "Examples/Arduboy-Tutorials/demo5", "Examples/Arduboy-Tutorials/demo6", "Examples/Arduboy-Tutorials/demo7", "Examples/Arduboy-Tutorials/demo9", "Examples/ArduboyFX/fxbasicexample", "Examples/ArduboyFX/fxchompies", "Examples/ArduboyFX/fxdrawballs", "Examples/ArduboyFX/fxdrawframes", "Examples/ArduboyFX/fxhelloworld", "Examples/ArduboyFX/fxloadgamestate", "Examples/drboy", "Examples/ardvoice", "Examples/rustacean", "Examples/snake", "Project/game", "Project/test_game"] resolver = "2" \ No newline at end of file diff --git a/arduboy-rust/src/hardware/buttons.rs b/arduboy-rust/src/hardware/buttons.rs index 393b10b..ec2155a 100644 --- a/arduboy-rust/src/hardware/buttons.rs +++ b/arduboy-rust/src/hardware/buttons.rs @@ -44,30 +44,3 @@ pub const B_BUTTON: ButtonSet = B; pub struct ButtonSet { pub flag_set: u8, } - -impl ButtonSet { - pub fn pressed(&self) -> bool { - unsafe { crate::libraries::arduboy2_library::binding::pressed(self.flag_set) } - } - - pub fn just_pressed(&self) -> bool { - unsafe { crate::libraries::arduboy2_library::binding::just_pressed(self.flag_set) } - } - - pub fn just_released(&self) -> bool { - unsafe { crate::libraries::arduboy2_library::binding::just_released(self.flag_set) } - } - pub fn not_pressed(&self) -> bool { - unsafe { crate::libraries::arduboy2_library::binding::not_pressed(self.flag_set) } - } -} - -impl core::ops::BitOr for ButtonSet { - type Output = Self; - - fn bitor(self, other: Self) -> Self { - Self { - flag_set: self.flag_set | other.flag_set, - } - } -} diff --git a/arduboy-rust/src/lib.rs b/arduboy-rust/src/lib.rs index ed854c3..006f2c4 100644 --- a/arduboy-rust/src/lib.rs +++ b/arduboy-rust/src/lib.rs @@ -27,7 +27,8 @@ extern crate panic_halt; pub mod hardware; -mod libraries; +#[doc(hidden)] +pub mod libraries; pub mod prelude; #[doc(inline)] diff --git a/arduboy-rust/src/libraries/arduboy2_library/arduboy2.rs b/arduboy-rust/src/libraries/arduboy2_library/arduboy2.rs index f588295..e055a89 100644 --- a/arduboy-rust/src/libraries/arduboy2_library/arduboy2.rs +++ b/arduboy-rust/src/libraries/arduboy2_library/arduboy2.rs @@ -665,3 +665,30 @@ impl Arduboy2 { unsafe { arduboy_exit_to_bootloader() } } } + +impl ButtonSet { + pub fn pressed(&self) -> bool { + unsafe { pressed(self.flag_set) } + } + + pub fn just_pressed(&self) -> bool { + unsafe { just_pressed(self.flag_set) } + } + + pub fn just_released(&self) -> bool { + unsafe { just_released(self.flag_set) } + } + pub fn not_pressed(&self) -> bool { + unsafe { not_pressed(self.flag_set) } + } +} + +impl core::ops::BitOr for ButtonSet { + type Output = Self; + + fn bitor(self, other: Self) -> Self { + Self { + flag_set: self.flag_set | other.flag_set, + } + } +} diff --git a/arduboy-rust/src/libraries/arduboy2_library/mod.rs b/arduboy-rust/src/libraries/arduboy2_library/mod.rs index 4738d5d..6be9b79 100644 --- a/arduboy-rust/src/libraries/arduboy2_library/mod.rs +++ b/arduboy-rust/src/libraries/arduboy2_library/mod.rs @@ -4,7 +4,7 @@ #[doc(hidden)] pub mod arduboy2; #[doc(hidden)] -pub mod binding; +mod binding; #[doc(hidden)] pub mod print; diff --git a/arduboy-rust/src/prelude.rs b/arduboy-rust/src/prelude.rs index f8010dc..c9b84ab 100644 --- a/arduboy-rust/src/prelude.rs +++ b/arduboy-rust/src/prelude.rs @@ -9,7 +9,8 @@ pub use crate::hardware::buttons::*; #[doc(inline)] pub use crate::hardware::led::*; pub use crate::heapless::{LinearMap, String, Vec}; -pub use crate::libraries::arduboy2_library::*; +pub use crate::libraries::arduboy2_library::arduboy2::*; +pub use crate::libraries::arduboy2_library::{print, sprites}; pub use crate::libraries::arduboy_tones_library::*; pub use crate::libraries::arduboyfx_library::*; pub use crate::libraries::arduino_system::arduino::*;