test_esp32.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. Tests for the Wi-Fi
  3. */
  4. #include "esp_system.h"
  5. #include "unity.h"
  6. #include "esp_system.h"
  7. #include "esp_event_loop.h"
  8. #include "esp_wifi.h"
  9. #include "esp_log.h"
  10. #include "nvs_flash.h"
  11. static const char* TAG = "test_wifi";
  12. #define DEFAULT_SSID "TEST_SSID"
  13. #define DEFAULT_PWD "TEST_PASS"
  14. static esp_err_t event_handler(void *ctx, system_event_t *event)
  15. {
  16. printf("ev_handle_called.\n");
  17. switch(event->event_id) {
  18. case SYSTEM_EVENT_STA_START:
  19. ESP_LOGI(TAG, "SYSTEM_EVENT_STA_START");
  20. //do not actually connect in test case
  21. //;
  22. break;
  23. case SYSTEM_EVENT_STA_GOT_IP:
  24. ESP_LOGI(TAG, "SYSTEM_EVENT_STA_GOT_IP");
  25. ESP_LOGI(TAG, "got ip:%s\n",
  26. ip4addr_ntoa(&event->event_info.got_ip.ip_info.ip));
  27. break;
  28. case SYSTEM_EVENT_STA_DISCONNECTED:
  29. ESP_LOGI(TAG, "SYSTEM_EVENT_STA_DISCONNECTED");
  30. TEST_ESP_OK(esp_wifi_connect());
  31. break;
  32. default:
  33. break;
  34. }
  35. return ESP_OK;
  36. }
  37. #define EMPH_STR(s) "****** "s" ******"
  38. static void test_wifi_init_deinit(wifi_init_config_t *cfg, wifi_config_t* wifi_config)
  39. {
  40. ESP_LOGI(TAG, EMPH_STR("esp_wifi_init"));
  41. TEST_ESP_OK(esp_wifi_init(cfg));
  42. ESP_LOGI(TAG, EMPH_STR("esp_wifi_set_mode"));
  43. TEST_ESP_OK(esp_wifi_set_mode(WIFI_MODE_STA));
  44. ESP_LOGI(TAG, EMPH_STR("esp_wifi_set_config"));
  45. TEST_ESP_OK(esp_wifi_set_config(ESP_IF_WIFI_STA, wifi_config));
  46. ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit..."));
  47. TEST_ESP_OK(esp_wifi_deinit());
  48. }
  49. static void test_wifi_start_stop(wifi_init_config_t *cfg, wifi_config_t* wifi_config)
  50. {
  51. ESP_LOGI(TAG, EMPH_STR("esp_wifi_init"));
  52. TEST_ESP_OK(esp_wifi_init(cfg));
  53. ESP_LOGI(TAG, EMPH_STR("esp_wifi_set_mode"));
  54. TEST_ESP_OK(esp_wifi_set_mode(WIFI_MODE_STA));
  55. ESP_LOGI(TAG, EMPH_STR("esp_wifi_set_config"));
  56. TEST_ESP_OK(esp_wifi_set_config(ESP_IF_WIFI_STA, wifi_config));
  57. //now start wifi
  58. ESP_LOGI(TAG, EMPH_STR("esp_wifi_start..."));
  59. TEST_ESP_OK(esp_wifi_start());
  60. //wifi stop
  61. ESP_LOGI(TAG, EMPH_STR("esp_wifi_stop..."));
  62. TEST_ESP_OK( esp_wifi_stop() );
  63. ESP_LOGI(TAG, EMPH_STR("esp_wifi_deinit..."));
  64. TEST_ESP_OK(esp_wifi_deinit());
  65. }
  66. TEST_CASE("wifi stop and deinit","[wifi]")
  67. {
  68. wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  69. wifi_config_t wifi_config = {
  70. .sta = {
  71. .ssid = DEFAULT_SSID,
  72. .password = DEFAULT_PWD
  73. },
  74. };
  75. //init nvs
  76. ESP_LOGI(TAG, EMPH_STR("nvs_flash_init"));
  77. esp_err_t r = nvs_flash_init();
  78. if (r == ESP_ERR_NVS_NO_FREE_PAGES) {
  79. ESP_LOGI(TAG, EMPH_STR("no free pages, erase.."));
  80. TEST_ESP_OK(nvs_flash_erase());
  81. r = nvs_flash_init();
  82. }
  83. TEST_ESP_OK(r);
  84. //init tcpip
  85. ESP_LOGI(TAG, EMPH_STR("tcpip_adapter_init"));
  86. tcpip_adapter_init();
  87. //init event loop
  88. ESP_LOGI(TAG, EMPH_STR("esp_event_loop_init"));
  89. TEST_ESP_OK(esp_event_loop_init(event_handler, NULL));
  90. ESP_LOGI(TAG, "test wifi init & deinit...");
  91. test_wifi_init_deinit(&cfg, &wifi_config);
  92. ESP_LOGI(TAG, "wifi init & deinit seem to be OK.");
  93. ESP_LOGI(TAG, "test wifi start & stop...");
  94. test_wifi_start_stop(&cfg, &wifi_config);
  95. ESP_LOGI(TAG, "wifi start & stop seem to be OK.");
  96. ESP_LOGI(TAG, EMPH_STR("nvs_flash_deinit..."));
  97. nvs_flash_deinit();
  98. ESP_LOGI(TAG, "test passed...");
  99. TEST_IGNORE_MESSAGE("this test case is ignored due to the critical memory leak of tcpip_adapter and event_loop.");
  100. }