Example #1
0
        /// <summary>
        /// Get the list of users.
        /// </summary>
        /// <returns>The List of user or null on error.</returns>
        public Dictionary <string, Whitelist> GetUserList()
        {
            string     url    = BridgeUrl + "/config";
            CommResult comres = Comm.SendRequest(new Uri(url), WebRequestType.Get);

            if (comres.Status == WebExceptionStatus.Success)
            {
                BridgeSettings brs = Serializer.DeserializeToObject <BridgeSettings>(comres.Data);
                if (brs != null)
                {
                    return(brs.whitelist);
                }
                LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data));
                return(null);
            }
            ProcessCommandFailure(url, comres.Status);
            return(null);
        }
Example #2
0
        /// <summary>
        /// Get the list of users.
        /// </summary>
        /// <returns>The List of user or null on error.</returns>
        public async Task <Dictionary <string, Whitelist> > GetUserListAsyncTask()
        {
            string     url    = BridgeUrl + "/config";
            HttpResult comres = await HueHttpClient.SendRequestAsyncTask(new Uri(url), WebRequestType.Get);

            if (comres.Success)
            {
                BridgeSettings brs = Serializer.DeserializeToObject <BridgeSettings>(comres.Data);
                if (brs != null)
                {
                    return(brs.whitelist);
                }
                LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data));
                return(null);
            }
            BridgeNotResponding?.Invoke(this, new BridgeNotRespondingEventArgs(this, url, WebExceptionStatus.NameResolutionFailure));
            return(null);
        }
Example #3
0
        /// <summary>
        /// Get the bridge Settings.
        /// </summary>
        /// <returns>The Settings of the bridge.</returns>
        public async Task <BridgeSettings> GetBridgeSettingsAsyncTask()
        {
            string     url    = BridgeUrl + "/config";
            CommResult comres = await Comm.SendRequestAsyncTask(new Uri(url), WebRequestType.Get);

            if (comres.Status == WebExceptionStatus.Success)
            {
                BridgeSettings bs = Serializer.DeserializeToObject <BridgeSettings>(comres.Data);
                if (bs != null)
                {
                    return(bs);
                }
                LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data));
                return(null);
            }
            ProcessCommandFailure(url, comres.Status);
            return(null);
        }
Example #4
0
        /// <summary>
        /// Get the bridge Settings.
        /// </summary>
        /// <returns>The Settings of the bridge.</returns>
        public BridgeSettings GetBridgeSettings()
        {
            string     url    = BridgeUrl + "/config";
            HttpResult comres = HueHttpClient.SendRequest(new Uri(url), WebRequestType.Get);

            if (comres.Success)
            {
                BridgeSettings bs = Serializer.DeserializeToObject <BridgeSettings>(comres.Data);
                if (bs != null)
                {
                    return(bs);
                }
                LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(comres.Data));
                return(null);
            }
            BridgeNotResponding?.Invoke(this, new BridgeNotRespondingEventArgs(this, url, WebExceptionStatus.NameResolutionFailure));
            return(null);
        }
Example #5
0
        /// <summary>
        /// Check if there is an update available on the bridge . (Does not force the bridge to check for an update)
        /// </summary>
        /// <returns>Software Update or null.</returns>
        public bool CheckUpdateAvailable()
        {
            HttpResult comres = HueHttpClient.SendRequest(new Uri(BridgeUrl + "/config"), WebRequestType.Get);

            if (comres.Success)
            {
                BridgeSettings brs = Serializer.DeserializeToObject <BridgeSettings>(comres.Data);
                if (brs != null)
                {
                    return(brs.swupdate.updatestate == 2);
                }
                else
                {
                    LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(HueHttpClient.LastJson));
                }
            }
            BridgeNotResponding?.Invoke(this, new BridgeNotRespondingEventArgs(this, BridgeUrl + "/config", WebExceptionStatus.NameResolutionFailure));
            return(false);
        }
Example #6
0
        /// <summary>
        /// Check if the bridge is autorized with the current ApiKey
        /// </summary>
        /// <returns></returns>
        public bool CheckAuthorization()
        {
            bool authorization = false;

            if (ApiKey == String.Empty)
            {
                return(false);
            }
            BridgeSettings bs = GetBridgeSettings();

            if (bs == null)
            {
                return(false);
            }
            if (bs.portalservices != null)
            {
                authorization = true;
            }

            return(authorization);
        }
Example #7
0
        public BridgeSettingsView(BridgeSettings brs)
        {
            _brs = brs;
            CommandResult comres2 = BridgeStore.SelectedBridge.GetTimeZones();

            if (!comres2.Success)
            {
                return;
            }
            _listtimezones = (List <string>)comres2.resultobject;
            HelperResult hr = HueObjectHelper.GetBridgeUsers(BridgeStore.SelectedBridge);

            if (!hr.Success)
            {
                return;
            }
            _listusers = new ObservableCollection <Whitelist>((List <Whitelist>)hr.Hrobject);
            int winhue = _listusers.FindIndex(x => x.id == BridgeStore.SelectedBridge.ApiKey);

            _listusers.RemoveAt(winhue);
        }
