MeterLogger
Typedefs | Functions
wifi.h File Reference
#include <lwip/ip.h>
Include dependency graph for wifi.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef void(* WifiCallback) (uint8_t)
 
typedef void(* wifi_scan_result_event_cb_t) (const struct bss_info *info)
 

Functions

bool ICACHE_FLASH_ATTR acl_check_packet (struct pbuf *p)
 
void wifi_handle_event_cb (System_Event_t *evt)
 
void ICACHE_FLASH_ATTR wifi_scan_done_cb (void *arg, STATUS status)
 
void ICACHE_FLASH_ATTR wifi_default ()
 
void ICACHE_FLASH_ATTR wifi_fallback ()
 
void ICACHE_FLASH_ATTR wifi_connect (uint8_t *ssid, uint8_t *pass, WifiCallback cb)
 
void ICACHE_FLASH_ATTR wifi_softap_config (uint8_t *ssid, uint8_t *pass, uint8_t authmode)
 
void ICACHE_FLASH_ATTR wifi_softap_ip_config (void)
 
sint8_t ICACHE_FLASH_ATTR wifi_get_rssi ()
 
bool ICACHE_FLASH_ATTR wifi_get_status ()
 
void ICACHE_FLASH_ATTR wifi_start_scan ()
 
void ICACHE_FLASH_ATTR wifi_stop_scan ()
 
bool ICACHE_FLASH_ATTR wifi_scan_is_running ()
 
bool ICACHE_FLASH_ATTR wifi_fallback_is_present ()
 
void ICACHE_FLASH_ATTR set_my_auto_connect (bool enabled)
 
void wifi_scan_result_cb_register (wifi_scan_result_event_cb_t cb)
 
void wifi_scan_result_cb_unregister ()
 

Typedef Documentation

◆ wifi_scan_result_event_cb_t

typedef void(* wifi_scan_result_event_cb_t) (const struct bss_info *info)

Definition at line 16 of file wifi.h.

◆ WifiCallback

typedef void(* WifiCallback) (uint8_t)

Definition at line 15 of file wifi.h.

Function Documentation

◆ acl_check_packet()

bool ICACHE_FLASH_ATTR acl_check_packet ( struct pbuf p)

Definition at line 115 of file wifi.c.

References dns_ip, ICACHE_FLASH_ATTR, IP2STR, IP_PROTO_ICMP, IP_PROTO_TCP, IP_PROTO_UDP, IPADDR_BROADCAST, IPH_PROTO, pbuf::len, ntohs, os_printf, pbuf::payload, sta_network_addr, sta_network_mask, wifi_get_rssi_timer_func(), wifi_scan_timeout_timer_func(), and wifi_scan_timer_func().

Referenced by my_input_ap().

