diff --git a/src/PS4Controller.cpp b/src/PS4Controller.cpp index 7284803..f2b33d6 100644 --- a/src/PS4Controller.cpp +++ b/src/PS4Controller.cpp @@ -4,9 +4,13 @@ #include extern "C" { +#include "esp_bt_device.h" #include "ps4.h" } +#define ESP_BD_ADDR_HEX_STR "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx" +#define ESP_BD_ADDR_HEX_ARR(addr) addr[0], addr[1], addr[2], addr[3], addr[4], addr[5] + #define ESP_BD_ADDR_HEX_PTR(addr) \ (uint8_t*)addr + 0, (uint8_t*)addr + 1, (uint8_t*)addr + 2, \ (uint8_t*)addr + 3, (uint8_t*)addr + 4, (uint8_t*)addr + 5 @@ -56,6 +60,22 @@ bool PS4Controller::begin(const char* mac) { void PS4Controller::end() {} +String PS4Controller::getAddress() { + String address = ""; + + if (btStarted()) { + char mac[18]; + const uint8_t* addr = esp_bt_dev_get_address(); + + sprintf(mac, ESP_BD_ADDR_STR, ESP_BD_ADDR_HEX_ARR(addr)); + + address = String(mac); + } + + return address; +} + + bool PS4Controller::isConnected() { return ps4IsConnected(); } void PS4Controller::setLed(uint8_t r, uint8_t g, uint8_t b) { diff --git a/src/PS4Controller.h b/src/PS4Controller.h index bba3da3..92e7dab 100644 --- a/src/PS4Controller.h +++ b/src/PS4Controller.h @@ -21,6 +21,8 @@ class PS4Controller { bool begin(const char* mac); void end(); + String getAddress(); + bool isConnected(); void setLed(uint8_t r, uint8_t g, uint8_t b);