#ifndef ChronoBLE_H #define ChronoBLE_H #include #include #include // Flag to signal that a new reading is ready to be processed extern volatile bool newReadingAvailable; extern volatile int lastReadFPS; typedef void (*CallbackFunction)(); class ChronoBLE { public: enum ConnectionState { IDLE, SCANNING, DEVICE_FOUND, CONNECTING, CONNECTED }; // Constructor: Called when a ChronoBLE object is created ChronoBLE(); // Public methods ConnectionState currentState; void init(); void startScan(); bool isIdle(); bool isConnected(); bool foundDevice(); bool connectToDevice(); static void setDevice(const NimBLEAdvertisedDevice* device); static bool changeGunType(int type); void setSpeedCallback(void (*pFunc)(int speed)); bool setSpeedProfile(uint8_t low, uint8_t high); private: void _setState(ConnectionState state); void _disconnectDevice(); }; #endif