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 OHOS_DEVICE_MANAGER_IMPL_LITE_M_H
17 #define OHOS_DEVICE_MANAGER_IMPL_LITE_M_H
18 
19 #include <stdbool.h>
20 
21 #include "device_manager_common.h"
22 #include "softbus_common.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 enum {
29     DM_OK = 0,
30     ERR_DM_FAILED = -100000,
31     ERR_DM_NO_INIT,
32     ERR_DM_ALREADY_INIT,
33     ERR_DM_POINT_NULL,
34     ERR_DM_GET_SHA256_HASH,
35     ERR_DM_IMPORT_PKGNAME,
36     ERR_DM_DELETE_PKGNAME,
37     ERR_DM_GET_BASE64_ENCODE,
38     ERR_DM_GET_BASE64_DECODE,
39     ERR_DM_INPUT_INVALID_VALUE,
40     ERR_DM_BIND_TYPE_NOT_SUPPORT,
41     ERR_DM_BIND_NO_ADDR,
42     ERR_DM_NO_CREDENTIAL,
43 
44     ERR_DM_SOFTBUS_FAILED = -9000,
45     ERR_DM_SOFTBUS_PUBLISH_LNN,
46     ERR_DM_SOFTBUS_STOP_PUBLISH_LNN,
47     ERR_DM_SOFTBUS_REG_STATE_CALLBACK,
48     ERR_DM_SOFTBUS_UNREG_STATE_CALLBACK,
49     ERR_DM_SOFTBUS_NO_TRUSTED_DEVICE,
50     ERR_DM_SOFTBUS_GET_ALL_DEVICE_INFO,
51     ERR_DM_SOFTBUS_SEND_BROADCAST,
52     ERR_DM_SOFTBUS_START_DISCOVERY_DEVICE,
53     ERR_DM_SOFTBUS_STOP_DISCOVERY_DEVICE,
54     ERR_DM_SOFTBUS_REPEAT_DISCOVERY_DEVICE,
55     ERR_DM_SOFTBUS_OPEN_AUTH_SESSION_FAILED,
56 
57     ERR_DM_HICHAIN_FAILED = -8000,
58     ERR_DM_HICHAIN_REGISTER_CALLBACK,
59     ERR_DM_HICHAIN_UNREGISTER_CALLBACK,
60     ERR_DM_HICHAIN_INIT_DEVICE_AUTH_SERVICE,
61     ERR_DM_HICHAIN_GET_GM_INSTANCE,
62     ERR_DM_HICHAIN_GET_CREDENTIAL_INFO,
63     ERR_DM_HICHAIN_IMPORT_CREDENTIAL,
64     ERR_DM_HICHAIN_DELETE_CREDENTIAL,
65     ERR_DM_HICHAIN_CHECK_CREDENTIAL,
66     ERR_DM_HICHAIN_CREATE_GROUP,
67     ERR_DM_HICHAIN_CREDENTIAL_EXISTS,
68     ERR_DM_HICHAIN_AUTH_DEVICE,
69 
70     ERR_DM_LITEOS_FAILED = -7000,
71     ERR_DM_LITEOS_CREATE_TASK,
72     ERR_DM_LITEOS_DELETE_TASK,
73     ERR_DM_LITEOS_CREATE_MUTEX_OR_SEM,
74     ERR_DM_LITEOS_DELETE_MUTEX_OR_SEM,
75     ERR_DM_LITEOS_PEND_MUTEX,
76     ERR_DM_LITEOS_POST_MUTEX,
77     ERR_DM_LITEOS_CREATE_TIMER,
78     ERR_DM_LITEOS_PEND_SEMAPHORE,
79     ERR_DM_LITEOS_POST_SEMAPHORE,
80 
81     ERR_DM_CJSON_FAILED = -6000,
82     ERR_DM_CJSON_CREATE_OBJECT,
83     ERR_DM_CJSON_GET_OBJECT,
84     ERR_DM_CJSON_ADD_TRUE,
85     ERR_DM_CJSON_PRINT,
86     ERR_DM_CJSON_KEY_TYPE,
87     ERR_DM_CJSON_KEY_NO_EXIST,
88     ERR_DM_CJSON_PARSE_ARRAY,
89     ERR_DM_CJSON_PARSE_STRING,
90     ERR_DM_CJSON_ARRAY_SIZE,
91     ERR_DM_CJSON_GET_USERID,
92 };
93 
94 static const int SUPPORT_BIND_TYPE = 0;
95 
96 typedef struct {
97     char deviceId[DM_MAX_DEVICE_ID_LEN + 1];
98     char networkId[DM_MAX_DEVICE_NETWORKID_LEN + 1];
99     char deviceName[DM_MAX_DEVICE_NAME_LEN + 1];
100     unsigned int deviceTypeId;
101     ConnectionAddr connectAddr;
102     int range;
103     int credible;
104     bool isLocalExistCredential;
105     int authForm;
106 } DmDeviceInfo;
107 
108 typedef struct {
109     char deviceId[DM_MAX_DEVICE_ID_LEN + 1];
110     char deviceName[DM_MAX_DEVICE_NAME_LEN + 1];
111     unsigned int deviceTypeId;
112     char networkId[DM_MAX_DEVICE_NETWORKID_LEN + 1];
113 } DmDeviceBasicInfo;
114 
115 typedef struct {
116     void (*onTargetOnline)(const DmDeviceBasicInfo *deviceInfo);
117     void (*onTargetOffline)(const DmDeviceBasicInfo *deviceInfo);
118 } DevStatusCallback;
119 
120 typedef struct {
121     void (*onTargetFound)(const DmDeviceBasicInfo *deviceInfo);
122 } OnTargetFound;
123 
124 typedef struct {
125     void (*onBindResult)(const char *networkId, const int retCode);
126     void (*onUnBindResult)(const char *networkId, const int retCode);
127 } OnBindResult;
128 
129 typedef struct {
130     void (*onAdvertisingResult)(const int advertisingId, const int result);
131 } OnAdvertisingResult;
132 
133 int InitDeviceManager(void);
134 int UnInitDeviceManager(void);
135 int RegisterDevStateCallback(const char *pkgName, const char *extra, DevStatusCallback callback);
136 int UnRegisterDevStateCallback(const char *pkgName);
137 int GetTrustedList(const char *pkgName, DmDeviceBasicInfo *deviceList, const int deviceListLen, int *trustListLen);
138 int StartAdvertising(const char *advParam, const char *filterOption, OnAdvertisingResult cb);
139 int StopAdvertising(const char *pkgName);
140 int StartDiscovering(const char *discoverParam, const char *filterOption, OnTargetFound callback);
141 int StopDiscovering(const char *pkgName, const int subscribeId);
142 int BindTarget(const char *pkgName, const char *deviceId, const char *bindParam, OnBindResult cb);
143 int UnBindTarget(const char *pkgName, const char *networkId);
144 
145 #ifdef __cplusplus
146 }
147 #endif
148 
149 #endif // OHOS_DEVICE_MANAGER_IMPL_LITE_M_H
150