@@ -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+
564587void 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 ();
0 commit comments