JD2022-TU1/main/extern/Hue/libhuestream/huestream/HueStream.h

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_