1/*
2 * Copyright (c) 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#ifndef STARTUP_INIT_PARAM_HOOK
17#define STARTUP_INIT_PARAM_HOOK
18#include <stdio.h>
19#include <stdint.h>
20
21#include "list.h"
22
23#ifdef __cplusplus
24#if __cplusplus
25extern "C" {
26#endif
27#endif
28
29#define SERVICE_CTL_CMD_INDEX 2
30typedef struct {
31    char *name; // system parameter partial name
32    char *replace; // replace content if filed name match system parameter
33    char *cmd; // command name
34} ParamCmdInfo;
35
36const ParamCmdInfo *GetServiceStartCtrl(size_t *size);
37const ParamCmdInfo *GetServiceCtl(size_t *size);
38const ParamCmdInfo *GetStartupPowerCtl(size_t *size);
39const ParamCmdInfo *GetOtherSpecial(size_t *size);
40
41typedef struct {
42    struct ListNode node;
43    uint32_t dataId;
44    uint8_t data[0];
45} ServiceExtData;
46
47ServiceExtData *AddServiceExtData(const char *serviceName, uint32_t id, void *data, uint32_t dataLen);
48void DelServiceExtData(const char *serviceName, uint32_t id);
49ServiceExtData *GetServiceExtData(const char *serviceName, uint32_t id);
50
51#ifdef __cplusplus
52#if __cplusplus
53}
54#endif
55#endif
56#endif