1/*
2 * Copyright (c) 2020-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *    http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#include <los_base.h>
17#include <securec.h>
18#include <ohos_init.h>
19#include <cmsis_os.h>
20#include "service.h"
21#include "samgr_lite.h"
22
23#define TIME_UNLIMITED_CASE 0
24#define WAIT_BOOT_PROC ((1000) * (11))
25#define TEST_SYS_SERVICE1 "tst_sys1"
26#define TEST_SYS_SERVICE2 "tst_sys2"
27#define TEST_APP_SERVICE1 "tst_app1"
28#define TEST_APP_SERVICE2 "tst_app2"
29
30static const char *GetName(Service *service);
31static BOOL Initialize(Service *service, Identity identity);
32static BOOL MessageHandle(Service *service, Request *msg);
33static TaskConfig GetTaskConfig(Service *service);
34static Service g_testSys1 = {GetName, Initialize, MessageHandle, GetTaskConfig};
35static Service g_testSys2 = {GetName, Initialize, MessageHandle, GetTaskConfig};
36static Service g_testApp1 = {GetName, Initialize, MessageHandle, GetTaskConfig};
37static Service g_testApp2 = {GetName, Initialize, MessageHandle, GetTaskConfig};
38
39static const char *GetName(Service *service)
40{
41    if (service == &g_testSys1) {
42        return TEST_SYS_SERVICE1;
43    }
44    if (service == &g_testSys2) {
45        return TEST_SYS_SERVICE2;
46    }
47    if (service == &g_testApp1) {
48        return TEST_APP_SERVICE1;
49    }
50    if (service == &g_testApp2) {
51        return TEST_APP_SERVICE2;
52    }
53    return NULL;
54}
55
56static BOOL Initialize(Service *service, Identity identity)
57{
58    (void)identity;
59    if (service == &g_testSys1 || service == &g_testApp1) {
60        printf("[Recovery Test][Initialize]Time Out Case Running\n");
61        LOS_Msleep(WAIT_BOOT_PROC);
62        return TRUE;
63    }
64#if TIME_UNLIMITED_CASE
65    if (service == &g_testSys2 || service == &g_testApp2) {
66        printf("[Recovery Test][Initialize]Time Unlimited Case Running\n\n");
67        while (1) {
68            (void)identity;
69        }
70        return TRUE;
71    }
72#endif
73    return TRUE;
74}
75
76static BOOL MessageHandle(Service *service, Request *msg)
77{
78    (void)service;
79    (void)msg;
80    return FALSE;
81}
82
83static TaskConfig GetTaskConfig(Service *service)
84{
85    (void)service;
86    TaskConfig config = {LEVEL_HIGH, PRI_NORMAL,
87                         0x400, 16, SHARED_TASK};
88    return config;
89}
90
91static void SInit(Service *demo)
92{
93    SAMGR_GetInstance()->RegisterService(demo);
94}
95
96static void SS1Init(void)
97{
98    SInit(&g_testSys1);
99}
100
101static void SS2Init(void)
102{
103    SInit(&g_testSys2);
104}
105
106static void AS1Init(void)
107{
108    SInit(&g_testApp1);
109}
110
111static void AS2Init(void)
112{
113    SInit(&g_testApp2);
114}
115
116SYS_SERVICE_INIT(SS1Init);
117SYS_SERVICE_INIT(SS2Init);
118SYSEX_SERVICE_INIT(AS1Init);
119SYSEX_SERVICE_INIT(AS2Init);
120