115  {
116  struct eth_hdr *mac_h;
117  struct ip_hdr *ip_h;
118  uint8_t proto;
119  struct udp_hdr *udp_h;
120  struct tcp_hdr *tcp_h;
121  uint16_t src_port = 0;
122  uint16_t dest_port = 0;
123  uint8_t *packet;
124 
125  if (p->len < sizeof(struct eth_hdr)) {
126  return false;
127  }
128 
129  mac_h = (struct eth_hdr *)p->payload;
130 
131  // Allow ARP
132  if (ntohs(mac_h->type) == ETHTYPE_ARP) {
133  return true;
134  }
135 
136  // Drop anything else if not IPv4
137  if (ntohs(mac_h->type) != ETHTYPE_IP) {
138  return false;
139  }
140 
141  if (p->len < sizeof(struct eth_hdr)+sizeof(struct ip_hdr)) {
142  return false;
143  }
144 
145  packet = (uint8_t*)p->payload;
146  ip_h = (struct ip_hdr *)&packet[sizeof(struct eth_hdr)];
147  proto = IPH_PROTO(ip_h);
148 
149  switch (proto) {
150  case IP_PROTO_UDP:
151  if (p->len < sizeof(struct eth_hdr)+sizeof(struct ip_hdr)+sizeof(struct udp_hdr)) {
152  return false;
153  }
154  udp_h = (struct udp_hdr *)&packet[sizeof(struct eth_hdr)+sizeof(struct ip_hdr)];
155  src_port = ntohs(udp_h->src);
156  dest_port = ntohs(udp_h->dest);
157  break;
158 
159  case IP_PROTO_TCP:
160  if (p->len < sizeof(struct eth_hdr)+sizeof(struct ip_hdr)+sizeof(struct tcp_hdr)) {
161  return false;
162  }
163  tcp_h = (struct tcp_hdr *)&packet[sizeof(struct eth_hdr)+sizeof(struct ip_hdr)];
164  src_port = ntohs(tcp_h->src);
165  dest_port = ntohs(tcp_h->dest);
166  break;
167 
168  case IP_PROTO_ICMP:
169  src_port = dest_port = 0;
170  break;
171  }
172 
173  // allow dhcp requests to broadcast network
174  if ((ip_h->dest.addr == IPADDR_BROADCAST) && (dest_port == 67)) {
175  return true;
176  }
177 
178  // allow dns requests to nameserver on uplink network
179  if ((ip_h->dest.addr == dns_ip.addr) && (dest_port == 53)) {
180  return true;
181  }
182 
183  // deny connections to hosts on uplink network
184  if ((ip_h->dest.addr & sta_network_mask.addr) == sta_network_addr.addr) {
185 #ifdef DEBUG
186  os_printf("dropping packet to uplink network: src: %d.%d.%d.%d dst: %d.%d.%d.%d proto: %s sport:%d dport:%d\n",
187  IP2STR(&ip_h->src), IP2STR(&ip_h->dest),
188  proto == IP_PROTO_TCP ? "TCP" : proto == IP_PROTO_UDP ? "UDP" : "IP4", src_port, dest_port);
189 #endif
190  return false;
191  }
192 
193  // default allow everything else
194  return true;
195 }
#define IP_PROTO_ICMP
Definition: ip.h:52
u16_t len
Definition: pbuf.h:93
#define IP_PROTO_TCP
Definition: ip.h:56
#define IP2STR(ipaddr)
Definition: ip_addr.h:240
#define os_printf
Definition: osapi.h:62
static ip_addr_t sta_network_addr
Definition: wifi.c:62
static ip_addr_t dns_ip
Definition: wifi.c:65
#define IPADDR_BROADCAST
Definition: ip_addr.h:102
#define IP_PROTO_UDP
Definition: ip.h:54
Definition: ip.h:116
void * payload
Definition: pbuf.h:81
#define ntohs(x)
Definition: def.h:82
#define IPH_PROTO(hdr)
Definition: ip.h:151
static ip_addr_t sta_network_mask
Definition: wifi.c:63
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_my_auto_connect()

void ICACHE_FLASH_ATTR set_my_auto_connect ( bool  enabled)

Definition at line 591 of file wifi.c.

References my_auto_connect.

Referenced by watchdog_timer_func(), and wifi_reconnect_timer_func().

591  {
592  my_auto_connect = enabled;
593 }
volatile bool my_auto_connect
Definition: wifi.c:56
Here is the caller graph for this function:

◆ wifi_connect()

void ICACHE_FLASH_ATTR wifi_connect ( uint8_t *  ssid,
uint8_t *  pass,
WifiCallback  cb 
)

Definition at line 437 of file wifi.c.

References syscfg_t::ap_enabled, config_pass, config_ssid, INFO, my_auto_connect, NULL, NULL_MODE, os_memset, os_timer_arm, os_timer_disarm, os_timer_func_t, os_timer_setfn, station_config::password, RSSI_CHECK_INTERVAL, station_config::ssid, STATION_MODE, STATIONAP_MODE, sys_cfg, tfp_snprintf(), wifi_cb, wifi_get_rssi_timer, wifi_get_rssi_timer_func(), wifi_handle_event_cb(), wifi_set_event_handler_cb(), wifi_set_opmode_current(), wifi_start_scan(), wifi_station_connect(), wifi_station_disconnect(), and wifi_station_set_config().

