diff --git a/.cargo/config.toml b/.cargo/config.toml index ff52754..d5e39a5 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,5 @@ [target.xtensa-esp32-none-elf] -runner = "espflash flash --monitor --chip esp32 --log-format defmt" +runner = "espflash flash --monitor --chip esp32s3 --log-format defmt" [env] DEFMT_LOG="info" @@ -9,7 +9,7 @@ rustflags = [ "-C", "link-arg=-nostartfiles", ] -target = "xtensa-esp32-none-elf" +target = "xtensa-esp32s3-none-elf" [unstable] -build-std = ["core"] +build-std = ["core", "alloc"] diff --git a/Cargo.lock b/Cargo.lock index 0a271e5..504fece 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,18 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "allocator-api2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c583acf993cf4245c4acb0a2cc2ab1f9cc097de73411bb6d3647ff6af2b1013d" + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + [[package]] name = "autocfg" version = "1.5.0" @@ -14,6 +26,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "bit_field" version = "0.10.3" @@ -22,22 +40,22 @@ checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" [[package]] name = "bitfield" -version = "0.19.3" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf79f42d21f18b5926a959280215903e659760da994835d27c3a0c5ff4f898f" +checksum = "21ba6517c6b0f2bf08be60e187ab64b038438f22dd755614d8fe4d4098c46419" dependencies = [ "bitfield-macros", ] [[package]] name = "bitfield-macros" -version = "0.19.3" +version = "0.19.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6115af052c7914c0cbb97195e5c72cb61c511527250074f5c041d1048b0d8b16" +checksum = "f48d6ace212fdf1b45fd6b566bb40808415344642b76c3224c07c8df9da81e97" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -48,24 +66,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" - -[[package]] -name = "block-buffer" -version = "0.10.4" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" [[package]] name = "byteorder" @@ -80,13 +89,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "const-default" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "0b396d1f76d455557e1218ec8066ae14bba60b4b36ecd55577ba979f5db7ecaa" [[package]] name = "critical-section" @@ -96,9 +102,9 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", @@ -124,6 +130,16 @@ dependencies = [ "darling_macro 0.21.3", ] +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -135,7 +151,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", ] [[package]] @@ -148,7 +164,20 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", ] [[package]] @@ -159,7 +188,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -170,7 +199,18 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn 2.0.117", ] [[package]] @@ -202,7 +242,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -216,13 +256,13 @@ dependencies = [ [[package]] name = "delegate" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6178a82cf56c836a3ba61a7935cdb1c49bfaa6fa4327cd5bf554a503087de26b" +checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -231,7 +271,6 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", "crypto-common", ] @@ -251,14 +290,19 @@ dependencies = [ "critical-section", "defmt 1.0.1", "embassy-executor", + "embassy-net", "embassy-time", "embedded-graphics", "embedded-hal-bus", "epd-waveshare", + "esp-alloc", "esp-bootloader-esp-idf", "esp-hal", "esp-println", + "esp-radio", "esp-rtos", + "jiff", + "sntpc", "static_cell", ] @@ -301,7 +345,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -328,6 +372,29 @@ dependencies = [ "num-traits", ] +[[package]] +name = "embassy-net" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71f0aa32082b7df00164f485322d6edab59122c9718b363b07ec23424c2c06a0" +dependencies = [ + "document-features", + "embassy-net-driver", + "embassy-sync 0.7.2", + "embassy-time", + "embedded-io-async 0.7.0", + "embedded-nal-async", + "heapless 0.8.0", + "managed", + "smoltcp", +] + +[[package]] +name = "embassy-net-driver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d" + [[package]] name = "embassy-sync" version = "0.6.2" @@ -339,7 +406,7 @@ dependencies = [ "embedded-io-async 0.6.1", "futures-sink", "futures-util", - "heapless", + "heapless 0.8.0", ] [[package]] @@ -354,7 +421,7 @@ dependencies = [ "embedded-io-async 0.6.1", "futures-core", "futures-sink", - "heapless", + "heapless 0.8.0", ] [[package]] @@ -390,7 +457,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80e2ee86063bd028a420a5fb5898c18c87a8898026da1d4c852af2c443d0a454" dependencies = [ "embassy-executor-timer-queue", - "heapless", + "heapless 0.8.0", +] + +[[package]] +name = "embassy-usb-driver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17119855ccc2d1f7470a39756b12068454ae27a3eabb037d940b5c03d9c77b7a" +dependencies = [ + "embedded-io-async 0.6.1", +] + +[[package]] +name = "embassy-usb-synopsys-otg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "288751f8eaa44a5cf2613f13cee0ca8e06e6638cb96e897e6834702c79084b23" +dependencies = [ + "critical-section", + "embassy-sync 0.7.2", + "embassy-usb-driver", ] [[package]] @@ -404,9 +491,9 @@ dependencies = [ [[package]] name = "embedded-graphics" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0649998afacf6d575d126d83e68b78c0ab0e00ca2ac7e9b3db11b4cbe8274ef0" +checksum = "4e8da660bb0c829b34a56a965490597f82a55e767b91f9543be80ce8ccb416fe" dependencies = [ "az", "byteorder", @@ -417,9 +504,9 @@ dependencies = [ [[package]] name = "embedded-graphics-core" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba9ecd261f991856250d2207f6d8376946cd9f412a2165d3b75bc87a0bc7a044" +checksum = "95743bef3ff70fcba3930246c4e6872882bbea0dcc6da2ca860112e0cd4bd09f" dependencies = [ "az", "byteorder", @@ -498,6 +585,25 @@ dependencies = [ "embedded-io 0.7.1", ] +[[package]] +name = "embedded-nal" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56a28be191a992f28f178ec338a0bf02f63d7803244add736d026a471e6ed77" +dependencies = [ + "nb 1.1.0", +] + +[[package]] +name = "embedded-nal-async" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5a1bd585135d302f8f6d7de329310938093da6271b37a6c94b8798795c0c6d" +dependencies = [ + "embedded-io-async 0.7.0", + "embedded-nal", +] + [[package]] name = "embedded-storage" version = "0.3.1" @@ -532,13 +638,14 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "epd-waveshare" version = "0.6.0" -source = "git+https://github.com/ImplFerris/epd-waveshare?branch=1in54_v2_fix#713ee314c6ca3a1fac5c4f2eb1d269ba0d60a89b" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5080903b18a41a89d1dfe07cd5d7f800165ed4dcdf0513b770f83c1e4750150c" dependencies = [ "bit_field", "embedded-graphics-core", @@ -551,6 +658,22 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "esp-alloc" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "641e43d6a60244429117ef2fa7a47182120c7561336ea01f6fb08d634f46bae1" +dependencies = [ + "allocator-api2", + "cfg-if", + "document-features", + "enumset", + "esp-config", + "esp-sync", + "linked_list_allocator", + "rlsf", +] + [[package]] name = "esp-bootloader-esp-idf" version = "0.4.0" @@ -589,7 +712,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54786287c0a61ca0f78cb0c338a39427551d1be229103b4444591796c579e093" dependencies = [ "bitfield", - "bitflags 2.10.0", + "bitflags 2.11.0", "bytemuck", "cfg-if", "critical-section", @@ -600,6 +723,8 @@ dependencies = [ "embassy-embedded-hal", "embassy-futures", "embassy-sync 0.7.2", + "embassy-usb-driver", + "embassy-usb-synopsys-otg", "embedded-can", "embedded-hal 1.0.0", "embedded-hal-async", @@ -614,6 +739,7 @@ dependencies = [ "esp-riscv-rt", "esp-rom-sys", "esp-sync", + "esp-synopsys-usb-otg", "esp32", "esp32c2", "esp32c3", @@ -627,10 +753,8 @@ dependencies = [ "paste", "portable-atomic", "rand_core 0.6.4", - "rand_core 0.9.3", + "rand_core 0.9.5", "riscv", - "sha1", - "sha2", "strum", "ufmt-write", "xtensa-lx", @@ -644,10 +768,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e025a7a7a0affdb4ff913b5c4494aef96ee03d085bf83c27453ae3a71d50da6" dependencies = [ "document-features", + "object", "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "termcolor", ] @@ -657,6 +782,21 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a93e39c8ad8d390d248dc7b9f4b59a873f313bf535218b8e2351356972399e3" +[[package]] +name = "esp-phy" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1facf348e1e251517278fc0f5dc134e95e518251f5796cfbb532ca226a29bf" +dependencies = [ + "cfg-if", + "document-features", + "esp-config", + "esp-hal", + "esp-metadata-generated", + "esp-sync", + "esp-wifi-sys", +] + [[package]] name = "esp-println" version = "0.16.1" @@ -671,6 +811,41 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "esp-radio" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "684c4de2f8907b73c9b891fbda65286a86d34fced4b856f36a7896c211f2f265" +dependencies = [ + "allocator-api2", + "cfg-if", + "document-features", + "embassy-net-driver", + "enumset", + "esp-alloc", + "esp-config", + "esp-hal", + "esp-hal-procmacros", + "esp-metadata-generated", + "esp-phy", + "esp-radio-rtos-driver", + "esp-sync", + "esp-wifi-sys", + "heapless 0.9.2", + "instability", + "num-derive", + "num-traits", + "portable-atomic", + "portable_atomic_enum", + "xtensa-lx-rt", +] + +[[package]] +name = "esp-radio-rtos-driver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "543bc31d1851afd062357e7810c1a9633f282fd3993583499a841ab497cbca6c" + [[package]] name = "esp-riscv-rt" version = "0.13.0" @@ -700,6 +875,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ec711c8d06e79c67b75d01595539e86b0aac209643af98ca87a12250428b3" dependencies = [ + "allocator-api2", "cfg-if", "defmt 1.0.1", "document-features", @@ -711,6 +887,7 @@ dependencies = [ "esp-hal", "esp-hal-procmacros", "esp-metadata-generated", + "esp-radio-rtos-driver", "esp-sync", "portable-atomic", ] @@ -731,6 +908,28 @@ dependencies = [ "xtensa-lx", ] +[[package]] +name = "esp-synopsys-usb-otg" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8938451cb19032f13365328ea66ab38c8d16deecdf322067442297110eb74468" +dependencies = [ + "critical-section", + "embedded-hal 0.2.7", + "ral-registers", + "usb-device", + "vcell", +] + +[[package]] +name = "esp-wifi-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b6544f6f0cb86169d1f93ba2101a8d50358a040c5043676ed86b793e09b12c" +dependencies = [ + "anyhow", +] + [[package]] name = "esp32" version = "0.39.0" @@ -835,32 +1034,31 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-core", "futures-task", "pin-project-lite", - "pin-utils", ] [[package]] @@ -871,9 +1069,9 @@ checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" [[package]] name = "generic-array" -version = "0.14.9" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -890,9 +1088,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heapless" @@ -904,6 +1102,16 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "heapless" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -918,9 +1126,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.12.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown", @@ -937,28 +1145,28 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a" +checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" dependencies = [ - "darling 0.20.11", + "darling 0.23.0", "indoc", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" dependencies = [ "jiff-static", "log", @@ -969,20 +1177,33 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ + "jiff-tzdb", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] +[[package]] +name = "jiff-tzdb" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" + [[package]] name = "libc" -version = "0.2.177" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "linked_list_allocator" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" [[package]] name = "litrs" @@ -992,15 +1213,21 @@ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "managed" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d" [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "micromath" @@ -1023,6 +1250,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1032,6 +1270,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "paste" version = "1.0.15" @@ -1040,36 +1287,51 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] -name = "pin-utils" -version = "0.1.0" +name = "portable-atomic" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] -name = "portable-atomic" -version = "1.11.1" +name = "portable-atomic-util" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +dependencies = [ + "portable-atomic", +] [[package]] -name = "portable-atomic-util" -version = "0.2.4" +name = "portable_atomic_enum" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "30d48f60c43e0120bb2bb48589a16d4bed2f4b911be41e299f2d0fc0e0e20885" dependencies = [ "portable-atomic", + "portable_atomic_enum_macros", +] + +[[package]] +name = "portable_atomic_enum_macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33fa6ec7f2047f572d49317cca19c87195de99c6e5b6ee492da701cfe02b053" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] @@ -1093,27 +1355,33 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] +[[package]] +name = "ral-registers" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46b71a9d9206e8b46714c74255adcaea8b11e0350c1d8456165073c3f75fc81a" + [[package]] name = "rand_core" version = "0.6.4" @@ -1122,9 +1390,9 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" [[package]] name = "riscv" @@ -1147,7 +1415,7 @@ checksum = "7d323d13972c1b104aa036bc692cd08b822c8bbf23d79a27c526095856499799" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1171,13 +1439,13 @@ dependencies = [ [[package]] name = "riscv-rt-macros" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c3138fdd8d128b2d81829842a3e0ce771b3712f7b6318ed1476b0695e7d330" +checksum = "def519ddeeb5e43c2b4fc3952c27b3a86782fc05192f322b2309125cd85b1fc3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1186,6 +1454,19 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1376b15f3ff160e9b1e8ea564ce427f2f6fcf77528cc0a8bf405cb476f9cea7" +[[package]] +name = "rlsf" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1646a59a9734b8b7a0ac51689388a60fe1625d4b956348e9de07591a1478457a" +dependencies = [ + "cfg-if", + "const-default", + "libc", + "rustversion", + "svgbobdoc", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -1194,9 +1475,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "serde" @@ -1225,7 +1506,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1242,25 +1523,26 @@ dependencies = [ ] [[package]] -name = "sha1" -version = "0.10.6" +name = "smoltcp" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "dad095989c1533c1c266d9b1e8d70a1329dd3723c3edac6d03bbd67e7bf6f4bb" dependencies = [ + "bitflags 1.3.2", + "byteorder", "cfg-if", - "cpufeatures", - "digest", + "heapless 0.8.0", + "managed", ] [[package]] -name = "sha2" -version = "0.10.9" +name = "sntpc" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "13d84c42dedf8b01d52b62272684741866938260e74b9e58851f680b2a92854b" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "embassy-net", ] [[package]] @@ -1317,14 +1599,38 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "svgbobdoc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c04b93fc15d79b39c63218f15e3fdffaa4c227830686e3b7c5f41244eb3e50" +dependencies = [ + "base64", + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-width", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] name = "syn" -version = "2.0.110" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -1342,38 +1648,38 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "toml_datetime" -version = "0.7.3" +version = "1.0.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.25.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1" dependencies = [ "indexmap", "toml_datetime", @@ -1383,9 +1689,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" dependencies = [ "winnow", ] @@ -1404,9 +1710,15 @@ checksum = "e87a2ed6b42ec5e28cc3b94c09982969e9227600b2e3dcbc1db927a84c06bd69" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-width" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unsafe-libyaml" @@ -1414,6 +1726,16 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +[[package]] +name = "usb-device" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98816b1accafbb09085168b90f27e93d790b4bfa19d883466b5e53315b5f06a6" +dependencies = [ + "heapless 0.8.0", + "portable-atomic", +] + [[package]] name = "vcell" version = "0.1.3" @@ -1458,9 +1780,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.13" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" dependencies = [ "memchr", ] @@ -1494,5 +1816,5 @@ checksum = "96fb42cd29c42f8744c74276e9f5bee7b06685bbe5b88df891516d72cb320450" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] diff --git a/Cargo.toml b/Cargo.toml index a2489d2..00b4afc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,26 +9,37 @@ name = "e-ink-hello" path = "./src/bin/main.rs" [dependencies] -esp-hal = { version = "1.0.0", features = ["defmt", "esp32", "unstable"] } +esp-hal = { version = "1.0.0", default-features = false, features = ["defmt", "esp32s3", "unstable"] } -esp-rtos = { version = "0.2.0", features = ["defmt", "embassy", "esp32"] } +esp-rtos = { version = "0.2.0", features = ["defmt", "embassy", "esp32s3", "esp-radio"] } defmt = "1.0.1" -esp-bootloader-esp-idf = { version = "0.4.0", features = ["defmt", "esp32"] } +esp-bootloader-esp-idf = { version = "0.4.0", features = ["defmt", "esp32s3"] } embassy-executor = { version = "0.9.1", features = ["defmt"] } embassy-time = { version = "0.5.0", features = ["defmt"] } -esp-println = { version = "0.16.1", features = ["defmt-espflash", "esp32"] } +esp-println = { version = "0.16.1", features = ["defmt-espflash", "esp32s3"] } critical-section = "1.2.0" static_cell = "2.1.1" -epd-waveshare = { features = [ - "graphics", -], git = "https://github.com/ImplFerris/epd-waveshare", branch = "1in54_v2_fix" } +epd-waveshare = { version = "0.6", features = [ "graphics" ] } embedded-hal-bus = { version = "0.3" } embedded-graphics = "0.8.1" +esp-alloc = "0.9" +esp-radio = { version = "0.17.0", features = ["esp32s3", "wifi"] } +embassy-net = { version = "0.8.0", features = [ + "dhcpv4", + "medium-ethernet", + "udp", + "dns", +] } +sntpc = { version = "0.6.0", default-features = false, features = [ + "embassy-socket", +] } +jiff = { version = "0.2.10", default-features = false, features = ["static"] } + [profile.dev] # Rust debug is too slow. diff --git a/src/bin/main.rs b/src/bin/main.rs index 0234419..ccaba80 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -9,6 +9,7 @@ use defmt::info; use embassy_executor::Spawner; use embassy_time::{Delay, Duration, Timer}; +use embedded_graphics::primitives::{Line, Polyline, PrimitiveStyle}; use embedded_hal_bus::spi::ExclusiveDevice; use esp_hal::clock::CpuClock; use esp_hal::gpio::{Input, InputConfig, Level, Output, OutputConfig, Pull}; @@ -22,7 +23,8 @@ use esp_hal::time::Rate; // epd use epd_waveshare::color::Color; -use epd_waveshare::epd1in54_v2::{Display1in54, Epd1in54}; +//use epd_waveshare::epd1in54_v2::{Display1in54, Epd1in54}; +use epd_waveshare::epd4in2::{Display4in2, Epd4in2}; use epd_waveshare::prelude::WaveshareDisplay; // embedded graphics @@ -40,10 +42,13 @@ fn panic(_: &core::panic::PanicInfo) -> ! { // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); + #[esp_rtos::main] async fn main(spawner: Spawner) -> ! { // generator version: 1.0.0 + esp_alloc::heap_allocator!(size: 72 * 1024); + let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max()); let peripherals = esp_hal::init(config); @@ -58,36 +63,158 @@ async fn main(spawner: Spawner) -> ! { let spi_bus = Spi::new( peripherals.SPI2, spi::master::Config::default() - .with_frequency(Rate::from_mhz(4)) + .with_frequency(Rate::from_mhz(20)) .with_mode(spi::Mode::_0), ) .unwrap() //CLK - .with_sck(peripherals.GPIO18) + .with_sck(peripherals.GPIO12) //DIN - .with_mosi(peripherals.GPIO23); + .with_mosi(peripherals.GPIO11) + .with_cs(peripherals.GPIO10); + let cs = Output::new(peripherals.GPIO33, Level::Low, OutputConfig::default()); let mut spi_dev = ExclusiveDevice::new(spi_bus, cs, Delay).unwrap(); // Initialize Display let busy_in = Input::new( - peripherals.GPIO22, + peripherals.GPIO16, InputConfig::default().with_pull(Pull::None), ); - let dc = Output::new(peripherals.GPIO17, Level::Low, OutputConfig::default()); - let reset = Output::new(peripherals.GPIO16, Level::Low, OutputConfig::default()); - let mut display = Display1in54::default(); - let mut epd = Epd1in54::new(&mut spi_dev, busy_in, dc, reset, &mut Delay, None).unwrap(); + let dc = Output::new(peripherals.GPIO15, Level::Low, OutputConfig::default()); + let reset = Output::new(peripherals.GPIO17, Level::Low, OutputConfig::default()); + let mut display = Display4in2::default(); + let mut epd = Epd4in2::new(&mut spi_dev, busy_in, dc, reset, &mut Delay, None).unwrap(); // Clear any existing image epd.clear_frame(&mut spi_dev, &mut Delay).unwrap(); display.clear(Color::White).unwrap(); epd.update_and_display_frame(&mut spi_dev, display.buffer(), &mut Delay) .unwrap(); - Timer::after(Duration::from_secs(5)).await; - draw_text(&mut display, "impl Rust for ESP32", 3, 100); + let prices = [ + 124.51, + 120.29, + 117.14, + 115.63, + 122.15, + 119.4, + 119.33, + 117.12, + 120.92, + 118.14, + 115.3, + 115.01, + 116.5, + 119.49, + 117.0, + 118.34, + 117.67, + 118.73, + 120.93, + 123.66, + 119.8, + 129.0, + 143.99, + 153.06, + 152.2, + 168.99, + 179.1, + 190.23, + 203.74, + 191.36, + 170.92, + 139.56, + 194.19, + 151.4, + 136.77, + 107.87, + 136.41, + 122.21, + 109.38, + 88.01, + 101.21, + 90.13, + 86.53, + 71.17, + 85.31, + 77.93, + 68.83, + 59.17, + 70.74, + 64.99, + 61.01, + 56.54, + 61.21, + 59.19, + 57.9, + 60.1, + 58.27, + 67.62, + 82.3, + 88.11, + 78.83, + 91.99, + 95.32, + 103.15, + 90.64, + 100.02, + 100.98, + 120.69, + 105.61, + 130.77, + 146.59, + 173.23, + 145.81, + 159.0, + 163.46, + 167.46, + 192.98, + 177.61, + 158.25, + 144.14, + 174.9, + 150.14, + 127.52, + 119.0, + 124.13, + 122.5, + 119.78, + 109.57, + 123.1, + 117.9, + 117.59, + 108.05, + 113.65, + 106.89, + 105.25, + 98.26, + ]; + + let mut points = [Point::new(0, 0); 96 /* TODO: same size as prices? or assume+validate/truncate first 96? */]; + let mut foo = [0u8; 2]; + for (i, pr) in prices.iter().enumerate() { + points[i] = Point::new(i as i32 * 4, 300 - *pr as i32); + + if i % 18 == 0 { + Line::new(Point::new(i as i32 *4, 300), Point::new(i as i32 * 4, 290)) + .into_styled(PrimitiveStyle::with_stroke(Color::Black, 5)) + .draw(&mut display) + .expect("draw x-axis tick"); + + // no proper write/format library.. + foo[0] = b'0' + (i / 10) as u8; + foo[1] = b'0' + (i % 10) as u8; + draw_text(&mut display, str::from_utf8(&foo[..]).unwrap(), i as i32 * 4, 280); + } + } + let line_style = PrimitiveStyle::with_stroke(Color::Black, 3); + Polyline::new(&points) + .into_styled(line_style) + .draw(&mut display) + .expect("draw polyline"); + epd.update_and_display_frame(&mut spi_dev, display.buffer(), &mut Delay) .unwrap(); Timer::after(Duration::from_secs(5)).await; @@ -100,7 +227,7 @@ async fn main(spawner: Spawner) -> ! { } } -fn draw_text(display: &mut Display1in54, text: &str, x: i32, y: i32) { +fn draw_text(display: &mut Display4in2, text: &str, x: i32, y: i32) { let text_style = MonoTextStyleBuilder::new() .font(&FONT_10X20) .text_color(Color::Black) @@ -110,3 +237,19 @@ fn draw_text(display: &mut Display1in54, text: &str, x: i32, y: i32) { .draw(display) .unwrap(); } + + +// TODO / wishlist +// +// ## more hardware support/use +// +// * rtc initialization, and/or NTP query, to print times. +// - maybe we can just convert the time steps from the returned data set, and e.g. do x axis ticks on multiples of 3hours from that +// * wifi +// * tls +// * json parser +// => fetch data from https://api.energy-charts.info/price?bzn=DE-LU +// +// +// ## drawing prettier +// * chrono: timestamp -> datetime -> .hours() % 3 == 0, then x-axis tick \ No newline at end of file