/// <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}");
            }
        }
Ejemplo n.º 2
0
        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}");
            }
        }