437  {
438  struct station_config stationConf;
439 
440  INFO("WIFI_INIT\r\n");
442 
443 #ifdef AP
444  if (sys_cfg.ap_enabled) {
446  }
447  else {
449  }
450 #else
452 #endif // AP
453 
454  wifi_cb = cb;
455  config_ssid = ssid;
456  config_pass = pass;
457 
458  os_memset(&stationConf, 0, sizeof(struct station_config));
459 
460  tfp_snprintf(stationConf.ssid, 32, "%s", ssid);
461  tfp_snprintf(stationConf.password, 64, "%s", pass);
462 
463  my_auto_connect = false; // disable wifi wifi_handle_event_cb() based auto connect
465  wifi_station_set_config(&stationConf);
466 
467  // start wifi scan timer
468  wifi_start_scan();
469 
471  my_auto_connect = true; // enable wifi wifi_handle_event_cb() based auto connect
472 
474 
475  // start wifi rssi timer
479 
480 // led_stop_pattern();
481 }
void wifi_handle_event_cb(System_Event_t *evt)
Definition: wifi.c:203
bool wifi_set_opmode_current(uint8 opmode)
#define os_timer_disarm
Definition: osapi.h:51
volatile uint8_t * config_pass
Definition: wifi.c:45
volatile bool my_auto_connect
Definition: wifi.c:56
#define NULL_MODE
#define STATIONAP_MODE
#define NULL
Definition: def.h:47
WifiCallback wifi_cb
Definition: wifi.c:41
void ICACHE_FLASH_ATTR wifi_start_scan()
Definition: wifi.c:570
#define os_timer_func_t
Definition: os_type.h:35
#define os_timer_setfn
Definition: osapi.h:52
bool wifi_station_set_config(struct station_config *config)
#define os_memset
Definition: osapi.h:38
bool ap_enabled
Definition: config.h:51
void wifi_set_event_handler_cb(wifi_event_handler_cb_t cb)
static os_timer_t wifi_get_rssi_timer
Definition: wifi.c:39
bool wifi_station_disconnect(void)
volatile uint8_t * config_ssid
Definition: wifi.c:44
ICACHE_FLASH_ATTR int tfp_snprintf(char *str, size_t size, const char *format,...)
Definition: tinyprintf.c:480
static void ICACHE_FLASH_ATTR wifi_get_rssi_timer_func(void *arg)
Definition: wifi.c:271
#define STATION_MODE
#define os_timer_arm(a, b, c)
Definition: osapi.h:50
#define INFO(...)
Definition: debug.h:17
#define RSSI_CHECK_INTERVAL
Definition: wifi.c:35
syscfg_t sys_cfg
Definition: config.c:12
bool wifi_station_connect(void)
Here is the call graph for this function:

◆ wifi_default()

void ICACHE_FLASH_ATTR wifi_default ( )

Definition at line 379 of file wifi.c.

References syscfg_t::ap_enabled, config_pass, config_ssid, NULL, os_memset, os_printf, os_timer_arm, os_timer_disarm, os_timer_func_t, os_timer_setfn, station_config::password, RSSI_CHECK_INTERVAL, station_config::ssid, STATION_MODE, STATIONAP_MODE, sys_cfg, tfp_snprintf(), wifi_get_rssi_timer, wifi_get_rssi_timer_func(), wifi_set_opmode_current(), wifi_station_connect(), wifi_station_disconnect(), wifi_station_get_config(), and wifi_station_set_config_current().

Referenced by wifi_scan_done_cb().

379  {
380  struct station_config stationConf;
381 
382  // go back to saved network
383  os_printf("DEFAULT_SSID\r\n");
385 #ifdef AP
386  if (sys_cfg.ap_enabled == true) {
388  }
389  else {
391  }
392 #else
394 #endif // AP
395  os_memset(&stationConf, 0, sizeof(struct station_config));
396  wifi_station_get_config(&stationConf);
397 
398  tfp_snprintf(stationConf.ssid, 32, "%s", config_ssid);
399  tfp_snprintf(stationConf.password, 64, "%s", config_pass);
400 
401  wifi_station_set_config_current(&stationConf);
402 
404 
405  // start wifi rssi timer
409 }
bool wifi_set_opmode_current(uint8 opmode)
#define os_timer_disarm
Definition: osapi.h:51
volatile uint8_t * config_pass
Definition: wifi.c:45
#define STATIONAP_MODE
#define NULL
Definition: def.h:47
#define os_timer_func_t
Definition: os_type.h:35
bool wifi_station_get_config(struct station_config *config)
#define os_printf
Definition: osapi.h:62
#define os_timer_setfn
Definition: osapi.h:52
#define os_memset
Definition: osapi.h:38
bool ap_enabled
Definition: config.h:51
static os_timer_t wifi_get_rssi_timer
Definition: wifi.c:39
bool wifi_station_disconnect(void)
volatile uint8_t * config_ssid
Definition: wifi.c:44
ICACHE_FLASH_ATTR int tfp_snprintf(char *str, size_t size, const char *format,...)
Definition: tinyprintf.c:480
static void ICACHE_FLASH_ATTR wifi_get_rssi_timer_func(void *arg)
Definition: wifi.c:271
#define STATION_MODE
bool wifi_station_set_config_current(struct station_config *config)
#define os_timer_arm(a, b, c)
Definition: osapi.h:50
#define RSSI_CHECK_INTERVAL
Definition: wifi.c:35
syscfg_t sys_cfg
Definition: config.c:12
bool wifi_station_connect(void)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wifi_fallback()

