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_AUDIT_CONVERTER_H
17 #define DISC_AUDIT_CONVERTER_H
18 
19 #include "softbus_event_converter.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define DISC_AUDIT_ASSIGNER(type, fieldName, field)                                                           \
26     static inline bool DiscAuditAssigner##fieldName(                                                          \
27         const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
28     {                                                                                                         \
29         if (Assigner##type(form->discAuditExtra->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 DISC_AUDIT_ASSIGNER(String, CallerPkg, callerPkg)
38 DISC_AUDIT_ASSIGNER(Int32, Result, result)
39 DISC_AUDIT_ASSIGNER(Errcode, Errcode, errcode)
40 DISC_AUDIT_ASSIGNER(Int32, AuditType, auditType)
41 DISC_AUDIT_ASSIGNER(Int32, BroadcastType, broadcastType)
42 DISC_AUDIT_ASSIGNER(Int32, BroadcastFreq, broadcastFreq)
43 DISC_AUDIT_ASSIGNER(Int32, AdvCount, advCount)
44 DISC_AUDIT_ASSIGNER(Int32, AdvDuration, advDuration)
45 DISC_AUDIT_ASSIGNER(Int32, ScanInterval, scanInterval)
46 DISC_AUDIT_ASSIGNER(Int32, ScanWindow, scanWindow)
47 DISC_AUDIT_ASSIGNER(Int32, DiscMode, discMode)
48 DISC_AUDIT_ASSIGNER(Int32, MediumType, mediumType)
49 DISC_AUDIT_ASSIGNER(Int32, AdvChannel, advChannel)
50 DISC_AUDIT_ASSIGNER(Int32, ScanType, scanType)
51 DISC_AUDIT_ASSIGNER(Int32, ScanId, scanId)
52 DISC_AUDIT_ASSIGNER(Int32, ScanListenerId, scanListenerId)
53 DISC_AUDIT_ASSIGNER(String, LocalUdid, localUdid)
54 DISC_AUDIT_ASSIGNER(String, LocalDeviceName, localDeviceName)
55 DISC_AUDIT_ASSIGNER(String, LocalDeviceType, localDeviceType)
56 DISC_AUDIT_ASSIGNER(String, LocalAccountHash, localAccountHash)
57 DISC_AUDIT_ASSIGNER(Int32, LocalCapabilityBitmap, localCapabilityBitmap)
58 DISC_AUDIT_ASSIGNER(String, LocalCustData, localCustData)
59 DISC_AUDIT_ASSIGNER(String, LocalIp, localIp)
60 DISC_AUDIT_ASSIGNER(Int32, LocalPort, localPort)
61 DISC_AUDIT_ASSIGNER(String, LocalBrMac, localBrMac)
62 DISC_AUDIT_ASSIGNER(String, LocalBleMac, localBleMac)
63 DISC_AUDIT_ASSIGNER(String, PeerUdid, peerUdid)
64 DISC_AUDIT_ASSIGNER(String, PeerDeviceName, peerDeviceName)
65 DISC_AUDIT_ASSIGNER(String, PeerDeviceType, peerDeviceType)
66 DISC_AUDIT_ASSIGNER(String, PeerAccountHash, peerAccountHash)
67 DISC_AUDIT_ASSIGNER(Int32, PeerCapabilityBitmap, peerCapabilityBitmap)
68 DISC_AUDIT_ASSIGNER(String, PeerCustData, peerCustData)
69 DISC_AUDIT_ASSIGNER(String, PeerIp, peerIp)
70 DISC_AUDIT_ASSIGNER(Int32, PeerPort, peerPort)
71 DISC_AUDIT_ASSIGNER(String, PeerBrMac, peerBrMac)
72 DISC_AUDIT_ASSIGNER(String, PeerBleMac, peerBleMac)
73 DISC_AUDIT_ASSIGNER(String, ErrMsg, errMsg)
74 DISC_AUDIT_ASSIGNER(String, AdditionalInfo, additionalInfo)
75 
76 static HiSysEventParamAssigner g_discAuditAssigners[] = {
77     { "HOST_PKG",                   HISYSEVENT_STRING,      DiscAuditAssignerCallerPkg              },
78     { "RESULT",                     HISYSEVENT_INT32,       DiscAuditAssignerResult                 },
79     { "ERROR_CODE",                 HISYSEVENT_INT32,       DiscAuditAssignerErrcode                },
80     { "AUDIT_TYPE",                 HISYSEVENT_INT32,       DiscAuditAssignerAuditType              },
81     { "BROADCAST_TYPE",             HISYSEVENT_INT32,       DiscAuditAssignerBroadcastType          },
82     { "BROADCAST_FREQ",             HISYSEVENT_INT32,       DiscAuditAssignerBroadcastFreq          },
83     { "ADV_COUNT",                  HISYSEVENT_INT32,       DiscAuditAssignerAdvCount               },
84     { "ADV_DURATION",               HISYSEVENT_INT32,       DiscAuditAssignerAdvDuration            },
85     { "SCAN_INTERVAL",              HISYSEVENT_INT32,       DiscAuditAssignerScanInterval           },
86     { "SCAN_WINDOW",                HISYSEVENT_INT32,       DiscAuditAssignerScanWindow             },
87     { "DISC_MODE",                  HISYSEVENT_INT32,       DiscAuditAssignerDiscMode               },
88     { "MEDIUM_TYPE",                HISYSEVENT_INT32,       DiscAuditAssignerMediumType             },
89     { "ADV_CHANNEL",                HISYSEVENT_INT32,       DiscAuditAssignerAdvChannel             },
90     { "SCAN_TYPE",                  HISYSEVENT_INT32,       DiscAuditAssignerScanType               },
91     { "SCAN_ID",                    HISYSEVENT_INT32,       DiscAuditAssignerScanId                 },
92     { "SCAN_LISTENER_ID",           HISYSEVENT_INT32,       DiscAuditAssignerScanListenerId         },
93     { "LOCAL_UDID",                 HISYSEVENT_STRING,      DiscAuditAssignerLocalUdid              },
94     { "LOCAL_DEV_NAME",             HISYSEVENT_STRING,      DiscAuditAssignerLocalDeviceName        },
95     { "LOCAL_DEV_TYPE",             HISYSEVENT_STRING,      DiscAuditAssignerLocalDeviceType        },
96     { "LOCAL_ACCOUNT_HASH",         HISYSEVENT_STRING,      DiscAuditAssignerLocalAccountHash       },
97     { "LOCAL_CAPABILITY_BITMAP",    HISYSEVENT_INT32,       DiscAuditAssignerLocalCapabilityBitmap  },
98     { "LOCAL_CUST_DATA",            HISYSEVENT_STRING,      DiscAuditAssignerLocalCustData          },
99     { "LOCAL_IP",                   HISYSEVENT_STRING,      DiscAuditAssignerLocalIp                },
100     { "LOCAL_PORT",                 HISYSEVENT_INT32,       DiscAuditAssignerLocalPort              },
101     { "LOCAL_BR_MAC",               HISYSEVENT_STRING,      DiscAuditAssignerLocalBrMac             },
102     { "LOCAL_BLE_MAC",              HISYSEVENT_STRING,      DiscAuditAssignerLocalBleMac            },
103     { "PEER_UDID",                  HISYSEVENT_STRING,      DiscAuditAssignerPeerUdid               },
104     { "PEER_DEV_NAME",              HISYSEVENT_STRING,      DiscAuditAssignerPeerDeviceName         },
105     { "PEER_DEV_TYPE",              HISYSEVENT_STRING,      DiscAuditAssignerPeerDeviceType         },
106     { "PEER_ACCOUNT_HASH",          HISYSEVENT_STRING,      DiscAuditAssignerPeerAccountHash        },
107     { "PEER_CAPABILITY_BITMAP",     HISYSEVENT_INT32,       DiscAuditAssignerPeerCapabilityBitmap   },
108     { "PEER_CUST_DATA",             HISYSEVENT_STRING,      DiscAuditAssignerPeerCustData           },
109     { "PEER_IP",                    HISYSEVENT_STRING,      DiscAuditAssignerPeerIp                 },
110     { "PEER_PORT",                  HISYSEVENT_INT32,       DiscAuditAssignerPeerPort               },
111     { "PEER_BR_MAC",                HISYSEVENT_STRING,      DiscAuditAssignerPeerBrMac              },
112     { "PEER_BLE_MAC",               HISYSEVENT_STRING,      DiscAuditAssignerPeerBleMac             },
113     { "ERR_MSG",                    HISYSEVENT_STRING,      DiscAuditAssignerErrMsg                 },
114     { "ADDITIONAL_INFO",            HISYSEVENT_STRING,      DiscAuditAssignerAdditionalInfo         },
115     // Modification Note: remember updating DISC_AUDIT_ASSIGNER_SIZE
116 };
117 
118 #define DISC_AUDIT_ASSIGNER_SIZE 38 // Array size of g_discAuditAssigners
119 
120 static const size_t DISC_AUDIT_ASSIGNER_COUNT = sizeof(g_discAuditAssigners) / sizeof(HiSysEventParamAssigner);
121 
ConvertDiscAuditForm2Param(HiSysEventParam params[],SoftbusEventForm * form)122 static inline size_t ConvertDiscAuditForm2Param(HiSysEventParam params[], SoftbusEventForm *form)
123 {
124     size_t validSize = 0;
125     if (form == NULL || form->discExtra == NULL) {
126         return validSize;
127     }
128     for (size_t i = 0; i < DISC_AUDIT_ASSIGNER_COUNT; ++i) {
129         HiSysEventParamAssigner assigner = g_discAuditAssigners[i];
130         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
131             ++validSize;
132         }
133     }
134     return validSize;
135 }
136 
137 #ifdef __cplusplus
138 }
139 #endif /* __cplusplus */
140 #endif // DISC_AUDIT_CONVERTER_H
141