First attempt at file transfer
This commit is contained in:
83
src/BLEOTA.h
83
src/BLEOTA.h
@@ -3,20 +3,81 @@
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <BLEServer.h>
|
||||
#include <Update.h>
|
||||
|
||||
#define OTA_SERVICE_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e56193b"
|
||||
#define VERSION_NUMBER_UUID "1978a3df-c009-4837-b295-57ef429dde8c"
|
||||
#define VERSION_NUMBER_DESCRIPTOR_UUID "1e0c35d1-ba03-4f4d-a99c-bac7664d95ed"
|
||||
#define OTA_SERVICE_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561900"
|
||||
|
||||
#define VERSION_NUMBER_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561910"
|
||||
#define VERSION_NUMBER_DESCRIPTOR_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561911"
|
||||
|
||||
#define OTA_COMMAND_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561920"
|
||||
#define OTA_COMMAND_DESCRIPTOR_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561921"
|
||||
|
||||
#define OTA_FILE_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561930"
|
||||
#define OTA_FILE_DESCRIPTOR_UUID "71a4438e-fd52-4b15-b3d2-ec0e3e561931"
|
||||
|
||||
class BLEOTAClass {
|
||||
public:
|
||||
BLEOTAClass();
|
||||
void begin(BLEServer* server, char* versionNumber = "1.0.0");
|
||||
private:
|
||||
BLEServer* _pServer;
|
||||
char* _vNum;
|
||||
BLECharacteristic* _pVersionNumber;
|
||||
BLEDescriptor* _pVersionNumberDescriptor;
|
||||
public:
|
||||
BLEOTAClass();
|
||||
void begin(BLEServer* server, char* versionNumber = "1.0.0");
|
||||
void loop();
|
||||
|
||||
typedef enum otaCommand {
|
||||
CMD_ON = 0x00,
|
||||
CMD_READY = 0x01,
|
||||
CMD_DONE = 0x02,
|
||||
CMD_AGREE = 0x03,
|
||||
CMD_DISAGREE = 0x04,
|
||||
CMD_ERROR = 0x0F
|
||||
};
|
||||
|
||||
typedef enum otaStage {
|
||||
STAGE_READY,
|
||||
STAGE_FLASHING,
|
||||
STAGE_DONE,
|
||||
STAGE_ERROR
|
||||
};
|
||||
private:
|
||||
|
||||
void setOTAcommand(otaCommand cmd);
|
||||
|
||||
class OTACommandCallbacks : public BLECharacteristicCallbacks {
|
||||
public:
|
||||
OTACommandCallbacks(BLEOTAClass* pParent);
|
||||
void onWrite(BLECharacteristic* pCharacteristic, esp_ble_gatts_cb_param_t* param) override;
|
||||
private:
|
||||
BLEOTAClass* pParent_;
|
||||
};
|
||||
|
||||
class OTAFileCallbacks : public BLECharacteristicCallbacks {
|
||||
public:
|
||||
OTAFileCallbacks(BLEOTAClass* pParent);
|
||||
void onWrite(BLECharacteristic* pCharacteristic, esp_ble_gatts_cb_param_t* param) override;
|
||||
private:
|
||||
BLEOTAClass* pParent_;
|
||||
};
|
||||
|
||||
BLEServer* pServer_;
|
||||
char* vNum_;
|
||||
|
||||
BLECharacteristic* pVersionNumber_;
|
||||
BLEDescriptor* pVersionNumberDescriptor_;
|
||||
|
||||
BLECharacteristic* pOTACommand_;
|
||||
BLEDescriptor* pOTACommandDescriptor_;
|
||||
OTACommandCallbacks* cmdCallbacks_;
|
||||
otaCommand currentCommand_;
|
||||
|
||||
BLECharacteristic* pOTAFile_;
|
||||
BLEDescriptor* pOTAFileDescriptor_;
|
||||
OTAFileCallbacks* fileCallbacks_;
|
||||
|
||||
uint32_t fileSize_ = 0;
|
||||
uint32_t fileProgress_ = 0;
|
||||
|
||||
otaStage state_ = otaStage::STAGE_READY;
|
||||
|
||||
unsigned long lastLoop_ = 0;
|
||||
};
|
||||
|
||||
extern BLEOTAClass BLEota;
|
||||
|
||||
Reference in New Issue
Block a user