void ICACHE_FLASH_ATTR wifi_fallback ( )

Definition at line 411 of file wifi.c.

References syscfg_t::ap_enabled, os_memset, os_printf, station_config::password, station_config::ssid, STA_FALLBACK_PASS, STA_FALLBACK_SSID, STATION_MODE, STATIONAP_MODE, sys_cfg, tfp_snprintf(), wifi_set_opmode_current(), wifi_station_connect(), wifi_station_disconnect(), wifi_station_get_config(), and wifi_station_set_config_current().

Referenced by wifi_scan_done_cb().

411  {
412  struct station_config stationConf;
413 
414  // try fallback network
415  os_printf("FALLBACK_SSID\r\n");
417 #ifdef AP
418  if (sys_cfg.ap_enabled == true) {
420  }
421  else {
423  }
424 #else
426 #endif // AP
427  os_memset(&stationConf, 0, sizeof(struct station_config));
428  wifi_station_get_config(&stationConf);
429 
430  tfp_snprintf(stationConf.ssid, 32, "%s", STA_FALLBACK_SSID);
431  tfp_snprintf(stationConf.password, 64, "%s", STA_FALLBACK_PASS);
432 
433  wifi_station_set_config_current(&stationConf);
435 }
bool wifi_set_opmode_current(uint8 opmode)
#define STATIONAP_MODE
bool wifi_station_get_config(struct station_config *config)
#define os_printf
Definition: osapi.h:62
#define STA_FALLBACK_SSID
Definition: user_config.h:68
#define os_memset
Definition: osapi.h:38
bool ap_enabled
Definition: config.h:51
bool wifi_station_disconnect(void)
ICACHE_FLASH_ATTR int tfp_snprintf(char *str, size_t size, const char *format,...)
Definition: tinyprintf.c:480
#define STATION_MODE
bool wifi_station_set_config_current(struct station_config *config)
#define STA_FALLBACK_PASS
Definition: user_config.h:69
syscfg_t sys_cfg
Definition: config.c:12
bool wifi_station_connect(void)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wifi_fallback_is_present()

bool ICACHE_FLASH_ATTR wifi_fallback_is_present ( )

Definition at line 587 of file wifi.c.

References wifi_fallback_present.

587  {
588  return wifi_fallback_present;
589 }
volatile bool wifi_fallback_present
Definition: wifi.c:49

◆ wifi_get_rssi()

sint8_t ICACHE_FLASH_ATTR wifi_get_rssi ( )

Definition at line 559 of file wifi.c.

References get_rssi_running, and rssi.

Referenced by wifi_scan_timer_func().

559  {
560  while (get_rssi_running == true) {
561  // wait for lock
562  }
563  return rssi;
564 }
volatile sint8_t rssi
Definition: wifi.c:53
volatile bool get_rssi_running
Definition: wifi.c:54
Here is the caller graph for this function:

◆ wifi_get_status()

bool ICACHE_FLASH_ATTR wifi_get_status ( )

Definition at line 566 of file wifi.c.

References wifi_default_ok.

566  {
567  return wifi_default_ok;
568 }
volatile bool wifi_default_ok
Definition: wifi.c:55

◆ wifi_handle_event_cb()

void wifi_handle_event_cb ( System_Event_t evt)

Definition at line 203 of file wifi.c.

References Event_SoftAPMode_StaConnected_t::aid, Event_Info_u::disconnected, _esp_event::event, _esp_event::event_info, EVENT_SOFTAPMODE_STACONNECTED, EVENT_STAMODE_CONNECTED, EVENT_STAMODE_DISCONNECTED, EVENT_STAMODE_GOT_IP, Event_Info_u::got_ip, Event_StaMode_Got_IP_t::ip, Event_SoftAPMode_StaConnected_t::mac, MAC2STR, MACSTR, Event_StaMode_Got_IP_t::mask, my_auto_connect, my_input_ap(), my_output_ap(), os_memset, os_printf, os_sprintf, os_strncmp, patch_netif_ap(), Event_StaMode_Disconnected_t::reason, station_config::ssid, Event_StaMode_Disconnected_t::ssid, Event_Info_u::sta_connected, sta_network_addr, sta_network_mask, syscfg_t::sta_ssid, sys_cfg, wifi_cb, wifi_default_ok, wifi_event, wifi_softap_ip_config(), wifi_station_connect(), wifi_station_get_config(), wifi_station_get_connect_status(), wifi_station_set_auto_connect(), and wifi_status.

