diff --git a/Cargo.lock b/Cargo.lock index a83d9d5..636dc8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,12 +9,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] -name = "aho-corasick" -version = "1.1.3" +name = "anstream" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ - "memchr", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", ] [[package]] @@ -52,9 +92,9 @@ dependencies = [ [[package]] name = "bitfield" -version = "0.15.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c821a6e124197eb56d907ccc2188eab1038fb919c914f47976e64dd8dbc855d1" +checksum = "d5acf59e2452f0c4b968b15ce4b9468f57b45f7733b919d68b19fcc39264bfb8" [[package]] name = "bitflags" @@ -86,6 +126,52 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "clap" +version = "4.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + [[package]] name = "convert_case" version = "0.6.0" @@ -95,19 +181,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "core-isa-parser" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ec98e54b735872e54b2335c2e5a5c7fa7d9c3bfd45500f75280f84089a0083" -dependencies = [ - "anyhow", - "enum-as-inner", - "regex", - "strum 0.24.1", - "strum_macros 0.24.3", -] - [[package]] name = "crc32fast" version = "1.4.2" @@ -205,15 +278,6 @@ dependencies = [ "nb 1.1.0", ] -[[package]] -name = "embedded-dma" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "994f7e5b5cb23521c22304927195f236813053eb9c065dd2226a32ba64695446" -dependencies = [ - "stable_deref_trait", -] - [[package]] name = "embedded-graphics" version = "0.8.1" @@ -285,14 +349,14 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.4.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -345,9 +409,9 @@ dependencies = [ [[package]] name = "esp-hal" -version = "0.19.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4f8cb6a9dcf0fd4506a856fbb4a0622b92042978c601a23c840c28f621a59f" +checksum = "64f5393b8f7e7f055455d9f86706ddb675f943c12f12a7b80b8a79c3a94233ff" dependencies = [ "basic-toml", "bitfield", @@ -358,7 +422,6 @@ dependencies = [ "delegate", "document-features", "embedded-can", - "embedded-dma", "embedded-hal 1.0.0", "embedded-hal-nb", "enumset", @@ -374,16 +437,16 @@ dependencies = [ "rand_core", "riscv", "serde", - "strum 0.26.3", + "strum", "void", "xtensa-lx-rt", ] [[package]] name = "esp-hal-procmacros" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9569ccb286c5a0c39292dbaaa0995bbb2a2a9d671ef3ce807b8b5b3d9a589d35" +checksum = "6eac531546027909a355fc9c2449f22c839955fa4b7f1976b64ddd04b2f22f83" dependencies = [ "darling", "document-features", @@ -398,14 +461,16 @@ dependencies = [ [[package]] name = "esp-metadata" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6013420eb303c3087d82c2d2a38944427662b0b07a9ae79e5b1636fc1442e0ba" +checksum = "b471bc61fa817ca4ae41a31d5d453258328b31e5ad82db72b473621d36cc4cb6" dependencies = [ + "anyhow", "basic-toml", + "clap", "lazy_static", "serde", - "strum 0.26.3", + "strum", ] [[package]] @@ -432,9 +497,9 @@ dependencies = [ [[package]] name = "esp32c6" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5824acf92f8536c997e673113ce704c004f77e154fd550dc511b92d61bb34f6" +checksum = "f0c05e230022cf5a8d10e9bcdc4878c0886a3a5701a96d6763cb42562e42ecd7" dependencies = [ "critical-section", "vcell", @@ -533,6 +598,12 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "keypad" version = "0.2.2" @@ -622,9 +693,9 @@ checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" [[package]] name = "minijinja" -version = "1.0.21" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e877d961d4f96ce13615862322df7c0b6d169d40cab71a7ef3f9b9e594451e" +checksum = "1028b628753a7e1a88fc59c9ba4b02ecc3bc0bd3c7af23df667bc28df9b3310e" dependencies = [ "serde", ] @@ -638,6 +709,12 @@ dependencies = [ "adler2", ] +[[package]] +name = "mutex-trait" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4bb1638d419e12f8b1c43d9e639abd0d1424285bdea2f76aa231e233c63cd3a" + [[package]] name = "nb" version = "0.1.3" @@ -818,39 +895,10 @@ dependencies = [ "profont", "rand", "shared", - "strum 0.26.3", + "strum", "weact-studio-epd", ] -[[package]] -name = "regex" -version = "1.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - [[package]] name = "riscv" version = "0.11.1" @@ -919,6 +967,15 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + [[package]] name = "shared" version = "0.1.0" @@ -945,32 +1002,13 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" - [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros 0.26.4", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", + "strum_macros", ] [[package]] @@ -1017,11 +1055,26 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + [[package]] name = "toml_datetime" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -1030,6 +1083,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] @@ -1071,6 +1126,12 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "vcell" version = "0.1.3" @@ -1109,7 +1170,16 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", ] [[package]] @@ -1195,23 +1265,39 @@ dependencies = [ ] [[package]] -name = "xtensa-lx-rt" -version = "0.16.0" +name = "xtensa-lx" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904102108b780c9a5e3275c5f3c63dc348ec43ae5da5237868515498b447d51a" +checksum = "e758f94e1a1f71758f94052a2766dcb12604998eb372b8b2e30576e3ab1ba1e6" dependencies = [ "bare-metal", - "core-isa-parser", + "mutex-trait", +] + +[[package]] +name = "xtensa-lx-rt" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ceb69c1487b78d83531c5d94fb81d0dceef1ccb0affba29f29420b1f72d3ddb" +dependencies = [ + "anyhow", + "bare-metal", + "document-features", + "enum-as-inner", "minijinja", "r0", + "serde", + "strum", + "toml", + "xtensa-lx", "xtensa-lx-rt-proc-macros", ] [[package]] name = "xtensa-lx-rt-proc-macros" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "082cdede098bbec9af15b0e74085e5f3d16f2923597de7aed7b8112003af2da7" +checksum = "11277b1e4cbb7ffe44678c668518b249c843c81df249b8f096701757bc50d7ee" dependencies = [ "darling", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index a11e7a1..767e642 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ display-interface-spi = "0.5.0" embedded-graphics = "0.8.1" embedded-hal-bus = "0.2.0" esp-backtrace = { version = "0.13.0", features = ["esp32c6", "exception-handler", "panic-handler", "println"] } -esp-hal = { version = "0.19.0", features = ["esp32c6", "embedded-hal"] } +esp-hal = { version = "0.20", features = ["esp32c6", "embedded-hal"] } esp-println = { version = "0.10.0", default-features = false, features = ["esp32c6", "log", "auto"] } heapless = "0.8.0" log = { version = "0.4.21" } diff --git a/shared/Cargo.toml b/shared/Cargo.toml index 2d5b8ff..251424d 100644 --- a/shared/Cargo.toml +++ b/shared/Cargo.toml @@ -10,5 +10,5 @@ full-rand = [ 'rand' ] [dependencies] nutype = { version = "0.5.0", default-features = false } -esp-hal = { version = "0.19.0", features = ["esp32c6", "embedded-hal"], optional = true } +esp-hal = { version = "0.20", features = ["esp32c6", "embedded-hal"], optional = true } rand = { version = "0.8.5", features = ["getrandom", "small_rng", "std", "std_rng"], optional = true } diff --git a/src/main.rs b/src/main.rs index c2b80e0..03545d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,8 +15,8 @@ use esp_hal::{ clock::ClockControl, delay::Delay, gpio::{ - Gpio10, Gpio2, Gpio3, Gpio4, Gpio5, Gpio6, Gpio7, Gpio8, Input, Io, Level, Output, Pull, - NO_PIN, + Gpio10, Gpio2, Gpio3, Gpio4, Gpio5, Gpio6, Gpio7, Gpio8, Input, InputPin, Io, Level, + Output, OutputPin, Pull, NO_PIN, }, peripherals::Peripherals, prelude::*, @@ -102,7 +102,7 @@ fn main() -> ! { log::info!("Sleeping for 0.5s..."); delay.delay(500.millis()); - let kbd = Keyboard { + let mut kbd = Keyboard { rows: Rows { gpio2: Input::new(io.pins.gpio2, Pull::Up), gpio3: Input::new(io.pins.gpio3, Pull::Up), @@ -187,45 +187,93 @@ struct Rows<'d> { gpio4: Input<'d, Gpio4>, // gpio5: Input<'d, Gpio5>, // } - -impl<'d> Rows<'d> { - pub fn states(&self) -> [bool; 4] { - [ - self.gpio2.is_low(), - self.gpio3.is_low(), - self.gpio4.is_low(), - self.gpio5.is_low(), - ] - } -} - struct Cols<'d> { gpio6: Output<'d, Gpio6>, // gpio7: Output<'d, Gpio7>, // gpio8: Output<'d, Gpio8>, // gpio10: Output<'d, Gpio10>, // } -impl<'d> Cols<'d> { - pub fn states(&self) -> [bool; 4] { - [ - self.gpio6.is_set_low(), - self.gpio7.is_set_low(), - self.gpio8.is_set_low(), - self.gpio10.is_set_low(), - ] - } -} - struct Keyboard<'d> { rows: Rows<'d>, cols: Cols<'d>, } - impl<'d> Keyboard<'d> { - pub fn pressed(&self) -> Option