Skip to content

Commit 5171954

Browse files
committed
added Pixel Buffer Size
1 parent 5ec05e9 commit 5171954

File tree

2 files changed

+44
-38
lines changed

2 files changed

+44
-38
lines changed

libraries/BLEAdafruitService/src/services/BLEAdafruitAddressablePixel.cpp

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,47 +66,62 @@ const uint8_t BLEAdafruitAddressablePixel::UUID128_CHR_DATA[16] =
6666
0xA8, 0x42, 0x32, 0xC3, 0x03, 0x09, 0xAF, 0xAD
6767
};
6868

69+
const uint8_t BLEAdafruitAddressablePixel::UUID128_CHR_BUFSIZE[16] =
70+
{
71+
0xB8, 0x6c, 0x75, 0x05, 0xE9, 0x25, 0xBD, 0x93,
72+
0xA8, 0x42, 0x32, 0xC3, 0x04, 0x09, 0xAF, 0xAD
73+
};
74+
6975
// Constructor
7076
BLEAdafruitAddressablePixel::BLEAdafruitAddressablePixel(void)
71-
: BLEService(UUID128_SERVICE), Pin(UUID128_CHR_PIN), Type(UUID128_CHR_TYPE), Data(UUID128_CHR_DATA)
77+
: BLEService(UUID128_SERVICE), _pin(UUID128_CHR_PIN), _type(UUID128_CHR_TYPE),
78+
_data(UUID128_CHR_DATA), _bufsize(UUID128_CHR_BUFSIZE)
7279
{
7380
_neo = NULL;
7481
}
7582

76-
err_t BLEAdafruitAddressablePixel::begin (Adafruit_NeoPixel_Type* neo_pixel)
83+
err_t BLEAdafruitAddressablePixel::begin(Adafruit_NeoPixel* neo_pixel)
7784
{
7885
_neo = neo_pixel;
79-
return begin((uint8_t) _neo->getPin(), 0);
86+
uint16_t bufsize = _neo->numPixels()*3; // TODO actual bufsize for 3 RGB or 4 RGBW later
87+
return begin((uint8_t) _neo->getPin(), 0, bufsize); // TODO dotstart support
8088
}
8189

82-
err_t BLEAdafruitAddressablePixel::begin(uint8_t pin, uint8_t type)
90+
err_t BLEAdafruitAddressablePixel::begin(uint8_t pin, uint8_t type, uint16_t bufsize)
8391
{
8492
// Invoke base class begin()
8593
VERIFY_STATUS( BLEService::begin() );
8694

8795
// Add Characteristic
88-
Pin.setProperties(CHR_PROPS_READ | CHR_PROPS_WRITE);
89-
Pin.setPermission(SECMODE_OPEN, SECMODE_OPEN);
90-
Pin.setFixedLen(1);
91-
VERIFY_STATUS( Pin.begin() );
92-
Pin.write8(pin);
96+
_pin.setProperties(CHR_PROPS_READ | CHR_PROPS_WRITE);
97+
_pin.setPermission(SECMODE_OPEN, SECMODE_OPEN);
98+
_pin.setFixedLen(1);
99+
VERIFY_STATUS( _pin.begin() );
100+
_pin.write8(pin);
93101

94102
// Add Characteristic
95-
Type.setProperties(CHR_PROPS_READ | CHR_PROPS_WRITE);
96-
Type.setPermission(SECMODE_OPEN, SECMODE_OPEN);
97-
Type.setFixedLen(1);
98-
VERIFY_STATUS( Type.begin() );
99-
Type.write8(type);
103+
_type.setProperties(CHR_PROPS_READ | CHR_PROPS_WRITE);
104+
_type.setPermission(SECMODE_OPEN, SECMODE_OPEN);
105+
_type.setFixedLen(1);
106+
VERIFY_STATUS( _type.begin() );
107+
_type.write8(type);
100108

101109
// Add Characteristic
102-
Data.setProperties(CHR_PROPS_WRITE);
103-
Data.setPermission(SECMODE_NO_ACCESS, SECMODE_OPEN);
110+
_data.setProperties(CHR_PROPS_WRITE);
111+
_data.setPermission(SECMODE_NO_ACCESS, SECMODE_OPEN);
104112
// Change to use VLOC STACK to USER due to lack of memroy
105113
// Data.setMaxLen(Bluefruit.getMaxMtu(BLE_GAP_ROLE_PERIPH));
106-
Data.setMaxLen(BLE_GATTS_VAR_ATTR_LEN_MAX);
107-
VERIFY_STATUS( Data.begin() );
114+
_data.setMaxLen(BLE_GATTS_VAR_ATTR_LEN_MAX);
115+
VERIFY_STATUS( _data.begin() );
116+
117+
// Add Characteristic
118+
_bufsize.setProperties(CHR_PROPS_READ | CHR_PROPS_WRITE);
119+
_bufsize.setPermission(SECMODE_OPEN, SECMODE_OPEN);
120+
_bufsize.setFixedLen(2);
121+
VERIFY_STATUS( _bufsize.begin() );
122+
_bufsize.write16(bufsize);
108123

109-
Data.setWriteCallback(pixel_data_write_cb, true);
124+
_data.setWriteCallback(pixel_data_write_cb, true);
110125

111126
return ERROR_NONE;
112127
}

