Skip to content

Commit 67ce306

Browse files
committed
Added setConnSupervisionTimeout[MS]
1 parent 5cfdb28 commit 67ce306

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

libraries/Bluefruit52Lib/src/bluefruit.cpp

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ AdafruitBluefruit::AdafruitBluefruit(void)
112112

113113
_ppcp_min_conn = BLE_GAP_CONN_MIN_INTERVAL_DFLT;
114114
_ppcp_max_conn = BLE_GAP_CONN_MAX_INTERVAL_DFLT;
115+
_ppcp_conn_sup_timeout = BLE_GAP_CONN_SUPERVISION_TIMEOUT_MS / 10; // in 10ms unit
115116
_conn_interval = 0;
116117

117118
_connect_cb = NULL;
@@ -409,7 +410,7 @@ err_t AdafruitBluefruit::begin(uint8_t prph_count, uint8_t central_count)
409410
.min_conn_interval = _ppcp_min_conn, // in 1.25ms unit
410411
.max_conn_interval = _ppcp_max_conn, // in 1.25ms unit
411412
.slave_latency = BLE_GAP_CONN_SLAVE_LATENCY,
412-
.conn_sup_timeout = BLE_GAP_CONN_SUPERVISION_TIMEOUT_MS / 10 // in 10ms unit
413+
.conn_sup_timeout = _ppcp_conn_sup_timeout, // in 10ms unit
413414
};
414415

415416
VERIFY_STATUS( sd_ble_gap_ppcp_set(&gap_conn_params) );
@@ -547,7 +548,7 @@ bool AdafruitBluefruit::setConnInterval(uint16_t min, uint16_t max)
547548
.min_conn_interval = _ppcp_min_conn, // in 1.25ms unit
548549
.max_conn_interval = _ppcp_max_conn, // in 1.25ms unit
549550
.slave_latency = BLE_GAP_CONN_SLAVE_LATENCY,
550-
.conn_sup_timeout = BLE_GAP_CONN_SUPERVISION_TIMEOUT_MS / 10 // in 10ms unit
551+
.conn_sup_timeout = _ppcp_conn_sup_timeout // in 10ms unit
551552
};
552553

553554
VERIFY_STATUS( sd_ble_gap_ppcp_set(&gap_conn_params), false);
@@ -561,6 +562,28 @@ bool AdafruitBluefruit::setConnIntervalMS(uint16_t min_ms, uint16_t max_ms)
561562
}
562563

563564

565+
bool AdafruitBluefruit::setConnSupervisionTimeout(uint16_t timeout)
566+
{
567+
_ppcp_conn_sup_timeout = timeout;
568+
569+
ble_gap_conn_params_t gap_conn_params =
570+
{
571+
.min_conn_interval = _ppcp_min_conn, // in 1.25ms unit
572+
.max_conn_interval = _ppcp_max_conn, // in 1.25ms unit
573+
.slave_latency = BLE_GAP_CONN_SLAVE_LATENCY,
574+
.conn_sup_timeout = _ppcp_conn_sup_timeout // in 10ms unit
575+
};
576+
577+
VERIFY_STATUS( sd_ble_gap_ppcp_set(&gap_conn_params), false);
578+
579+
return true;
580+
}
581+
582+
bool AdafruitBluefruit::setConnSupervisionTimeoutMS(uint16_t timeout_ms)
583+
{
584+
return setConnSupervisionTimeout(timeout_ms / 10); // 10ms unit
585+
}
586+
564587
void AdafruitBluefruit::setConnectCallback( BLEGap::connect_callback_t fp )
565588
{
566589
_connect_cb = fp;
@@ -730,6 +753,10 @@ void AdafruitBluefruit::printInfo(void)
730753
Serial.printf("max = %.2f ms", _ppcp_max_conn*1.25f);
731754
Serial.println();
732755

756+
Serial.printf(title_fmt, "Conn Timeout");
757+
Serial.printf("%.2f ms, ", _ppcp_conn_sup_timeout*10.0f);
758+
Serial.println();
759+
733760
/*------------- List the paried device -------------*/
734761
Serial.printf(title_fmt, "Peripheral Paired Devices");
735762
Serial.println();

libraries/Bluefruit52Lib/src/bluefruit.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ class AdafruitBluefruit
163163

164164
bool setConnInterval (uint16_t min, uint16_t max);
165165
bool setConnIntervalMS (uint16_t min_ms, uint16_t max_ms);
166+
bool setConnSupervisionTimeout(uint16_t timeout);
167+
bool setConnSupervisionTimeoutMS(uint16_t timeout_ms);
166168

167169
uint16_t connHandle (void);
168170
bool connPaired (void);
@@ -207,6 +209,7 @@ class AdafruitBluefruit
207209
// Peripheral Preferred Connection Parameters (PPCP)
208210
uint16_t _ppcp_min_conn;
209211
uint16_t _ppcp_max_conn;
212+
uint16_t _ppcp_conn_sup_timeout;
210213

211214
// Actual connection interval in use
212215
uint16_t _conn_interval;

0 commit comments

Comments
 (0)