Example #8
0
        /// <summary>
        /// Check if there is an update available on the bridge async. (Does not force the bridge to check for an update)
        /// </summary>
        /// <returns>Software Update or null.</returns>
        public async Task <bool> CheckUpdateAvailableAsyncTask()
        {
            CommResult comres = await Comm.SendRequestAsyncTask(new Uri(BridgeUrl + "/config"), WebRequestType.Get);

            switch (comres.Status)
            {
            case WebExceptionStatus.Success:
                BridgeSettings brs = Serializer.DeserializeToObject <BridgeSettings>(comres.Data);
                if (brs != null)
                {
                    if (brs.swupdate.updatestate == 2)
                    {
                        UpdateAvailable = true;
                        return(true);
                    }
                    return(false);
                }
                else
                {
                    LastCommandMessages.AddMessage(Serializer.DeserializeToObject <List <IMessage> >(Comm.Lastjson));
                }
                break;

            case WebExceptionStatus.Timeout:
                LastCommandMessages.AddMessage(new Error()
                {
                    address = BridgeUrl + "/config", description = "A Timeout occured.", type = 65535
                });
                break;

            default:
                LastCommandMessages.AddMessage(new Error()
                {
                    address = BridgeUrl + "/config", description = "A unknown error occured.", type = 65535
                });
                break;
            }
            return(false);
        }
Example #9
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
            var configuration            = builder.Build();
            var address                  = configuration["UI24R-Url"];
            var midiInputDevice          = configuration["MIDI-Input-Name"];
            var midiOutputDevice         = configuration["MIDI-Output-Name"];
            var protocol                 = configuration["Protocol"];
            var syncID                   = configuration["SyncID"];
            var viewDebugMessage         = configuration["DebugMessages"] == "true";
            var recButtonBahavior        = configuration["DefaultRecButton"];
            var channelRecButtonBahavior = configuration["DefaultChannelRecButton"];
            var auxButtonBehavior        = configuration["AuxButtonBehavior"];
            //var controller = new BehringerUniversalMIDI();
            var controller = MIDIControllerFactory.GetMidiController(protocol);

            if (args.Length > 0)
            {
                WriteMIDIDeviceNames(controller);
            }
            else
            {
                Console.WriteLine("Create Bridge Object");
                if (midiInputDevice == null || midiOutputDevice == null)
                {
                    if (midiInputDevice == null)
                    {
                        Console.WriteLine("The input device name is mandantory in the config file. (MIDI-Input-Name)");
                    }
                    if (midiOutputDevice == null)
                    {
                        Console.WriteLine("The ouput device name is mandantory in the config file. (MIDI-Output-Name)");
                    }
                    WriteMIDIDeviceNames(controller);
                }
                else
                {
                    Console.WriteLine("Set controller message event....");
                    controller.MessageReceived += (obj, e) =>
                    {
                        lock (balanceLock)
                        {
                            Console.WriteLine(e.Message);
                        }
                    };

                    Console.WriteLine("Connect input device...");
                    controller.ConnectInputDevice(midiInputDevice);
                    Console.WriteLine("Connect output device...");
                    controller.ConnectOutputDevice(midiOutputDevice);
                }

                Action <string, bool> messageWriter = (string messages, bool isDebugMessage) =>
                {
                    if (!isDebugMessage || (isDebugMessage && viewDebugMessage))
                    {
                        var m = messages.Split('\n');
                        foreach (var message in m)
                        {
                            if (!message.StartsWith("3:::RTA^") && !message.StartsWith("RTA^") &&
                                !message.StartsWith("3:::VU2^") && !message.StartsWith("VU2^")
                                )
                            {
                                lock (balanceLock)
                                {
                                    Console.WriteLine(message);
                                }
                            }
                        }
                    }
                };
                Console.WriteLine("Start bridge...");

                BridgeSettings settings = new BridgeSettings(address, controller, messageWriter);
                if (syncID != null)
                {
                    settings.SyncID = syncID;
                }
                if (recButtonBahavior != null)
                {
                    switch (recButtonBahavior.ToLower())
                    {
                    case "onlymtk":
                        settings.RecButtonBehavior = BridgeSettings.RecButtonBehaviorEnum.OnlyMTK;
                        break;

                    case "only2track":
                        settings.RecButtonBehavior = BridgeSettings.RecButtonBehaviorEnum.OnlyTwoTrack;
                        break;

                    default:
                        settings.RecButtonBehavior = BridgeSettings.RecButtonBehaviorEnum.TwoTrackAndMTK;
                        break;
                    }
                }
                if (channelRecButtonBahavior != null)
                {
                    switch (channelRecButtonBahavior.ToLower())
                    {
                    case "phantom":
                        settings.ChannelRecButtonBehavior = BridgeSettings.ChannelRecButtonBehaviorEnum.Phantom;
                        break;

                    default:
                        settings.ChannelRecButtonBehavior = BridgeSettings.ChannelRecButtonBehaviorEnum.Rec;
                        break;
                    }
                }
                if (auxButtonBehavior != null)
                {
                    switch (auxButtonBehavior.ToLower())
                    {
                    case "lock":
                        settings.AuxButtonBehavior = BridgeSettings.AuxButtonBehaviorEnum.Lock;
                        break;

                    default:
                        settings.AuxButtonBehavior = BridgeSettings.AuxButtonBehaviorEnum.Release;
                        break;
                    }
                }
                using (UI24RBridge bridge = new UI24RBridge(settings))
                {
                    while (!Console.KeyAvailable)
                    {
                    }
                }
            }
        }