2019-12-02 05:58:26 +01:00
|
|
|
#ifndef BLE_HF2_SERVICE_H
|
|
|
|
#define BLE_HF2_SERVICE_H
|
|
|
|
|
|
|
|
#include "MicroBitConfig.h"
|
|
|
|
#include "MicroBitThermometer.h"
|
|
|
|
#include "EventModel.h"
|
|
|
|
#include "pxt.h"
|
|
|
|
|
|
|
|
#define HF2_ID 9501
|
|
|
|
|
|
|
|
#define BLEHF2_FLAG_SERIAL_OUT 0x80
|
|
|
|
#define BLEHF2_FLAG_SERIAL_ERR 0xC0
|
|
|
|
#define BLEHF2_DATA_LENGTH 19
|
|
|
|
|
|
|
|
// UUIDs for our service and characteristics
|
|
|
|
extern const uint8_t BLEHF2ServiceUUID[];
|
|
|
|
extern const uint8_t BLEHF2TxCharacteristicUUID[];
|
|
|
|
|
|
|
|
struct BLEHF2Packet {
|
|
|
|
uint8_t command;
|
|
|
|
uint8_t data[BLEHF2_DATA_LENGTH];
|
|
|
|
};
|
|
|
|
|
2022-03-22 17:36:19 +01:00
|
|
|
//================================================================
|
|
|
|
#if MICROBIT_CODAL
|
|
|
|
//================================================================
|
|
|
|
|
|
|
|
#include "MicroBitBLEManager.h"
|
|
|
|
#include "MicroBitBLEService.h"
|
|
|
|
|
|
|
|
class BLEHF2Service : public MicroBitBLEService
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
* Create a representation of the TemperatureService
|
|
|
|
* @param _ble The instance of a BLE device that we're running on.
|
|
|
|
*/
|
|
|
|
BLEHF2Service(BLEDevice &_ble);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sends text
|
|
|
|
*/
|
|
|
|
void sendSerial(const char *data, int len, bool isError);
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
// Bluetooth stack we're running on.
|
|
|
|
BLEDevice &ble;
|
|
|
|
|
|
|
|
// memory for buffers.
|
|
|
|
BLEHF2Packet txCharacteristicMessage;
|
|
|
|
|
|
|
|
// Index for each charactersitic in arrays of handles and UUIDs
|
|
|
|
typedef enum mbbs_cIdx
|
|
|
|
{
|
|
|
|
mbbs_cIdxMESSAGE,
|
|
|
|
mbbs_cIdxCOUNT
|
|
|
|
} mbbs_cIdx;
|
|
|
|
|
|
|
|
// UUIDs for our service and characteristics
|
|
|
|
static const uint8_t service_base_uuid[ 16];
|
|
|
|
static const uint8_t char_base_uuid[ 16];
|
|
|
|
static const uint16_t serviceUUID;
|
|
|
|
static const uint16_t charUUID[ mbbs_cIdxCOUNT];
|
|
|
|
|
|
|
|
// Data for each characteristic when they are held by Soft Device.
|
|
|
|
MicroBitBLEChar chars[ mbbs_cIdxCOUNT];
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
int characteristicCount() { return mbbs_cIdxCOUNT; };
|
|
|
|
MicroBitBLEChar *characteristicPtr( int idx) { return &chars[ idx]; };
|
|
|
|
};
|
|
|
|
|
|
|
|
//================================================================
|
|
|
|
#else // MICROBIT_CODAL
|
|
|
|
//================================================================
|
|
|
|
|
|
|
|
#include "ble/BLE.h"
|
|
|
|
|
2019-12-02 05:58:26 +01:00
|
|
|
class BLEHF2Service
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
* Create a representation of the TemperatureService
|
|
|
|
* @param _ble The instance of a BLE device that we're running on.
|
|
|
|
*/
|
|
|
|
BLEHF2Service(BLEDevice &_ble);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sends text
|
|
|
|
*/
|
|
|
|
void sendSerial(const char *data, int len, bool isError);
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
// Bluetooth stack we're running on.
|
|
|
|
BLEDevice &ble;
|
|
|
|
|
|
|
|
// memory for buffers.
|
|
|
|
BLEHF2Packet txCharacteristicMessage;
|
|
|
|
|
|
|
|
// Handles to access each characteristic when they are held by Soft Device.
|
|
|
|
GattAttribute::Handle_t txCharacteristicHandle;
|
|
|
|
};
|
|
|
|
|
2022-03-22 17:36:19 +01:00
|
|
|
//================================================================
|
|
|
|
#endif // MICROBIT_CODAL
|
|
|
|
//================================================================
|
2019-12-02 05:58:26 +01:00
|
|
|
|
2022-03-22 17:36:19 +01:00
|
|
|
#endif
|