96 lines
No EOL
2.8 KiB
C++
96 lines
No EOL
2.8 KiB
C++
/*******************************************************************************
|
|
Copyright © 2017 Philips Lighting Holding B.V.
|
|
All Rights Reserved.
|
|
********************************************************************************/
|
|
|
|
#ifndef LIBHUESTREAM_HUESTREAM_HUESTREAM_H_
|
|
#define LIBHUESTREAM_HUESTREAM_HUESTREAM_H_
|
|
|
|
#include <memory>
|
|
#include <huestream/config/HueConfig.h>
|
|
#include <huestream/common/data/Bridge.h>
|
|
#include <huestream/common/data/Group.h>
|
|
#include <huestream/effect/base/Effect.h>
|
|
#include <huestream/connect/FeedbackMessage.h>
|
|
|
|
namespace huestream {
|
|
|
|
class IFeedbackMessageHandler{
|
|
public:
|
|
virtual ~IFeedbackMessageHandler() = default;
|
|
virtual void NewFeedbackMessage(const connectionflow::FeedbackMessage& message) const = 0;
|
|
};
|
|
|
|
typedef std::shared_ptr<IFeedbackMessageHandler> FeedbackMessageHandlerPtr;
|
|
|
|
class HueStream;
|
|
typedef shared_ptr<HueStream> HueStreamPtr;
|
|
|
|
|
|
class HueStream {
|
|
|
|
public:
|
|
static HueStreamPtr GetInstance(){
|
|
static HueStreamPtr instance = std::make_shared<HueStream>();
|
|
return instance;
|
|
}
|
|
|
|
HueStream();
|
|
virtual ~HueStream();
|
|
virtual void ShutDown();
|
|
|
|
virtual void ConnectManualBridgeInfo(BridgePtr bridge);
|
|
virtual void ConnectManualBridgeInfoAsync(BridgePtr bridge);
|
|
|
|
virtual void ResetBridgeInfo();
|
|
virtual void ResetBridgeInfoAsync();
|
|
|
|
virtual void LoadBridgeInfo();
|
|
virtual void LoadBridgeInfoAsync();
|
|
|
|
virtual void ConnectBridge();
|
|
virtual void ConnectBridgeAsync();
|
|
|
|
virtual void ConnectBridgeBackground();
|
|
virtual void ConnectBridgeBackgroundAsync();
|
|
|
|
virtual void ConnectBridgeManualIp(const string &ipAddress);
|
|
virtual void ConnectBridgeManualIpAsync(const string &ipAddress);
|
|
|
|
virtual void SelectGroup(int id);
|
|
virtual void SelectGroupAsync(int id);
|
|
virtual void SelectGroup(GroupPtr group);
|
|
virtual void SelectGroupAsync(GroupPtr group);
|
|
|
|
virtual void AbortConnecting();
|
|
|
|
virtual ConnectResult GetConnectionResult();
|
|
|
|
virtual bool IsStreamableBridgeLoaded();
|
|
virtual BridgePtr GetLoadedBridge();
|
|
virtual BridgeStatus GetLoadedBridgeStatus();
|
|
virtual GroupListPtr GetLoadedBridgeGroups();
|
|
|
|
virtual void Start();
|
|
virtual void StartAsync();
|
|
virtual void RenderSingleFrame();
|
|
virtual void Stop();
|
|
|
|
virtual void LockEngine();
|
|
virtual void UnlockEngine();
|
|
virtual void AddEffect(EffectPtr newEffect);
|
|
virtual EffectPtr GetEffectByName(string name);
|
|
virtual void RegisterFeedbackHandler(FeedbackMessageHandlerPtr handler);
|
|
virtual void RegisterFeedbackCallback(FeedbackMessageCallback callback);
|
|
|
|
protected:
|
|
virtual void NewFeedbackMessage(const connectionflow::FeedbackMessage& message);
|
|
virtual void Render();
|
|
virtual void PrepareRenderEngine();
|
|
FeedbackMessageHandlerPtr _handler;
|
|
FeedbackMessageCallback _callback;
|
|
};
|
|
|
|
}
|
|
|
|
#endif // LIBHUESTREAM_HUESTREAM_HUESTREAM_H_
|