Referenced by wifi_connect().

203  {
204 #ifdef DEBUG
205  uint8_t mac_str[20];
206 #endif
207  struct station_config stationConf;
208 
210  wifi_event = evt->event;
211 
212  os_memset(&stationConf, 0, sizeof(struct station_config));
213  wifi_station_get_config(&stationConf);
214 
215 #ifdef DEBUG
216 // os_printf("E%dW%d\n", evt->event, wifi_status);
217 #endif
218  switch (evt->event) {
220  // set default network status
221  if (os_strncmp((char *)&stationConf.ssid, sys_cfg.sta_ssid, sizeof(sys_cfg.sta_ssid)) == 0) {
222  wifi_default_ok = true;
223  }
224  break;
226 #ifdef DEBUG
227  os_printf("disconnected from ssid %s, reason %d\n", evt->event_info.disconnected.ssid, evt->event_info.disconnected.reason);
228 #endif
229  // set default network status
230  if (os_strncmp((char *)&stationConf.ssid, sys_cfg.sta_ssid, sizeof(sys_cfg.sta_ssid)) == 0) {
231  wifi_default_ok = false;
232  }
233  if (my_auto_connect) {
234 #ifdef DEBUG
235  os_printf("reconnecting on disconnect\n");
236 #endif
237  wifi_station_connect(); // reconnect on disconnect
238  }
239  break;
240  case EVENT_STAMODE_GOT_IP:
241  // set default network status
242  if (os_strncmp((char *)&stationConf.ssid, sys_cfg.sta_ssid, sizeof(sys_cfg.sta_ssid)) == 0) {
243  wifi_default_ok = true;
244  }
245 #ifdef AP
246  // set ap_network_addr from uplink
249  sta_network_addr.addr &= sta_network_mask.addr;
250 
252 
253  wifi_station_set_auto_connect(0); // disale auto connect, we handle reconnect with this event handler
254 #endif // AP
255  wifi_cb(wifi_status);
256  break;
258 #ifdef DEBUG
260  os_printf("station: %s join, AID = %d\n", mac_str, evt->event_info.sta_connected.aid);
261 #endif
262 #ifdef AP
264 #endif // AP
265  break;
266  default:
267  break;
268  }
269 }
#define os_sprintf
Definition: osapi.h:54
ICACHE_FLASH_ATTR err_t my_output_ap(struct netif *outp, struct pbuf *p)
Definition: wifi.c:80
uint8_t sta_ssid[64]
Definition: config.h:48
#define MAC2STR(a)
#define os_strncmp
Definition: osapi.h:44
volatile bool my_auto_connect
Definition: wifi.c:56
Event_Info_u event_info
WifiCallback wifi_cb
Definition: wifi.c:41
Event_SoftAPMode_StaConnected_t sta_connected
volatile bool wifi_default_ok
Definition: wifi.c:55
bool wifi_station_get_config(struct station_config *config)
uint8 wifi_station_get_connect_status(void)
#define os_printf
Definition: osapi.h:62
static ip_addr_t sta_network_addr
Definition: wifi.c:62
#define os_memset
Definition: osapi.h:38
#define MACSTR
ICACHE_FLASH_ATTR err_t my_input_ap(struct pbuf *p, struct netif *inp)
Definition: wifi.c:67
static ICACHE_FLASH_ATTR void patch_netif_ap(netif_input_fn ifn, netif_linkoutput_fn ofn, bool nat)
Definition: wifi.c:87
bool wifi_station_set_auto_connect(uint8 set)
Event_StaMode_Disconnected_t disconnected
static uint8_t wifi_status
Definition: wifi.c:46
void ICACHE_FLASH_ATTR wifi_softap_ip_config(void)
Definition: wifi.c:502
syscfg_t sys_cfg
Definition: config.c:12
bool wifi_station_connect(void)
static uint8_t wifi_event
Definition: wifi.c:47
static ip_addr_t sta_network_mask
Definition: wifi.c:63
Event_StaMode_Got_IP_t got_ip
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wifi_scan_done_cb()

