Skip to content

Commit 86840df

Browse files
committed
feat: Add tauri CLI for connecting to serial port.
1 parent f942781 commit 86840df

File tree

12 files changed

+232
-44
lines changed

12 files changed

+232
-44
lines changed

package-lock.json

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

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
},
1515
"dependencies": {
1616
"@tauri-apps/api": "^2.0.0-beta.13",
17+
"@tauri-apps/plugin-cli": "^2.0.0-beta.5",
1718
"emittery": "^1.0.3",
1819
"immer": "^10.1.1",
1920
"react": "^18.2.0",

src-tauri/Cargo.lock

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

src-tauri/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ tokio = { version = "1.37.0", features = ["io-util"] }
3131
# If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes.
3232
# DO NOT REMOVE!!
3333
custom-protocol = [ "tauri/custom-protocol" ]
34+
35+
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
36+
tauri-plugin-cli = "2.0.0-beta.6"

src-tauri/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
fn main() {
2-
tauri_build::build()
2+
tauri_build::build()
33
}

src-tauri/capabilities/default.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
"$schema": "../gen/schemas/desktop-schema.json",
33
"identifier": "default",
44
"description": "enables the default permissions",
5-
"windows": ["main"],
5+
"windows": [
6+
"main"
7+
],
68
"permissions": [
79
"path:default",
810
"event:default",
@@ -12,6 +14,7 @@
1214
"resources:default",
1315
"image:default",
1416
"menu:default",
15-
"tray:default"
17+
"tray:default",
18+
"cli:default"
1619
]
17-
}
20+
}

src-tauri/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[cfg_attr(mobile, tauri::mobile_entry_point)]
22
pub fn run() {
3-
tauri::Builder::default()
4-
.run(tauri::generate_context!())
5-
.expect("error while running tauri application");
3+
tauri::Builder::default()
4+
.run(tauri::generate_context!())
5+
.expect("error while running tauri application");
66
}

src-tauri/src/main.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,24 @@
44
use futures::lock::Mutex;
55

66
mod transport;
7-
use transport::commands::{ transport_send_data, ActiveConnection};
7+
use transport::commands::{transport_send_data, ActiveConnection};
88

9-
use transport::gatt::{ gatt_list_devices, gatt_connect };
10-
use transport::serial::{ serial_list_devices, serial_connect };
9+
use transport::gatt::{gatt_connect, gatt_list_devices};
10+
use transport::serial::{serial_connect, serial_list_devices};
1111

1212
fn main() {
13-
tauri::Builder::default()
14-
.manage(ActiveConnection { conn: Mutex::new(None) })
15-
.invoke_handler(tauri::generate_handler![
16-
transport_send_data,
17-
gatt_list_devices,
18-
gatt_connect,
19-
serial_list_devices,
20-
serial_connect,
21-
])
22-
.run(tauri::generate_context!())
23-
.expect("error while running tauri application");
13+
tauri::Builder::default()
14+
.plugin(tauri_plugin_cli::init())
15+
.manage(ActiveConnection {
16+
conn: Mutex::new(None),
17+
})
18+
.invoke_handler(tauri::generate_handler![
19+
transport_send_data,
20+
gatt_list_devices,
21+
gatt_connect,
22+
serial_list_devices,
23+
serial_connect,
24+
])
25+
.run(tauri::generate_context!())
26+
.expect("error while running tauri application");
2427
}

src-tauri/src/transport/commands.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
use futures::lock::Mutex;
32
use futures::Sink;
43
use futures::SinkExt;
@@ -7,28 +6,32 @@ use futures::channel::mpsc::SendError;
76

87
use serde::{Deserialize, Serialize};
98

10-
119
use tauri::ipc::InvokeBody;
1210
use tauri::{
13-
command,
14-
State,
15-
ipc::{Request, Response}
11+
command,
12+
ipc::{Request, Response},
13+
State,
1614
};
1715

1816
#[derive(Debug, Serialize)]
1917
pub struct AvailableDevice {
20-
pub label: String,
21-
pub id: String
18+
pub label: String,
19+
pub id: String,
2220
}
2321

2422
#[derive(Debug, Default)]
25-
pub struct ActiveConnection<'a> { pub conn: Mutex<Option<Box<dyn Sink<Vec<u8>, Error = SendError> + Unpin + Send + 'a>>> }
23+
pub struct ActiveConnection<'a> {
24+
pub conn: Mutex<Option<Box<dyn Sink<Vec<u8>, Error = SendError> + Unpin + Send + 'a>>>,
25+
}
2626

2727
#[command]
28-
pub async fn transport_send_data(req: Request<'_>, state: State<'_, ActiveConnection<'_>>) -> Result<(), ()> {
28+
pub async fn transport_send_data(
29+
req: Request<'_>,
30+
state: State<'_, ActiveConnection<'_>>,
31+
) -> Result<(), ()> {
2932
if let InvokeBody::Raw(data) = req.body() {
3033
let mut lock = state.conn.lock().await;
31-
34+
3235
let sink = lock.as_mut().unwrap();
3336
sink.send(data.clone()).await;
3437
}

src-tauri/src/transport/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
pub mod commands;
22
pub mod gatt;
3-
pub mod serial;
3+
pub mod serial;

0 commit comments

Comments
 (0)