• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, &param) &&                                                 \
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(String, ServerType, serverType)
42 DISC_ASSIGNER(Int32, AdvHandle, advHandle)
43 DISC_ASSIGNER(Int32, BcOverMaxCnt, bcOverMaxCnt)
44 DISC_ASSIGNER(Int32, InterFuncType, interFuncType)
45 DISC_ASSIGNER(Int32, CapabilityBit, capabilityBit)
46 DISC_ASSIGNER(LongString, CapabilityData, capabilityData)
47 DISC_ASSIGNER(Int32, BleTurnState, bleTurnState)
48 DISC_ASSIGNER(Int32, IpLinkStatus, ipLinkStatus)
49 DISC_ASSIGNER(Int32, CoapChangeType, coapChangeType)
50 DISC_ASSIGNER(Int32, BroadcastType, broadcastType)
51 DISC_ASSIGNER(Int32, BroadcastFreq, broadcastFreq)
52 DISC_ASSIGNER(Int32, MinInterval, minInterval)
53 DISC_ASSIGNER(Int32, MaxInterval, maxInterval)
54 DISC_ASSIGNER(Int32, CurrentNum, currentNum)
55 DISC_ASSIGNER(Int32, ScanType, scanType)
56 DISC_ASSIGNER(Int32, ScanCount, scanCount)
57 DISC_ASSIGNER(String, ScanCycle, scanCycle)
58 DISC_ASSIGNER(Int32, DiscType, discType)
59 DISC_ASSIGNER(Int32, DiscMode, discMode)
60 DISC_ASSIGNER(Int32, SuccessCnt, successCnt)
61 DISC_ASSIGNER(Int32, FailCnt, failCnt)
62 DISC_ASSIGNER(Int64, StartTime, startTime)
63 DISC_ASSIGNER(Int64, CostTime, costTime)
64 DISC_ASSIGNER(AnonymizeString, LocalNetworkId, localNetworkId)
65 DISC_ASSIGNER(AnonymizeString, PeerIp, peerIp)
66 DISC_ASSIGNER(AnonymizeString, PeerBrMac, peerBrMac)
67 DISC_ASSIGNER(AnonymizeString, PeerBleMac, peerBleMac)
68 DISC_ASSIGNER(AnonymizeString, PeerWifiMac, peerWifiMac)
69 DISC_ASSIGNER(String, PeerPort, peerPort)
70 DISC_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
71 DISC_ASSIGNER(String, PeerDeviceType, peerDeviceType)
72 DISC_ASSIGNER(String, CallerPkg, callerPkg)
73 
74 #define DISC_ASSIGNER_SIZE 35 // Size of g_discAssigners
75 static HiSysEventParamAssigner g_discAssigners[] = {
76     { "STAGE_RES",            HISYSEVENT_INT32,  DiscAssignerResult         },
77     { "ERROR_CODE",           HISYSEVENT_INT32,  DiscAssignerErrcode        },
78     { "INIT_TYPE",            HISYSEVENT_INT32,  DiscAssignerInitType       },
79     { "SERVER_TYPE",          HISYSEVENT_STRING, DiscAssignerServerType     },
80     { "ADV_HANDLE",           HISYSEVENT_INT32,  DiscAssignerAdvHandle      },
81     { "BC_OVERMAX_CNT",       HISYSEVENT_INT32,  DiscAssignerBcOverMaxCnt   },
82     { "INTERFACE_FUNC_TYPE",  HISYSEVENT_INT32,  DiscAssignerInterFuncType  },
83     { "CAPABILITY_BIT",       HISYSEVENT_INT32,  DiscAssignerCapabilityBit  },
84     { "CAPABILITY_DATA",      HISYSEVENT_STRING, DiscAssignerCapabilityData },
85     { "BLE_TURN_STATE",       HISYSEVENT_INT32,  DiscAssignerBleTurnState   },
86     { "IP_LINK_STATUS",       HISYSEVENT_INT32,  DiscAssignerIpLinkStatus   },
87     { "COAP_CHANGE_TYPE",     HISYSEVENT_INT32,  DiscAssignerCoapChangeType },
88     { "BROADCAST_TYPE",       HISYSEVENT_INT32,  DiscAssignerBroadcastType  },
89     { "BROADCAST_FREQ",       HISYSEVENT_INT32,  DiscAssignerBroadcastFreq  },
90     { "MIN_INTERVAL",         HISYSEVENT_INT32,  DiscAssignerMinInterval    },
91     { "MAX_INTERVAL",         HISYSEVENT_INT32,  DiscAssignerMaxInterval    },
92     { "CURRENT_NUM",          HISYSEVENT_INT32,  DiscAssignerCurrentNum     },
93     { "SCAN_TYPE",            HISYSEVENT_INT32,  DiscAssignerScanType       },
94     { "SCAN_COUNT",           HISYSEVENT_INT32,  DiscAssignerScanCount      },
95     { "SCAN_CYCLE",           HISYSEVENT_STRING, DiscAssignerScanCycle      },
96     { "DISC_TYPE",            HISYSEVENT_INT32,  DiscAssignerDiscType       },
97     { "DISC_MODE",            HISYSEVENT_INT32,  DiscAssignerDiscMode       },
98     { "SUCCESS_CNT",          HISYSEVENT_INT32,  DiscAssignerSuccessCnt     },
99     { "FAIL_CNT",             HISYSEVENT_INT32,  DiscAssignerFailCnt        },
100     { "START_TIME",           HISYSEVENT_INT64,  DiscAssignerStartTime      },
101     { "COST_TIME",            HISYSEVENT_INT64,  DiscAssignerCostTime       },
102     { "LOCAL_NET_ID",         HISYSEVENT_STRING, DiscAssignerLocalNetworkId },
103     { "PEER_IP",              HISYSEVENT_STRING, DiscAssignerPeerIp         },
104     { "PEER_BR_MAC",          HISYSEVENT_STRING, DiscAssignerPeerBrMac      },
105     { "PEER_BLE_MAC",         HISYSEVENT_STRING, DiscAssignerPeerBleMac     },
106     { "PEER_WIFI_MAC",        HISYSEVENT_STRING, DiscAssignerPeerWifiMac    },
107     { "PEER_PORT",            HISYSEVENT_INT32,  DiscAssignerPeerPort       },
108     { "PEER_NET_ID",          HISYSEVENT_STRING, DiscAssignerPeerNetworkId  },
109     { "PEER_DEV_TYPE",        HISYSEVENT_STRING, DiscAssignerPeerDeviceType },
110     { "HOST_PKG",             HISYSEVENT_STRING, DiscAssignerCallerPkg      },
111     // Modification Note: remember updating DISC_ASSIGNER_SIZE
112 };
113 
114 #define DISC_ALARM_ASSIGNER(type, fieldName, field)                                                           \
115     static inline bool DiscAssigner##fieldName(                                                               \
116         const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
117     {                                                                                                         \
118         if (Assigner##type(form->discAlarmExtra->field, &param) &&                                            \
119             CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) {                                   \
120             param->t = paramType;                                                                             \
121             return true;                                                                                      \
122         }                                                                                                     \
123         return false;                                                                                         \
124     }
125 
126 DISC_ALARM_ASSIGNER(Errcode, AlarmResult, result)
127 DISC_ALARM_ASSIGNER(Errcode, AlarmErrcode, errcode)
128 DISC_ALARM_ASSIGNER(Int32, OriginalFreq, originalFreq)
129 DISC_ALARM_ASSIGNER(Int32, AbnormalFreq, abnormalFreq)
130 DISC_ALARM_ASSIGNER(Int32, Duration, duration)
131 
132 #define DISC_ALARM_ASSIGNER_SIZE 5 // Size of g_discAlarmAssigners
133 static const HiSysEventParamAssigner g_discAlarmAssigners[] = {
134     { "STAGE_RES",        HISYSEVENT_INT32,  DiscAssignerAlarmResult     },
135     { "ERROR_CODE",       HISYSEVENT_INT32,  DiscAssignerAlarmErrcode    },
136     { "ORIGINAL_FREQ",    HISYSEVENT_INT32,  DiscAssignerOriginalFreq    },
137     { "ABNORMAL_FREQ",    HISYSEVENT_INT32,  DiscAssignerAbnormalFreq    },
138     { "DURATION",         HISYSEVENT_INT32,  DiscAssignerDuration        },
139     // Modification Note: remember updating LNN_ALARM_ASSIGNER_SIZE
140 };
141 
ConvertDiscForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)142 static inline size_t ConvertDiscForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
143 {
144     size_t validSize = 0;
145     COMM_CHECK_AND_RETURN_RET_LOGE(form != NULL && form->discExtra != NULL, validSize, COMM_DFX, "invalid param");
146     for (size_t i = 0; i < size; ++i) {
147         HiSysEventParamAssigner assigner = g_discAssigners[i];
148         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
149             ++validSize;
150         }
151     }
152     return validSize;
153 }
154 
ConvertDiscAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)155 static inline size_t ConvertDiscAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
156 {
157     size_t validSize = 0;
158     COMM_CHECK_AND_RETURN_RET_LOGE(form != NULL && form->discAlarmExtra != NULL, validSize, COMM_DFX, "invalid param");
159     for (size_t i = 0; i < size; ++i) {
160         HiSysEventParamAssigner assigner = g_discAlarmAssigners[i];
161         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
162             ++validSize;
163         }
164     }
165     return validSize;
166 }
167 
168 #ifdef __cplusplus
169 }
170 #endif /* __cplusplus */
171 #endif // DISC_EVENT_CONVERTER_H
172