91 lines
4.1 KiB
C++
91 lines
4.1 KiB
C++
/*******************************************************************************
|
||
Copyright <20> 2017 Philips Lighting Holding B.V.
|
||
All Rights Reserved.
|
||
********************************************************************************/
|
||
|
||
#include <huestream/common/http/Http.h>
|
||
#include <huestream/connect/FileStorageAccessor.h>
|
||
#include <huestream/common/time/TimeManager.h>
|
||
#include <huestream/stream/UDPConnector.h>
|
||
#include <huestream/stream/DTLSConnector.h>
|
||
#include <huestream/common/language/DummyTranslator.h>
|
||
#include <huestream/stream/DefaultEntropyProvider.h>
|
||
#include "HueConfig.h"
|
||
|
||
namespace huestream {
|
||
|
||
static HueConfigPtr instance = make_shared<HueConfig>();
|
||
|
||
PROP_IMPL(HueConfig, HueSettingsPtr, hueSettings, HueSettings);
|
||
PROP_IMPL(HueConfig, AppSettingsPtr, appSettings, AppSettings);
|
||
PROP_IMPL(HueConfig, HttpPtr, http, Http);
|
||
PROP_IMPL(HueConfig, BridgeStorageAccessorPtr, storageAccessor, StorageAccessor);
|
||
PROP_IMPL(HueConfig, MessageDispatcherPtr, dispatcher, Dispatcher);
|
||
PROP_IMPL(HueConfig, HueConnectPtr, hueConnect, HueConnect);
|
||
PROP_IMPL(HueConfig, TimeManagerPtr, timeManager, TimeManager);
|
||
PROP_IMPL(HueConfig, EnginePtr, engine, Engine);
|
||
PROP_IMPL(HueConfig, BridgePtr, activeBridge, ActiveBridge);
|
||
PROP_IMPL(HueConfig, StreamRenderCallback, streamRenderCallback, StreamRenderCallback);
|
||
PROP_IMPL(HueConfig, StreamPtr, stream, Stream);
|
||
PROP_IMPL(HueConfig, FeedbackMessageCallback, feedbackMessageCallback, FeedbackMessageCallback);
|
||
PROP_IMPL(HueConfig, HueCallbackHandlerPtr, callbackHandler, CallbackHandler);
|
||
PROP_IMPL(HueConfig, ConnectorPtr, connector, Connector);
|
||
PROP_IMPL(HueConfig, TranslatorPtr, translator, Translator);
|
||
PROP_IMPL(HueConfig, EntropyProviderBasePtr, entropyProvider, EntropyProvider);
|
||
|
||
HueConfigPtr HueConfig::GetInstance() {
|
||
return instance;
|
||
}
|
||
|
||
void HueConfig::InitializeDefaultConfig(const std::string &name, const std::string &platform, const std::string &language, const std::string ®ion) {
|
||
InitializeBase(name, platform, language, region);
|
||
instance->SetConnector(std::make_shared<DTLSConnector>());
|
||
}
|
||
|
||
void HueConfig::InitializeWithUDP(const std::string &name, const std::string &platform, const std::string &language, const std::string ®ion) {
|
||
InitializeBase(name, platform, language, region);
|
||
instance->SetConnector(std::make_shared<UDPConnector>());
|
||
};
|
||
|
||
void HueConfig::InitializeBase(const std::string &name, const std::string &platform, const std::string &language, const std::string ®ion) {
|
||
auto hueSettings = std::make_shared<HueSettings>();
|
||
instance->SetHueSettings(hueSettings);
|
||
auto appSettings = std::make_shared<AppSettings>();
|
||
appSettings->SetName(name);
|
||
appSettings->SetPlatform(platform);
|
||
appSettings->SetLanguage(language);
|
||
appSettings->SetRegion(region);
|
||
instance->SetAppSettings(appSettings);
|
||
instance->SetActiveBridge(std::make_shared<Bridge>());
|
||
instance->SetDispatcher(std::make_shared<MessageDispatcher>());
|
||
instance->GetDispatcher()->Execute();
|
||
instance->SetHttp(std::make_shared<Http>());
|
||
instance->SetStorageAccessor(std::make_shared<FileStorageAccessor>("bridge.json"));
|
||
instance->SetHueConnect(std::make_shared<HueConnect>());
|
||
instance->SetTimeManager(std::make_shared<TimeManager>());
|
||
instance->SetEngine(std::make_shared<Engine>());
|
||
instance->SetStream(std::make_shared<Stream>());
|
||
instance->SetTranslator(std::make_shared<DummyTranslator>());
|
||
instance->SetEntropyProvider(std::make_shared<DefaultEntropyProvider>());
|
||
}
|
||
|
||
void HueConfig::TearDown() {
|
||
instance->SetHueSettings(nullptr);
|
||
instance->SetAppSettings(nullptr);
|
||
instance->SetActiveBridge(nullptr);
|
||
if (instance->GetDispatcher() != nullptr) {
|
||
instance->GetDispatcher()->Stop();
|
||
instance->SetDispatcher(nullptr);
|
||
}
|
||
instance->SetHttp(nullptr);
|
||
instance->SetStorageAccessor(nullptr);
|
||
instance->SetHueConnect(nullptr);
|
||
instance->SetConnector(nullptr);
|
||
instance->SetTimeManager(nullptr);
|
||
instance->SetEngine(nullptr);
|
||
instance->SetStream(nullptr);
|
||
instance->SetTranslator(nullptr);
|
||
instance->SetEntropyProvider(nullptr);
|
||
}
|
||
|
||
}
|