JD2022-TU1/main/extern/Hue/libhuestream/huestream/connect/FeedbackMessage.cpp

151 lines
5.2 KiB
C++

/*******************************************************************************
Copyright © 2017 Philips Lighting Holding B.V.
All Rights Reserved.
********************************************************************************/
#include <huestream/config/HueConfig.h>
#include "FeedbackMessage.h"
namespace huestream {
namespace connectionflow {
FeedbackMessage::FeedbackMessage(RequestType reqType, Id id) :
_id(id), _requestType(reqType), _bridge(std::make_shared<Bridge>()) {
}
FeedbackMessage::FeedbackMessage(RequestType reqType, Id id, BridgePtr bridge) :
_id(id), _requestType(reqType), _bridge(bridge) {
}
FeedbackMessage::~FeedbackMessage() {
}
std::map<Id, FeedbackType> FeedbackMessage::idTypeMap = {
{PROCEDURE_STARTED, INFO},
{START_LOADING, INFO},
{FINISH_LOADING_NO_BRIDGE_CONFIGURED, INFO},
{FINISH_LOADING_BRIDGE_CONFIGURED, INFO},
{START_SEARCHING, INFO},
{FINISH_SEARCHING_NO_BRIDGES_FOUND, INFO},
{FINISH_SEARCH_BRIDGES_FOUND, INFO},
{START_AUTHORIZING, INFO},
{PRESS_PUSH_LINK, USER},
{FINISH_AUTHORIZING_AUTHORIZED, INFO},
{FINISH_AUTHORIZING_FAILED, INFO},
{START_RETRIEVING, INFO},
{FINISH_RETRIEVING_FAILED, INFO},
{FINISH_RETRIEVING_READY_TO_START, INFO},
{FINISH_RETRIEVING_ACTION_REQUIRED, INFO},
{START_SAVING, INFO},
{FINISH_SAVING_SAVED, INFO},
{FINISH_SAVING_FAILED, INFO},
{START_ACTIVATING, INFO},
{FINISH_ACTIVATING_ACTIVE, INFO},
{FINISH_ACTIVATING_FAILED, INFO},
{NO_BRIDGE_FOUND, USER},
{BRIDGE_NOT_FOUND, USER},
{INVALID_MODEL, USER},
{INVALID_VERSION, USER},
{NO_GROUP_AVAILABLE, USER},
{BUSY_STREAMING, USER},
{SELECT_GROUP, USER},
{DONE_NO_BRIDGE_FOUND, INFO},
{DONE_BRIDGE_FOUND, INFO},
{DONE_RESET, INFO},
{DONE_ACTION_REQUIRED, INFO},
{DONE_COMPLETED, INFO},
{DONE_ABORTED, INFO},
{PROCEDURE_FINISHED, INFO},
{INTERNAL_ERROR, USER}
};
std::map<Id, string> FeedbackMessage::idTagMap = {
{PROCEDURE_STARTED, "PROCEDURE_STARTED"},
{START_LOADING, "START_LOADING"},
{FINISH_LOADING_NO_BRIDGE_CONFIGURED, "FINISH_LOADING_NO_BRIDGE_CONFIGURED"},
{FINISH_LOADING_BRIDGE_CONFIGURED, "FINISH_LOADING_BRIDGE_CONFIGURED"},
{START_SEARCHING, "START_SEARCHING"},
{FINISH_SEARCHING_NO_BRIDGES_FOUND, "FINISH_SEARCHING_NO_BRIDGES_FOUND"},
{FINISH_SEARCH_BRIDGES_FOUND, "FINISH_SEARCH_BRIDGES_FOUND"},
{START_AUTHORIZING, "START_AUTHORIZING"},
{PRESS_PUSH_LINK, "PRESS_PUSH_LINK"},
{FINISH_AUTHORIZING_AUTHORIZED, "FINISH_AUTHORIZING_AUTHORIZED"},
{FINISH_AUTHORIZING_FAILED, "FINISH_AUTHORIZING_FAILED"},
{START_RETRIEVING, "START_RETRIEVING"},
{FINISH_RETRIEVING_FAILED, "FINISH_RETRIEVING_FAILED"},
{FINISH_RETRIEVING_READY_TO_START, "FINISH_RETRIEVING_READY_TO_START"},
{FINISH_RETRIEVING_ACTION_REQUIRED, "FINISH_RETRIEVING_ACTION_REQUIRED"},
{START_SAVING, "START_SAVING"},
{FINISH_SAVING_SAVED, "FINISH_SAVING_SAVED"},
{FINISH_SAVING_FAILED, "FINISH_SAVING_FAILED"},
{START_ACTIVATING, "START_ACTIVATING"},
{FINISH_ACTIVATING_ACTIVE, "FINISH_ACTIVATING_ACTIVE"},
{FINISH_ACTIVATING_FAILED, "FINISH_ACTIVATING_FAILED"},
{NO_BRIDGE_FOUND, "NO_BRIDGE_FOUND" },
{BRIDGE_NOT_FOUND, "BRIDGE_NOT_FOUND" },
{INVALID_MODEL, "INVALID_MODEL" },
{INVALID_VERSION, "INVALID_VERSION" },
{NO_GROUP_AVAILABLE, "NO_GROUP_AVAILABLE" },
{BUSY_STREAMING, "BRIDGE_BUSY"},
{SELECT_GROUP, "SELECT_GROUP"},
{DONE_NO_BRIDGE_FOUND, "DONE_NO_BRIDGE_FOUND"},
{DONE_BRIDGE_FOUND, "DONE_BRIDGE_FOUND"},
{DONE_RESET, "DONE_RESET"},
{DONE_ACTION_REQUIRED, "DONE_ACTION_REQUIRED"},
{DONE_COMPLETED, "DONE_COMPLETED"},
{DONE_ABORTED, "DONE_ABORTED"},
{PROCEDURE_FINISHED, "PROCEDURE_FINISHED"},
{INTERNAL_ERROR, "INTERNAL_ERROR"}
};
std::map<RequestType, string> FeedbackMessage::requestStringMap = {
{None, "None"},
{LoadBridge, "Load"},
{Connect, "Connect"},
{ConnectIp, "ConnectIp"},
{SetManualBridge, "SetManual"},
{Reset, "Reset"},
{Select, "Select"},
{Activate, "Activate"}
};
PROP_IMPL(FeedbackMessage, Id, id, Id);
PROP_IMPL(FeedbackMessage, RequestType, requestType, RequestType);
PROP_IMPL(FeedbackMessage, BridgePtr, bridge, Bridge);
FeedbackType FeedbackMessage::GetMessageType() const {
auto it = idTypeMap.find(_id);
if (it != idTypeMap.end())
return it->second;
return INFO;
}
string FeedbackMessage::GetTag() const {
auto it = idTagMap.find(_id);
if (it != idTagMap.end())
return it->second;
return "UNKOWN";
}
string FeedbackMessage::GetUserMessage() const {
string userMessage = HueConfig::GetInstance()->GetTranslator()->Translate(GetTag());
auto groupOwnerByOtherClient = _bridge->GetGroupOwnedByOtherClient();
if (_id == BUSY_STREAMING && groupOwnerByOtherClient != nullptr) {
userMessage = userMessage + ": " + groupOwnerByOtherClient->GetFriendlyOwnerName() + " (" + groupOwnerByOtherClient->GetName() + ").";
}
return userMessage;
}
string FeedbackMessage::GetDebugMessage() const {
auto requestString = string("Unknown");
auto it = requestStringMap.find(_requestType);
if (it != requestStringMap.end())
requestString = it->second;
return requestString + ": " + GetTag();
}
}
}