WiFi_TX.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. WiFi NAN driver
  3. with thanks to https://github.com/sxjack/uav_electronic_ids for WiFi calls
  4. */
  5. #include "WiFi_TX.h"
  6. #include <esp_wifi.h>
  7. #include <WiFi.h>
  8. #include <esp_system.h>
  9. bool WiFi_NAN::init(void)
  10. {
  11. wifi_config_t wifi_config {};
  12. WiFi.softAP("", NULL, wifi_channel);
  13. esp_wifi_get_config(WIFI_IF_AP, &wifi_config);
  14. wifi_config.ap.ssid_hidden = 1;
  15. if (esp_wifi_set_config(WIFI_IF_AP, &wifi_config) != ESP_OK) {
  16. return false;
  17. }
  18. if (esp_wifi_set_bandwidth(WIFI_IF_AP, WIFI_BW_HT20) != ESP_OK) {
  19. return false;
  20. }
  21. if (esp_read_mac(WiFi_mac_addr, ESP_MAC_WIFI_STA) != ESP_OK) {
  22. return false;
  23. }
  24. return true;
  25. }
  26. bool WiFi_NAN::transmit(ODID_UAS_Data &UAS_data)
  27. {
  28. uint8_t buffer[1024] {};
  29. int length;
  30. if ((length = odid_wifi_build_nan_sync_beacon_frame((char *)WiFi_mac_addr,
  31. buffer,sizeof(buffer))) > 0) {
  32. if (esp_wifi_80211_tx(WIFI_IF_AP,buffer,length,true) != ESP_OK) {
  33. return false;
  34. }
  35. }
  36. if ((length = odid_wifi_build_message_pack_nan_action_frame(&UAS_data,(char *)WiFi_mac_addr,
  37. ++send_counter,
  38. buffer,sizeof(buffer))) > 0) {
  39. if (esp_wifi_80211_tx(WIFI_IF_AP,buffer,length,true) != ESP_OK) {
  40. return false;
  41. }
  42. }
  43. return true;
  44. }