11.Bluetooth low energy (BLE) serial port pass-through
āļāļāļĢāđāļāļāļāļļāļāļĢāļĄ Bluetooth Low Energy (BLE, Bluetooth Low Energy) āđāļāđāļāļąāļāļāļĒāđāļēāļāđāļāļĢāđāļŦāļĨāļēāļĒ āļāļāđāļāļĨāļāļāļāļĢāđāļĄ iOS āļāļāļ Apple Classic Bluetooth āļāđāļāļāļĄāļĩāđāļāļĢāļąāļāļĢāļāļ MFi āđāļāļ·āđāļāđāļāļ·āđāļāļĄāļāđāļāļāļąāļāļāļļāļāļāļĢāļāđ iOS āļāļāļ Apple āļāļļāļāļāļĢāļāđāļāļĨāļđāļāļđāļāļāļĨāļąāļāļāļēāļāļāđāļģāđāļĄāđāļĄāļĩāļāđāļāļāļģāļāļąāļāļāļĩāđ
āđāļāļĢāđāļāļāļāļĨāļŠāđāļāđāļāđāļĨāļ°āļŦāļĨāļąāļāļāļēāļĢāļāļāļāļāļĨāļđāļāļđāļāļāļĨāļąāļāļāļēāļāļāđāļģāļāļ°āđāļĄāđāļāļđāļāļāļģāļāđāļģāļāļĩāđāļāļĩāđ āļĄāļĩāļāļāļāļ§āļēāļĄāđāļĨāļ°āļ§āļīāļāļĩāđāļāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļĄāļēāļāļĄāļēāļĒ āļāļĨāđāļēāļ§āđāļāļĒāļĒāđāļ āļāļĢāļīāļāļēāļĢāļāļĨāļđāļāļđāļāļĄāļĩāđāļŦāđāđāļāļĢāļđāļāđāļāļāļāļāļāđāļāļĢāđāļāļĨāđ āđāļĨāļ°āļĄāļĩāļāļąāļāļāļĢāļ° N āļāļąāļ§āļāļĩāđāļĄāļĩ ID āļāļīāļŠāļĢāļ° (UUID) āļāļĒāļđāđāđāļāđāđāļāļĢāđāļāļĨāđāļāļāļāđāļāđāļĨāļ°āļāļĢāļīāļāļēāļĢ āļāļąāļāļāļĢāļ°āđāļāđāļĨāļ°āļāļąāļ§āļĄāļĩāļŠāļīāļāļāļīāđāļāđāļēāļāļāļąāļ (āļāđāļēāļ āđāļāļĩāļĒāļ āđāļāđāļ āļĢāļ°āļāļļ) āļŦāļĨāļąāļāļāļēāļāļāļĩāđāļāļđāđāđāļāđāļāļģāļŦāļāļāļāļąāļāļāļĢāļ°āđāļĨāļ°āļĢāļ§āļĄāđāļāđāļēāļāļąāļāļŠāļīāļāļāļīāđāđāļĨāđāļ§ āļāđāļŠāļēāļĄāļēāļĢāļāđāļŦāđāļāļĢāļīāļāļēāļĢāļāļĩāđāļŠāļĄāļāļđāļĢāļāđāđāļāđ
BLE pass-through āļāļ·āļāļāļ°āđāļĢ āļāļ·āļāđāļāļ·āđāļāļŠāļĢāđāļēāļāļāļĢāļīāļāļēāļĢ BLE āđāļĨāļ°āļĄāļĩāļāļąāļāļāļĢāļ° 2 āļāļąāļ§āļāļĒāļđāđāđāļāđāđāļāļĢāđāļāļĨāđāļāļĩāđ
#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"āļŦāļāļķāđāļāļāļąāļāļŠāļģāļŦāļĢāļąāļ TX (āļŠāđāļāļāđāļāļĄāļđāļĨ) āđāļĨāļ°āļāļĩāļāļāļąāļāļŠāļģāļŦāļĢāļąāļ RX (āļĢāļąāļāļāđāļāļĄāļđāļĨ) āļŠāļģāļŦāļĢāļąāļāļŠāļīāđāļāļāļĩāđāļāļ§āļāđāļāļēāļĄāļĩāļŠāļīāļāļāļīāđāļāđāļēāļāļāļąāļ āļĢāļŦāļąāļŠāļāđāļāđāļāļāļĩāđāļāļ·āļāļāļēāļĢāļŠāļĢāđāļēāļāļāļĢāļīāļāļēāļĢāđāļĨāļ°āļāļąāļāļāļĢāļ°āđāļŦāļĄāđ:
// Create the BLE Service
BLEService *pService = pServer->createService(SERVICE_UUID);
// Create a BLE Characteristic
pTxCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX,
BLECharacteristic::PROPERTY_NOTIFY
);
pTxCharacteristic->addDescriptor(new BLE2902());
BLECharacteristic * pRxCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_RX,
BLECharacteristic::PROPERTY_WRITE
);āļāļąāļāđāļāļāļ·āļāļāļąāļāļāđāļāļąāļāļāļēāļĢāđāļĢāļĩāļĒāļāļāļĨāļąāļāļŠāļāļāļāļąāļāļāđāļāļąāļ āļāļķāđāļāļāļ°āļāļģāđāļāļīāļāļāļēāļĢāđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļĨāļ°āđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāđāļāļĩāļĒāļāļāļąāļāļāļĢāļ° RX:
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
};
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();
if (rxValue.length() > 0) {
Serial.println("*********");
Serial.print("Received Value: ");
for (int i = 0; i < rxValue.length(); i++)
Serial.print(rxValue[i]);
Serial.println();
Serial.println("*********");
}
}
};āļŠāļļāļāļāđāļēāļĒ āļĨāļđāļāļŦāļĨāļąāļāļāļ·āļāļāļąāļ§āļāļ§āļāļāļļāļĄāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ āļāļķāđāļāļāļ°āļāļģāļŦāļāļāļ§āđāļēāļĄāļĩāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļŦāļĢāļ·āļāđāļĄāđāđāļĨāļ°āļāļēāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļŦāļĢāļ·āļāđāļĄāđ
if (deviceConnected) {
pTxCharacteristic->setValue(&txValue, 1);
pTxCharacteristic->notify();
txValue++;
delay(10); // bluetooth stack will go into congestion, if too many packets are sent
}
// disconnecting
if (!deviceConnected && oldDeviceConnected) {
delay(500); // give the bluetooth stack the chance to get things ready
pServer->startAdvertising(); // restart advertising
Serial.println("start advertising");
oldDeviceConnected = deviceConnected;
}
// connecting
if (deviceConnected && !oldDeviceConnected) {
// do stuff here on connecting
oldDeviceConnected = deviceConnected;
}āļŠāļģāļŦāļĢāļąāļāđāļāđāļāļāļĩāđāļŠāļĄāļāļđāļĢāļāđ āļāļđāļāļąāļ§āļāļĒāđāļēāļāđāļĨāļāļĢāļēāļĢāļĩāļāļĒāđāļēāļāđāļāđāļāļāļēāļāļāļēāļĢ: ble_uart āđāļĨāļ°āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāļāļąāđāļāļŠāļēāļĄāļēāļĢāļāđāļāđ LightBlue āđāļāđ
Last updated
Was this helpful?