event_handler.c 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #define event_handler_c_
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include "event_handler.h"
  5. //-----------------------------------------
  6. static const char *TAG = "event_handler";
  7. /*重新连接热点*/
  8. void WIFI_EVENT_STA_DISCONNECTED_FUN(void)
  9. {
  10. esp_wifi_connect();//连接热点
  11. ESP_LOGI(TAG,"connect to the AP fail");
  12. }
  13. /*有设备连接上ESP32的热点*/
  14. void WIFI_EVENT_AP_STACONNECTED_FUN( void* event_data )
  15. {
  16. wifi_event_ap_staconnected_t* event = (wifi_event_ap_staconnected_t*) event_data;
  17. /*打印连接设备的MAC地址*/
  18. ESP_LOGI(TAG, "station "MACSTR" join, AID=%d", MAC2STR(event->mac), event->aid);
  19. }
  20. /*有设备断开和ESP32的热点*/
  21. void WIFI_EVENT_AP_STADISCONNECTED_FUN( void* event_data )
  22. {
  23. wifi_event_ap_stadisconnected_t* event = (wifi_event_ap_stadisconnected_t*) event_data;
  24. /*打印断开设备的MAC地址*/
  25. ESP_LOGI(TAG, "station "MACSTR" leave, AID=%d",MAC2STR(event->mac), event->aid);
  26. }
  27. extern uint8_t wifi_net;
  28. /*连接上路由器(获取到了分配的IP地址)*/
  29. void IP_EVENT_STA_GOT_IP_FUN( void* event_data )
  30. {
  31. ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
  32. wifi_net=1;
  33. ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
  34. }
  35. /*WiFi事件回调*/
  36. void wifi_event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
  37. {
  38. /* 事件剥离 */
  39. if( event_base == WIFI_EVENT )
  40. {
  41. switch ( event_id )
  42. {
  43. case WIFI_EVENT_STA_START: esp_wifi_connect(); break; // STA START
  44. case WIFI_EVENT_STA_STOP: ESP_LOGI(TAG,"WIFI_EVENT_STA_STOP"); break; // STA STOP
  45. case WIFI_EVENT_STA_DISCONNECTED: WIFI_EVENT_STA_DISCONNECTED_FUN(); break; //和路由器断开
  46. case WIFI_EVENT_AP_START: ESP_LOGI(TAG,"WIFI_EVENT_AP_START"); break; // AP START
  47. case WIFI_EVENT_AP_STOP: ESP_LOGI(TAG,"WIFI_EVENT_AP_STOP"); break; // AP STOP
  48. case WIFI_EVENT_AP_STACONNECTED: WIFI_EVENT_AP_STACONNECTED_FUN( event_data ); break; //有设备连接上ESP32的热点
  49. case WIFI_EVENT_AP_STADISCONNECTED: WIFI_EVENT_AP_STADISCONNECTED_FUN(event_data ); break; //有设备断开和ESP32的热点
  50. default: break;
  51. }
  52. }
  53. else if( event_base == IP_EVENT ) // 路由事件ID 组
  54. {
  55. switch ( event_id )
  56. {
  57. case IP_EVENT_STA_GOT_IP: IP_EVENT_STA_GOT_IP_FUN(event_data); break; //获取到指定IP
  58. case IP_EVENT_STA_LOST_IP: ESP_LOGI(TAG,"IP_EVENT_STA_LOST_IP"); break;
  59. case IP_EVENT_AP_STAIPASSIGNED: ESP_LOGI(TAG,"IP_EVENT_AP_STAIPASSIGNED"); break;
  60. default: break;
  61. }
  62. }
  63. }