1/* Copyright (C) 2015-2023 Espressif Systems (Shanghai) PTE LTD */
2/* SPDX-License-Identifier: Apache-2.0 */
3
4/* This file is sourced from
5   https://github.com/espressif/esp-hosted/blob/master/esp_hosted_fg/common/proto/esp_hosted_config.proto
6*/
7
8syntax = "proto3";
9
10/* Enums similar to ESP IDF */
11enum Ctrl_VendorIEType {
12    Beacon = 0;
13    Probe_req = 1;
14    Probe_resp = 2;
15    Assoc_req = 3;
16    Assoc_resp = 4;
17}
18
19enum Ctrl_VendorIEID {
20    ID_0 = 0;
21    ID_1 = 1;
22}
23
24enum Ctrl_WifiMode {
25    NONE = 0;
26    STA = 1;
27    AP = 2;
28    APSTA = 3;
29}
30
31enum Ctrl_WifiBw {
32    BW_Invalid = 0;
33    HT20 = 1;
34    HT40 = 2;
35}
36
37enum Ctrl_WifiPowerSave {
38    PS_Invalid = 0;
39    MIN_MODEM = 1;
40    MAX_MODEM = 2;
41}
42
43enum Ctrl_WifiSecProt {
44    Open = 0;
45    WEP = 1;
46    WPA_PSK = 2;
47    WPA2_PSK = 3;
48    WPA_WPA2_PSK = 4;
49    WPA2_ENTERPRISE = 5;
50    WPA3_PSK = 6;
51    WPA2_WPA3_PSK = 7;
52}
53
54/* enums for Control path */
55enum Ctrl_Status {
56    Connected = 0;
57    Not_Connected = 1;
58    No_AP_Found = 2;
59    Connection_Fail = 3;
60    Invalid_Argument = 4;
61    Out_Of_Range = 5;
62}
63
64
65enum CtrlMsgType {
66    MsgType_Invalid = 0;
67    Req = 1;
68    Resp = 2;
69    Event = 3;
70    MsgType_Max = 4;
71}
72
73enum CtrlMsgId {
74    MsgId_Invalid = 0;
75
76    /** Request Msgs **/
77    Req_Base = 100;
78
79    Req_GetMacAddress = 101;
80    Req_SetMacAddress = 102;
81    Req_GetWifiMode = 103;
82    Req_SetWifiMode = 104;
83
84    Req_GetAPScanList = 105;
85    Req_GetAPConfig = 106;
86    Req_ConnectAP = 107;
87    Req_DisconnectAP = 108;
88
89    Req_GetSoftAPConfig = 109;
90    Req_SetSoftAPVendorSpecificIE = 110;
91    Req_StartSoftAP = 111;
92    Req_GetSoftAPConnectedSTAList = 112;
93    Req_StopSoftAP = 113;
94
95    Req_SetPowerSaveMode = 114;
96    Req_GetPowerSaveMode = 115;
97
98    Req_OTABegin = 116;
99    Req_OTAWrite = 117;
100    Req_OTAEnd = 118;
101
102    Req_SetWifiMaxTxPower = 119;
103    Req_GetWifiCurrTxPower = 120;
104
105    Req_ConfigHeartbeat = 121;
106    /* Add new control path command response before Req_Max
107     * and update Req_Max */
108    Req_Max = 122;
109
110    /** Response Msgs **/
111    Resp_Base = 200;
112
113    Resp_GetMacAddress = 201;
114    Resp_SetMacAddress = 202;
115    Resp_GetWifiMode = 203;
116    Resp_SetWifiMode = 204;
117
118    Resp_GetAPScanList = 205;
119    Resp_GetAPConfig = 206;
120    Resp_ConnectAP = 207;
121    Resp_DisconnectAP = 208;
122
123    Resp_GetSoftAPConfig = 209;
124    Resp_SetSoftAPVendorSpecificIE = 210;
125    Resp_StartSoftAP = 211;
126    Resp_GetSoftAPConnectedSTAList = 212;
127    Resp_StopSoftAP = 213;
128
129    Resp_SetPowerSaveMode = 214;
130    Resp_GetPowerSaveMode = 215;
131
132    Resp_OTABegin = 216;
133    Resp_OTAWrite = 217;
134    Resp_OTAEnd = 218;
135
136    Resp_SetWifiMaxTxPower = 219;
137    Resp_GetWifiCurrTxPower = 220;
138
139    Resp_ConfigHeartbeat = 221;
140    /* Add new control path command response before Resp_Max
141     * and update Resp_Max */
142    Resp_Max = 222;
143
144    /** Event Msgs **/
145    Event_Base = 300;
146    Event_ESPInit = 301;
147    Event_Heartbeat = 302;
148    Event_StationDisconnectFromAP = 303;
149    Event_StationDisconnectFromESPSoftAP = 304;
150    /* Add new control path command notification before Event_Max
151     * and update Event_Max */
152    Event_Max = 305;
153}
154
155/* internal supporting structures for CtrlMsg */
156message ScanResult {
157    bytes ssid = 1;
158    uint32 chnl = 2;
159    int32 rssi = 3;
160    bytes bssid = 4;
161    Ctrl_WifiSecProt sec_prot = 5;
162}
163
164message ConnectedSTAList {
165    bytes mac = 1;
166    int32 rssi = 2;
167}
168
169
170/* Control path structures */
171/** Req/Resp structure **/
172message CtrlMsg_Req_GetMacAddress {
173    int32 mode = 1;
174}
175
176message CtrlMsg_Resp_GetMacAddress {
177    bytes mac = 1;
178    int32 resp = 2;
179}
180
181message CtrlMsg_Req_GetMode {
182}
183
184message CtrlMsg_Resp_GetMode {
185    int32 mode = 1;
186    int32 resp = 2;
187}
188
189message CtrlMsg_Req_SetMode {
190    int32 mode = 1;
191}
192
193message CtrlMsg_Resp_SetMode {
194    int32 resp = 1;
195}
196
197message CtrlMsg_Req_GetStatus {
198}
199
200message CtrlMsg_Resp_GetStatus {
201    int32 resp = 1;
202}
203
204message CtrlMsg_Req_SetMacAddress {
205    bytes mac = 1;
206    int32 mode = 2;
207}
208
209message CtrlMsg_Resp_SetMacAddress {
210    int32 resp = 1;
211}
212
213message CtrlMsg_Req_GetAPConfig {
214}
215
216message CtrlMsg_Resp_GetAPConfig {
217    bytes ssid = 1;
218    bytes bssid = 2;
219    int32 rssi = 3;
220    int32 chnl = 4;
221    Ctrl_WifiSecProt sec_prot = 5;
222    int32 resp = 6;
223}
224
225message CtrlMsg_Req_ConnectAP {
226    string ssid = 1;
227    string pwd = 2;
228    bytes bssid = 3;
229    bool is_wpa3_supported = 4;
230    int32 listen_interval = 5;
231}
232
233message  CtrlMsg_Resp_ConnectAP {
234    int32 resp = 1;
235    bytes mac = 2;
236}
237
238message CtrlMsg_Req_GetSoftAPConfig {
239}
240
241message CtrlMsg_Resp_GetSoftAPConfig {
242    bytes ssid = 1;
243    bytes pwd = 2;
244    int32 chnl = 3;
245    Ctrl_WifiSecProt sec_prot = 4;
246    int32 max_conn = 5;
247    bool ssid_hidden = 6;
248    int32 bw = 7;
249    int32 resp = 8;
250}
251
252message CtrlMsg_Req_StartSoftAP {
253    string ssid = 1;
254    string pwd = 2;
255    int32 chnl = 3;
256    Ctrl_WifiSecProt sec_prot = 4;
257    int32 max_conn = 5;
258    bool ssid_hidden = 6;
259    int32 bw = 7;
260}
261
262message CtrlMsg_Resp_StartSoftAP {
263    int32 resp = 1;
264    bytes mac = 2;
265}
266
267message CtrlMsg_Req_ScanResult {
268}
269
270message CtrlMsg_Resp_ScanResult {
271    uint32 count = 1;
272    repeated ScanResult entries = 2;
273    int32 resp = 3;
274}
275
276message CtrlMsg_Req_SoftAPConnectedSTA {
277}
278
279message CtrlMsg_Resp_SoftAPConnectedSTA {
280    uint32 num = 1;
281    repeated ConnectedSTAList stations = 2;
282    int32 resp = 3;
283}
284
285message CtrlMsg_Req_OTABegin {
286}
287
288message CtrlMsg_Resp_OTABegin {
289    int32 resp = 1;
290}
291
292message CtrlMsg_Req_OTAWrite {
293    bytes ota_data = 1;
294}
295
296message CtrlMsg_Resp_OTAWrite {
297    int32 resp = 1;
298}
299
300message CtrlMsg_Req_OTAEnd {
301}
302
303message CtrlMsg_Resp_OTAEnd {
304    int32 resp = 1;
305}
306
307message CtrlMsg_Req_VendorIEData {
308    int32 element_id = 1;
309    int32 length = 2;
310    bytes vendor_oui = 3;
311    int32 vendor_oui_type = 4;
312    bytes payload = 5;
313}
314
315message CtrlMsg_Req_SetSoftAPVendorSpecificIE {
316    bool enable = 1;
317    Ctrl_VendorIEType type = 2;
318    Ctrl_VendorIEID idx = 3;
319    CtrlMsg_Req_VendorIEData vendor_ie_data = 4;
320}
321
322message CtrlMsg_Resp_SetSoftAPVendorSpecificIE {
323    int32 resp = 1;
324}
325
326message CtrlMsg_Req_SetWifiMaxTxPower {
327    int32 wifi_max_tx_power = 1;
328}
329
330message CtrlMsg_Resp_SetWifiMaxTxPower {
331    int32 resp = 1;
332}
333
334message CtrlMsg_Req_GetWifiCurrTxPower {
335}
336
337message CtrlMsg_Resp_GetWifiCurrTxPower {
338    int32 wifi_curr_tx_power = 1;
339    int32 resp = 2;
340}
341
342message CtrlMsg_Req_ConfigHeartbeat {
343    bool enable = 1;
344    int32 duration = 2;
345}
346
347message CtrlMsg_Resp_ConfigHeartbeat {
348    int32 resp = 1;
349}
350
351/** Event structure **/
352message CtrlMsg_Event_ESPInit {
353    bytes init_data = 1;
354}
355
356message CtrlMsg_Event_Heartbeat {
357    int32 hb_num = 1;
358}
359
360message CtrlMsg_Event_StationDisconnectFromAP {
361    int32 resp = 1;
362}
363
364message CtrlMsg_Event_StationDisconnectFromESPSoftAP {
365    int32 resp = 1;
366    bytes mac = 2;
367}
368
369message CtrlMsg {
370    /* msg_type could be req, resp or Event */
371    CtrlMsgType msg_type = 1;
372
373    /* msg id */
374    CtrlMsgId msg_id = 2;
375
376    /* union of all msg ids */
377    oneof payload {
378        /** Requests **/
379        CtrlMsg_Req_GetMacAddress req_get_mac_address = 101;
380        CtrlMsg_Req_SetMacAddress req_set_mac_address = 102;
381        CtrlMsg_Req_GetMode req_get_wifi_mode = 103;
382        CtrlMsg_Req_SetMode req_set_wifi_mode = 104;
383
384        CtrlMsg_Req_ScanResult req_scan_ap_list = 105;
385        CtrlMsg_Req_GetAPConfig req_get_ap_config = 106;
386        CtrlMsg_Req_ConnectAP req_connect_ap = 107;
387        CtrlMsg_Req_GetStatus req_disconnect_ap = 108;
388
389        CtrlMsg_Req_GetSoftAPConfig req_get_softap_config = 109;
390        CtrlMsg_Req_SetSoftAPVendorSpecificIE req_set_softap_vendor_specific_ie = 110;
391        CtrlMsg_Req_StartSoftAP req_start_softap = 111;
392        CtrlMsg_Req_SoftAPConnectedSTA req_softap_connected_stas_list = 112;
393        CtrlMsg_Req_GetStatus req_stop_softap = 113;
394
395        CtrlMsg_Req_SetMode req_set_power_save_mode = 114;
396        CtrlMsg_Req_GetMode req_get_power_save_mode = 115;
397
398        CtrlMsg_Req_OTABegin req_ota_begin = 116;
399        CtrlMsg_Req_OTAWrite req_ota_write = 117;
400        CtrlMsg_Req_OTAEnd req_ota_end = 118;
401
402        CtrlMsg_Req_SetWifiMaxTxPower req_set_wifi_max_tx_power = 119;
403        CtrlMsg_Req_GetWifiCurrTxPower req_get_wifi_curr_tx_power = 120;
404        CtrlMsg_Req_ConfigHeartbeat req_config_heartbeat = 121;
405
406        /** Responses **/
407        CtrlMsg_Resp_GetMacAddress resp_get_mac_address = 201;
408        CtrlMsg_Resp_SetMacAddress resp_set_mac_address = 202;
409        CtrlMsg_Resp_GetMode resp_get_wifi_mode = 203;
410        CtrlMsg_Resp_SetMode resp_set_wifi_mode = 204;
411
412        CtrlMsg_Resp_ScanResult resp_scan_ap_list = 205;
413        CtrlMsg_Resp_GetAPConfig resp_get_ap_config = 206;
414        CtrlMsg_Resp_ConnectAP resp_connect_ap = 207;
415        CtrlMsg_Resp_GetStatus resp_disconnect_ap = 208;
416
417        CtrlMsg_Resp_GetSoftAPConfig resp_get_softap_config = 209;
418        CtrlMsg_Resp_SetSoftAPVendorSpecificIE resp_set_softap_vendor_specific_ie = 210;
419        CtrlMsg_Resp_StartSoftAP resp_start_softap = 211;
420        CtrlMsg_Resp_SoftAPConnectedSTA resp_softap_connected_stas_list = 212;
421        CtrlMsg_Resp_GetStatus resp_stop_softap = 213;
422
423        CtrlMsg_Resp_SetMode resp_set_power_save_mode = 214;
424        CtrlMsg_Resp_GetMode resp_get_power_save_mode = 215;
425
426        CtrlMsg_Resp_OTABegin resp_ota_begin = 216;
427        CtrlMsg_Resp_OTAWrite resp_ota_write = 217;
428        CtrlMsg_Resp_OTAEnd resp_ota_end = 218;
429        CtrlMsg_Resp_SetWifiMaxTxPower resp_set_wifi_max_tx_power = 219;
430        CtrlMsg_Resp_GetWifiCurrTxPower resp_get_wifi_curr_tx_power = 220;
431        CtrlMsg_Resp_ConfigHeartbeat resp_config_heartbeat = 221;
432
433        /** Notifications **/
434        CtrlMsg_Event_ESPInit event_esp_init = 301;
435        CtrlMsg_Event_Heartbeat event_heartbeat = 302;
436        CtrlMsg_Event_StationDisconnectFromAP event_station_disconnect_from_AP = 303;
437        CtrlMsg_Event_StationDisconnectFromESPSoftAP event_station_disconnect_from_ESP_SoftAP = 304;
438    }
439}
440