Skip to content
This repository was archived by the owner on Sep 23, 2025. It is now read-only.

Commit a62133e

Browse files
committed
update template
1 parent 2bc0c74 commit a62133e

File tree

2 files changed

+11
-72
lines changed

2 files changed

+11
-72
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ local-ip-address = "0.4.9"
4343
serde = {version="1.0.145",features=["derive"]}
4444
serde_json = "1.0.86"
4545
tokio = { version = "1", features = ["full"] }
46-
viam = {version = "0.0.7", git = "https://github.com/viamrobotics/viam-rust-sdk.git"}
46+
viam = {version = ">=0.0.7", git = "https://github.com/viamrobotics/viam-rust-sdk.git"}
4747
viam-rust-utils = "0.0.6"
4848

src/main.rs

Lines changed: 10 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,19 @@ include!(concat!(env!("OUT_DIR"), "/robot_secret.rs"));
66

77
use anyhow::bail;
88
use esp_idf_hal::prelude::Peripherals;
9-
use esp_idf_hal::task::notify;
109
use esp_idf_svc::eventloop::EspSystemEventLoop;
11-
use esp_idf_svc::mdns::EspMdns;
1210
use esp_idf_svc::netif::{EspNetif, EspNetifWait};
1311
use esp_idf_svc::wifi::EspWifi;
12+
use esp_idf_sys as _; // If using the `binstart` feature of `esp-idf-sys`, always keep this module imported
1413
use esp_idf_sys::esp_wifi_set_ps;
15-
use esp_idf_sys::vTaskDelay;
16-
use esp_idf_sys::{self as _, TaskHandle_t}; // If using the `binstart` feature of `esp-idf-sys`, always keep this module imported
17-
use futures_lite::future::block_on;
18-
use hyper::server::conn::Http;
1914
use log::*;
20-
use mini_rdk::esp32::exec::Esp32Executor;
21-
use mini_rdk::esp32::grpc::GrpcServer;
2215
use mini_rdk::esp32::robot::Esp32Robot;
2316
use mini_rdk::esp32::robot::ResourceType;
24-
use mini_rdk::esp32::robot_client::RobotClientConfig;
25-
use mini_rdk::esp32::tcp::Esp32Listener;
26-
use mini_rdk::esp32::tls::{Esp32Tls, Esp32TlsServerConfig};
17+
use mini_rdk::esp32::server::{CloudConfig, Esp32Server};
18+
use mini_rdk::esp32::tls::Esp32TlsServerConfig;
2719
use mini_rdk::proto::common::v1::ResourceName;
2820
use std::cell::RefCell;
2921
use std::collections::HashMap;
30-
use std::net::SocketAddr;
3122
use std::rc::Rc;
3223
use std::sync::Arc;
3324
use std::sync::Mutex;
@@ -99,35 +90,6 @@ fn main() -> anyhow::Result<()> {
9990
let wifi = start_wifi(periph.modem, sys_loop_stack)?;
10091
(wifi.sta_netif().get_ip_info()?.ip, wifi)
10192
};
102-
103-
let client_cfg = { RobotClientConfig::new(ROBOT_SECRET.to_string(), ROBOT_ID.to_string(), ip) };
104-
105-
let hnd = match mini_rdk::esp32::robot_client::start(client_cfg) {
106-
Err(e) => {
107-
log::error!("couldn't start robot client {:?} will start the server", e);
108-
None
109-
}
110-
Ok(hnd) => Some(hnd),
111-
};
112-
113-
// start mdns service
114-
let _mdms = {
115-
let mut mdns = EspMdns::take()?;
116-
mdns.set_hostname(ROBOT_NAME)?;
117-
mdns.set_instance_name(ROBOT_NAME)?;
118-
mdns.add_service(None, "_rpc", "_tcp", 80, &[])?;
119-
mdns
120-
};
121-
122-
if let Err(e) = runserver(robot, hnd) {
123-
log::error!("robot server failed with error {:?}", e);
124-
return Err(e);
125-
}
126-
127-
Ok(())
128-
}
129-
130-
fn runserver(robot: Esp32Robot, client_handle: Option<TaskHandle_t>) -> anyhow::Result<()> {
13193
let cfg = {
13294
let cert = include_bytes!(concat!(env!("OUT_DIR"), "/ca.crt"));
13395
let key = include_bytes!(concat!(env!("OUT_DIR"), "/key.key"));
@@ -138,36 +100,13 @@ fn runserver(robot: Esp32Robot, client_handle: Option<TaskHandle_t>) -> anyhow::
138100
key.len() as u32,
139101
)
140102
};
141-
let tls = Box::new(Esp32Tls::new_server(&cfg));
142-
let address: SocketAddr = "0.0.0.0:80".parse().unwrap();
143-
let mut listener = Esp32Listener::new(address.into(), Some(tls))?;
144-
let exec = Esp32Executor::new();
145-
let srv = GrpcServer::new(Arc::new(Mutex::new(robot)));
146-
if let Some(hnd) = client_handle {
147-
if unsafe { notify(hnd, 1) } {
148-
log::info!("successfully notified client task");
149-
unsafe {
150-
vTaskDelay(1000);
151-
};
152-
} else {
153-
log::error!("failed to notity client task had handle {:?}", hnd);
154-
}
155-
} else {
156-
log::error!("no handle")
157-
}
158-
loop {
159-
let stream = listener.accept()?;
160-
block_on(exec.run(async {
161-
let err = Http::new()
162-
.with_executor(exec.clone())
163-
.http2_max_concurrent_streams(1)
164-
.serve_connection(stream, srv.clone())
165-
.await;
166-
if err.is_err() {
167-
log::error!("server error {}", err.err().unwrap());
168-
}
169-
}));
170-
}
103+
104+
let mut cloud_cfg = CloudConfig::new(ROBOT_NAME, FQDN, ROBOT_ID, ROBOT_SECRET);
105+
cloud_cfg.set_tls_config(cfg);
106+
let esp32_srv = Esp32Server::new(robot, cloud_cfg);
107+
esp32_srv.start(ip)?;
108+
109+
Ok(())
171110
}
172111

173112
fn start_wifi(

0 commit comments

Comments
 (0)