Add header files for bluetooth serial and BLE working
This commit is contained in:
parent
a8782c4fca
commit
c91ed189aa
26
src/BluetoothSerial/BTAdress.h
Normal file
26
src/BluetoothSerial/BTAdress.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#ifndef COMPONENTS_CPP_UTILS_BTADDRESS_H_
|
||||||
|
#define COMPONENTS_CPP_UTILS_BTADDRESS_H_
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
#if defined(CONFIG_BT_ENABLED)
|
||||||
|
#include <esp_gap_bt_api.h> // ESP32 BT
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief A %!BT device address
|
||||||
|
*
|
||||||
|
* Every %BT device has a unique address which can be used to identify it and from connection
|
||||||
|
*/
|
||||||
|
class BTAddress {
|
||||||
|
public:
|
||||||
|
BTAddress(esp_bd_addr_t address);
|
||||||
|
BTAddress(std::string stringAddress);
|
||||||
|
bool equals(BTAddress otherAddress);
|
||||||
|
esp_bd_addr_t* getNative();
|
||||||
|
std::string toString();
|
||||||
|
|
||||||
|
private:
|
||||||
|
esp_bd_addr_t m_address;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* CONFIG_BT_ENABLED */
|
||||||
|
#endif /* COMPONENTS_CPP_UTILS_BTADDRESS_H_ */
|
||||||
58
src/BluetoothSerial/BTAdvertisedDevice.h
Normal file
58
src/BluetoothSerial/BTAdvertisedDevice.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#ifndef __BTADVERTISEDDEVICE_H__
|
||||||
|
#define __BTADVERTISEDDEVICE_H__
|
||||||
|
|
||||||
|
#include "BTAddress.h"
|
||||||
|
|
||||||
|
|
||||||
|
class BTAdvertisedDevice {
|
||||||
|
public:
|
||||||
|
virtual ~BTAdvertisedDevice() = default;
|
||||||
|
|
||||||
|
virtual BTAddress getAddress();
|
||||||
|
virtual uint32_t getCOD();
|
||||||
|
virtual std::string getName();
|
||||||
|
virtual int8_t getRSSI();
|
||||||
|
|
||||||
|
|
||||||
|
virtual bool haveCOD();
|
||||||
|
virtual bool haveName();
|
||||||
|
virtual bool haveRSSI();
|
||||||
|
|
||||||
|
virtual std::string toString();
|
||||||
|
};
|
||||||
|
|
||||||
|
class BTAdvertisedDeviceSet : public virtual BTAdvertisedDevice {
|
||||||
|
public:
|
||||||
|
BTAdvertisedDeviceSet();
|
||||||
|
//~BTAdvertisedDeviceSet() = default;
|
||||||
|
|
||||||
|
|
||||||
|
BTAddress getAddress();
|
||||||
|
uint32_t getCOD();
|
||||||
|
std::string getName();
|
||||||
|
int8_t getRSSI();
|
||||||
|
|
||||||
|
|
||||||
|
bool haveCOD();
|
||||||
|
bool haveName();
|
||||||
|
bool haveRSSI();
|
||||||
|
|
||||||
|
std::string toString();
|
||||||
|
|
||||||
|
void setAddress(BTAddress address);
|
||||||
|
void setCOD(uint32_t cod);
|
||||||
|
void setName(std::string name);
|
||||||
|
void setRSSI(int8_t rssi);
|
||||||
|
|
||||||
|
bool m_haveCOD;
|
||||||
|
bool m_haveName;
|
||||||
|
bool m_haveRSSI;
|
||||||
|
|
||||||
|
|
||||||
|
BTAddress m_address = BTAddress((uint8_t*)"\0\0\0\0\0\0");
|
||||||
|
uint32_t m_cod;
|
||||||
|
std::string m_name;
|
||||||
|
int8_t m_rssi;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
35
src/BluetoothSerial/BTScan.h
Normal file
35
src/BluetoothSerial/BTScan.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#ifndef __BTSCAN_H__
|
||||||
|
#define __BTSCAN_H__
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
#include <Print.h>
|
||||||
|
#include "BTAddress.h"
|
||||||
|
#include "BTAdvertisedDevice.h"
|
||||||
|
|
||||||
|
class BTAdvertisedDevice;
|
||||||
|
class BTAdvertisedDeviceSet;
|
||||||
|
|
||||||
|
|
||||||
|
class BTScanResults {
|
||||||
|
public:
|
||||||
|
virtual ~BTScanResults() = default;
|
||||||
|
|
||||||
|
virtual void dump(Print *print = nullptr);
|
||||||
|
virtual int getCount();
|
||||||
|
virtual BTAdvertisedDevice* getDevice(uint32_t i);
|
||||||
|
};
|
||||||
|
|
||||||
|
class BTScanResultsSet : public BTScanResults {
|
||||||
|
public:
|
||||||
|
void dump(Print *print = nullptr);
|
||||||
|
int getCount();
|
||||||
|
BTAdvertisedDevice* getDevice(uint32_t i);
|
||||||
|
|
||||||
|
bool add(BTAdvertisedDeviceSet advertisedDevice, bool unique = true);
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
std::map<std::string, BTAdvertisedDeviceSet> m_vectorAdvertisedDevices;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
76
src/BluetoothSerial/BluetoothSerial.h
Normal file
76
src/BluetoothSerial/BluetoothSerial.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#ifndef _BLUETOOTH_SERIAL_H_
|
||||||
|
#define _BLUETOOTH_SERIAL_H_
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BLUEDROID_ENABLED)
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "Stream.h"
|
||||||
|
#include <esp_gap_bt_api.h>
|
||||||
|
#include <esp_spp_api.h>
|
||||||
|
#include <functional>
|
||||||
|
#include "BTScan.h"
|
||||||
|
|
||||||
|
typedef std::function<void(const uint8_t *buffer, size_t size)> BluetoothSerialDataCb;
|
||||||
|
typedef std::function<void(uint32_t num_val)> ConfirmRequestCb;
|
||||||
|
typedef std::function<void(boolean success)> AuthCompleteCb;
|
||||||
|
typedef std::function<void(BTAdvertisedDevice* pAdvertisedDevice)> BTAdvertisedDeviceCb;
|
||||||
|
|
||||||
|
class BluetoothSerial: public Stream
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
BluetoothSerial(void);
|
||||||
|
~BluetoothSerial(void);
|
||||||
|
|
||||||
|
bool begin(String localName=String(), bool isMaster=false, uint16_t rxQueueSize = 512 * 4, uint16_t txQueueSize = 512);
|
||||||
|
bool begin(unsigned long baud){//compatibility
|
||||||
|
return begin();
|
||||||
|
}
|
||||||
|
int available(void);
|
||||||
|
int peek(void);
|
||||||
|
bool hasClient(void);
|
||||||
|
int read(void);
|
||||||
|
size_t write(uint8_t c);
|
||||||
|
size_t write(const uint8_t *buffer, size_t size);
|
||||||
|
void flush();
|
||||||
|
void end(void);
|
||||||
|
void onData(BluetoothSerialDataCb cb);
|
||||||
|
esp_err_t register_callback(esp_spp_cb_t * callback);
|
||||||
|
|
||||||
|
void onConfirmRequest(ConfirmRequestCb cb);
|
||||||
|
void onAuthComplete(AuthCompleteCb cb);
|
||||||
|
void confirmReply(boolean confirm);
|
||||||
|
|
||||||
|
void enableSSP();
|
||||||
|
bool setPin(const char *pin);
|
||||||
|
bool connect(String remoteName);
|
||||||
|
bool connect(uint8_t remoteAddress[]);
|
||||||
|
bool connect();
|
||||||
|
bool connected(int timeout=0);
|
||||||
|
bool isReady(bool checkMaster=false, int timeout=0);
|
||||||
|
bool disconnect();
|
||||||
|
bool unpairDevice(uint8_t remoteAddress[]);
|
||||||
|
|
||||||
|
BTScanResults* discover(int timeout=0x30*1280);
|
||||||
|
bool discoverAsync(BTAdvertisedDeviceCb cb, int timeout=0x30*1280);
|
||||||
|
void discoverAsyncStop();
|
||||||
|
void discoverClear();
|
||||||
|
BTScanResults* getScanResults();
|
||||||
|
|
||||||
|
const int INQ_TIME = 1280; // Inquire Time unit 1280 ms
|
||||||
|
const int MIN_INQ_TIME = (ESP_BT_GAP_MIN_INQ_LEN * INQ_TIME);
|
||||||
|
const int MAX_INQ_TIME = (ESP_BT_GAP_MAX_INQ_LEN * INQ_TIME);
|
||||||
|
|
||||||
|
operator bool() const;
|
||||||
|
|
||||||
|
bool isCongested();
|
||||||
|
private:
|
||||||
|
String local_name;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
Loading…
Reference in New Issue
Block a user