2026-01-19 11:50:10 -05:00
|
|
|
#ifndef BLE_SERVICES_H
|
|
|
|
|
#define BLE_SERVICES_H
|
|
|
|
|
|
|
|
|
|
#include <Arduino.h>
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
// BLE Service UUIDs (Bluetooth SIG standard)
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
// Heart Rate Service
|
|
|
|
|
#define HEART_RATE_SERVICE_UUID "180D"
|
|
|
|
|
#define HEART_RATE_MEASUREMENT_UUID "2A37"
|
|
|
|
|
#define BODY_SENSOR_LOCATION_UUID "2A38"
|
|
|
|
|
|
2026-01-19 15:40:51 -05:00
|
|
|
// Battery Service
|
|
|
|
|
#define BATTERY_SERVICE_UUID "180F"
|
|
|
|
|
#define BATTERY_LEVEL_UUID "2A19"
|
|
|
|
|
|
2026-01-19 11:50:10 -05:00
|
|
|
// Fitness Machine Service
|
|
|
|
|
#define FITNESS_MACHINE_SERVICE_UUID "1826"
|
|
|
|
|
#define TREADMILL_DATA_UUID "2ACD"
|
|
|
|
|
#define FITNESS_MACHINE_FEATURE_UUID "2ACC"
|
|
|
|
|
|
|
|
|
|
// ============================================
|
|
|
|
|
// Function Prototypes
|
|
|
|
|
// ============================================
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Initialize NimBLE stack (call once at startup)
|
|
|
|
|
*/
|
|
|
|
|
void initBLE();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Stop BLE advertising and deinit
|
|
|
|
|
*/
|
|
|
|
|
void stopBLE();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Setup BLE as Heart Rate Monitor
|
|
|
|
|
* Creates Heart Rate Service with measurement characteristic
|
|
|
|
|
*/
|
|
|
|
|
void setupBLE_HeartRate();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Setup BLE as Treadmill (Fitness Machine)
|
|
|
|
|
* Creates Fitness Machine Service with treadmill data
|
|
|
|
|
*/
|
|
|
|
|
void setupBLE_Treadmill();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Send heart rate notification
|
|
|
|
|
* @param bpm Heart rate in beats per minute
|
|
|
|
|
*/
|
|
|
|
|
void notifyHeartRate(uint8_t bpm);
|
|
|
|
|
|
2026-01-19 15:40:51 -05:00
|
|
|
/**
|
|
|
|
|
* Update battery level
|
|
|
|
|
* @param level Battery level 0-100%
|
|
|
|
|
*/
|
|
|
|
|
void updateBatteryLevel(uint8_t level);
|
|
|
|
|
|
2026-01-19 11:50:10 -05:00
|
|
|
/**
|
|
|
|
|
* Send treadmill data notification
|
|
|
|
|
* @param speed Speed in 0.01 km/h units
|
|
|
|
|
* @param incline Incline in 0.1% units
|
2026-01-19 15:40:51 -05:00
|
|
|
* @param distance Total distance in meters
|
2026-01-19 11:50:10 -05:00
|
|
|
*/
|
2026-01-19 15:40:51 -05:00
|
|
|
void notifyTreadmill(uint16_t speed, int16_t incline, uint32_t distance);
|
2026-01-19 11:50:10 -05:00
|
|
|
|
|
|
|
|
#endif // BLE_SERVICES_H
|