16
16
#include "eppp_link.h"
17
17
#include "esp_wifi_remote.h"
18
18
19
- /* FreeRTOS event group to signal when we are connected*/
20
- static EventGroupHandle_t s_wifi_event_group ;
21
-
22
- /* The event group allows multiple bits for each event, but we only care about two events:
23
- * - we are connected to the AP with an IP
24
- * - we failed to connect after the maximum amount of retries */
25
- #define WIFI_CONNECTED_BIT BIT0
26
- #define WIFI_FAIL_BIT BIT1
27
-
28
19
static const char * TAG = "sta2pppos" ;
29
20
30
- static int s_retry_num = 0 ;
31
-
32
- static void event_handler (void * arg , esp_event_base_t event_base , int32_t event_id , void * event_data )
33
- {
34
- if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START ) {
35
- esp_wifi_connect ();
36
- } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED ) {
37
- if (s_retry_num < CONFIG_ESP_MAXIMUM_RETRY ) {
38
- esp_wifi_connect ();
39
- s_retry_num ++ ;
40
- ESP_LOGI (TAG , "retry to connect to the AP" );
41
- } else {
42
- xEventGroupSetBits (s_wifi_event_group , WIFI_FAIL_BIT );
43
- }
44
- ESP_LOGI (TAG , "connect to the AP fail" );
45
- } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP ) {
46
- ip_event_got_ip_t * event = (ip_event_got_ip_t * ) event_data ;
47
- ESP_LOGI (TAG , "got ip:" IPSTR , IP2STR (& event -> ip_info .ip ));
48
- s_retry_num = 0 ;
49
- xEventGroupSetBits (s_wifi_event_group , WIFI_CONNECTED_BIT );
50
- }
51
- }
52
-
53
- void wifi_init_sta (void )
54
- {
55
- s_wifi_event_group = xEventGroupCreate ();
56
-
57
- ESP_ERROR_CHECK (esp_netif_init ());
58
-
59
- ESP_ERROR_CHECK (esp_event_loop_create_default ());
60
- esp_netif_create_default_wifi_sta ();
61
-
62
- wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT ();
63
- ESP_ERROR_CHECK (esp_wifi_init (& cfg ));
64
-
65
- esp_event_handler_instance_t instance_any_id ;
66
- esp_event_handler_instance_t instance_got_ip ;
67
- ESP_ERROR_CHECK (esp_event_handler_instance_register (WIFI_EVENT ,
68
- ESP_EVENT_ANY_ID ,
69
- & event_handler ,
70
- NULL ,
71
- & instance_any_id ));
72
- ESP_ERROR_CHECK (esp_event_handler_instance_register (IP_EVENT ,
73
- IP_EVENT_STA_GOT_IP ,
74
- & event_handler ,
75
- NULL ,
76
- & instance_got_ip ));
77
-
78
- wifi_config_t wifi_config = {
79
- .sta = {
80
- .ssid = CONFIG_ESP_WIFI_SSID ,
81
- .password = CONFIG_ESP_WIFI_PASSWORD ,
82
- },
83
- };
84
- ESP_ERROR_CHECK (esp_wifi_set_mode (WIFI_MODE_STA ) );
85
- ESP_ERROR_CHECK (esp_wifi_set_config (WIFI_IF_STA , & wifi_config ) );
86
- ESP_ERROR_CHECK (esp_wifi_start () );
87
-
88
- ESP_LOGI (TAG , "wifi_init_sta finished." );
89
-
90
- /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
91
- * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */
92
- EventBits_t bits = xEventGroupWaitBits (s_wifi_event_group ,
93
- WIFI_CONNECTED_BIT | WIFI_FAIL_BIT ,
94
- pdFALSE ,
95
- pdFALSE ,
96
- portMAX_DELAY );
97
-
98
- /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually
99
- * happened. */
100
- if (bits & WIFI_CONNECTED_BIT ) {
101
- ESP_LOGI (TAG , "connected to ap SSID:%s password:%s" ,
102
- CONFIG_ESP_WIFI_SSID , CONFIG_ESP_WIFI_PASSWORD );
103
- } else if (bits & WIFI_FAIL_BIT ) {
104
- ESP_LOGI (TAG , "Failed to connect to SSID:%s, password:%s" ,
105
- CONFIG_ESP_WIFI_SSID , CONFIG_ESP_WIFI_PASSWORD );
106
- } else {
107
- ESP_LOGE (TAG , "UNEXPECTED EVENT" );
108
- }
109
- }
110
-
111
-
112
-
113
-
114
-
115
21
esp_err_t server_init (void );
116
22
117
23
static eppp_channel_fn_t s_tx ;
118
24
static esp_netif_t * s_ppp_netif ;
119
25
120
26
static esp_err_t netif_recv (void * h , void * buffer , size_t len )
121
27
{
122
- // printf("recv %d\n", len);
123
- // ESP_LOG_BUFFER_HEXDUMP("cfg", buffer, len, ESP_LOG_WARN);
124
28
return esp_wifi_internal_tx (WIFI_IF_STA , buffer , len );
125
29
}
126
30
127
- static esp_err_t wifi_recv (void * buffer , uint16_t len , void * eb )
31
+ esp_err_t rpc_example_wifi_recv (void * buffer , uint16_t len , void * eb )
128
32
{
129
- // printf("send %d\n", len);
130
33
if (s_tx ) {
131
- // printf("send %d\n", len);
132
34
esp_err_t ret = s_tx (s_ppp_netif , buffer , len );
133
35
esp_wifi_internal_free_rx_buffer (eb );
134
36
return ret ;
135
37
}
136
38
return ESP_OK ;
137
39
}
138
40
139
-
140
41
void app_main (void )
141
42
{
142
-
143
-
144
43
//Initialize NVS
145
44
esp_err_t ret = nvs_flash_init ();
146
45
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND ) {
@@ -159,13 +58,7 @@ void app_main(void)
159
58
return ;
160
59
}
161
60
162
- // esp_wifi_internal_reg_rxcb(WIFI_IF_STA, wifi_recv);
163
- // esp_wifi_internal_reg_netstack_buf_cb(esp_netif_netstack_buf_ref, esp_netif_netstack_buf_free);
164
61
eppp_add_channel (1 , & s_tx , netif_recv );
165
62
166
63
server_init ();
167
- vTaskDelay (pdMS_TO_TICKS (10000 ));
168
- esp_wifi_internal_reg_rxcb (WIFI_IF_STA , wifi_recv );
169
- esp_wifi_internal_reg_netstack_buf_cb (esp_netif_netstack_buf_ref , esp_netif_netstack_buf_free );
170
-
171
64
}
0 commit comments