void ICACHE_FLASH_ATTR wifi_scan_done_cb ( void *  arg,
STATUS  status 
)

Definition at line 321 of file wifi.c.

References led_pattern_a(), led_stop_pattern(), NULL, OK, os_printf, os_strncmp, os_timer_disarm, bss_info::ssid, STA_FALLBACK_SSID, syscfg_t::sta_ssid, STATION_GOT_IP, sys_cfg, wifi_default(), wifi_fallback(), wifi_fallback_last_present, wifi_fallback_present, wifi_present, wifi_scan_result_cb, wifi_scan_result_cb_unregister(), wifi_scan_runnning, wifi_scan_timeout_timer, wifi_start_scan(), and wifi_station_get_connect_status().

Referenced by wifi_scan_timer_func().

321  {
322  struct bss_info *info;
323 
324  wifi_present = false;
325  wifi_fallback_present = false;
326 
327  // check if fallback network is present
328  if ((arg != NULL) && (status == OK)) {
329  info = (struct bss_info *)arg;
330  wifi_fallback_present = false;
331 
332  while (info != NULL) {
333  if ((info != NULL) && (info->ssid != NULL) && (os_strncmp(info->ssid, sys_cfg.sta_ssid, sizeof(sys_cfg.sta_ssid)) == 0)) {
334  wifi_present = true;
335  }
336  if ((info != NULL) && (info->ssid != NULL) && (os_strncmp(info->ssid, STA_FALLBACK_SSID, sizeof(STA_FALLBACK_SSID)) == 0)) {
337  wifi_fallback_present = true;
338  }
339 
340  // handle sending scan results via mqtt
341  if (wifi_scan_result_cb) {
342  wifi_scan_result_cb(info);
343  }
344 
345  info = info->next.stqe_next;
346  }
347  wifi_scan_result_cb_unregister(); // done sending via mqtt
348 
349  // if fallback network appeared connect to it
351  wifi_fallback();
352  led_pattern_a();
353  }
354  // if fallback network disappeared connect to default network
356  wifi_default();
358  }
359 
361 #ifdef DEBUG
362  uint8_t s;
364  os_printf("wifi present: %s\n", (wifi_present ? "yes" : "no"));
365  os_printf("wifi fallback present: %s\n", (wifi_fallback_present ? "yes" : "no"));
366  os_printf("wifi status: %s (%u)\n", (s == STATION_GOT_IP) ? "connected" : "not connected", s);
367 #endif
368  }
369 
370  wifi_scan_runnning = false;
371 // os_printf("scan done\n");
373 // led_stop_pattern(); // DEBUG
374 
375  // start wifi scan timer again
376  wifi_start_scan();
377 }
uint8_t sta_ssid[64]
Definition: config.h:48
volatile bool wifi_fallback_present
Definition: wifi.c:49
void ICACHE_FLASH_ATTR wifi_fallback()
Definition: wifi.c:411
#define os_timer_disarm
Definition: osapi.h:51
#define os_strncmp
Definition: osapi.h:44
#define NULL
Definition: def.h:47
void ICACHE_FLASH_ATTR wifi_start_scan()
Definition: wifi.c:570
volatile bool wifi_scan_runnning
Definition: wifi.c:51
uint8 wifi_station_get_connect_status(void)
#define os_printf
Definition: osapi.h:62
#define STA_FALLBACK_SSID
Definition: user_config.h:68
bool wifi_fallback_last_present
Definition: wifi.c:50
wifi_scan_result_event_cb_t wifi_scan_result_cb
Definition: wifi.c:42
bool wifi_present
Definition: wifi.c:48
static os_timer_t wifi_scan_timeout_timer
Definition: wifi.c:38
Definition: c_types.h:80
uint8 ssid[32]
ICACHE_FLASH_ATTR void led_pattern_a(void)
Definition: led.c:106
ICACHE_FLASH_ATTR void led_stop_pattern(void)
Definition: led.c:128
void ICACHE_FLASH_ATTR wifi_default()
Definition: wifi.c:379
syscfg_t sys_cfg
Definition: config.c:12
void wifi_scan_result_cb_unregister(wifi_scan_result_event_cb_t cb)
Definition: wifi.c:599
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wifi_scan_is_running()

bool ICACHE_FLASH_ATTR wifi_scan_is_running ( )

