/// <summary> /// Callback method that MdsLib calls when a device connects or disconnects /// </summary> /// <param name="mdsevent">details of device connection/disconnection</param> public void OnDeviceConnectionEvent(MDSEvent mdsevent) { var method = ((NSString)mdsevent.BodyDictionary.ValueForKey(new NSString("Method"))); if (method == new NSString("POST")) { // Device connected var bodyDict = (NSDictionary)mdsevent.BodyDictionary.ValueForKey(new NSString("Body")); var serial = (NSString)bodyDict.ValueForKey(new NSString("Serial")); var connDict = (NSDictionary)bodyDict.ValueForKey(new NSString("Connection")); var uuid = (NSString)connDict.ValueForKey(new NSString("UUID")); Debug.WriteLine($"MdsConnectionListener OnDeviceConnectionEvent CONNECTED: Serial {serial}"); ConnectionComplete?.Invoke(this, new MdsConnectionListenerEventArgs(serial, new Guid(uuid))); } else if (method == new NSString("DEL")) { // Device disconnected var serial = ((NSString)mdsevent.BodyDictionary.ValueForKey(new NSString("Serial"))); Debug.WriteLine($"MdsConnectionListener OnDeviceConnectionEvent DISCONNECTED: Serial {serial}"); Disconnect?.Invoke(this, new MdsConnectionListenerEventArgs(serial)); } else { throw new MdsException($"OnDeviceConnectionEvent unexpected method: {method}"); } }
public void DoTheOtherThing(MDSEvent anEvent, MDSWrapper wrapper) { System.Diagnostics.Debug.WriteLine("Mooooo "); var m = anEvent.BodyDictionary.ValueForKey(new NSString("Method")); System.Diagnostics.Debug.WriteLine(m); var serial = anEvent.BodyDictionary.ValueForKey(new NSString("Body")).ValueForKey(new NSString("Serial")).ToString(); //if (!serial.EndsWith("08")) return; //var body = new NSDictionary(); var ledOn = NSDictionary.FromObjectsAndKeys(new object[] { true, 0 }, new object[] { "IsOn", "LedColor" }); var body = NSDictionary.FromObjectAndKey(ledOn, new NSString("LedState")); //wrapper.DoGet(String.Format("{0}/Component/Leds", serial), new NSDictionary(), (resp) => //{ // wrapper.DisconnectPeripheralWithUUID(new Foundation.NSUuid("4CC5B0ED-08A0-C062-B1C2-B4B91D6B254A")); //}); wrapper.DoPut(String.Format("{0}/Component/Leds/0", serial), body, (arg0) => { System.Diagnostics.Debug.WriteLine("YOU SHOULD SEE THE LIGHT!!!!"); wrapper.DisconnectPeripheralWithUUID(new Foundation.NSUuid("4CC5B0ED-08A0-C062-B1C2-B4B91D6B254A")); }); //wrapper.DoGet(String.Format("{0}/Time", serial), new NSDictionary(), //(arg0) => //{ // System.Diagnostics.Debug.WriteLine("Response" + arg0.BodyDictionary.ValueForKey(new NSString("Content")).ToString()); // wrapper.DisconnectPeripheralWithUUID(new Foundation.NSUuid("4CC5B0ED-08A0-C062-B1C2-B4B91D6B254A")); //}); }
/// <summary> /// Callback method that MdsLib calls when a device connects or disconnects /// </summary> /// <param name="mdsevent">details of device connection/disconnection</param> public void OnDeviceConnectionEvent(MDSEvent mdsevent) { var method = ((NSString)mdsevent.BodyDictionary.ValueForKey(new NSString("Method"))); if (method == new NSString("POST")) { // Device connected var bodyDict = (NSDictionary)mdsevent.BodyDictionary.ValueForKey(new NSString("Body")); var serial = ((NSString)bodyDict.ValueForKey(new NSString("Serial"))).ToString(); var connDict = (NSDictionary)bodyDict.ValueForKey(new NSString("Connection")); var uuid = ((NSString)connDict.ValueForKey(new NSString("UUID"))).ToString(); var uniqueIDGuid = new Guid(uuid); this.UuidToSerialMapper.TryAdd(uniqueIDGuid, serial); Debug.WriteLine($"MdsConnectionListener OnDeviceConnectionEvent CONNECTED: Serial {serial}"); DeviceConnected?.Invoke(this, new MdsConnectionListenerBLEConnectedEventArgs(uuid)); DeviceConnectionComplete?.Invoke(this, new MdsConnectionListenerEventArgs(serial, uniqueIDGuid)); } else if (method == new NSString("DEL")) { // Device disconnected var bodyDict = (NSDictionary)mdsevent.BodyDictionary.ValueForKey(new NSString("Body")); var serial = ((NSString)bodyDict.ValueForKey(new NSString("Serial"))).ToString(); // Get the matching Uuid var uniqueIDGuid = this.UuidToSerialMapper.First(kv => kv.Value == serial).Key; Debug.WriteLine($"MdsConnectionListener OnDeviceConnectionEvent DISCONNECTED: Serial {serial}"); DeviceDisconnected?.Invoke(this, new MdsConnectionListenerEventArgs(serial, uniqueIDGuid)); } else { throw new MdsException($"OnDeviceConnectionEvent unexpected method: {method}"); } }