@@ -66,47 +66,62 @@ const uint8_t BLEAdafruitAddressablePixel::UUID128_CHR_DATA[16] =
66
66
0xA8 , 0x42 , 0x32 , 0xC3 , 0x03 , 0x09 , 0xAF , 0xAD
67
67
};
68
68
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
+
69
75
// Constructor
70
76
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)
72
79
{
73
80
_neo = NULL ;
74
81
}
75
82
76
- err_t BLEAdafruitAddressablePixel::begin (Adafruit_NeoPixel_Type * neo_pixel)
83
+ err_t BLEAdafruitAddressablePixel::begin (Adafruit_NeoPixel * neo_pixel)
77
84
{
78
85
_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
80
88
}
81
89
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 )
83
91
{
84
92
// Invoke base class begin()
85
93
VERIFY_STATUS ( BLEService::begin () );
86
94
87
95
// 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);
93
101
94
102
// 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);
100
108
101
109
// 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);
104
112
// Change to use VLOC STACK to USER due to lack of memroy
105
113
// 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);
108
123
109
- Data .setWriteCallback (pixel_data_write_cb, true );
124
+ _data .setWriteCallback (pixel_data_write_cb, true );
110
125
111
126
return ERROR_NONE;
112
127
}
0 commit comments