@@ -105,14 +105,25 @@ AdafruitBluefruit::AdafruitBluefruit(void)
105
105
*/
106
106
/* ------------------------------------------------------------------*/
107
107
varclr (&_sd_cfg);
108
+
109
+ _sd_cfg.attr_table_size = 0x800 ;
108
110
_sd_cfg.uuid128_max = BLE_UUID_VS_COUNT_DEFAULT;
109
111
_sd_cfg.service_changed = 0 ;
110
- _sd_cfg.mtu_max = BLEGATT_ATT_MTU_MAX;
112
+
113
+ _sd_cfg.prph .mtu_max = BLEGATT_ATT_MTU_MAX;
114
+ _sd_cfg.central .mtu_max = BLE_GATT_ATT_MTU_DEFAULT;
111
115
112
116
#if SD_VER >= 500
113
- _sd_cfg.event_len = BLE_GAP_EVENT_LENGTH_DEFAULT;
117
+ _sd_cfg.prph .event_len = BLE_GAP_EVENT_LENGTH_DEFAULT;
118
+ _sd_cfg.prph .hvn_tx_qsize = 3 ;
119
+ _sd_cfg.prph .wr_cmd_qsize = BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT;
120
+
121
+ _sd_cfg.central .event_len = BLE_GAP_EVENT_LENGTH_DEFAULT;
122
+ _sd_cfg.central .hvn_tx_qsize = BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT;
123
+ _sd_cfg.central .wr_cmd_qsize = BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT;
114
124
#endif
115
125
126
+
116
127
_prph_count = 0 ;
117
128
_central_count = 0 ;
118
129
@@ -172,42 +183,39 @@ void AdafruitBluefruit::configAttrTableSize(uint32_t attr_table_size)
172
183
_sd_cfg.attr_table_size = maxof (attr_table_size, BLE_GATTS_ATTR_TAB_SIZE_MIN);
173
184
}
174
185
175
- void AdafruitBluefruit::configMaxMtu (uint16_t mtu_max)
176
- {
177
- _sd_cfg.mtu_max = maxof (mtu_max, BLE_GATT_ATT_MTU_DEFAULT);
178
- }
179
-
180
- void AdafruitBluefruit::configGapEventLen (uint8_t event_length)
186
+ void AdafruitBluefruit::configPrphConn (uint16_t mtu_max, uint8_t event_len, uint8_t hvn_qsize, uint8_t wrcmd_qsize)
181
187
{
188
+ _sd_cfg.prph .mtu_max = maxof (mtu_max, BLE_GATT_ATT_MTU_DEFAULT);
182
189
#if SD_VER >= 500
183
- _sd_cfg.event_len = maxof (event_length , BLE_GAP_EVENT_LENGTH_MIN);
190
+ _sd_cfg.prph . event_len = maxof (event_len , BLE_GAP_EVENT_LENGTH_MIN);
184
191
#endif
192
+ _sd_cfg.prph .hvn_tx_qsize = hvn_qsize;
193
+ _sd_cfg.prph .wr_cmd_qsize = wrcmd_qsize;
185
194
}
186
195
187
- void AdafruitBluefruit::configHvnTxQueue (uint8_t hvn_tx_qsize)
188
- {
189
- _sd_cfg.hvn_tx_qsize = hvn_tx_qsize;
190
- }
191
-
192
- void AdafruitBluefruit::configWriteCmdQueue (uint8_t wr_cmd_qsize)
196
+ void AdafruitBluefruit::configCentralConn (uint16_t mtu_max, uint8_t event_len, uint8_t hvn_qsize, uint8_t wrcmd_qsize)
193
197
{
194
- _sd_cfg.wr_cmd_qsize = wr_cmd_qsize;
198
+ _sd_cfg.central .mtu_max = maxof (mtu_max, BLE_GATT_ATT_MTU_DEFAULT);
199
+ #if SD_VER >= 500
200
+ _sd_cfg.central .event_len = maxof (event_len, BLE_GAP_EVENT_LENGTH_MIN);
201
+ #endif
202
+ _sd_cfg.central .hvn_tx_qsize = hvn_qsize;
203
+ _sd_cfg.central .wr_cmd_qsize = wrcmd_qsize;
195
204
}
196
205
197
-
198
206
uint16_t AdafruitBluefruit::getMaxMtu (void )
199
207
{
200
- return _sd_cfg.mtu_max ;
208
+ return _sd_cfg.prph . mtu_max ;
201
209
}
202
210
203
211
uint8_t AdafruitBluefruit::getHvnTxQueue (void )
204
212
{
205
- return _sd_cfg.hvn_tx_qsize ;
213
+ return _sd_cfg.prph . hvn_tx_qsize ;
206
214
}
207
215
208
216
uint8_t AdafruitBluefruit::getWriteCmdQueue (void )
209
217
{
210
- return _sd_cfg.wr_cmd_qsize ;
218
+ return _sd_cfg.prph . wr_cmd_qsize ;
211
219
}
212
220
213
221
@@ -253,28 +261,20 @@ err_t AdafruitBluefruit::begin(uint8_t prph_count, uint8_t central_count)
253
261
* Note: Value is left as it is if already configured by user.
254
262
*/
255
263
/* ------------------------------------------------------------------*/
256
- if ( _prph_count )
257
- {
258
- // If not configured by user, set Attr Table Size large enough for
259
- // most peripheral applications
260
- if ( _sd_cfg.attr_table_size == 0 ) _sd_cfg.attr_table_size = 0x800 ;
261
-
262
- // Increase HVN queue size with prph connections if not configured
263
- if ( _sd_cfg.hvn_tx_qsize == 0 ) _sd_cfg.hvn_tx_qsize = 3 ;
264
- }
265
-
266
- if ( _central_count)
267
- {
268
- // Increase Write Command queue size with central connections if not configured
269
- if ( _sd_cfg.wr_cmd_qsize == 0 ) _sd_cfg.wr_cmd_qsize = 3 ;
270
- }
271
-
272
- // Not configure, default value are used
273
- if ( _sd_cfg.attr_table_size == 0 ) _sd_cfg.attr_table_size = BLE_GATTS_ATTR_TAB_SIZE_DEFAULT;
274
- #if SD_VER >= 500
275
- if ( _sd_cfg.hvn_tx_qsize == 0 ) _sd_cfg.hvn_tx_qsize = BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT;
276
- if ( _sd_cfg.wr_cmd_qsize == 0 ) _sd_cfg.wr_cmd_qsize = BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT;
277
- #endif
264
+ // if ( _prph_count )
265
+ // {
266
+ // // If not configured by user, set Attr Table Size large enough for
267
+ // // most peripheral applications
268
+ // if ( _sd_cfg.attr_table_size == 0 ) _sd_cfg.attr_table_size = 0x800;
269
+ // }
270
+ //
271
+ // if ( _central_count)
272
+ // {
273
+ //
274
+ // }
275
+ //
276
+ // // Not configure, default value are used
277
+ // if ( _sd_cfg.attr_table_size == 0 ) _sd_cfg.attr_table_size = BLE_GATTS_ATTR_TAB_SIZE_DEFAULT;
278
278
279
279
/* ------------- Configure BLE params -------------*/
280
280
extern uint32_t __data_start__[]; // defined in linker
@@ -328,30 +328,62 @@ err_t AdafruitBluefruit::begin(uint8_t prph_count, uint8_t central_count)
328
328
blecfg.gatts_cfg .attr_tab_size .attr_tab_size = _sd_cfg.attr_table_size ;
329
329
VERIFY_STATUS ( sd_ble_cfg_set (BLE_GATTS_CFG_ATTR_TAB_SIZE, &blecfg, ram_start) );
330
330
331
- // ATT MTU
332
- varclr (&blecfg);
333
- blecfg.conn_cfg .conn_cfg_tag = BLE_CONN_CFG_HIGH_BANDWIDTH;
334
- blecfg.conn_cfg .params .gatt_conn_cfg .att_mtu = _sd_cfg.mtu_max ;
335
- VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATT, &blecfg, ram_start) );
336
-
337
- // Event Length + HVN queue + WRITE CMD queue setting affecting bandwidth
338
- varclr (&blecfg);
339
- blecfg.conn_cfg .conn_cfg_tag = BLE_CONN_CFG_HIGH_BANDWIDTH;
340
- blecfg.conn_cfg .params .gap_conn_cfg .conn_count = 1 ;
341
- blecfg.conn_cfg .params .gap_conn_cfg .event_length = _sd_cfg.event_len ;
342
- VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GAP, &blecfg, ram_start) );
343
-
344
- // HVN queue size
345
- varclr (&blecfg);
346
- blecfg.conn_cfg .conn_cfg_tag = BLE_CONN_CFG_HIGH_BANDWIDTH;
347
- blecfg.conn_cfg .params .gatts_conn_cfg .hvn_tx_queue_size = _sd_cfg.hvn_tx_qsize ;
348
- VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATTS, &blecfg, ram_start) );
331
+ /* ------------- Event Length + MTU + HVN queue + WRITE CMD queue setting affecting bandwidth -------------*/
332
+ if ( _prph_count )
333
+ {
334
+ // ATT MTU
335
+ varclr (&blecfg);
336
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_PERIPHERAL;
337
+ blecfg.conn_cfg .params .gatt_conn_cfg .att_mtu = _sd_cfg.prph .mtu_max ;
338
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATT, &blecfg, ram_start) );
339
+
340
+ // Event length and max connection for this config
341
+ varclr (&blecfg);
342
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_PERIPHERAL;
343
+ blecfg.conn_cfg .params .gap_conn_cfg .conn_count = _prph_count;
344
+ blecfg.conn_cfg .params .gap_conn_cfg .event_length = _sd_cfg.prph .event_len ;
345
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GAP, &blecfg, ram_start) );
346
+
347
+ // HVN queue size
348
+ varclr (&blecfg);
349
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_PERIPHERAL;
350
+ blecfg.conn_cfg .params .gatts_conn_cfg .hvn_tx_queue_size = _sd_cfg.prph .hvn_tx_qsize ;
351
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATTS, &blecfg, ram_start) );
352
+
353
+ // WRITE COMMAND queue size
354
+ varclr (&blecfg);
355
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_PERIPHERAL;
356
+ blecfg.conn_cfg .params .gattc_conn_cfg .write_cmd_tx_queue_size = _sd_cfg.prph .wr_cmd_qsize ;
357
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATTC, &blecfg, ram_start) );
358
+ }
349
359
350
- // WRITE COMMAND queue size
351
- varclr (&blecfg);
352
- blecfg.conn_cfg .conn_cfg_tag = BLE_CONN_CFG_HIGH_BANDWIDTH;
353
- blecfg.conn_cfg .params .gattc_conn_cfg .write_cmd_tx_queue_size = _sd_cfg.wr_cmd_qsize ;
354
- VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATTC, &blecfg, ram_start) );
360
+ if ( _central_count)
361
+ {
362
+ // ATT MTU
363
+ varclr (&blecfg);
364
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_CENTRAL;
365
+ blecfg.conn_cfg .params .gatt_conn_cfg .att_mtu = _sd_cfg.central .mtu_max ;
366
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATT, &blecfg, ram_start) );
367
+
368
+ // Event length and max connection for this config
369
+ varclr (&blecfg);
370
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_CENTRAL;
371
+ blecfg.conn_cfg .params .gap_conn_cfg .conn_count = _central_count;
372
+ blecfg.conn_cfg .params .gap_conn_cfg .event_length = _sd_cfg.central .event_len ;
373
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GAP, &blecfg, ram_start) );
374
+
375
+ // HVN queue size
376
+ varclr (&blecfg);
377
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_CENTRAL;
378
+ blecfg.conn_cfg .params .gatts_conn_cfg .hvn_tx_queue_size = _sd_cfg.central .hvn_tx_qsize ;
379
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATTS, &blecfg, ram_start) );
380
+
381
+ // WRITE COMMAND queue size
382
+ varclr (&blecfg);
383
+ blecfg.conn_cfg .conn_cfg_tag = CONN_CFG_CENTRAL;
384
+ blecfg.conn_cfg .params .gattc_conn_cfg .write_cmd_tx_queue_size = _sd_cfg.central .wr_cmd_qsize ;
385
+ VERIFY_STATUS ( sd_ble_cfg_set (BLE_CONN_CFG_GATTC, &blecfg, ram_start) );
386
+ }
355
387
356
388
// Enable BLE stack
357
389
// The memory requirement for a specific configuration will not increase
@@ -622,21 +654,47 @@ void AdafruitBluefruit::printInfo(void)
622
654
Serial.println (_sd_cfg.service_changed );
623
655
624
656
#if SD_VER >= 500
625
- // Max MTU
626
- Serial.printf (title_fmt, " Max MTU" );
627
- Serial.println (_sd_cfg.mtu_max );
657
+ if ( _prph_count )
658
+ {
659
+ Serial.println (" Peripheral Connect Setting" );
660
+
661
+ Serial.print (" - " );
662
+ Serial.printf (title_fmt, " Max MTU" );
663
+ Serial.println (_sd_cfg.prph .mtu_max );
628
664
629
- // Event Length
630
- Serial.printf (title_fmt, " Event Length" );
631
- Serial.println (_sd_cfg.event_len );
665
+ Serial. print ( " - " );
666
+ Serial.printf (title_fmt, " Event Length" );
667
+ Serial.println (_sd_cfg. prph .event_len );
632
668
633
- // HVN Queue Size
634
- Serial.printf (title_fmt, " HVN Queue Size" );
635
- Serial.println (_sd_cfg.hvn_tx_qsize );
669
+ Serial. print ( " - " );
670
+ Serial.printf (title_fmt, " HVN Queue Size" );
671
+ Serial.println (_sd_cfg. prph .hvn_tx_qsize );
636
672
637
- // Write Command Queue Size
638
- Serial.printf (title_fmt, " WrCmd Queue Size" );
639
- Serial.println (_sd_cfg.wr_cmd_qsize );
673
+ Serial.print (" - " );
674
+ Serial.printf (title_fmt, " WrCmd Queue Size" );
675
+ Serial.println (_sd_cfg.prph .wr_cmd_qsize );
676
+ }
677
+
678
+ if ( _central_count )
679
+ {
680
+ Serial.println (" Central Connect Setting" );
681
+
682
+ Serial.print (" - " );
683
+ Serial.printf (title_fmt, " Max MTU" );
684
+ Serial.println (_sd_cfg.central .mtu_max );
685
+
686
+ Serial.print (" - " );
687
+ Serial.printf (title_fmt, " Event Length" );
688
+ Serial.println (_sd_cfg.central .event_len );
689
+
690
+ Serial.print (" - " );
691
+ Serial.printf (title_fmt, " HVN Queue Size" );
692
+ Serial.println (_sd_cfg.central .hvn_tx_qsize );
693
+
694
+ Serial.print (" - " );
695
+ Serial.printf (title_fmt, " WrCmd Queue Size" );
696
+ Serial.println (_sd_cfg.central .wr_cmd_qsize );
697
+ }
640
698
#endif
641
699
642
700
/* ------------- Settings -------------*/
0 commit comments