1 /*
2  * Copyright (C) 2021-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 OHOS_WIFI_P2P_DEFINE_H
17 #define OHOS_WIFI_P2P_DEFINE_H
18 
19 #include <any>
20 #include <string>
21 #include "wifi_msg.h"
22 
23 namespace OHOS {
24 namespace Wifi {
25 /* The timeout interval of enable p2p */
26 constexpr long ENABLE_P2P_TIMED_OUT__INTERVAL = 15000;
27 /* The time of clears service requests processed in records. */
28 constexpr long REMOVE_SERVICE_REQUEST_RECORD = 3000;
29 
30 enum class P2pStateMachineState : unsigned char {
31     NO_SUPPORT,
32     ENABLING,
33     ENABLED,
34     DISABLED,
35 };
36 
37 enum class P2pStatus {
38     SUCCESS = 0,
39     INFORMATION_IS_CURRENTLY_UNAVAILABLE,
40     INCOMPATIBLE_PARAMETERS,
41     LIMIT_REACHED,
42     INVALID_PARAMETERS,
43     UNABLE_TO_ACCOMMODATE_REQUEST,
44     PREVIOUS_PROTOCOL_ERROR,
45     NO_COMMON_CHANNELS,
46     UNKNOWN_P2P_GROUP,
47     BOTH_DEVICE_INDICATED_INTENT_15,
48     INCOMPATIBLE_PROVISIONING_METHOD,
49     REJECTED_BY_USER,
50     UNKNOWN = -9999,
51 };
52 
53 enum class P2pStatusCode : int {
54     SUCCESS = 0,
55     FAIL_INFORMATION_IS_CURRENTLY_UNAVAILABLE = 1,
56     FAIL_INCOMPATIBLE_PARAMETERS = 2,
57     FAIL_LIMIT_REACHED = 3,
58     FAIL_INVALID_PARAMETERS = 4,
59     FAIL_UNABLE_TO_ACCOMMODATE_REQUEST = 5,
60     FAIL_PREVIOUS_PROTOCOL_ERROR = 6,
61     FAIL_NO_COMMON_CHANNELS = 7,
62     FAIL_UNKNOWN_P2P_GROUP = 8,
63     FAIL_BOTH_DEVICE_INDICATED_INTENT_15 = 9,
64     FAIL_INCOMPATIBLE_PROVISIONING_METHOD = 10,
65     FAIL_REJECTED_BY_USER = 11,
66     SUCCESS_DEFERRED = 12,
67 };
68 
69 enum class WpsDevPasswordId : short {
70     DEFAULT = 0,
71     USER_SPECIFIED = 1,
72     MACHINE_SPECIFIED = 2,
73     REKEY = 3,
74     PUSHBUTTON = 4,
75     REGISTRAR_SPECIFIED = 5,
76     NFC_CONNECTION_HANDOVER = 7,
77     P2PS_DEFAULT = 8,
78 };
79 
80 enum class P2pConfigErrCode {
81     SUCCESS = 0,
82     MAC_EMPTY = 1,
83     MAC_NOT_FOUND = 2,
84     ERR_MAC_FORMAT = 3,
85     ERR_INTENT = 4,
86     ERR_SIZE_NW_NAME = 5,
87 };
88 
89 enum class P2P_STATE_MACHINE_CMD {
90     /* service to state machine */
91     CMD_P2P_ENABLE = 0,
92     CMD_P2P_DISABLE,
93     CMD_DEVICE_DISCOVERS,
94     CMD_STOP_DEVICE_DISCOVERS,
95     CMD_DISCOVER_SERVICES,
96     CMD_STOP_DISCOVER_SERVICES,
97     CMD_REQUEST_SERVICE,
98     CMD_PUT_LOCAL_SERVICE,
99     CMD_DEL_LOCAL_SERVICE,
100     CMD_START_LISTEN,
101     CMD_STOP_LISTEN,
102     CMD_FORM_GROUP,
103     CMD_REMOVE_GROUP,
104     CMD_DELETE_GROUP,
105     CMD_CONNECT,
106     CMD_DISCONNECT,
107     CMD_SET_DEVICE_NAME,         /* set device name */
108     CMD_SET_WFD_INFO,            /* set wifi-display info */
109     CMD_CANCEL_CONNECT,          /* cancel connect */
110     CMD_HID2D_CREATE_GROUP, /* hid2d create group */
111     CMD_HID2D_CONNECT,
112     CMD_REMOVE_GROUP_CLIENT,
113     CMD_DISCOVER_PEERS,
114     CMD_DISABLE_RANDOM_MAC,
115     CMD_INCREASE_SHARE_LINK,
116     CMD_DECREASE_SHARE_LINK,
117     CMD_REGISTER_SERVICE_CB,
118     CMD_UNREGISTER_SERVICE_CB,
119     CMD_CLEAR_SERVICE_CB,
120 
121     /* monitor to state machine */
122     WPA_CONNECTED_EVENT = 100,  // result of connect
123     WPA_CONN_FAILED_EVENT,       // failed to connected WPA
124     P2P_EVENT_DEVICE_FOUND,
125     P2P_EVENT_DEVICE_LOST,
126     P2P_EVENT_GO_NEG_REQUEST,  // received GO negotiation request
127     P2P_EVENT_GO_NEG_SUCCESS,
128     P2P_EVENT_GO_NEG_FAILURE,
129     P2P_EVENT_INVITATION_RECEIVED,
130     P2P_EVENT_INVITATION_RESULT,
131     P2P_EVENT_GROUP_FORMATION_SUCCESS,
132     P2P_EVENT_GROUP_FORMATION_FAILURE,
133     P2P_EVENT_GROUP_STARTED,
134     P2P_EVENT_GROUP_REMOVED,
135     P2P_EVENT_PROV_DISC_PBC_REQ,
136     P2P_EVENT_PROV_DISC_PBC_RESP,
137     P2P_EVENT_PROV_DISC_ENTER_PIN,
138     P2P_EVENT_PROV_DISC_SHOW_PIN,
139     P2P_EVENT_FIND_STOPPED,
140     P2P_EVENT_SERV_DISC_REQ,
141     P2P_EVENT_SERV_DISC_RESP,
142     P2P_EVENT_PROV_DISC_FAILURE,
143     AP_STA_DISCONNECTED,
144     AP_STA_CONNECTED,
145     P2P_EVENT_IFACE_CREATED,
146     P2P_REMOVE_DEVICE,
147     P2P_RETRY_CONNECT,
148     P2P_EVENT_CH_SWITCH,
149     P2P_EVENT_PRI_DEVICE_FOUND,
150     P2P_EVENT_IP_ADDRESS,
151     P2P_EVENT_CHR_REPORT,
152 
153     /* if the requests to WPA is not synchronization need protected by a timeout mechanism */
154     ENABLE_P2P_TIMED_OUT = 200,
155     INTERNAL_CONN_USER_CONFIRM,     // the user confirmed
156     INTERNAL_CONN_USER_ACCEPT,      // the user chooses to agree
157     PEER_CONNECTION_USER_REJECT,    // the user chooses to reject
158     INTERNAL_CONN_USER_TIME_OUT,
159     CREATE_GROUP_TIMED_OUT,
160     EXCEPTION_TIMED_OUT,             /* P2P exception timeout */
161     DISABLE_P2P_TIMED_OUT,
162     REMOVE_SERVICE_REQUEST_RECORD,
163     P2P_CONNECT_FAILED,
164 };
165 
166 enum class DHCPTYPE {
167     NO_DHCP = 0,
168     DHCP_P2P,
169     DHCP_LEGACEGO,
170     DHCP_INVALID,
171 };
172 
173 enum class P2P_ERROR_RES {
174     NEGO_FAILURE = 0,           // p2p go negotiation failure
175     FORMATION_FAILURE,      // p2p group formation failure
176     PROV_SCAN_FAILURE,       // prov scan failur
177     P2P_GROUP_REMOVE_FAILURE,
178     P2P_DISCOVERY_FAILURE
179 };
180 
181 enum class P2P_ERROR_CODE {
182     NEGO_FAILURE_ERROR = 1001,
183     PROV_SCAN_ERROR,
184     FORMATION_ERROR,
185     P2P_GROUP_REMOVE_ERROR,
186     P2P_DISCOVER_FAILURE_ERROR
187 };
188 
189 enum class P2P_CHR_EVENT {
190     CONN_CNT = 0,
191     CONN_SUC_CNT,
192     MAGICLINK_CNT,
193     P2P_SUC_2G4_CNT,
194     P2P_SUC_5G_CNT
195 };
196 
197 enum class P2P_CONNECT_FAIL {
198     ERR_CODE = 0,
199     FAIL_REASON
200 };
201 
202 enum class P2P_ABNORMAL_DISCONNECT {
203     ERR_CODE = 0,
204     FAIL_REASON
205 };
206 
207 using HandlerMethod = void(P2P_STATE_MACHINE_CMD, int, int, const std::any &);
208 } // namespace Wifi
209 } // namespace OHOS
210 
211 #endif
212