• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 LNN_DISTRIBUTED_NET_LEDGER_H
17 #define LNN_DISTRIBUTED_NET_LEDGER_H
18 
19 #include "auth_interface.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define INT_TO_STR_SIZE 12
26 #define INVALID_CONNECTION_CODE_VALUE (-1)
27 #define SHORT_UDID_HASH_LEN 8
28 #define SHORT_UDID_HASH_HEX_LEN 16
29 typedef struct {
30     InfoKey key;
31     int32_t (*getInfo)(const char *netWorkId, bool checkOnline, void *info, uint32_t len);
32 } DistributedLedgerKey;
33 
34 typedef enum {
35     CATEGORY_UDID,
36     CATEGORY_UUID,
37     CATEGORY_NETWORK_ID,
38 } IdCategory;
39 
40 typedef enum {
41     REPORT_NONE,
42     REPORT_CHANGE,
43     REPORT_ONLINE,
44     REPORT_OFFLINE,
45 } ReportCategory;
46 
47 int32_t LnnInitDistributedLedger(void);
48 void LnnDeinitDistributedLedger(void);
49 
50 ReportCategory LnnAddOnlineNode(NodeInfo *info);
51 ReportCategory LnnSetNodeOffline(const char *udid, ConnectionAddrType type, int32_t authId);
52 int32_t LnnSetAuthTypeValue(uint32_t *authTypeValue, AuthType type);
53 int32_t LnnClearAuthTypeValue(uint32_t *authTypeValue, AuthType type);
54 void LnnRemoveNode(const char *udid);
55 int32_t LnnGetRemoteNodeInfoById(const char *id, IdCategory type, NodeInfo *info);
56 int32_t LnnGetRemoteNodeInfoByKey(const char *key, NodeInfo *info); /* key means udid/uuid/networkId/macAddr/ip */
57 bool LnnSetDLDeviceInfoName(const char *udid, const char *name);
58 bool LnnSetDLDeviceNickName(const char *networkId, const char *name);
59 bool LnnSetDLP2pInfo(const char *networkId, const P2pInfo *info);
60 bool LnnSetRemoteScreenStatusInfo(const char *networkId, bool isScreenOn);
61 const char *LnnConvertDLidToUdid(const char *id, IdCategory type);
62 int32_t LnnConvertDlId(const char *srcId, IdCategory srcIdType, IdCategory dstIdType,
63     char *dstIdBuf, uint32_t dstIdBufLen);
64 short LnnGetCnnCode(const char *uuid, DiscoveryType type);
65 int32_t LnnGetBasicInfoByUdid(const char *udid, NodeBasicInfo *basicInfo);
66 int32_t LnnGetDLHeartbeatTimestamp(const char *networkId, uint64_t *timestamp);
67 int32_t LnnGetDLOnlineTimestamp(const char *networkId, uint64_t *timestamp);
68 int32_t LnnSetDLHeartbeatTimestamp(const char *networkId, const uint64_t timestamp);
69 int32_t LnnGetDLBleDirectTimestamp(const char *networkId, uint64_t *timestamp);
70 int32_t LnnGetDLUpdateTimestamp(const char *udid, uint64_t *timestamp);
71 int32_t LnnSetDLBleDirectTimestamp(const char *networkId, uint64_t timestamp);
72 int32_t LnnGetDLAuthCapacity(const char *networkId, uint32_t *authCapacity);
73 bool LnnGetOnlineStateById(const char *id, IdCategory type);
74 int32_t LnnGetLnnRelation(const char *id, IdCategory type, uint8_t *relation, uint32_t len);
75 int32_t LnnSetDLConnCapability(const char *networkId, uint32_t connCapability);
76 int32_t LnnSetDLNodeAddr(const char *id, IdCategory type, const char *addr);
77 int32_t LnnSetDLConnUserIdCheckSum(const char *networkId, int32_t userIdCheckSum);
78 int32_t LnnSetDLConnUserId(const char *networkId, int32_t userId);
79 int32_t LnnSetDLBatteryInfo(const char *networkId, const BatteryInfo *info);
80 int32_t LnnSetDLBssTransInfo(const char *networkId, const BssTransInfo *info);
81 const NodeInfo *LnnGetOnlineNodeByUdidHash(const char *recvUdidHash);
82 void LnnRefreshDeviceOnlineStateAndDevIdInfo(const char *pkgName, DeviceInfo *device,
83     const InnerDeviceInfoAddtions *addtions);
84 int32_t LnnUpdateNetworkId(const NodeInfo *newInfo);
85 int32_t LnnUpdateNodeInfo(NodeInfo *newInfo, int32_t connectionType);
86 int32_t LnnAddMetaInfo(NodeInfo *info);
87 int32_t LnnDeleteMetaInfo(const char *udid, AuthLinkType type);
88 int32_t UpdateGroupType(NodeInfo *info);
89 int32_t LnnUpdateGroupType(const NodeInfo *info);
90 int32_t LnnUpdateAccountInfo(const NodeInfo *info);
91 int32_t LnnUpdateRemoteDeviceName(const NodeInfo *info);
92 int32_t LnnSetDLProxyPort(const char *id, IdCategory type, int32_t proxyPort);
93 int32_t LnnSetDLSessionPort(const char *id, IdCategory type, int32_t sessionPort);
94 int32_t LnnSetDLAuthPort(const char *id, IdCategory type, int32_t authPort);
95 int32_t LnnSetDLP2pIp(const char *id, IdCategory type, const char *p2pIp);
96 NodeInfo *LnnGetNodeInfoById(const char *id, IdCategory type);
97 bool LnnSetDLWifiDirectAddr(const char *networkId, const char *addr);
98 bool LnnSetDlPtk(const char *networkId, const char *remotePtk);
99 int32_t LnnGetOsTypeByNetworkId(const char *networkId, int32_t *osType);
100 int32_t LnnSetDLUnifiedDeviceName(const char *udid, const char *name);
101 int32_t LnnSetDLUnifiedDefaultDeviceName(const char *udid, const char *name);
102 int32_t LnnSetDLDeviceNickNameByUdid(const char *udid, const char *name);
103 int32_t LnnSetDLDeviceStateVersion(const char *udid, int32_t stateVersion);
104 int32_t LnnUpdateDistributedNodeInfo(NodeInfo *newInfo, const char *udid);
105 int32_t LnnSetDLDeviceBroadcastCipherKey(const char *udid, const void *cipherKey);
106 int32_t LnnSetDLDeviceBroadcastCipherIv(const char *udid, const void *cipherIv);
107 bool IsAvailableMeta(const char *peerNetWorkId);
108 bool LnnSaveBroadcastLinkKey(const char *udid, const BroadcastCipherInfo *info);
109 bool IsRemoteDeviceSupportBleGuide(const char *id, IdCategory type);
110 #ifdef __cplusplus
111 }
112 #endif
113 
114 #endif // LNN_DISTRIBUTED_NET_LEDGER_H