42
42
*/
43
43
BLECentral::BLECentral (void )
44
44
{
45
- _ppcp_min_conn = BLE_GAP_CONN_MIN_INTERVAL_DFLT;
46
- _ppcp_max_conn = BLE_GAP_CONN_MAX_INTERVAL_DFLT;
45
+ _conn_param.min_conn_interval = 30 ; // BLE_GAP_CONN_MIN_INTERVAL_DFLT;
46
+ _conn_param.max_conn_interval = 30 ; // BLE_GAP_CONN_MAX_INTERVAL_DFLT;
47
+ _conn_param.slave_latency = BLE_GAP_CONN_SLAVE_LATENCY;
48
+ _conn_param.conn_sup_timeout = BLE_GAP_CONN_SUPERVISION_TIMEOUT_MS/10 ;
47
49
48
50
_connect_cb = NULL ;
49
51
_disconnect_cb = NULL ;
@@ -60,8 +62,8 @@ void BLECentral::begin(void)
60
62
*------------------------------------------------------------------*/
61
63
bool BLECentral::setConnInterval (uint16_t min, uint16_t max)
62
64
{
63
- _ppcp_min_conn = min;
64
- _ppcp_max_conn = max;
65
+ _conn_param. min_conn_interval = min;
66
+ _conn_param. max_conn_interval = max;
65
67
66
68
return true ;
67
69
}
@@ -73,15 +75,8 @@ bool BLECentral::setConnIntervalMS (uint16_t min_ms, uint16_t max_ms)
73
75
74
76
bool BLECentral::connect (const ble_gap_addr_t * peer_addr)
75
77
{
76
- ble_gap_conn_params_t gap_conn_params =
77
- {
78
- .min_conn_interval = _ppcp_min_conn, // in 1.25ms unit
79
- .max_conn_interval = _ppcp_max_conn, // in 1.25ms unit
80
- .slave_latency = BLE_GAP_CONN_SLAVE_LATENCY,
81
- .conn_sup_timeout = BLE_GAP_CONN_SUPERVISION_TIMEOUT_MS / 10 // in 10ms unit
82
- };
83
-
84
- VERIFY_STATUS ( sd_ble_gap_connect (peer_addr, Bluefruit.Scanner .getParams (), &gap_conn_params, CONN_CFG_CENTRAL), false );
78
+ // Connect with default connection parameter
79
+ VERIFY_STATUS ( sd_ble_gap_connect (peer_addr, Bluefruit.Scanner .getParams (), &_conn_param, CONN_CFG_CENTRAL), false );
85
80
86
81
return true ;
87
82
}
@@ -171,36 +166,15 @@ void BLECentral::_event_handler(ble_evt_t* evt)
171
166
172
167
case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST:
173
168
{
169
+ // Peripheral request to change connection parameter
174
170
ble_gap_conn_params_t * request_param = &evt->evt .gap_evt .params .conn_param_update_request .conn_params ;
175
171
176
- PRINT_INT (request_param->min_conn_interval );
177
- PRINT_INT (request_param->max_conn_interval );
178
- PRINT_INT (request_param->slave_latency );
179
- PRINT_INT (request_param->conn_sup_timeout );
172
+ LOG_LV2 (" GAP" , " Conn Param Update Request: (min, max, lattency, sup) = (%.2f, %.2f, %d, %d)" ,
173
+ request_param->min_conn_interval *1 .25f , request_param->max_conn_interval *1 .25f , request_param->slave_latency , request_param->conn_sup_timeout *10 );
180
174
181
- // Accept request parameter if it is within our supported range, otherwise reject
182
- if ( ( request_param->max_conn_interval < _ppcp_min_conn ) || ( request_param->min_conn_interval > _ppcp_max_conn ) )
183
- {
184
- LOG_LV1 (" GAP" , " Reject Conn Param Update Request: our = ( %.2f, %.2f ), request = ( %.2f, %.2f )" ,
185
- ppcp_min_conn*1 .25f , _ppcp_max_conn*1 .25f , request_param->min_conn_interval *1 .25f , request_param->max_conn_interval *1 .25f );
186
-
187
- sd_ble_gap_conn_param_update (conn_hdl, NULL ); // reject request
188
- }else
189
- {
190
- uint16_t const conn_interval = max16 (_ppcp_min_conn, request_param->min_conn_interval );
191
-
192
- ble_gap_conn_params_t resp_param =
193
- {
194
- .min_conn_interval = conn_interval,
195
- .max_conn_interval = conn_interval, // central set min = max
196
- .slave_latency = request_param->slave_latency , // TODO check save latency
197
- .conn_sup_timeout = request_param->conn_sup_timeout , // TODO check supervisor timeout
198
- };
199
-
200
- LOG_LV2 (" GAP" , " Conn Interval is updated to %.2f ms" , conn_interval*1 .25f );
201
-
202
- sd_ble_gap_conn_param_update (conn_hdl, &resp_param);
203
- }
175
+ // Central could perform checks to accept or reject request
176
+ // For now just accept parameter from prph
177
+ sd_ble_gap_conn_param_update (conn_hdl, request_param);
204
178
}
205
179
break ;
206
180
0 commit comments