10 Commits

Author SHA1 Message Date
23d1e8c726 chore(deps): update rust crate embassy-executor to 0.10.0
Some checks failed
Continuous Integration / Rust Checks (map[args:--all -- --check command:fmt]) (pull_request) Waiting to run
Continuous Integration / Rust Checks (map[args:--all-features --workspace -- -D warnings command:clippy]) (pull_request) Waiting to run
Continuous Integration / Rust Checks (map[args:--release command:build]) (pull_request) Waiting to run
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2026-03-23 00:34:56 +00:00
a56b9c6af3 doc: add new schema
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-19 21:14:20 +01:00
437f1db1c1 feat: additional documentation
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-18 23:30:00 +01:00
5c73b3a6fc feat: revert big buffer to smaller buffers
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-18 23:10:37 +01:00
2acfe93a47 feat: reduce some buffers size 2026-03-18 23:05:11 +01:00
d72ac39e6f feat: increase some buffers size
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-18 22:59:57 +01:00
cb1556b655 Merge branch 'master' of https://gitea.communiquons.org/pierre/MatrixThermalPrinter
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-18 22:50:05 +01:00
e4a5a84481 feat: add certificate check 2026-03-18 22:49:50 +01:00
62e7a51e39 Merge pull request 'Configure Renovate' (#1) from renovate/configure into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #1
2026-03-18 21:06:20 +00:00
7d3a669021 Add renovate.json
Some checks failed
Continuous Integration / Rust Checks (map[args:--all -- --check command:fmt]) (pull_request) Has been cancelled
Continuous Integration / Rust Checks (map[args:--all-features --workspace -- -D warnings command:clippy]) (pull_request) Has been cancelled
Continuous Integration / Rust Checks (map[args:--release command:build]) (pull_request) Has been cancelled
2026-01-22 00:28:02 +00:00
8 changed files with 690 additions and 21 deletions

2
.gitignore vendored
View File

@@ -24,3 +24,5 @@ target/
# Ignore .DS_Store file in mac # Ignore .DS_Store file in mac
**/.DS_Store **/.DS_Store
*.bkp

494
Cargo.lock generated
View File

@@ -37,6 +37,15 @@ dependencies = [
"subtle", "subtle",
] ]
[[package]]
name = "aho-corasick"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "allocator-api2" name = "allocator-api2"
version = "0.2.21" version = "0.2.21"
@@ -96,6 +105,12 @@ version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "base64ct"
version = "1.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
[[package]] [[package]]
name = "bitfield" name = "bitfield"
version = "0.19.4" version = "0.19.4"
@@ -149,6 +164,16 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "cc"
version = "1.2.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423"
dependencies = [
"find-msvc-tools",
"shlex",
]
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.4" version = "1.0.4"
@@ -183,6 +208,16 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
[[package]]
name = "cordyceps"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a"
dependencies = [
"loom",
"tracing",
]
[[package]] [[package]]
name = "cpufeatures" name = "cpufeatures"
version = "0.2.17" version = "0.2.17"
@@ -229,6 +264,32 @@ dependencies = [
"cipher", "cipher",
] ]
[[package]]
name = "curve25519-dalek"
version = "4.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
dependencies = [
"cfg-if",
"cpufeatures",
"curve25519-dalek-derive",
"digest",
"fiat-crypto",
"rustc_version",
"subtle",
]
[[package]]
name = "curve25519-dalek-derive"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.114",
]
[[package]] [[package]]
name = "darling" name = "darling"
version = "0.20.11" version = "0.20.11"
@@ -436,6 +497,27 @@ dependencies = [
"signature", "signature",
] ]
[[package]]
name = "ed25519"
version = "2.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
dependencies = [
"signature",
]
[[package]]
name = "ed25519-dalek"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9"
dependencies = [
"curve25519-dalek",
"ed25519",
"sha2",
"subtle",
]
[[package]] [[package]]
name = "edge-http" name = "edge-http"
version = "0.7.0" version = "0.7.0"
@@ -529,7 +611,20 @@ checksum = "06070468370195e0e86f241c8e5004356d696590a678d47d6676795b2e439c6b"
dependencies = [ dependencies = [
"critical-section", "critical-section",
"document-features", "document-features",
"embassy-executor-macros", "embassy-executor-macros 0.7.0",
"embassy-executor-timer-queue",
]
[[package]]
name = "embassy-executor"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d0d3b15c9d7dc4fec1d8cb77112472fb008b3b28c51ad23838d83587a6d2f1e"
dependencies = [
"cordyceps",
"critical-section",
"document-features",
"embassy-executor-macros 0.8.0",
"embassy-executor-timer-queue", "embassy-executor-timer-queue",
] ]
@@ -545,6 +640,18 @@ dependencies = [
"syn 2.0.114", "syn 2.0.114",
] ]
[[package]]
name = "embassy-executor-macros"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d11a246f53de5f97a387f40ac24726817cd0b6f833e7603baac784f29d6ff276"
dependencies = [
"darling 0.20.11",
"proc-macro2",
"quote",
"syn 2.0.114",
]
[[package]] [[package]]
name = "embassy-executor-timer-queue" name = "embassy-executor-timer-queue"
version = "0.1.0" version = "0.1.0"
@@ -808,13 +915,14 @@ dependencies = [
[[package]] [[package]]
name = "embedded-tls" name = "embedded-tls"
version = "0.19.0" version = "0.19.0"
source = "git+https://github.com/drogue-iot/embedded-tls?rev=3b9a0951a256ce84c5dc6f4827a0d05466ab5e63#3b9a0951a256ce84c5dc6f4827a0d05466ab5e63" source = "git+https://github.com/drogue-iot/embedded-tls?rev=bd13e11ce9c7605baf7018ef2b0f353ae6693016#bd13e11ce9c7605baf7018ef2b0f353ae6693016"
dependencies = [ dependencies = [
"aes-gcm", "aes-gcm",
"const-oid 0.10.2", "const-oid 0.10.2",
"der 0.8.0", "der 0.8.0",
"digest", "digest",
"ecdsa", "ecdsa",
"ed25519-dalek",
"embedded-io 0.7.1", "embedded-io 0.7.1",
"embedded-io-async 0.7.0", "embedded-io-async 0.7.0",
"generic-array 0.14.7", "generic-array 0.14.7",
@@ -822,9 +930,11 @@ dependencies = [
"heapless 0.9.2", "heapless 0.9.2",
"hkdf", "hkdf",
"hmac", "hmac",
"log",
"p256", "p256",
"portable-atomic", "portable-atomic",
"rand_core 0.6.4", "rand_core 0.6.4",
"rsa",
"sha2", "sha2",
"signature", "signature",
"typenum", "typenum",
@@ -874,7 +984,7 @@ dependencies = [
"encoding_rs", "encoding_rs",
"hashbrown", "hashbrown",
"log", "log",
"spin", "spin 0.10.0",
] ]
[[package]] [[package]]
@@ -1061,7 +1171,7 @@ checksum = "162ec711c8d06e79c67b75d01595539e86b0aac209643af98ca87a12250428b3"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"document-features", "document-features",
"embassy-executor", "embassy-executor 0.9.1",
"embassy-sync 0.7.2", "embassy-sync 0.7.2",
"embassy-time-driver", "embassy-time-driver",
"embassy-time-queue-utils", "embassy-time-queue-utils",
@@ -1197,6 +1307,18 @@ dependencies = [
"subtle", "subtle",
] ]
[[package]]
name = "fiat-crypto"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
[[package]]
name = "find-msvc-tools"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
[[package]] [[package]]
name = "fnv" name = "fnv"
version = "1.0.7" version = "1.0.7"
@@ -1263,6 +1385,21 @@ version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a"
[[package]]
name = "generator"
version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9"
dependencies = [
"cc",
"cfg-if",
"libc",
"log",
"rustversion",
"windows-link",
"windows-result",
]
[[package]] [[package]]
name = "generic-array" name = "generic-array"
version = "0.12.4" version = "0.12.4"
@@ -1596,12 +1733,27 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2" checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2"
[[package]]
name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
dependencies = [
"spin 0.9.8",
]
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.180" version = "0.2.180"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
[[package]]
name = "libm"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]] [[package]]
name = "linked_list_allocator" name = "linked_list_allocator"
version = "0.10.5" version = "0.10.5"
@@ -1635,12 +1787,34 @@ version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
[[package]]
name = "loom"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
dependencies = [
"cfg-if",
"generator",
"scoped-tls",
"tracing",
"tracing-subscriber",
]
[[package]] [[package]]
name = "managed" name = "managed"
version = "0.8.0" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d" checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d"
[[package]]
name = "matchers"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
dependencies = [
"regex-automata",
]
[[package]] [[package]]
name = "matrix-thermal-printer" name = "matrix-thermal-printer"
version = "0.1.0" version = "0.1.0"
@@ -1654,7 +1828,7 @@ dependencies = [
"edge-nal-embassy", "edge-nal-embassy",
"edge-ws", "edge-ws",
"embassy-embedded-hal", "embassy-embedded-hal",
"embassy-executor", "embassy-executor 0.10.0",
"embassy-futures", "embassy-futures",
"embassy-net", "embassy-net",
"embassy-net-wiznet", "embassy-net-wiznet",
@@ -1678,8 +1852,10 @@ dependencies = [
"jiff", "jiff",
"log", "log",
"num-traits", "num-traits",
"pem",
"percent-encoding", "percent-encoding",
"rand", "rand 0.9.2",
"rand_core 0.6.4",
"serde", "serde",
"serde_json", "serde_json",
"sntpc", "sntpc",
@@ -1711,12 +1887,57 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d"
[[package]]
name = "nu-ansi-term"
version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
"windows-sys",
]
[[package]]
name = "num-bigint-dig"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
dependencies = [
"lazy_static",
"libm",
"num-integer",
"num-iter",
"num-traits",
"rand 0.8.5",
"smallvec",
"zeroize",
]
[[package]] [[package]]
name = "num-conv" name = "num-conv"
version = "0.2.0" 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 = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
[[package]]
name = "num-integer"
version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
dependencies = [
"num-traits",
]
[[package]]
name = "num-iter"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]] [[package]]
name = "num-traits" name = "num-traits"
version = "0.2.19" version = "0.2.19"
@@ -1724,6 +1945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"libm",
] ]
[[package]] [[package]]
@@ -1735,6 +1957,12 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "once_cell"
version = "1.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]] [[package]]
name = "opaque-debug" name = "opaque-debug"
version = "0.3.1" version = "0.3.1"
@@ -1759,6 +1987,15 @@ version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "pem"
version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be"
dependencies = [
"base64 0.22.1",
]
[[package]] [[package]]
name = "percent-encoding" name = "percent-encoding"
version = "2.3.2" version = "2.3.2"
@@ -1777,6 +2014,27 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkcs1"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
dependencies = [
"der 0.7.10",
"pkcs8",
"spki",
]
[[package]]
name = "pkcs8"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
dependencies = [
"der 0.7.10",
"spki",
]
[[package]] [[package]]
name = "polyval" name = "polyval"
version = "0.6.2" version = "0.6.2"
@@ -1819,6 +2077,15 @@ 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 = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]] [[package]]
name = "primeorder" name = "primeorder"
version = "0.13.6" version = "0.13.6"
@@ -1861,6 +2128,16 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46b71a9d9206e8b46714c74255adcaea8b11e0350c1d8456165073c3f75fc81a" checksum = "46b71a9d9206e8b46714c74255adcaea8b11e0350c1d8456165073c3f75fc81a"
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"rand_chacha",
"rand_core 0.6.4",
]
[[package]] [[package]]
name = "rand" name = "rand"
version = "0.9.2" version = "0.9.2"
@@ -1870,6 +2147,16 @@ dependencies = [
"rand_core 0.9.5", "rand_core 0.9.5",
] ]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.4",
]
[[package]] [[package]]
name = "rand_core" name = "rand_core"
version = "0.6.4" version = "0.6.4"
@@ -1882,6 +2169,23 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
[[package]]
name = "regex-automata"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]] [[package]]
name = "rfc6979" name = "rfc6979"
version = "0.4.0" version = "0.4.0"
@@ -1963,6 +2267,36 @@ dependencies = [
"svgbobdoc", "svgbobdoc",
] ]
[[package]]
name = "rsa"
version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d"
dependencies = [
"const-oid 0.9.6",
"digest",
"num-bigint-dig",
"num-integer",
"num-traits",
"pkcs1",
"pkcs8",
"rand_core 0.6.4",
"sha2",
"signature",
"spki",
"subtle",
"zeroize",
]
[[package]]
name = "rustc_version"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
"semver",
]
[[package]] [[package]]
name = "rustversion" name = "rustversion"
version = "1.0.22" version = "1.0.22"
@@ -1975,6 +2309,12 @@ version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
[[package]]
name = "scoped-tls"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]] [[package]]
name = "scopeguard" name = "scopeguard"
version = "1.2.0" version = "1.2.0"
@@ -2000,6 +2340,12 @@ version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e896488941756e5de3ee8449495464dbbf2201c85d2d1ace47d4fb81c74b99ec" checksum = "e896488941756e5de3ee8449495464dbbf2201c85d2d1ace47d4fb81c74b99ec"
[[package]]
name = "semver"
version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.228" version = "1.0.228"
@@ -2073,6 +2419,21 @@ dependencies = [
"digest", "digest",
] ]
[[package]]
name = "sharded-slab"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
dependencies = [
"lazy_static",
]
[[package]]
name = "shlex"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]] [[package]]
name = "signature" name = "signature"
version = "2.2.0" version = "2.2.0"
@@ -2136,6 +2497,12 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0f368519fc6c85fc1afdb769fb5a51123f6158013e143656e25a3485a0d401c" checksum = "a0f368519fc6c85fc1afdb769fb5a51123f6158013e143656e25a3485a0d401c"
[[package]]
name = "spin"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]] [[package]]
name = "spin" name = "spin"
version = "0.10.0" version = "0.10.0"
@@ -2145,6 +2512,16 @@ dependencies = [
"lock_api", "lock_api",
] ]
[[package]]
name = "spki"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
dependencies = [
"base64ct",
"der 0.7.10",
]
[[package]] [[package]]
name = "stable_deref_trait" name = "stable_deref_trait"
version = "1.2.1" version = "1.2.1"
@@ -2268,6 +2645,15 @@ dependencies = [
"syn 2.0.114", "syn 2.0.114",
] ]
[[package]]
name = "thread_local"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.47" version = "0.3.47"
@@ -2326,6 +2712,67 @@ dependencies = [
"winnow", "winnow",
] ]
[[package]]
name = "tracing"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
dependencies = [
"pin-project-lite",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.114",
]
[[package]]
name = "tracing-core"
version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
dependencies = [
"once_cell",
"valuable",
]
[[package]]
name = "tracing-log"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
"log",
"once_cell",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
dependencies = [
"matchers",
"nu-ansi-term",
"once_cell",
"regex-automata",
"sharded-slab",
"smallvec",
"thread_local",
"tracing",
"tracing-core",
"tracing-log",
]
[[package]] [[package]]
name = "typenum" name = "typenum"
version = "1.19.0" version = "1.19.0"
@@ -2393,6 +2840,12 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "valuable"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]] [[package]]
name = "vcell" name = "vcell"
version = "0.1.3" version = "0.1.3"
@@ -2426,6 +2879,15 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-result"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
"windows-link",
]
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.61.2" version = "0.61.2"
@@ -2504,6 +2966,26 @@ dependencies = [
"synstructure", "synstructure",
] ]
[[package]]
name = "zerocopy"
version = "0.8.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.114",
]
[[package]] [[package]]
name = "zerofrom" name = "zerofrom"
version = "0.1.6" version = "0.1.6"

View File

@@ -17,7 +17,7 @@ bench = false
[dependencies] [dependencies]
log = "0.4.27" log = "0.4.27"
embassy-executor = "0.9.1" embassy-executor = "0.10.0"
embassy-time = "0.5.0" embassy-time = "0.5.0"
embassy-net-wiznet = { version = "0.2.1" } embassy-net-wiznet = { version = "0.2.1" }
embassy-net = { version = "0.8.0", features = ["dhcpv4", "medium-ethernet", "tcp", "udp", "dns"] } embassy-net = { version = "0.8.0", features = ["dhcpv4", "medium-ethernet", "tcp", "udp", "dns"] }
@@ -43,7 +43,8 @@ sntpc-net-embassy = { version = "0.8.0", features = ["ipv6"] }
jiff = { version = "0.2.20", default-features = false, features = ["static"] } jiff = { version = "0.2.20", default-features = false, features = ["static"] }
# HTTP client handling dependencies # HTTP client handling dependencies
embedded-tls = { git = "https://github.com/drogue-iot/embedded-tls", rev = "3b9a0951a256ce84c5dc6f4827a0d05466ab5e63", default-features = false, features = ["rustpki", "alloc"] } embedded-tls = { git = "https://github.com/drogue-iot/embedded-tls", rev = "bd13e11ce9c7605baf7018ef2b0f353ae6693016", default-features = false, features = ["rustpki", "alloc", "log", "rsa", "ed25519"] }
pem = {version = "3.0.6", default-features = false}
edge-nal-embassy = "0.8.1" edge-nal-embassy = "0.8.1"
edge-nal = { version = "0.6.0", default-features = false } edge-nal = { version = "0.6.0", default-features = false }
edge-http = { version = "0.7.0", features = ["io"], default-features = false } edge-http = { version = "0.7.0", features = ["io"], default-features = false }
@@ -55,6 +56,7 @@ escpos = { git = "https://github.com/pierre42100/escpos-rs", rev = "7499c2653a10
critical-section = "1.2.0" critical-section = "1.2.0"
rand = { version = "0.9.2", default-features = false } rand = { version = "0.9.2", default-features = false }
rand_core = "0.6.4"
static_cell = "2.1.1" static_cell = "2.1.1"
embedded-hal-bus = { version = "0.3.0", features = ["async"] } embedded-hal-bus = { version = "0.3.0", features = ["async"] }
embedded-io-async = "0.7.0" embedded-io-async = "0.7.0"

View File

@@ -6,7 +6,13 @@ Print your incoming Matrix messages using a thermal printer
### Hardware requirement ### Hardware requirement
#### ESP32 #### ESP32
TODO This project rely on a ESP32-s3. For the sake of simplicity I used the most powerful one available: [ESP32 N16R8](https://fr.aliexpress.com/item/1005007319706057.html)
The network is assured by a [W5500 chip](https://www.lextronic.fr/module-ethernet-w5500-sbcusres1-78053.html)
Schematics:
![](./docs/schematics_bb.png)
#### Thermal printer #### Thermal printer
You will need a Thermal printer that support the `Epson's ESC/POS` protocol. You will need a Thermal printer that support the `Epson's ESC/POS` protocol.
@@ -43,3 +49,10 @@ cargo build --release
```bash ```bash
cargo run --release cargo run --release
``` ```
### Project configuration roadmap
* Setup Matrix and wanted bridgets
* Setup MatrixGW and connect it to matrix
* Connect and configure your thermal printer
* Create an API token on MatrixGW for the printer
* Access http://ESP_IP/ (username: `admin` / password: `admin`) to configure the ESP

91
docs/architecture.drawio Normal file

File diff suppressed because one or more lines are too long

3
renovate.json Normal file
View File

@@ -0,0 +1,3 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}

View File

@@ -1,9 +1,12 @@
use crate::config::AppConfig;
use crate::time_client::TimeClient;
use alloc::vec; use alloc::vec;
use alloc::vec::Vec; use alloc::vec::Vec;
use core::cell::UnsafeCell; use core::cell::UnsafeCell;
use core::net::SocketAddr; use core::net::SocketAddr;
use edge_nal::io::{ErrorKind, ErrorType}; use edge_nal::io::{ErrorKind, ErrorType};
use embedded_tls::{Aes128GcmSha256, TlsConfig, TlsConnection}; use embedded_tls::{Aes128GcmSha256, CryptoRng, TlsClock, TlsConfig, TlsConnection};
use rand_core::{Error, RngCore};
struct MyMut(UnsafeCell<bool>, UnsafeCell<Vec<u8>>); struct MyMut(UnsafeCell<bool>, UnsafeCell<Vec<u8>>);
@@ -70,6 +73,56 @@ impl<'c> AutoTlsConnector<'c> {
} }
} }
struct Provider<'a> {
rng: PseudoRng,
verifier: embedded_tls::pki::CertVerifier<'a, Aes128GcmSha256, TimeClient, 4096>,
}
impl TlsClock for TimeClient {
fn now() -> Option<u64> {
Some(TimeClient::get().current_time_sec())
}
}
struct PseudoRng;
impl CryptoRng for PseudoRng {}
impl RngCore for PseudoRng {
fn next_u32(&mut self) -> u32 {
esp_hal::rng::Rng::new().next_u32()
}
fn next_u64(&mut self) -> u64 {
esp_hal::rng::Rng::new().next_u64()
}
fn fill_bytes(&mut self, dest: &mut [u8]) {
esp_hal::rng::Rng::new().fill_bytes(dest)
}
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> {
esp_hal::rng::Rng::new().try_fill_bytes(dest)
}
}
impl embedded_tls::CryptoProvider for Provider<'_> {
type CipherSuite = Aes128GcmSha256;
type Signature = &'static [u8];
fn rng(&mut self) -> impl embedded_tls::CryptoRngCore {
&mut self.rng
}
fn verifier(
&mut self,
) -> Result<&mut impl embedded_tls::TlsVerifier<Self::CipherSuite>, embedded_tls::TlsError>
{
Ok(&mut self.verifier)
}
}
impl<'c> edge_nal::TcpConnect for AutoTlsConnector<'c> { impl<'c> edge_nal::TcpConnect for AutoTlsConnector<'c> {
type Error = EdgeNalTlsError; type Error = EdgeNalTlsError;
type Socket<'a> type Socket<'a>
@@ -89,7 +142,27 @@ impl<'c> edge_nal::TcpConnect for AutoTlsConnector<'c> {
let (rbuf, wbuf) = tls_buf.split_at_mut(tls_buf.len() / 2); let (rbuf, wbuf) = tls_buf.split_at_mut(tls_buf.len() / 2);
let mut tls = TlsConnection::new(socket, rbuf, wbuf); let mut tls = TlsConnection::new(socket, rbuf, wbuf);
// TODO : verify peer certificate let root_ca = AppConfig::use_conf(|c| pem::parse(&c.safe.root_ca));
match root_ca {
Ok(pem) => {
log::info!("Checking certificate using root CA provided in config...");
tls.open(embedded_tls::TlsContext::new(
&config,
Provider {
rng: PseudoRng,
verifier: embedded_tls::pki::CertVerifier::new(
embedded_tls::Certificate::X509(pem.contents()),
),
},
))
.await?;
}
Err(e) => {
log::error!(
"Failed to parse TLS certificate: {e} will not check certificate, this is unsecure!!!"
);
tls.open(embedded_tls::TlsContext::new( tls.open(embedded_tls::TlsContext::new(
&config, &config,
@@ -98,6 +171,8 @@ impl<'c> edge_nal::TcpConnect for AutoTlsConnector<'c> {
), ),
)) ))
.await?; .await?;
}
}
Ok(AutoTlsSocket::Tls(tls)) Ok(AutoTlsSocket::Tls(tls))
} }

View File

@@ -108,7 +108,7 @@ impl CompleteMessage<'_> {
// Message date // Message date
printer printer
.justify(JustifyMode::CENTER)? .justify(JustifyMode::CENTER)?
.bold(true)? .bold(false)?
.size(1, 1)? .size(1, 1)?
.writeln( .writeln(
&self &self
@@ -144,8 +144,9 @@ impl CompleteMessage<'_> {
}) = &self.room_info }) = &self.room_info
{ {
printer printer
.bold(false)?
.justify(JustifyMode::CENTER)? .justify(JustifyMode::CENTER)?
.size(2, 2)? .size(1, 1)?
.writeln(&deunicode::deunicode(room_name))? .writeln(&deunicode::deunicode(room_name))?
.reset_size()?; .reset_size()?;
} }