MCPcopy Create free account
hub / github.com/deviceplug/btleplug / connect

Method connect

src/droidplug/peripheral.rs:259–289  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

257 }
258
259 async fn connect(&self) -> Result<()> {
260 let future = self.with_obj(|env, obj| JSendFuture::try_from(obj.connect()?))?;
261 let result_ref = future.await?;
262 self.with_obj(|env, _obj| {
263 let result = JPollResult::from_env(env, result_ref.as_obj())?;
264 get_poll_result(env, result).map(|_| {})
265 })?;
266 // Query the system-cached device name and update local_name
267 self.with_obj(|_env, obj| -> std::result::Result<(), Error> {
268 if let Ok(Some(name)) = obj.get_device_name() {
269 let mut guard = self.shared.lock().map_err(Into::<Error>::into)?;
270 if let Some(ref mut props) = guard.properties {
271 props.local_name = Some(name);
272 }
273 }
274 Ok(())
275 })?;
276 // Auto-negotiate maximum MTU (517) after connection
277 let mtu_future = self.with_obj(|env, obj| {
278 JSendFuture::try_from(JFuture::from_env(env, obj.request_mtu(517)?)?)
279 })?;
280 let mtu_result_ref = mtu_future.await?;
281 self.with_obj(|env, _obj| -> Result<()> {
282 let mtu_result = JPollResult::from_env(env, mtu_result_ref.as_obj())?;
283 let mtu_obj = get_poll_result(env, mtu_result)?;
284 let mtu_val = env.call_method(mtu_obj, "intValue", "()I", &[])?.i()?;
285 self.mtu.store(mtu_val as u16, Ordering::Relaxed);
286 Ok(())
287 })?;
288 Ok(())
289 }
290
291 async fn disconnect(&self) -> Result<()> {
292 let future = self.with_obj(|env, obj| JSendFuture::try_from(obj.disconnect()?))?;

Callers

nothing calls this directly

Calls 4

get_poll_resultFunction · 0.85
with_objMethod · 0.80
get_device_nameMethod · 0.80
request_mtuMethod · 0.80

Tested by

no test coverage detected