#include <Arduino.h>

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>
#include <ArduinoJson.h>
#include <vector>

#include <Update.h>



// 命令处理函数声明
void handleCommand(uint8_t cmd_id, JsonObject& cmdData);



// 特征UUID定义
extern const char* SERVICE_UUID;
extern const char* CHAR_COMMAND_UUID;  // 命令（写）
extern const char* CHAR_INDICATE_UUID;  // 指示（Indicate）
extern const char* CHAR_STATUS_UUID;  // 状态（读）
extern const char* CHAR_OTA_UUID;  // OTA（写）
extern const char* CHAR_NOTIFY_UUID;  // 通知（Notify）

// 全局BLE对象
extern BLEServer* pServer;
extern BLEService *pService;
extern BLECharacteristic *pCmdChar, *pIndicateChar, *pStatusChar, *pOtaChar, *pNotifyChar;

extern int BLECONFIGFLAG;

void setupBLECharacteristics();

void prepareResponse(uint8_t cmd_id);