Definition at line 583 of file wifi.c.

References wifi_scan_runnning.

Referenced by wifi_reconnect_timer_func().

583  {
584  return wifi_scan_runnning;
585 }
volatile bool wifi_scan_runnning
Definition: wifi.c:51
Here is the caller graph for this function:

◆ wifi_scan_result_cb_register()

void wifi_scan_result_cb_register ( wifi_scan_result_event_cb_t  cb)

Definition at line 595 of file wifi.c.

References wifi_scan_result_cb.

595  {
596  wifi_scan_result_cb = cb;
597 }
wifi_scan_result_event_cb_t wifi_scan_result_cb
Definition: wifi.c:42

◆ wifi_scan_result_cb_unregister()

void wifi_scan_result_cb_unregister ( )

◆ wifi_softap_config()

void ICACHE_FLASH_ATTR wifi_softap_config ( uint8_t *  ssid,
uint8_t *  pass,
uint8_t  authmode 
)

Definition at line 483 of file wifi.c.

References softap_config::authmode, softap_config::beacon_interval, softap_config::channel, softap_config::max_connection, memset, softap_config::password, softap_config::ssid, softap_config::ssid_hidden, softap_config::ssid_len, tfp_snprintf(), wifi_softap_get_config(), and wifi_softap_set_config().

483  {
484  struct softap_config ap_conf;
485 
486  wifi_softap_get_config(&ap_conf);
487  memset(ap_conf.ssid, 0, sizeof(ap_conf.ssid));
488  memset(ap_conf.password, 0, sizeof(ap_conf.password));
489  tfp_snprintf(ap_conf.ssid, 32, ssid);
490  tfp_snprintf(ap_conf.password, 64, pass);
491  ap_conf.authmode = authmode;
492  ap_conf.ssid_len = 0;
493  ap_conf.beacon_interval = 100;
494  ap_conf.channel = 1;
495  ap_conf.max_connection = 8;
496  ap_conf.ssid_hidden = 0;
497 
498  wifi_softap_set_config(&ap_conf);
499 }
#define memset(x, a, b)
Definition: platform.h:21
bool wifi_softap_get_config(struct softap_config *config)
uint8 ssid[32]
AUTH_MODE authmode
ICACHE_FLASH_ATTR int tfp_snprintf(char *str, size_t size, const char *format,...)
Definition: tinyprintf.c:480
bool wifi_softap_set_config(struct softap_config *config)
Here is the call graph for this function:

◆ wifi_softap_ip_config()

void ICACHE_FLASH_ATTR wifi_softap_ip_config ( void  )

Definition at line 502 of file wifi.c.

References AP_NETWORK, ap_network_addr, dhcps_set_DNS(), dns_ip, dhcps_lease::end_ip, espconn_dns_setserver(), ip_info::gw, ip_info::ip, IP2STR, IP4_ADDR, ip4_addr3, ip4_addr4, ip_addr_cmp, IPSTR, netif_list, ip_info::netmask, netif::next, NULL, netif::num, os_printf, sta_network_addr, dhcps_lease::start_ip, UTILS_StrToIP(), wifi_set_ip_info(), wifi_softap_dhcps_start(), wifi_softap_dhcps_stop(), and wifi_softap_set_dhcps_lease().

Referenced by wifi_handle_event_cb().

