Added bluetooth communication.
This commit is contained in:
parent
a53555446e
commit
6695e71370
|
@ -1,39 +1,11 @@
|
||||||
/**
|
|
||||||
* Bluetooth Classic Example
|
|
||||||
* Scan for devices - asyncronously, print device as soon as found
|
|
||||||
* query devices for SPP - SDP profile
|
|
||||||
* connect to first device offering a SPP connection
|
|
||||||
*
|
|
||||||
* Example python server:
|
|
||||||
* source: https://gist.github.com/ukBaz/217875c83c2535d22a16ba38fc8f2a91
|
|
||||||
*
|
|
||||||
* Tested with Raspberry Pi onboard Wifi/BT, USB BT 4.0 dongles, USB BT 1.1 dongles,
|
|
||||||
* 202202: does NOT work with USB BT 2.0 dongles when esp32 aduino lib is compiled with SSP support!
|
|
||||||
* see https://github.com/espressif/esp-idf/issues/8394
|
|
||||||
*
|
|
||||||
* use ESP_SPP_SEC_ENCRYPT|ESP_SPP_SEC_AUTHENTICATE in connect() if remote side requests 'RequireAuthentication': dbus.Boolean(True),
|
|
||||||
* use ESP_SPP_SEC_NONE or ESP_SPP_SEC_ENCRYPT|ESP_SPP_SEC_AUTHENTICATE in connect() if remote side has Authentication: False
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <BluetoothSerial.h>
|
#include <BluetoothSerial.h>
|
||||||
|
|
||||||
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
|
|
||||||
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(CONFIG_BT_SPP_ENABLED)
|
|
||||||
#error Serial Bluetooth not available or not enabled. It is only available for the ESP32 chip.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
BluetoothSerial SerialBT;
|
BluetoothSerial SerialBT;
|
||||||
|
|
||||||
|
|
||||||
#define BT_DISCOVER_TIME 10000
|
#define BT_DISCOVER_TIME 10000
|
||||||
esp_spp_sec_t sec_mask=ESP_SPP_SEC_NONE; // or ESP_SPP_SEC_ENCRYPT|ESP_SPP_SEC_AUTHENTICATE to request pincode confirmation
|
esp_spp_sec_t sec_mask=ESP_SPP_SEC_NONE;
|
||||||
esp_spp_role_t role=ESP_SPP_ROLE_SLAVE; // or ESP_SPP_ROLE_MASTER
|
esp_spp_role_t role=ESP_SPP_ROLE_SLAVE;
|
||||||
|
|
||||||
// std::map<BTAddress, BTAdvertisedDeviceSet> btDeviceList;
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
@ -41,15 +13,10 @@ void setup() {
|
||||||
Serial.println("========== serialBT failed!");
|
Serial.println("========== serialBT failed!");
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
// SerialBT.setPin("1234"); // doesn't seem to change anything
|
|
||||||
// SerialBT.enableSSP(); // doesn't seem to change anything
|
|
||||||
|
|
||||||
|
|
||||||
Serial.println("Starting discoverAsync...");
|
Serial.println("Starting discoverAsync...");
|
||||||
BTScanResults* btDeviceList = SerialBT.getScanResults(); // maybe accessing from different threads!
|
BTScanResults* btDeviceList = SerialBT.getScanResults();
|
||||||
if (SerialBT.discoverAsync([](BTAdvertisedDevice* pDevice) {
|
if (SerialBT.discoverAsync([](BTAdvertisedDevice* pDevice) {
|
||||||
// BTAdvertisedDeviceSet*set = reinterpret_cast<BTAdvertisedDeviceSet*>(pDevice);
|
|
||||||
// btDeviceList[pDevice->getAddress()] = * set;
|
|
||||||
Serial.printf(">>>>>>>>>>>Found a new device asynchronously: %s\n", pDevice->toString().c_str());
|
Serial.printf(">>>>>>>>>>>Found a new device asynchronously: %s\n", pDevice->toString().c_str());
|
||||||
} )
|
} )
|
||||||
) {
|
) {
|
||||||
|
@ -87,13 +54,9 @@ void setup() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
String sendData="Hi from esp32!\n";
|
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if(! SerialBT.isClosed() && SerialBT.connected()) {
|
if(! SerialBT.isClosed() && SerialBT.connected()) {
|
||||||
if(SerialBT.available()) {
|
if(SerialBT.available()) {
|
||||||
Serial.print("rx: ");
|
|
||||||
while(SerialBT.available()) {
|
while(SerialBT.available()) {
|
||||||
int c=SerialBT.read();
|
int c=SerialBT.read();
|
||||||
if(c >= 0) {
|
if(c >= 0) {
|
||||||
|
|
Loading…
Reference in a new issue