public ObservableCollection <string> PairedDevices() { //throw new NotImplementedException(); EAAccessoryManager manager = EAAccessoryManager.SharedAccessoryManager; var allaccessorries = manager.ConnectedAccessories; foreach (var accessory in allaccessorries) { //yourlable.Text = "find accessory"; Console.WriteLine(accessory.ToString()); Console.WriteLine(accessory.Name); var protocol = "com.Yourprotocol.name"; if (accessory.ProtocolStrings.Where(s => s == protocol).Any()) { //yourlable.Text = "Accessory found"; //start session var session = new EASession(accessory, protocol); //var outputStream = session.OutputStream; //outputStream.Delegate = new MyOutputStreamDelegate(yourlable); //outputStream.Schedule(NSRunLoop.Current, "kCFRunLoopDefaultMode"); //outputStream.Open(); } } return(new ObservableCollection <string>() { "AAA", "BBB" }); }
public void closeConnectionToBTDevice() { session.InputStream.Close(); session.InputStream.RemoveObserver(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); session.InputStream.Delegate = null; session = null; }
void DoConnect(BluetoothAddress address, Guid service) { _accessory = address.Accessory; // TODO: provide mapping support for multiple protocol strings _session = new EASession(_accessory, _accessory.ProtocolStrings[0]); _stream = new ExternalAccessoryNetworkStream(_session); }
public ConnectedSphero(EAAccessory bluetoothDevice, EASession socket) : base(bluetoothDevice) { _spheroSocketWrapper = new StreamSocketWrapper(socket); _runner = new NonAwaitingConnectedSpheroRunner(_spheroSocketWrapper); _runner.Disconnected += (sender, args) => RaiseDisconnected(); _runner.Start(); }
internal ExternalAccessoryNetworkStream(EASession session) { _delegate = new EAStreamDelegate(this); _inputStream = session.InputStream; _outputStream = session.OutputStream; _inputStream.Open(); _outputStream.Delegate = _delegate; _outputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); _outputStream.Open(); }
public void CloseSession() { _session.InputStream.Unschedule(NSRunLoop.Current, NSRunLoopMode.Default); _session.InputStream.Delegate = null; _session.InputStream.Close(); _session.OutputStream.Unschedule(NSRunLoop.Current, NSRunLoopMode.Default); _session.OutputStream.Delegate = null; _session.OutputStream.Close(); _session = null; }
public StreamSocketWrapper(EASession spheroSocket) { _spheroSocket = spheroSocket; _spheroSocket.InputStream.OnEvent += DataReceived; _spheroSocket.InputStream.Schedule(NSRunLoop.Main, "kCFRunLoopDefaultMode"); _spheroSocket.InputStream.Open(); _spheroSocket.OutputStream.OnEvent += Ignored; _spheroSocket.OutputStream.Schedule(NSRunLoop.Main, "kCFRunLoopDefaultMode"); _spheroSocket.OutputStream.Open(); }
private void DoConnect(Action <IConnectedSphero> onSuccess, Action <Exception> onError) { try { var session = new EASession(Accessory, Constants.ProtocolName); var connected = new ConnectedSphero(Accessory, session); onSuccess(connected); } catch (Exception exception) { onError(exception); } }
private void DoConnect(Action<IConnectedSphero> onSuccess, Action<Exception> onError) { try { var session = new EASession(Accessory, Constants.ProtocolName); var connected = new ConnectedSphero(Accessory, session); onSuccess(connected); } catch (Exception exception) { onError(exception); } }
public void Cancel() { if (Session == null) { return; } Session.InputStream.Close(); Session.InputStream.Unschedule(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); Session.InputStream.Dispose(); Session.Dispose(); Session = null; }
public Task ConnectAsync() { return(Task.Run(() => { SelectedDevice.WeakDelegate = this; _session = new EASession(SelectedDevice, "COM.LEGO.MINDSTORMS.EV3"); _session.InputStream.Delegate = this; _session.InputStream.Schedule(NSRunLoop.Current, NSRunLoopMode.Default); _session.InputStream.Open(); _session.OutputStream.Delegate = this; _session.OutputStream.Schedule(NSRunLoop.Current, NSRunLoopMode.Default); _session.OutputStream.Open(); })); }
public void openConnectionForAccessory(string accessoryID, string protocolString) { //connect to a specific RiderX link, identified with an accessory ID and the proper protocol sting //The current protocolString is "com.diagsys.constb", but I left it as a variable incase it changes at some point //in the future //start by getting connected accessories var connectedAccessories = EAAccessoryManager.SharedAccessoryManager.ConnectedAccessories; foreach (EAAccessory accessory in connectedAccessories) { var accID = accessory.ValueForKey((NSString)"connectionID"); var accString = accID.ToString(); if (accString == accessoryID) { //connect to this device //open session //Console.WriteLine(accessory.ValueForKey((NSString)"name")); if (session == null) { session = new EASession(accessory, protocolString); session.OutputStream.Delegate = this; session.OutputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); session.OutputStream.Open(); session.InputStream.Delegate = this; session.InputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); session.InputStream.Open(); } else { session.OutputStream.Delegate = this; session.InputStream.Delegate = this; session.OutputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); session.InputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); session.OutputStream.Open(); session.InputStream.Open(); } } } }
public bool OpenSession() { Console.WriteLine("opening new session"); _accessory.WeakDelegate = this; if (_session == null) { _session = new EASession(_accessory, _protocolString); } // Open both input and output streams even if the device only makes use of one of them _session.InputStream.Delegate = this; _session.InputStream.Schedule(NSRunLoop.Current, NSRunLoopMode.Default); _session.InputStream.Open(); _session.OutputStream.Delegate = this; _session.OutputStream.Schedule(NSRunLoop.Current, NSRunLoopMode.Default); _session.OutputStream.Open(); return(_session != null); }
public void Start(string name, int sleepTime, bool readAsCharArray) { if (Session != null) { throw new Exception("Session already started"); } // get session with the given device name EAAccessoryManager manager = EAAccessoryManager.SharedAccessoryManager; var allaccessorries = manager.ConnectedAccessories; foreach (var accessory in allaccessorries) { if (String.Equals(accessory.Name, name, StringComparison.CurrentCultureIgnoreCase)) { Session = new EASession(accessory, Protocol); Session.Accessory.Disconnected += Accessory_Disconnected; Session.InputStream.Schedule(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); Session.InputStream.OnEvent += InputStream_OnEvent; Session.InputStream.Open(); } } }
void DoClose() { _session?.Dispose(); _session = null; }
public EAAccessoryStream(EAAccessory accessory, string protocol) { m_session = new EASession(accessory, protocol); m_session.InputStream?.Open(); m_session.OutputStream?.Open(); }