2 * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * @file tskm_local_type.h
18 * @brief \~english localtype of tskm
20 /** @addtogroup BaseSystem
23 /** @addtogroup system_service
27 /** @addtogroup task_manager
28 * @ingroup system_service
31 #ifndef TASK_MANAGER_SERVER_INCLUDE_SYSTEM_SERVICE_TSKM_LOCAL_TYPE_H_
32 #define TASK_MANAGER_SERVER_INCLUDE_SYSTEM_SERVICE_TSKM_LOCAL_TYPE_H_
36 #include <sys/types.h>
37 #include <native_service/frameworkunified_types.h>
38 #include "system_service/INI_API.hpp"
39 #include "system_service/tskm_type.h"
41 //==================================================
43 //==================================================
46 #define TSKM_CFG_WAIT_SHUTDOWN 10000
48 #define TSKM_CFG_WAIT_SHUTDOWN 1 // Handy for test
49 #warning TSKM_CFG_WAIT_SHUTDOWN is temorary
52 #define TSKM_CFG_TOUCH_TIMEOUT 2 // TOUCH time-out
54 //==================================================
55 // Task manager internal
56 //==================================================
58 #define TSKM_ST_ACCOFF 0x01000000U // ACC-OFF (Default) No transition here
59 #define TSKM_ST_ACCON 0x02000000U // ACC-ON
60 #define TSKM_ST_WAKEUP 0x02010000U // Gradual startup
61 #define TSKM_ST_RUNNING 0x02020000U // Running (Startup completed)
62 #define TSKM_ST_DOWN 0x02040000U // Gradual Terminating
64 typedef uint32_t TSKM_STATE_t;
65 #define TSKM_STATE_MASK0 0xFF000000U
66 #define TSKM_STATE_MASK1 0xFFFF0000U
67 #define TSKM_STATE_MASK2 0xFFFFFF00U
68 #define TSKM_STATE_MASK3 0xFFFFFFFFU
70 // Global step IDs for gradual starting
71 typedef uint32_t TSKM_GLOBAL_STEP_t;
72 #define TSKM_GSTEP_NONE 0x00000000U //
73 #define TSKM_GSTEP_BUPCHK 0x00000001U
76 typedef uint32_t TSKM_LOCAL_STEP_t;
77 #define TSKM_LSTEP_LAST 0xFFFFFFF0U // Executing to end of local steps
78 #define TSKM_LSTEP_SHM 0xFFFFFFF1U // Creating shared memory
79 #define TSKM_LSTEP_BUPCHK 0xFFFFFFF2U // Checking backup memory
80 #define TSKM_LSTEP_ALL 0xFFFFFFF3U // Executing all user definitions
82 /************************************************************
83 * Structure of gradual startup/termination structure
84 (When this structure is modified, structure of parsexml is also changed)
85 *************************************************************/
86 // Structure of request for services
88 TSKM_SVCID_t svcId; // Service ID
89 TSKM_LOCAL_STEP_t localStep; // Local step number
90 } TSKM_GSTEP_REQ_INFO_t;
92 // Structure of gradual startup/termination
96 // List of executing services
98 TSKM_SVCID_t* execSvcIdList;
102 TSKM_GSTEP_REQ_INFO_t* reqList;
104 // Event completion wait conditions
105 uint64_t nextTransCond;
109 uint32_t gstepIdx; // Step index
110 uint32_t gstepNum; // Step number
111 TSKM_GSTEP_t* gstep; // Gradual startup/termination info
112 uint64_t compState; // Status of receiving for Event completion notification
115 //********* Non-volatile management information ****************
117 #define TSKM_NV_STRUCT_VERSION "v000" // Compatible version of non-volatile management structure
118 #define TSKM_SVC_RESERVE_MAX (8) // Maximum number of reserved services to startup
120 #define TSKM_NV_SIZE_ALL (512)
121 #define TSKM_NV_SIZE_HEADER (32)
122 #define TSKM_NV_SIZE_FOOTER (32)
123 #define TSKM_NV_SIZE_BODY (TSKM_NV_SIZE_ALL - TSKM_NV_SIZE_HEADER - TSKM_NV_SIZE_FOOTER)
137 uint8_t rsvSvcNum; // Number of reserved services
138 TSKM_SVCID_t rsvSvcs[TSKM_SVC_RESERVE_MAX]; // List of services
141 // Non-volatile storage info
143 TSKM_NV_HEADER_t header;
144 uint8_t rsvHeader[TSKM_NV_SIZE_HEADER - sizeof(TSKM_NV_HEADER_t)];
146 uint8_t rsvBody[TSKM_NV_SIZE_BODY - sizeof(TSKM_NV_BODY_t)];
147 uint8_t rsvFooter[TSKM_NV_SIZE_FOOTER - sizeof(TSKM_NV_FOOTER_t)];
148 TSKM_NV_FOOTER_t footer;
153 TSKM_EV_NOP, // Do nothing
155 TSKM_EV_PRI_REQ_WAKEUP, // Startup request
156 TSKM_EV_PRI_REQ_DOWN, // Termination request
157 TSKM_EV_PRI_REQ_TOUCH,
158 TSKM_EV_PRI_REQ_DEBUGDUMP, // DebugDump request
159 TSKM_EV_PRI_REP_LOWMEM, // LowMemory detection request
162 TSKM_EV_PRI_REP_WAKEUP_COMP, // Notification of event completion at startup
163 TSKM_EV_PRI_REP_DOWN_COMP, // Notification of event completion at termination
164 TSKM_EV_PRI_REP_CONNECT, // Connecting
165 TSKM_EV_PRI_REP_DISCONNECT, // Disconnecting
166 TSKM_EV_PRI_RES_WAKEUP, // Response to startup request
167 TSKM_EV_PRI_RES_DOWN, // Response to termination request
168 TSKM_EV_PRI_RES_DEBUGDUMP, // Response to DebugDump request
169 TSKM_EV_PRI_REQ_EXIT, // Response to terminating request
172 TSKM_EV_SVC_REP_TERM, // Termination of service
175 TSKM_EV_API_REQ_REBOOT, // Reboot system
176 TSKM_EV_API_REQ_SVC_CTL, // Startup service
177 TSKM_EV_API_REQ_SVC_DISABLE, // Prohibit starting service
180 TSKM_EV_LCL_REQ_STOP, // Termination request
181 TSKM_EV_LCL_CHG_SVC_STATE, // State Change of service
182 TSKM_EV_LCL_REQ_SDUMP, // Dump of service list
183 TSKM_EV_LCL_REP_TIMEOUT, // Occured Timeout
184 TSKM_EV_LCL_REP_POLLING, // Polling request
185 TSKM_EV_LCL_REP_LOWMEM, // Notification of LowMemory detection
186 TSKM_EV_LCL_REQ_TRANS_STEP, // Gradual transitioning request
189 #define TSKM_EV_BOOTINFO_SIZE sizeof(T_SS_SM_START_DataStructType)
190 #define TSKM_EV_EXTBOOTINFO_SIZE sizeof(T_SS_SM_START_ExtDataStructType)
194 TSKM_LOCAL_STEP_t localStep;
195 char bootInfo[TSKM_EV_BOOTINFO_SIZE];
196 char extBootInfo[TSKM_EV_EXTBOOTINFO_SIZE];
197 TSKM_BOOL_t isDynamic; // Nonresident task?
198 } TSKM_EV_PRI_REQ_WAKEUP_PRM_t;
201 TSKM_LOCAL_STEP_t localStep;
202 } TSKM_EV_PRI_REQ_DOWN_PRM_t;
207 } TSKM_EV_PRI_REP_WAKEUP_COMP_PRM_t;
211 } TSKM_EV_PRI_REP_DOWN_COMP_PRM_t;
215 } TSKM_EV_PRI_REP_CONNECT_PRM_t;
219 TSKM_BOOL_t isShmDone;
220 TSKM_BOOL_t isStepDone;
221 } TSKM_EV_PRI_RES_WAKEUP_PRM_t;
225 } TSKM_EV_PRI_RES_DOWN_PRM_t;
227 #define TSKM_EV_DEBUGDUMP_SIZE 4096
230 char dumpMsg[TSKM_EV_DEBUGDUMP_SIZE];
231 } TSKM_EV_PRI_EX_RES_DEBUGDUMP_PRM_t;
238 } TSKM_EV_LCL_CHG_SVC_STATE_PRM_t;
240 // The structure must be on a stack
241 typedef struct _TSKM_EVENT_INFO_t {
245 TSKM_BOOL_t hasExtend;
250 TSKM_EV_PRI_REQ_WAKEUP_PRM_t reqWakeup;
251 TSKM_EV_PRI_REQ_DOWN_PRM_t reqDown;
254 TSKM_EV_PRI_REP_WAKEUP_COMP_PRM_t repWakeupComp;
255 TSKM_EV_PRI_REP_DOWN_COMP_PRM_t repDownComp;
256 TSKM_EV_PRI_REP_CONNECT_PRM_t repConnect;
257 TSKM_EV_PRI_RES_WAKEUP_PRM_t resWakeup;
258 TSKM_EV_PRI_RES_DOWN_PRM_t resDown;
261 TSKM_EV_LCL_CHG_SVC_STATE_PRM_t chgSvc;
263 _TSKM_EVENT_INFO_t() {
267 hasExtend = TSKM_FALSE;
271 ~_TSKM_EVENT_INFO_t() {
272 if (hasExtend && !extendPrm) {
279 TSKM_DATAINIT_REQ = 800,
284 #endif // TASK_MANAGER_SERVER_INCLUDE_SYSTEM_SERVICE_TSKM_LOCAL_TYPE_H_