libraries/BLEAdafruitService/src/services/BLEAdafruitAddressablePixel.h

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,38 +25,29 @@
2525
#ifndef BLEADAFRUITADDRESSABLEPIXEL_H_
2626
#define BLEADAFRUITADDRESSABLEPIXEL_H_
2727

28-
// use Adafruit_CPlay_NeoPixel instead of Adafruit_NeoPixel
29-
#define USE_CPLAY_NEOPIXEL 0
30-
31-
#if USE_CPLAY_NEOPIXEL
32-
#include "Adafruit_CPlay_NeoPixel.h"
33-
#define Adafruit_NeoPixel_Type Adafruit_CPlay_NeoPixel
34-
#else
35-
#include "Adafruit_NeoPixel.h"
36-
#define Adafruit_NeoPixel_Type Adafruit_NeoPixel
37-
#endif
28+
#include "Adafruit_NeoPixel.h"
3829

3930
class BLEAdafruitAddressablePixel : public BLEService
4031
{
4132
public:
4233
static const uint8_t UUID128_SERVICE[16];
4334
static const uint8_t UUID128_CHR_PIN[16];
44-
// static const uint8_t UUID128_CHR_COUNT[16];
4535
static const uint8_t UUID128_CHR_TYPE[16];
4636
static const uint8_t UUID128_CHR_DATA[16];
47-
48-
// BLECharacteristic Count;
49-
BLECharacteristic Pin;
50-
BLECharacteristic Type;
51-
BLECharacteristic Data;
37+
static const uint8_t UUID128_CHR_BUFSIZE[16];
5238

5339
BLEAdafruitAddressablePixel(void);
54-
virtual err_t begin(Adafruit_NeoPixel_Type* neo);
40+
virtual err_t begin(Adafruit_NeoPixel* neo);
5541

5642
private:
57-
Adafruit_NeoPixel_Type* _neo;
43+
BLECharacteristic _pin;
44+
BLECharacteristic _type;
45+
BLECharacteristic _data;
46+
BLECharacteristic _bufsize;
47+
48+
Adafruit_NeoPixel* _neo;
5849

59-
err_t begin(uint8_t pin, uint8_t type);
50+
err_t begin(uint8_t pin, uint8_t type, uint16_t bufsize);
6051

6152
static void pixel_data_write_cb(uint16_t conn_hdl, BLECharacteristic* chr, uint8_t* data, uint16_t len);
6253
};

0 commit comments

Comments
 (0)