mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
* new helper for ESP32: SerialBLEInterface
* Some refactoring in BaseChatMesh and Terminal Chat * new companion_radio example
This commit is contained in:
parent
52f9c358b7
commit
d9dc76f197
8 changed files with 1000 additions and 9 deletions
83
src/helpers/esp32/SerialBLEInterface.h
Normal file
83
src/helpers/esp32/SerialBLEInterface.h
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#pragma once
|
||||
|
||||
#include "../BaseSerialInterface.h"
|
||||
#include <BLEDevice.h>
|
||||
#include <BLEServer.h>
|
||||
#include <BLEUtils.h>
|
||||
#include <BLE2902.h>
|
||||
|
||||
class SerialBLEInterface : public BaseSerialInterface, BLESecurityCallbacks, BLEServerCallbacks, BLECharacteristicCallbacks {
|
||||
BLEServer *pServer;
|
||||
BLEService *pService;
|
||||
BLECharacteristic * pTxCharacteristic;
|
||||
bool deviceConnected;
|
||||
bool oldDeviceConnected;
|
||||
bool checkAdvRestart;
|
||||
bool _isEnabled;
|
||||
uint32_t _pin_code;
|
||||
unsigned long _last_write;
|
||||
|
||||
struct Frame {
|
||||
uint8_t len;
|
||||
uint8_t buf[MAX_FRAME_SIZE];
|
||||
};
|
||||
|
||||
#define FRAME_QUEUE_SIZE 4
|
||||
int recv_queue_len;
|
||||
Frame recv_queue[FRAME_QUEUE_SIZE];
|
||||
int send_queue_len;
|
||||
Frame send_queue[FRAME_QUEUE_SIZE];
|
||||
|
||||
void clearBuffers() { recv_queue_len = 0; send_queue_len = 0; }
|
||||
|
||||
protected:
|
||||
// BLESecurityCallbacks methods
|
||||
uint32_t onPassKeyRequest() override;
|
||||
void onPassKeyNotify(uint32_t pass_key) override;
|
||||
bool onConfirmPIN(uint32_t pass_key) override;
|
||||
bool onSecurityRequest() override;
|
||||
void onAuthenticationComplete(esp_ble_auth_cmpl_t cmpl) override;
|
||||
|
||||
// BLEServerCallbacks methods
|
||||
void onConnect(BLEServer* pServer) override;
|
||||
void onConnect(BLEServer* pServer, esp_ble_gatts_cb_param_t *param) override;
|
||||
void onMtuChanged(BLEServer* pServer, esp_ble_gatts_cb_param_t* param) override;
|
||||
void onDisconnect(BLEServer* pServer) override;
|
||||
|
||||
// BLECharacteristicCallbacks methods
|
||||
void onWrite(BLECharacteristic* pCharacteristic, esp_ble_gatts_cb_param_t* param) override;
|
||||
|
||||
public:
|
||||
SerialBLEInterface() {
|
||||
pServer = NULL;
|
||||
pService = NULL;
|
||||
deviceConnected = false;
|
||||
oldDeviceConnected = false;
|
||||
checkAdvRestart = false;
|
||||
_isEnabled = false;
|
||||
_last_write = 0;
|
||||
send_queue_len = recv_queue_len = 0;
|
||||
}
|
||||
|
||||
void begin(const char* device_name, uint32_t pin_code);
|
||||
|
||||
// BaseSerialInterface methods
|
||||
void enable() override;
|
||||
void disable() override;
|
||||
bool isEnabled() const override { return _isEnabled; }
|
||||
|
||||
bool isConnected() const override;
|
||||
|
||||
bool isWriteBusy() const override;
|
||||
size_t writeFrame(const uint8_t src[], size_t len) override;
|
||||
size_t checkRecvFrame(uint8_t dest[]) override;
|
||||
};
|
||||
|
||||
#if BLE_DEBUG_LOGGING && ARDUINO
|
||||
#include <Arduino.h>
|
||||
#define BLE_DEBUG_PRINT(F, ...) Serial.printf("BLE: " F, ##__VA_ARGS__)
|
||||
#define BLE_DEBUG_PRINTLN(F, ...) Serial.printf("BLE: " F "\n", ##__VA_ARGS__)
|
||||
#else
|
||||
#define BLE_DEBUG_PRINT(...) {}
|
||||
#define BLE_DEBUG_PRINTLN(...) {}
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue