WiFi_TX.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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(const char *_ssid)
  10. {
  11. int i;
  12. int8_t wifi_power;
  13. wifi_config_t wifi_config;
  14. strncpy(ssid, _ssid, sizeof(ssid));
  15. ssid[sizeof(ssid)-1] = 0;
  16. ssid_length = strlen(ssid);
  17. WiFi.softAP(ssid, NULL, wifi_channel);
  18. esp_wifi_get_config(WIFI_IF_AP, &wifi_config);
  19. wifi_config.ap.ssid_hidden = 1;
  20. esp_err_t status = esp_wifi_set_config(WIFI_IF_AP, &wifi_config);
  21. // esp_wifi_set_country();
  22. status = esp_wifi_set_bandwidth(WIFI_IF_AP,WIFI_BW_HT20);
  23. // esp_wifi_set_max_tx_power(78);
  24. esp_wifi_get_max_tx_power(&wifi_power);
  25. String address = WiFi.macAddress();
  26. status = esp_read_mac(WiFi_mac_addr,ESP_MAC_WIFI_STA);
  27. return true;
  28. }
  29. bool WiFi_NAN::transmit(ODID_UAS_Data &UAS_data)
  30. {
  31. int length;
  32. esp_err_t wifi_status;
  33. char text[128];
  34. uint8_t buffer[1024];
  35. if ((length = odid_wifi_build_nan_sync_beacon_frame((char *)WiFi_mac_addr,
  36. buffer,sizeof(buffer))) > 0) {
  37. wifi_status = esp_wifi_80211_tx(WIFI_IF_AP,buffer,length,true);
  38. }
  39. if ((length = odid_wifi_build_message_pack_nan_action_frame(&UAS_data,(char *)WiFi_mac_addr,
  40. ++send_counter,
  41. buffer,sizeof(buffer))) > 0) {
  42. wifi_status = esp_wifi_80211_tx(WIFI_IF_AP,buffer,length,true);
  43. }
  44. return true;
  45. }