Skip to content

Commit c1fad23

Browse files
committed
websocket connect wip
1 parent 1d0acee commit c1fad23

File tree

6 files changed

+206
-27
lines changed

6 files changed

+206
-27
lines changed

software/tracksight/rust_backend/Cargo.lock

Lines changed: 144 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

software/tracksight/rust_backend/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ serialport = "4.0"
88
ctrlc = "3.5"
99
tokio = { version = "1", features = ["full"] }
1010
tokio-serial = "5"
11+
tokio-tungstenite = "0.28.0"
12+
axum = { version = "0.8.8", features = ["ws"] }
1113
influxdb2 = "0.5"
1214
dotenv = "0.15"
1315
crc = "3.0.0"

software/tracksight/rust_backend/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ todo for backend
1010
[x] verify that serial messages can be processed
1111
[x] processing jsoncan to read metadata - deserialize bytes
1212
[ ] implementing client subscription map, socket server for clients to serve data
13+
[ ] switch to tokio serial
1314
[ ] interfacing with influxdb and pushing data through
1415
[ ] ensure proper error handling in backend and logging
1516
[ ] implementing api endpoints

software/tracksight/rust_backend/src/config.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub struct Config {
1111
pub influxdb_bucket: String,
1212
pub influxdb_measurement: String,
1313
pub jsoncan_config_path: String,
14+
pub backend_port: u32,
1415
}
1516

1617
pub static CONFIG: LazyLock<Config> = LazyLock::new(|| load_env_file());
@@ -22,28 +23,22 @@ fn load_env_file() -> Config {
2223
from_filename(DEFAULT_BACKEND_ENV_FILE)
2324
.expect(&format!("{} file not found, could not load env file!", DEFAULT_BACKEND_ENV_FILE));
2425

25-
let serial_port: String = var("SERIAL_PORT")
26-
.expect("SERIAL_PORT is missing!");
26+
let serial_port: String = get_var::<String>("SERIAL_PORT");
2727

28-
let influxdb_url: String = var("INFLUXDB_URL")
29-
.expect("INFLUXDB_URL is missing!");
28+
let influxdb_url: String = get_var::<String>("INFLUXDB_URL");
3029

31-
let influxdb_org: String = var("INFLUXDB_ORG")
32-
.expect("INFLUXDB_ORG is missing!");
30+
let influxdb_org: String = get_var::<String>("INFLUXDB_ORG");
3331

34-
let influxdb_token: String = var("INFLUXDB_TOKEN")
35-
.expect("INFLUXDB_TOKEN is missing!");
32+
let influxdb_token: String = get_var::<String>("INFLUXDB_TOKEN");
3633

37-
let influxdb_bucket: String = var("INFLUXDB_BUCKET")
38-
.expect("INFLUXDB_BUCKET is missing!");
34+
let influxdb_bucket: String = get_var::<String>("INFLUXDB_BUCKET");
3935

40-
let car_name = format!(
41-
"{}_live",
42-
var("CAR_NAME").expect("CAR_NAME is missing!")
43-
);
36+
let car_name = get_var::<String>("CAR_NAME");
4437

4538
let influxdb_measurement: String = format!("{car_name}_live");
4639

40+
let backend_port: u32 = get_var::<u32>("BACKEND_PORT");
41+
4742
return Config {
4843
serial_port: serial_port,
4944
serial_baud_rate: 57600, // hardcoded baudrate, probably wont ever change this
@@ -53,5 +48,13 @@ fn load_env_file() -> Config {
5348
influxdb_bucket: influxdb_bucket,
5449
influxdb_measurement: influxdb_measurement,
5550
jsoncan_config_path: format!("../../../can_bus/{car_name}"), // i love hardcoding
51+
backend_port: backend_port
5652
}
53+
}
54+
55+
fn get_var<T: std::str::FromStr>(env_key: &str) -> T {
56+
return var(env_key)
57+
.expect(&format!("{} is missing!", env_key))
58+
.parse::<T>()
59+
.ok().unwrap();
5760
}

software/tracksight/rust_backend/src/main.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use tasks::client_api::subscriptions::Subscriptions;
1212
use tasks::serial_handler::run_serial_task;
1313
use tasks::can_data_handler::run_can_data_handler;
1414

15+
use crate::tasks::api_handler::run_api_handler;
16+
1517
#[tokio::main]
1618
async fn main() {
1719
// shutdown signal for threads
@@ -42,8 +44,9 @@ async fn main() {
4244
let subscriptions = RwLock::new(Subscriptions::new());
4345

4446
// start tasks
45-
tasks.spawn(run_can_data_handler(shutdown_rx.resubscribe(), can_queue_rx, subscriptions));
46-
tasks.spawn(run_serial_task(shutdown_rx.resubscribe(), can_queue_tx));
47+
tasks.spawn(run_api_handler(shutdown_rx.resubscribe()));
48+
// tasks.spawn(run_can_data_handler(shutdown_rx.resubscribe(), can_queue_rx, subscriptions));
49+
// tasks.spawn(run_serial_task(shutdown_rx.resubscribe(), can_queue_tx));
4750

4851
// wait for tasks to clean up
4952
while let Some(res) = tasks.join_next().await {

0 commit comments

Comments
 (0)