95 lines
No EOL
2.7 KiB
C++
95 lines
No EOL
2.7 KiB
C++
/*******************************************************************************
|
|
Copyright © 2017 Philips Lighting Holding B.V.
|
|
All Rights Reserved.
|
|
********************************************************************************/
|
|
|
|
#ifndef LIBHUESTREAM_HUESTREAM_COMMUNICATION_CONNECTIONFLOW_CONNECTIONFLOW_H_
|
|
#define LIBHUESTREAM_HUESTREAM_COMMUNICATION_CONNECTIONFLOW_CONNECTIONFLOW_H_
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <functional>
|
|
#include <map>
|
|
#include <huestream/common/data/Bridge.h>
|
|
#include "FeedbackMessage.h"
|
|
#include "IConnectionFlowFactory.h"
|
|
#include "IBridgeSearcher.h"
|
|
|
|
|
|
namespace huestream {
|
|
namespace connectionflow {
|
|
|
|
enum ConnectionFlowState {
|
|
Idle,
|
|
Loading,
|
|
SearchingFirst,
|
|
SearchingRetry,
|
|
Authenticating,
|
|
Retrieving,
|
|
Saving,
|
|
Activating
|
|
};
|
|
|
|
class ConnectionFlow {
|
|
public:
|
|
ConnectionFlow(ConnectionFlowFactoryPtr factory);
|
|
virtual ~ConnectionFlow();
|
|
virtual void Load();
|
|
virtual void ConnectToBridge();
|
|
virtual void ConnectToBridgeBackground();
|
|
virtual void ConnectToBridgeWithIp(const string &ipAddress);
|
|
virtual void SetManual(BridgePtr bridge);
|
|
virtual void ResetBridge();
|
|
virtual void SelectGroup(int id);
|
|
virtual void StartStream();
|
|
virtual void Abort();
|
|
virtual void NewMessage(const FeedbackMessage &message);
|
|
|
|
protected:
|
|
void DoLoad();
|
|
void DoConnectToBridge();
|
|
void DoConnectToBridgeBackground();
|
|
void DoConnectToBridgeWithIp(const string &ipAddress);
|
|
void DoSetManual(BridgePtr bridge);
|
|
void DoResetBridge();
|
|
void DoSelectGroup(int id);
|
|
void DoStartStream();
|
|
void DoAbort();
|
|
|
|
bool Start(RequestType request);
|
|
void StartLoading();
|
|
void LoadingCompleted(OperationResult result, BridgePtr bridge);
|
|
|
|
void StartBridgeSearch();
|
|
void BridgeSearchCompleted(BridgeListPtr bridges);
|
|
void FilterInvalidIpAddresses(BridgeListPtr bridges);
|
|
bool ContainsValidBridge(BridgeListPtr bridges);
|
|
bool RediscoverLostActiveBridge(BridgeListPtr bridges);
|
|
|
|
void StartAuthentication(BridgePtr bridge);
|
|
void StartAuthentication(BridgeListPtr bridges);
|
|
void AuthenticationCompleted(BridgePtr bridge);
|
|
void PushLinkBridge(BridgePtr bridge);
|
|
|
|
void StartRetrieveFullConfig();
|
|
void RetrieveFullConfigCompleted(OperationResult result, BridgePtr bridge);
|
|
|
|
void ReportActionRequired();
|
|
|
|
void ActivateStreaming();
|
|
void StartSaving();
|
|
void SavingCompleted(OperationResult r);
|
|
void Finish();
|
|
|
|
ConnectionFlowFactoryPtr _factory;
|
|
BridgeSearcherPtr _bridgeSearcher;
|
|
ConnectionFlowState _state;
|
|
RequestType _request;
|
|
int _ongoingAuthenticationCount;
|
|
BridgeListPtr _backgroundDiscoveredBridges;
|
|
|
|
PROP_DEFINE(ConnectionFlow, BridgePtr, activeBridge, ActiveBridge);
|
|
};
|
|
}
|
|
}
|
|
#endif // LIBHUESTREAM_HUESTREAM_COMMUNICATION_CONNECTIONFLOW_CONNECTIONFLOW_H_
|