502  {
503  struct ip_info info;
504  struct dhcps_lease dhcp_lease;
505  struct netif *nif;
506 
507  // find the netif of the AP (that with num != 0)
508  for (nif = netif_list; nif != NULL && nif->num == 0; nif = nif->next) {
509  // skip
510  }
511  if (nif == NULL) {
512  return;
513  }
514  // if is not 1, set it to 1.
515  // kind of a hack, but the Espressif-internals expect it like this (hardcoded 1).
516  nif->num = 1;
517 
518  // configure AP dhcp
520 
521  // if we have not got an ip set ap ip to default
522  if (ap_network_addr.addr == 0) {
524  }
525  // increment ap_network_addr if same as sta_network_addr
527  ip4_addr3(&ap_network_addr) += 1;
528  }
529 
530  // if we have not got a dns server set to default
531  dns_ip = dns_getserver(0);
532  if (dns_ip.addr == 0) {
533  // Google's DNS as default, as long as we havn't got one from DHCP
534  IP4_ADDR(&dns_ip, 8, 8, 8, 8);
535  }
538 #ifdef DEBUG
539  os_printf("sta net:" IPSTR ",ap net:" IPSTR ",dns:" IPSTR "\n", IP2STR(&sta_network_addr), IP2STR(&ap_network_addr), IP2STR(&dns_ip));
540 #endif
541 
542  info.ip = ap_network_addr;
543  ip4_addr4(&info.ip) = 1;
544  info.gw = info.ip;
545  IP4_ADDR(&info.netmask, 255, 255, 255, 0);
546 
547  wifi_set_ip_info(nif->num, &info);
548 
549  dhcp_lease.start_ip = ap_network_addr;
550  ip4_addr4(&dhcp_lease.start_ip) = 2;
551  dhcp_lease.end_ip = ap_network_addr;
552  ip4_addr4(&dhcp_lease.end_ip) = 254;
553  wifi_softap_set_dhcps_lease(&dhcp_lease);
554 
556 }
struct netif * netif_list
Definition: netif.c:75
void espconn_dns_setserver(u8_t numdns, ip_addr_t *dnsserver)
Definition: espconn.c:1302
#define NULL
Definition: def.h:47
bool wifi_softap_dhcps_stop(void)
u8_t num
Definition: netif.h:197
#define IP2STR(ipaddr)
Definition: ip_addr.h:240
#define AP_NETWORK
Definition: user_config.h:81
#define os_printf
Definition: osapi.h:62
uint8_t ICACHE_FLASH_ATTR UTILS_StrToIP(const int8_t *str, void *ip)
Definition: mqtt_utils.c:91
static ip_addr_t ap_network_addr
Definition: wifi.c:64
static ip_addr_t sta_network_addr
Definition: wifi.c:62
#define ip_addr_cmp(addr1, addr2)
Definition: ip_addr.h:198
bool wifi_softap_dhcps_start(void)
struct netif * next
Definition: netif.h:141
bool wifi_set_ip_info(uint8 if_index, struct ip_info *info)
static ip_addr_t dns_ip
Definition: wifi.c:65
Definition: netif.h:139
#define IPSTR
Definition: ip_addr.h:245
bool ICACHE_FLASH_ATTR wifi_softap_set_dhcps_lease(struct dhcps_lease *please)
Definition: dhcpserver.c:952
#define ip4_addr3(ipaddr)
Definition: ip_addr.h:222
#define ip4_addr4(ipaddr)
Definition: ip_addr.h:223
void dhcps_set_DNS(struct ip_addr *dns_ip) ICACHE_FLASH_ATTR
Definition: dhcpserver.c:1155
#define IP4_ADDR(ipaddr, a, b, c, d)
Definition: ip_addr.h:139
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wifi_start_scan()

void ICACHE_FLASH_ATTR wifi_start_scan ( )

Definition at line 570 of file wifi.c.

References NULL, os_timer_arm, os_timer_disarm, os_timer_func_t, os_timer_setfn, WIFI_SCAN_INTERVAL, wifi_scan_timer, and wifi_scan_timer_func().

Referenced by wifi_connect(), wifi_reconnect_timer_func(), wifi_scan_done_cb(), wifi_scan_timeout_timer_func(), and wifi_scan_timer_func().

570  {
571  // start wifi scan timer
575 }
#define os_timer_disarm
Definition: osapi.h:51
#define NULL
Definition: def.h:47
#define os_timer_func_t
Definition: os_type.h:35
#define os_timer_setfn
Definition: osapi.h:52
static void ICACHE_FLASH_ATTR wifi_scan_timer_func(void *arg)
Definition: wifi.c:279
#define WIFI_SCAN_INTERVAL
Definition: wifi.c:33
static os_timer_t wifi_scan_timer
Definition: wifi.c:37
#define os_timer_arm(a, b, c)
Definition: osapi.h:50
Here is the call graph for this function:
Here is the caller graph for this function:

◆ wifi_stop_scan()

void ICACHE_FLASH_ATTR wifi_stop_scan ( )

Definition at line 577 of file wifi.c.

References os_timer_disarm, wifi_scan_runnning, and wifi_scan_timer.

Referenced by watchdog_timer_func().

577  {
578  // stop wifi scan timer
580  wifi_scan_runnning = false;
581 }
#define os_timer_disarm
Definition: osapi.h:51
volatile bool wifi_scan_runnning
Definition: wifi.c:51
static os_timer_t wifi_scan_timer
Definition: wifi.c:37
Here is the caller graph for this function: