Compare commits
3 commits
49ba2eb018
...
b33fe3ccaf
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b33fe3ccaf | ||
![]() |
501a82760d | ||
![]() |
b1f432ef3f |
1
beamer/client/.gitignore
vendored
Normal file
1
beamer/client/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
target
|
12
beamer/client/Cargo.toml
Normal file
12
beamer/client/Cargo.toml
Normal file
|
@ -0,0 +1,12 @@
|
|||
[package]
|
||||
name = "client"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
semserialize = {path='../libs/semserialize'}
|
||||
postcard = "1.0.0"
|
||||
serde = { version = "1.0.*"}
|
||||
argh = "0.1.13"
|
24
beamer/client/src/main.rs
Normal file
24
beamer/client/src/main.rs
Normal file
|
@ -0,0 +1,24 @@
|
|||
|
||||
use semserialize::SemLine;
|
||||
use serde::{Serialize, Deserialize};
|
||||
use postcard::{from_bytes};
|
||||
|
||||
use argh::FromArgs;
|
||||
use std::net;
|
||||
#[derive(FromArgs)]
|
||||
///Config options for the client
|
||||
struct Config {
|
||||
///listener IP, defaults to 0.0.0.0
|
||||
#[argh(option, default = "String::from(\"0.0.0.0\")",short='i')]
|
||||
ip: String,
|
||||
///listener port
|
||||
#[argh(option, default = "2137",short='p')]
|
||||
udpport: usize,
|
||||
}
|
||||
fn main() {
|
||||
let config:Config = argh::from_env();
|
||||
println!("UDP listener Port is {}",config.udpport);
|
||||
let socket_addr:std::net::SocketAddr = format!("{}:{}",config.ip,config.udpport).parse::<std::net::SocketAddr>().unwrap_or("0.0.0.0:2137".parse::<std::net::SocketAddr>().unwrap());
|
||||
let udpsocket = std::net::UdpSocket::bind(socket_addr).expect("couldn't bind to address");
|
||||
|
||||
}
|
1
beamer/libs/semserialize/.gitignore
vendored
Normal file
1
beamer/libs/semserialize/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
target
|
96
beamer/libs/semserialize/Cargo.lock
generated
Normal file
96
beamer/libs/semserialize/Cargo.lock
generated
Normal file
|
@ -0,0 +1,96 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
|
||||
|
||||
[[package]]
|
||||
name = "semserialize"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.216"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.216"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.134"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70ae51629bf965c5c098cc9e87908a3df5301051a9e087d6f9bef5c9771ed126"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
|
14
beamer/libs/semserialize/Cargo.toml
Normal file
14
beamer/libs/semserialize/Cargo.toml
Normal file
|
@ -0,0 +1,14 @@
|
|||
[package]
|
||||
name = "semserialize"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
# By default, `serde` has the `std` feature enabled, which makes it unsuitable for embedded targets
|
||||
# disabling default-features fixes this
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
|
||||
[dev-dependencies]
|
||||
serde_json = "1.0.134"
|
17
beamer/libs/semserialize/shell.nix
Normal file
17
beamer/libs/semserialize/shell.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ pkgs ? import <nixpkgs> {}}:
|
||||
let rust-toolchain = with pkgs; symlinkJoin {
|
||||
name = "rust-toolchain";
|
||||
paths = [
|
||||
rustc
|
||||
cargo
|
||||
rustfmt
|
||||
rust-analyzer
|
||||
clippy
|
||||
rustPlatform.rustcSrc
|
||||
];
|
||||
};
|
||||
in pkgs.mkShell {
|
||||
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
||||
buildInputs = [rust-toolchain];
|
||||
RUST_BACKTRACE = 1;
|
||||
}
|
27
beamer/libs/semserialize/src/lib.rs
Normal file
27
beamer/libs/semserialize/src/lib.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
#[macro_use]
|
||||
use serde::{Serialize, Deserialize};
|
||||
|
||||
// How many lines are there from HIGHEST to LOWEST
|
||||
pub const HEIGHT: usize = 32;
|
||||
// "Pixels" from left to right
|
||||
pub const WIDTH: usize = 32;
|
||||
#[derive(Serialize, Deserialize, Debug,PartialEq)]
|
||||
pub struct SemLine{
|
||||
line: u32,
|
||||
pixels:[u8;WIDTH]
|
||||
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use serde_json;
|
||||
#[test]
|
||||
fn test_serialize(){
|
||||
let test_struct: SemLine = SemLine{line:0,pixels:[0;WIDTH]};
|
||||
let serialized = serde_json::to_string(&test_struct).unwrap();
|
||||
let deserialized:SemLine = serde_json::from_str(&serialized).unwrap();
|
||||
assert_eq!(test_struct,deserialized);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue