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