forked from mirrors/gecko-dev
		
	 a8c186678e
			
		
	
	
		a8c186678e
		
	
	
	
	
		
			
			Basic implementation of WebBluetooth API API spec.: https://webbluetoothcg.github.io/web-bluetooth/ Source-Repo: https://github.com/servo/servo Source-Revision: 37574065e0a1a22493bdbf1ce8dd0480aa88c758
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding;
 | |
| use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods;
 | |
| use dom::bindings::global::GlobalRef;
 | |
| use dom::bindings::js::{JS, MutHeap, Root};
 | |
| use dom::bindings::reflector::{Reflector, reflect_dom_object};
 | |
| use dom::bluetoothdevice::BluetoothDevice;
 | |
| use dom::bluetoothremotegattservice::BluetoothRemoteGATTService;
 | |
| use std::cell::Cell;
 | |
| 
 | |
| // https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattserver
 | |
| #[dom_struct]
 | |
| pub struct BluetoothRemoteGATTServer {
 | |
|     reflector_: Reflector,
 | |
|     device: MutHeap<JS<BluetoothDevice>>,
 | |
|     connected: Cell<bool>,
 | |
| }
 | |
| 
 | |
| impl BluetoothRemoteGATTServer {
 | |
|     pub fn new_inherited(device: &BluetoothDevice, is_connected: bool) -> BluetoothRemoteGATTServer {
 | |
|         BluetoothRemoteGATTServer {
 | |
|             reflector_: Reflector::new(),
 | |
|             device: MutHeap::new(device),
 | |
|             connected: Cell::new(is_connected),
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     pub fn new(global: GlobalRef, device: &BluetoothDevice, connected: bool) -> Root<BluetoothRemoteGATTServer> {
 | |
|         reflect_dom_object(box BluetoothRemoteGATTServer::new_inherited(
 | |
|                            device,
 | |
|                            connected),
 | |
|         global,
 | |
|         BluetoothRemoteGATTServerBinding::Wrap)
 | |
|     }
 | |
| }
 | |
| 
 | |
| impl BluetoothRemoteGATTServerMethods for BluetoothRemoteGATTServer {
 | |
| 
 | |
|     // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-device
 | |
|     fn Device(&self) -> Root<BluetoothDevice> {
 | |
|         self.device.get()
 | |
|     }
 | |
| 
 | |
|     // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-connected
 | |
|     fn Connected(&self) -> bool {
 | |
|         self.connected.get()
 | |
|     }
 | |
| 
 | |
|     // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-connect
 | |
|     fn Connect(&self) -> Root<BluetoothRemoteGATTServer> {
 | |
|         if !self.connected.get() {
 | |
|             self.connected.set(true);
 | |
|         }
 | |
|         Root::from_ref(self)
 | |
|     }
 | |
| 
 | |
|     // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-disconnect
 | |
|     fn Disconnect(&self) {
 | |
|         self.connected.set(false);
 | |
|     }
 | |
| 
 | |
|     // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-getprimaryservice
 | |
|     fn GetPrimaryService(&self) -> Option<Root<BluetoothRemoteGATTService>> {
 | |
|         //UNIMPLEMENTED
 | |
|         None
 | |
|     }
 | |
| }
 |