private async Task ConfigureApplicationConfig()
        {
            if (_config != null)
            {
                if (_config.GpioConfig == null)
                {
                    _config.GpioConfig = new SmartBulbGpioConfig()
                    {
                        GpioColorRed   = PIN_RED,
                        GpioColorGreen = PIN_GREEN,
                        GpioColorBlue  = PIN_BLUE
                    };
                }

                _config.FlashFrequency = _config.FlashFrequency < MIN_FREQUENCY_MS ? MIN_FREQUENCY_MS : _config.FlashFrequency;

                if (_config.State == DeviceState.On)
                {
                    if (_config.GpioConfig.GpioColorRed != _loadPinRed)
                    {
                        _loadPinRed = _config.GpioConfig.GpioColorRed;
                        _gpioService.InitGPIOOutput(_loadPinRed);
                    }
                    if (_config.GpioConfig.GpioColorGreen != _loadPinGreen)
                    {
                        _loadPinGreen = _config.GpioConfig.GpioColorGreen;
                        _gpioService.InitGPIOOutput(_loadPinGreen);
                    }
                    if (_config.GpioConfig.GpioColorBlue != _loadPinBlue)
                    {
                        _loadPinBlue = _config.GpioConfig.GpioColorBlue;
                        _gpioService.InitGPIOOutput(_loadPinBlue);
                    }
                    _previousColor = ColorState.Unknown;
                }

                if (_disconnected && !_config.IgnoreFlashAlerts)
                {
                    await BlinkLED(ColorState.Green, 2, 200);

                    if (_previousColor != ColorState.Unknown)
                    {
                        SetLED(_previousColor);
                    }
                    _disconnected = false;
                }
            }
        }