Re-organized sub-directory by category
[staging/basesystem.git] / service / system / logger_service / server / include / ss_logger_error_event.h
1 /*
2  * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 ///////////////////////////////////////////////////////////////////////////////
18 /// \ingroup  tag_SS_LoggerService
19 /// \brief    This file supports error event logging.
20 ///
21 ///////////////////////////////////////////////////////////////////////////////
22 #ifndef LOGGER_SERVICE_SERVER_INCLUDE_SS_LOGGER_ERROR_EVENT_H_
23 #define LOGGER_SERVICE_SERVER_INCLUDE_SS_LOGGER_ERROR_EVENT_H_
24
25 #include <time.h>
26 #include <native_service/frameworkunified_types.h>
27 #include <native_service/frameworkunified_framework_if.h>
28 #include <system_service/ss_system_types.h>
29 #include <system_service/ss_system_timer.h>
30 #include <system_service/ss_system_manager_protocol.h>
31 #include <string>
32 #include <vector>
33 #include "ss_logger_popups.h"
34 #include "ss_logger_common.h"
35 #include "ss_logger_reader_writer_control.h"
36 #include "ss_logger_error_event_cfg.h"
37 #include "ss_logger_cfg.h"
38 #include "ss_logger_util.h"
39 #include "readerWriter/reader_writer.h"
40 #include "readerWriter/reader_writer_cfg.h"
41 #include "ss_logger_error_event_storage.h"
42 #include "ss_logger_error_event_can_evt_reply.h"
43
44 class CErrorEvent {
45  public:
46   CErrorEvent();
47   ~CErrorEvent();
48
49   EFrameworkunifiedStatus Initialize(HANDLE f_hApp, CLoggerCfg *f_pLoggerCfg,
50                         CReaderWriterControl *f_pReaderWriterControl,
51                         HANDLE f_thrdEvntLogWriter,
52                         std::string f_strEvntLogQueWorkerName);
53
54   EFrameworkunifiedStatus RegisterSessionErrorEvent(HANDLE f_hApp);
55
56   EFrameworkunifiedStatus OnOpenSession(HANDLE f_hApp, PCSTR f_pRequesterName,
57                            HANDLE f_hSession);
58
59   EFrameworkunifiedStatus OnCloseSession(HANDLE f_hApp, PCSTR f_pRequesterName,
60                             HANDLE f_hSession);
61
62   EFrameworkunifiedStatus StartLogging(HANDLE f_hApp, EErrorEventType f_eventType);
63
64   EFrameworkunifiedStatus sendDiagEventErrorResponse(EELL_ErrorCode f_errCode);
65
66   EFrameworkunifiedStatus sendDiagEventErrorResponse(EELL_ErrorCode f_errCode,
67                                         std::string f_destName);
68
69   EFrameworkunifiedStatus sendDiagEventResponse(void);
70
71   EFrameworkunifiedStatus SetDiagEventSourceName(std::string f_serviceName);
72
73   void SetMileage(UI_32 f_mileage);
74
75   void SetDiagSessionHandle(HANDLE hSession);
76
77   EFrameworkunifiedStatus SaveNaviLog(EPWR_SHUTDOWN_TRIGGER_TYPE errorType);
78   EFrameworkunifiedStatus CreateKernelLog(HANDLE f_hApp, SS_LOGGER_KLOG_OPE_TYPE type);
79
80  private:
81   typedef enum {
82     kSSL_ERROR_EVENT_TIMER_LOGGING_START_RSPN,
83     kSSL_ERROR_EVENT_TIMER_ARTIFACT_RSPN,
84     kSSL_ERROR_EVENT_TIMER_END
85   } ESSLErrorEventTimers;
86
87   // Logging Protocol Function Prototypes
88   EFrameworkunifiedStatus OnStartLogging(HANDLE f_hApp);
89   EFrameworkunifiedStatus OnLogStartResponse(HANDLE f_hApp);
90   EFrameworkunifiedStatus OnLogStartResponseTimeout(HANDLE f_hApp);
91   EFrameworkunifiedStatus RequestNextArtifact(HANDLE f_hApp);
92   EFrameworkunifiedStatus OnArtifactResponse(HANDLE f_hApp);
93   EFrameworkunifiedStatus OnArtifactResponseTimeout(HANDLE f_hApp);
94
95   // Protocol functions sent to self.
96   EFrameworkunifiedStatus OnArtifactRequest(HANDLE f_hApp);
97
98   // Error Event Artifact Request Function Prototypes
99   EFrameworkunifiedStatus SendLogArtifactResponseToSelf(
100       HANDLE f_hApp, EArtifactId f_artifactId,
101       std::string f_artifactFilePathAndName);
102
103   EFrameworkunifiedStatus OnObtainLoggerserviceLogRequest(HANDLE f_hApp);
104   EFrameworkunifiedStatus OnObtainTransmitLogRequest(HANDLE f_hApp);
105   EFrameworkunifiedStatus OnObtainPerformanceLogRequest(HANDLE f_hApp);
106   EFrameworkunifiedStatus OnObtainScreenShotRequest(HANDLE f_hApp);
107   EFrameworkunifiedStatus OnObtainScreenShotResponse(HANDLE f_hApp);
108   EFrameworkunifiedStatus OnObtainKernelLogInfoRequest(HANDLE f_hApp);
109   EFrameworkunifiedStatus OnObtainDRInitialLogRequest(HANDLE f_hApp);
110   EFrameworkunifiedStatus OnObtainDRLocationLogRequest(HANDLE f_hApp);
111   EFrameworkunifiedStatus OnStorageResponseOk(HANDLE f_hApp);
112   EFrameworkunifiedStatus OnStorageResponseWriteFailed(HANDLE f_hApp);
113   EFrameworkunifiedStatus OnStorageResponseNotFound(HANDLE f_hApp);
114   EFrameworkunifiedStatus OnStorageResponseNoWritten(HANDLE f_hApp);
115   EFrameworkunifiedStatus CheckPathForArtifact(HANDLE f_hApp, TLoggingArtifact f_artifact);
116   EFrameworkunifiedStatus OnClearAllLogRequest(HANDLE f_hApp);
117   EFrameworkunifiedStatus OnNaviLogRequest(HANDLE f_hApp);
118
119   // verify function for external storage
120   EFrameworkunifiedStatus VerifyExtStorage(TLoggerErrorEvent event);
121   bool IsNeedVerify(EErrorEventType type);
122
123   HANDLE m_hApp;
124   bool m_bIsPrevEventCompleted;
125   CErrorEventCfg m_errorEventCfg;
126   TLoggerErrorEvent m_errorEventNtfData;
127   Timer m_errorEventTimers[kSSL_ERROR_EVENT_TIMER_END];
128   std::vector<TLoggingArtifact> m_artifactRequestVec;
129   TArtifactResponseVec m_artifactResponseVec;
130   std::vector<FrameworkunifiedProtocolCallbackHandler> m_requesterCallbacksVec;
131   std::string m_archiveDestination;
132   CLoggerUtil m_loggerUtil;
133   CLoggerPopups m_loggerPopups;
134   CLoggerCfg* m_pLoggerCfg;
135   CLoggerErrorEventStorage m_loggerStorage;
136   CLoggerErrorEventCANEvtReply m_loggerCanEvent;
137   static const UI_32 m_loggingStartRspnToSec = 1;
138   static const UI_32 m_screenShotRspnToSec = 2;
139   CReaderWriterControl* m_pReaderWriterControl;
140
141   std::string m_ServiceName;
142   uint32_t m_time;
143   UI_32 m_currentEventTriggerNumber;
144   HANDLE m_diagsessionhandle;
145
146   HANDLE m_thrdEvntLogWriter;
147
148  public:
149   int m_sfd;
150 };
151
152 EFrameworkunifiedStatus SSLogger_SendtoSM(HANDLE f_hApp, TLoggingArtifact f_artifact);
153 EFrameworkunifiedStatus SSLogger_SendtoSelf(HANDLE f_hApp, TLoggingArtifact f_artifact);
154
155 #endif  // LOGGER_SERVICE_SERVER_INCLUDE_SS_LOGGER_ERROR_EVENT_H_
156