diff options
Diffstat (limited to 'src/components/protocol_handler/src/service_status_update_handler.cc')
-rw-r--r-- | src/components/protocol_handler/src/service_status_update_handler.cc | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/components/protocol_handler/src/service_status_update_handler.cc b/src/components/protocol_handler/src/service_status_update_handler.cc new file mode 100644 index 0000000000..7b2c67ea23 --- /dev/null +++ b/src/components/protocol_handler/src/service_status_update_handler.cc @@ -0,0 +1,117 @@ +#include "protocol_handler/service_status_update_handler.h" +#include "interfaces/HMI_API.h" + +namespace protocol_handler { + +CREATE_LOGGERPTR_GLOBAL(logger_, "ServiceStatusUpdateHandler") + +hmi_apis::Common_ServiceType::eType GetHMIServiceType( + protocol_handler::ServiceType service_type) { + using namespace hmi_apis; + using namespace protocol_handler; + switch (service_type) { + case SERVICE_TYPE_RPC: { + return Common_ServiceType::RPC; + } + case SERVICE_TYPE_AUDIO: { + return Common_ServiceType::AUDIO; + } + case SERVICE_TYPE_NAVI: { + return Common_ServiceType::VIDEO; + } + default: { return Common_ServiceType::INVALID_ENUM; } + } +} + +void ServiceStatusUpdateHandler::OnServiceUpdate( + const uint32_t connection_key, + const protocol_handler::ServiceType service_type, + ServiceStatus service_status) { + using namespace hmi_apis; + typedef utils::Optional<Common_ServiceStatusUpdateReason::eType> + UpdateReasonOptional; + LOG4CXX_AUTO_TRACE(logger_); + auto hmi_service_type = GetHMIServiceType(service_type); + + switch (service_status) { + case ServiceStatus::SERVICE_RECEIVED: { + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_RECEIVED, + UpdateReasonOptional(UpdateReasonOptional::EMPTY)); + } + case ServiceStatus::SERVICE_ACCEPTED: { + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_ACCEPTED, + UpdateReasonOptional(UpdateReasonOptional::EMPTY)); + } + case ServiceStatus::SERVICE_START_FAILED: { + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_REJECTED, + UpdateReasonOptional(UpdateReasonOptional::EMPTY)); + } + case ServiceStatus::PTU_FAILED: { + auto update_reason = Common_ServiceStatusUpdateReason::PTU_FAILED; + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_REJECTED, + update_reason); + } + case ServiceStatus::CERT_INVALID: { + auto update_reason = Common_ServiceStatusUpdateReason::INVALID_CERT; + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_REJECTED, + update_reason); + } + case ServiceStatus::INVALID_TIME: { + auto update_reason = Common_ServiceStatusUpdateReason::INVALID_TIME; + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_REJECTED, + update_reason); + } + case ServiceStatus::PROTECTION_ENFORCED: { + auto update_reason = + Common_ServiceStatusUpdateReason::PROTECTION_ENFORCED; + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_REJECTED, + update_reason); + } + case ServiceStatus::PROTECTION_DISABLED: { + auto update_reason = + Common_ServiceStatusUpdateReason::PROTECTION_DISABLED; + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_ACCEPTED, + update_reason); + } + case ServiceStatus::UNSECURE_START_FAILED: { + auto update_reason = + Common_ServiceStatusUpdateReason::PROTECTION_DISABLED; + return listener_->ProcessServiceStatusUpdate( + connection_key, + hmi_service_type, + Common_ServiceEvent::REQUEST_REJECTED, + update_reason); + } + default: { + LOG4CXX_WARN(logger_, + "Received unknown ServiceStatus: " + << static_cast<int32_t>(service_status)); + return; + } + } +} +} // namespace protocol_handler |