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 LNN_SYNC_INFO_MANAGER_H
17 #define LNN_SYNC_INFO_MANAGER_H
18 
19 #include <stdint.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 typedef enum {
26     LNN_INFO_TYPE_CAPABILITY = 0,
27     LNN_INFO_TYPE_CONNECTION_INFO,
28     LNN_INFO_TYPE_DEVICE_NAME,
29     LNN_INFO_TYPE_BATTERY_INFO,
30     LNN_INFO_TYPE_SCREEN_STATUS,
31     LNN_INFO_TYPE_OFFLINE = 5,
32     LNN_INFO_TYPE_P2P_INFO,
33     LNN_INFO_TYPE_CHANNEL_NOISE_INFO,
34     LNN_INFO_TYPE_NOT_TRUSTED,
35     LNN_INFO_TYPE_WIFI_DIRECT,
36     LNN_INFO_TYPE_NICK_NAME = 10,
37     LNN_INFO_TYPE_MASTER_ELECT,
38     LNN_INFO_TYPE_BSS_TRANS,
39     LNN_INFO_TYPE_TOPO_UPDATE,
40     LNN_INFO_TYPE_NODE_ADDR,
41     LNN_INFO_TYPE_NODE_ADDR_DETECTION,
42     LNN_INFO_TYPE_SYNC_CIPHERKEY,
43     LNN_INFO_TYPE_ROUTE_LSU,
44     LNN_INFO_TYPE_PTK,
45     LNN_INFO_TYPE_COUNT,
46     //LNN_INFO_TYPE_P2P_ROLE = 256,
47 } LnnSyncInfoType;
48 
49 typedef void (*LnnSyncInfoMsgHandler)(LnnSyncInfoType type, const char *networkId, const uint8_t *msg, uint32_t len);
50 typedef void (*LnnSyncInfoMsgComplete)(LnnSyncInfoType type, const char *networkId, const uint8_t *msg, uint32_t len);
51 
52 int32_t LnnInitSyncInfoManager(void);
53 void LnnDeinitSyncInfoManager(void);
54 
55 int32_t LnnRegSyncInfoHandler(LnnSyncInfoType type, LnnSyncInfoMsgHandler handler);
56 int32_t LnnUnregSyncInfoHandler(LnnSyncInfoType type, LnnSyncInfoMsgHandler handler);
57 
58 int32_t LnnSendSyncInfoMsg(LnnSyncInfoType type, const char *networkId,
59     const uint8_t *msg, uint32_t len, LnnSyncInfoMsgComplete complete);
60 int32_t LnnSendP2pSyncInfoMsg(const char *networkId, uint32_t netCapability);
61 int32_t LnnSendWifiOfflineInfoMsg(void);
62 
63 #ifdef __cplusplus
64 }
65 #endif
66 #endif // LNN_SYNC_INFO_MANAGER_H
67