1/*
2 * Copyright (c) 2023 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 BASE_STARTUP_PARAM_INIT_H
17#define BASE_STARTUP_PARAM_INIT_H
18#include <stdint.h>
19#include <stdio.h>
20
21#ifdef __cplusplus
22#if __cplusplus
23extern "C" {
24#endif
25#endif
26
27#ifndef BASE_STARTUP_INIT_PARAM_H
28typedef uint32_t ParamHandle;
29#endif
30
31/**
32 * 外部接口
33 * 查询参数,主要用于其他进程使用,需要给定足够的内存保存参数。
34 * 如果 value == null,获取value的长度
35 * 否则value的大小认为是len
36 *
37 */
38int SystemGetParameterName(ParamHandle handle, char *name, unsigned int len);
39
40/**
41 * 外部接口
42 * 遍历参数。
43 *
44 */
45int SystemTraversalParameter(const char *prefix,
46    void (*traversalParameter)(ParamHandle handle, void *cookie), void *cookie);
47
48long long GetSystemCommitId(void);
49
50/**
51 * 外部接口
52 * 获取参数值。
53 *
54 */
55int SystemGetParameterValue(ParamHandle handle, char *value, unsigned int *len);
56
57/**
58 * 对外接口
59 * 根据handle获取对应数据的修改标识。
60 * commitId 获取计数变化
61 *
62 */
63int SystemGetParameterCommitId(ParamHandle handle, uint32_t *commitId);
64
65/**
66 * 对外接口
67 * 查询参数,主要用于其他进程使用,找到对应属性的handle。
68 *
69 */
70int SystemFindParameter(const char *name, ParamHandle *handle);
71
72#ifdef __cplusplus
73#if __cplusplus
74}
75#endif
76#endif
77#endif