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 DISC_EVENT_CONVERTER_H
17 #define DISC_EVENT_CONVERTER_H
18
19 #include "comm_log.h"
20 #include "softbus_event_converter.h"
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 #define DISC_ASSIGNER(type, fieldName, field) \
27 static inline bool DiscAssigner##fieldName( \
28 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
29 { \
30 if (Assigner##type(form->discExtra->field, ¶m) && \
31 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
32 param->t = paramType; \
33 return true; \
34 } \
35 return false; \
36 }
37
38 DISC_ASSIGNER(Errcode, Result, result)
39 DISC_ASSIGNER(Errcode, Errcode, errcode)
40 DISC_ASSIGNER(Int32, InitType, initType)
41 DISC_ASSIGNER(Int32, ServerType, serverType)
42 DISC_ASSIGNER(Int32, InterFuncType, interFuncType)
43 DISC_ASSIGNER(Int32, CapabilityBit, capabilityBit)
44 DISC_ASSIGNER(LongString, CapabilityData, capabilityData)
45 DISC_ASSIGNER(Int32, BleTurnState, bleTurnState)
46 DISC_ASSIGNER(Int32, IpLinkStatus, ipLinkStatus)
47 DISC_ASSIGNER(Int32, CoapChangeType, coapChangeType)
48 DISC_ASSIGNER(Int32, BroadcastType, broadcastType)
49 DISC_ASSIGNER(Int32, BroadcastFreq, broadcastFreq)
50 DISC_ASSIGNER(Int32, ScanType, scanType)
51 DISC_ASSIGNER(String, ScanCycle, scanCycle)
52 DISC_ASSIGNER(Int32, DiscType, discType)
53 DISC_ASSIGNER(Int32, DiscMode, discMode)
54 DISC_ASSIGNER(Int32, CostTime, costTime)
55 DISC_ASSIGNER(AnonymizeString, LocalNetworkId, localNetworkId)
56 DISC_ASSIGNER(AnonymizeString, PeerIp, peerIp)
57 DISC_ASSIGNER(AnonymizeString, PeerBrMac, peerBrMac)
58 DISC_ASSIGNER(AnonymizeString, PeerBleMac, peerBleMac)
59 DISC_ASSIGNER(AnonymizeString, PeerWifiMac, peerWifiMac)
60 DISC_ASSIGNER(String, PeerPort, peerPort)
61 DISC_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
62 DISC_ASSIGNER(String, PeerDeviceType, peerDeviceType)
63 DISC_ASSIGNER(String, CallerPkg, callerPkg)
64
65 #define DISC_ASSIGNER_SIZE 26 // Size of g_discAssigners
66 static HiSysEventParamAssigner g_discAssigners[] = {
67 { "STAGE_RES", HISYSEVENT_INT32, DiscAssignerResult },
68 { "ERROR_CODE", HISYSEVENT_INT32, DiscAssignerErrcode },
69 { "INIT_TYPE", HISYSEVENT_INT32, DiscAssignerInitType },
70 { "SERVER_TYPE", HISYSEVENT_INT32, DiscAssignerServerType },
71 { "INTERFACE_FUNC_TYPE", HISYSEVENT_INT32, DiscAssignerInterFuncType },
72 { "CAPABILITY_BIT", HISYSEVENT_INT32, DiscAssignerCapabilityBit },
73 { "CAPABILITY_DATA", HISYSEVENT_STRING, DiscAssignerCapabilityData },
74 { "BLE_TURN_STATE", HISYSEVENT_INT32, DiscAssignerBleTurnState },
75 { "IP_LINK_STATUS", HISYSEVENT_INT32, DiscAssignerIpLinkStatus },
76 { "COAP_CHANGE_TYPE", HISYSEVENT_INT32, DiscAssignerCoapChangeType },
77 { "BROADCAST_TYPE", HISYSEVENT_INT32, DiscAssignerBroadcastType },
78 { "BROADCAST_FREQ", HISYSEVENT_INT32, DiscAssignerBroadcastFreq },
79 { "SCAN_TYPE", HISYSEVENT_INT32, DiscAssignerScanType },
80 { "SCAN_CYCLE", HISYSEVENT_STRING, DiscAssignerScanCycle },
81 { "DISC_TYPE", HISYSEVENT_INT32, DiscAssignerDiscType },
82 { "DISC_MODE", HISYSEVENT_INT32, DiscAssignerDiscMode },
83 { "FIRST_DISCOVERY_TIME", HISYSEVENT_INT32, DiscAssignerCostTime },
84 { "LOCAL_NET_ID", HISYSEVENT_STRING, DiscAssignerLocalNetworkId },
85 { "PEER_IP", HISYSEVENT_STRING, DiscAssignerPeerIp },
86 { "PEER_BR_MAC", HISYSEVENT_STRING, DiscAssignerPeerBrMac },
87 { "PEER_BLE_MAC", HISYSEVENT_STRING, DiscAssignerPeerBleMac },
88 { "PEER_WIFI_MAC", HISYSEVENT_STRING, DiscAssignerPeerWifiMac },
89 { "PEER_PORT", HISYSEVENT_INT32, DiscAssignerPeerPort },
90 { "PEER_NET_ID", HISYSEVENT_STRING, DiscAssignerPeerNetworkId },
91 { "PEER_DEV_TYPE", HISYSEVENT_STRING, DiscAssignerPeerDeviceType },
92 { "HOST_PKG", HISYSEVENT_STRING, DiscAssignerCallerPkg },
93 // Modification Note: remember updating DISC_ASSIGNER_SIZE
94 };
95
96 #define DISC_ALARM_ASSIGNER(type, fieldName, field) \
97 static inline bool DiscAssigner##fieldName( \
98 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
99 { \
100 if (Assigner##type(form->discAlarmExtra->field, ¶m) && \
101 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
102 param->t = paramType; \
103 return true; \
104 } \
105 return false; \
106 }
107
108 DISC_ALARM_ASSIGNER(Errcode, AlarmResult, result)
109 DISC_ALARM_ASSIGNER(Errcode, AlarmErrcode, errcode)
110 DISC_ALARM_ASSIGNER(Int32, OriginalFreq, originalFreq)
111 DISC_ALARM_ASSIGNER(Int32, AbnormalFreq, abnormalFreq)
112 DISC_ALARM_ASSIGNER(Int32, Duration, duration)
113
114 #define DISC_ALARM_ASSIGNER_SIZE 5 // Size of g_discAlarmAssigners
115 static const HiSysEventParamAssigner g_discAlarmAssigners[] = {
116 { "STAGE_RES", HISYSEVENT_INT32, DiscAssignerAlarmResult },
117 { "ERROR_CODE", HISYSEVENT_INT32, DiscAssignerAlarmErrcode },
118 { "ORIGINAL_FREQ", HISYSEVENT_INT32, DiscAssignerOriginalFreq },
119 { "ABNORMAL_FREQ", HISYSEVENT_INT32, DiscAssignerAbnormalFreq },
120 { "DURATION", HISYSEVENT_INT32, DiscAssignerDuration },
121 // Modification Note: remember updating LNN_ALARM_ASSIGNER_SIZE
122 };
123
ConvertDiscForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)124 static inline size_t ConvertDiscForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
125 {
126 size_t validSize = 0;
127 COMM_CHECK_AND_RETURN_RET_LOGE(form != NULL && form->discExtra != NULL, validSize, COMM_DFX, "invalid param");
128 for (size_t i = 0; i < size; ++i) {
129 HiSysEventParamAssigner assigner = g_discAssigners[i];
130 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
131 ++validSize;
132 }
133 }
134 return validSize;
135 }
136
ConvertDiscAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)137 static inline size_t ConvertDiscAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
138 {
139 size_t validSize = 0;
140 COMM_CHECK_AND_RETURN_RET_LOGE(form != NULL && form->discAlarmExtra != NULL, validSize, COMM_DFX, "invalid param");
141 for (size_t i = 0; i < size; ++i) {
142 HiSysEventParamAssigner assigner = g_discAlarmAssigners[i];
143 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
144 ++validSize;
145 }
146 }
147 return validSize;
148 }
149
150 #ifdef __cplusplus
151 }
152 #endif /* __cplusplus */
153 #endif // DISC_EVENT_CONVERTER_H
154