57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
|
#ifndef MICROBIT_MAGNETOMETER_SERVICE_H
|
||
|
#define MICROBIT_MAGNETOMETER_SERVICE_H
|
||
|
|
||
|
#include "MicroBit.h"
|
||
|
|
||
|
// UUIDs for our service and characteristics
|
||
|
extern const uint8_t MicroBitMagnetometerServiceUUID[];
|
||
|
extern const uint8_t MicroBitMagnetometerServiceDataUUID[];
|
||
|
extern const uint8_t MicroBitMagnetometerServiceBearingUUID[];
|
||
|
extern const uint8_t MicroBitMagnetometerServicePeriodUUID[];
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Class definition for a MicroBit BLE Magnetometer Service.
|
||
|
* Provides access to live magnetometer data via BLE, and provides basic configuration options.
|
||
|
*/
|
||
|
class MicroBitMagnetometerService
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
/**
|
||
|
* Constructor.
|
||
|
* Create a representation of the MagnetometerService
|
||
|
* @param _ble The instance of a BLE device that we're running on.
|
||
|
*/
|
||
|
MicroBitMagnetometerService(BLEDevice &_ble);
|
||
|
|
||
|
|
||
|
private:
|
||
|
|
||
|
/**
|
||
|
* Callback. Invoked when any of our attributes are written via BLE.
|
||
|
*/
|
||
|
void onDataWritten(const GattWriteCallbackParams *params);
|
||
|
|
||
|
/**
|
||
|
* Magnetometer update callback
|
||
|
*/
|
||
|
void magnetometerUpdate(MicroBitEvent e);
|
||
|
|
||
|
// Bluetooth stack we're running on.
|
||
|
BLEDevice &ble;
|
||
|
|
||
|
// memory for our 8 bit control characteristics.
|
||
|
uint16_t magnetometerDataCharacteristicBuffer[3];
|
||
|
uint16_t magnetometerBearingCharacteristicBuffer;
|
||
|
uint16_t magnetometerPeriodCharacteristicBuffer;
|
||
|
|
||
|
// Handles to access each characteristic when they are held by Soft Device.
|
||
|
GattAttribute::Handle_t magnetometerDataCharacteristicHandle;
|
||
|
GattAttribute::Handle_t magnetometerBearingCharacteristicHandle;
|
||
|
GattAttribute::Handle_t magnetometerPeriodCharacteristicHandle;
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|