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 LNN_EVENT_CONVERTER_H
17 #define LNN_EVENT_CONVERTER_H
18 
19 #include "softbus_event_converter.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define LNN_ASSIGNER(type, fieldName, field)                                                                  \
26     static inline bool LnnAssigner##fieldName(                                                                \
27         const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
28     {                                                                                                         \
29         if (Assigner##type(form->lnnExtra->field, &param) &&                                                  \
30             CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) {                                   \
31             param->t = paramType;                                                                             \
32             return true;                                                                                      \
33         }                                                                                                     \
34         return false;                                                                                         \
35     }
36 
37 LNN_ASSIGNER(Errcode, Result, result)
38 LNN_ASSIGNER(Errcode, Errcode, errcode)
39 LNN_ASSIGNER(Errcode, AuthId, authId)
40 LNN_ASSIGNER(Int32, DiscServerType, discServerType)
41 LNN_ASSIGNER(Int32, GearCycle, gearCycle)
42 LNN_ASSIGNER(Int32, GearDuration, gearDuration)
43 LNN_ASSIGNER(Int32, ConnectionId, connectionId)
44 LNN_ASSIGNER(Int32, AuthLinkType, authLinkType)
45 LNN_ASSIGNER(Int32, AuthRequestId, authRequestId)
46 LNN_ASSIGNER(Int32, AuthCostTime, authCostTime)
47 LNN_ASSIGNER(Int32, LnnType, lnnType)
48 LNN_ASSIGNER(Int32, OnlineNum, onlineNum)
49 LNN_ASSIGNER(Int32, PeerDeviceAbility, peerDeviceAbility)
50 LNN_ASSIGNER(Int32, OnlineType, onlineType)
51 LNN_ASSIGNER(Errcode, OsType, osType)
52 LNN_ASSIGNER(Errcode, ConnOnlineReason, connOnlineReason)
53 LNN_ASSIGNER(Int32, LaneId, laneId)
54 LNN_ASSIGNER(Int32, ChanReqId, chanReqId)
55 LNN_ASSIGNER(Int32, ConnReqId, connReqId)
56 LNN_ASSIGNER(Int32, Strategy, strategy)
57 LNN_ASSIGNER(Int32, LaneLinkType, laneLinkType)
58 LNN_ASSIGNER(Int32, HmlChannelId, hmlChannelId)
59 LNN_ASSIGNER(Int32, P2pChannelId, p2pChannelId)
60 LNN_ASSIGNER(Int32, StaChannelId, staChannelId)
61 LNN_ASSIGNER(Int32, ApChannelId, apChannelId)
62 LNN_ASSIGNER(String, PeerDeviceInfo, peerDeviceInfo)
63 LNN_ASSIGNER(AnonymizeString, PeerIp, peerIp)
64 LNN_ASSIGNER(AnonymizeString, PeerBrMac, peerBrMac)
65 LNN_ASSIGNER(AnonymizeString, PeerBleMac, peerBleMac)
66 LNN_ASSIGNER(AnonymizeString, PeerWifiMac, peerWifiMac)
67 LNN_ASSIGNER(String, PeerPort, peerPort)
68 LNN_ASSIGNER(AnonymizeString, PeerUdid, peerUdid)
69 LNN_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
70 LNN_ASSIGNER(String, LocalDeviceType, localDeviceType)
71 LNN_ASSIGNER(String, PeerDeviceType, peerDeviceType)
72 LNN_ASSIGNER(AnonymizeString, LocalUdidHash, localUdidHash)
73 LNN_ASSIGNER(AnonymizeString, PeerUdidHash, peerUdidHash)
74 LNN_ASSIGNER(String, CallerPkg, callerPkg)
75 LNN_ASSIGNER(String, CalleePkg, calleePkg)
76 
77 #define LNN_ASSIGNER_SIZE 39 // Size of g_connAssigners
78 static const HiSysEventParamAssigner g_lnnAssigners[] = {
79     { "STAGE_RES",            HISYSEVENT_INT32,  LnnAssignerResult           },
80     { "ERROR_CODE",           HISYSEVENT_INT32,  LnnAssignerErrcode          },
81     { "AUTH_ID",              HISYSEVENT_INT32,  LnnAssignerAuthId           },
82     { "DISC_SERVER_TYPE",     HISYSEVENT_INT32,  LnnAssignerDiscServerType   },
83     { "GEAR_CYCLE",           HISYSEVENT_INT32,  LnnAssignerGearCycle        },
84     { "GEAR_DURATION",        HISYSEVENT_INT32,  LnnAssignerGearDuration     },
85     { "CONN_ID",              HISYSEVENT_INT32,  LnnAssignerConnectionId     },
86     { "AUTH_LINK_TYPE",       HISYSEVENT_INT32,  LnnAssignerAuthLinkType     },
87     { "AUTH_REQUEST_ID",      HISYSEVENT_INT32,  LnnAssignerAuthRequestId    },
88     { "AUTH_COST_TIME",       HISYSEVENT_INT32,  LnnAssignerAuthCostTime     },
89     { "LNN_TYPE",             HISYSEVENT_INT32,  LnnAssignerLnnType          },
90     { "ONLINE_NUM",           HISYSEVENT_INT32,  LnnAssignerOnlineNum        },
91     { "PEER_DEV_ABILITY",     HISYSEVENT_INT32,  LnnAssignerPeerDeviceAbility},
92     { "ONLINE_TYPE",          HISYSEVENT_INT32,  LnnAssignerOnlineType       },
93     { "OS_TYPE",              HISYSEVENT_INT32,  LnnAssignerOsType           },
94     { "CONN_ONLINE_REAS",     HISYSEVENT_INT32,  LnnAssignerConnOnlineReason },
95     { "LANE_ID",              HISYSEVENT_INT32,  LnnAssignerLaneId           },
96     { "CHAN_REQ_ID",          HISYSEVENT_INT32,  LnnAssignerChanReqId        },
97     { "CONN_REQ_ID",          HISYSEVENT_INT32,  LnnAssignerConnReqId        },
98     { "STRATEGY_FOR_LNN_BLE", HISYSEVENT_INT32,  LnnAssignerStrategy         },
99     { "LANE_LINK_TYPE",       HISYSEVENT_INT32,  LnnAssignerLaneLinkType     },
100     { "HML_CHANNEL_ID",       HISYSEVENT_INT32,  LnnAssignerHmlChannelId     },
101     { "P2P_CHANNEL_ID",       HISYSEVENT_INT32,  LnnAssignerP2pChannelId     },
102     { "STA_CHANNEL_ID",       HISYSEVENT_INT32,  LnnAssignerStaChannelId     },
103     { "AP_CHANNEL_ID",        HISYSEVENT_INT32,  LnnAssignerApChannelId      },
104     { "PEER_DEV_INFO",        HISYSEVENT_STRING, LnnAssignerPeerDeviceInfo   },
105     { "PEER_IP",              HISYSEVENT_STRING, LnnAssignerPeerIp           },
106     { "PEER_BR_MAC",          HISYSEVENT_STRING, LnnAssignerPeerBrMac        },
107     { "PEER_BLE_MAC",         HISYSEVENT_STRING, LnnAssignerPeerBleMac       },
108     { "PEER_WIFI_MAC",        HISYSEVENT_STRING, LnnAssignerPeerWifiMac      },
109     { "PEER_PORT",            HISYSEVENT_STRING, LnnAssignerPeerPort         },
110     { "PEER_UDID",            HISYSEVENT_STRING, LnnAssignerPeerUdid         },
111     { "PEER_NET_ID",          HISYSEVENT_STRING, LnnAssignerPeerNetworkId    },
112     { "LOCAL_DEV_TYPE",       HISYSEVENT_STRING, LnnAssignerLocalDeviceType  },
113     { "PEER_DEV_TYPE",        HISYSEVENT_STRING, LnnAssignerPeerDeviceType   },
114     { "LOCAL_UDID_HASH",      HISYSEVENT_STRING, LnnAssignerLocalUdidHash    },
115     { "PEER_UDID_HASH",       HISYSEVENT_STRING, LnnAssignerPeerUdidHash     },
116     { "HOST_PKG",             HISYSEVENT_STRING, LnnAssignerCallerPkg        },
117     { "TO_CALL_PKG",          HISYSEVENT_STRING, LnnAssignerCalleePkg        },
118     // Modification Note: remember updating LNN_ASSIGNER_SIZE
119 };
120 
121 #define LNN_ALARM_ASSIGNER(type, fieldName, field)                                                            \
122     static inline bool LnnAssigner##fieldName(                                                                \
123         const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
124     {                                                                                                         \
125         if (Assigner##type(form->lnnAlarmExtra->field, &param) &&                                             \
126             CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) {                                   \
127             param->t = paramType;                                                                             \
128             return true;                                                                                      \
129         }                                                                                                     \
130         return false;                                                                                         \
131     }
132 
133 LNN_ALARM_ASSIGNER(Errcode, AlarmResult, result)
134 
135 #define LNN_ALARM_ASSIGNER_SIZE 1 // Size of g_lnnAlarmAssigners
136 static const HiSysEventParamAssigner g_lnnAlarmAssigners[] = {
137     { "STAGE_RES",        HISYSEVENT_INT32,  LnnAssignerAlarmResult        },
138     // Modification Note: remember updating LNN_ALARM_ASSIGNER_SIZE
139 };
140 
ConvertLnnForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)141 static inline size_t ConvertLnnForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
142 {
143     size_t validSize = 0;
144     if (form == NULL || form->lnnExtra == NULL) {
145         return validSize;
146     }
147     for (size_t i = 0; i < size; ++i) {
148         HiSysEventParamAssigner assigner = g_lnnAssigners[i];
149         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
150             ++validSize;
151         }
152     }
153     return validSize;
154 }
155 
ConvertLnnAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)156 static inline size_t ConvertLnnAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
157 {
158     size_t validSize = 0;
159     if (form == NULL || form->lnnAlarmExtra == NULL) {
160         return validSize;
161     }
162     for (size_t i = 0; i < size; ++i) {
163         HiSysEventParamAssigner assigner = g_lnnAlarmAssigners[i];
164         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
165             ++validSize;
166         }
167     }
168     return validSize;
169 }
170 
171 #ifdef __cplusplus
172 }
173 #endif /* __cplusplus */
174 #endif // LNN_EVENT_CONVERTER_H
175