@@ -160,6 +160,15 @@ static void bt_connected(struct bt_conn *conn, uint8_t err)
160160
161161 LOG_INF ("Connected: %s" , addr );
162162
163+ err = bt_conn_set_security (conn , BT_SECURITY_L2 );
164+ if (err )
165+ {
166+ LOG_ERR ("Failed to set security (%d)." , err );
167+
168+ bt_conn_disconnect (conn , BT_HCI_ERR_REMOTE_USER_TERM_CONN );
169+ return ;
170+ }
171+
163172 pouch_gateway_bt_start (conn );
164173}
165174
@@ -177,9 +186,47 @@ static void bt_disconnected(struct bt_conn *conn, uint8_t reason)
177186 pouch_gateway_scan_start ();
178187}
179188
189+ static void security_changed (struct bt_conn * conn , bt_security_t level , enum bt_security_err err )
190+ {
191+ LOG_INF ("BT security changed to level %u, err %s(%u)" , level , bt_security_err_to_str (err ), err );
192+ }
193+
180194BT_CONN_CB_DEFINE (conn_callbacks ) = {
181195 .connected = bt_connected ,
182196 .disconnected = bt_disconnected ,
197+ .security_changed = security_changed ,
198+ };
199+
200+ static void auth_cancel (struct bt_conn * conn )
201+ {
202+ char addr [BT_ADDR_LE_STR_LEN ];
203+
204+ bt_addr_le_to_str (bt_conn_get_dst (conn ), addr , sizeof (addr ));
205+
206+ LOG_INF ("Pairing cancelled: %s" , addr );
207+ }
208+
209+ static struct bt_conn_auth_cb auth_cb = {
210+ .cancel = auth_cancel ,
211+ };
212+
213+ static void pairing_complete (struct bt_conn * conn , bool bonded )
214+ {
215+ LOG_INF ("Pairing Complete" );
216+ }
217+
218+ static void pairing_failed (struct bt_conn * conn , enum bt_security_err reason )
219+ {
220+ LOG_WRN ("Pairing Failed (%d). Disconnecting." , reason );
221+
222+ bt_conn_disconnect (conn ,
223+ (reason == BT_SECURITY_ERR_PAIR_NOT_ALLOWED ) ? BT_HCI_ERR_PAIRING_NOT_ALLOWED
224+ : BT_HCI_ERR_AUTH_FAIL );
225+ }
226+
227+ static struct bt_conn_auth_info_cb auth_info_cb = {
228+ .pairing_complete = pairing_complete ,
229+ .pairing_failed = pairing_failed ,
183230};
184231
185232void pouch_gateway_bt_finished (struct bt_conn * conn )
@@ -205,6 +252,12 @@ int main(void)
205252 return err ;
206253 }
207254
255+ if (IS_ENABLED (CONFIG_BT_SMP ))
256+ {
257+ bt_conn_auth_cb_register (& auth_cb );
258+ bt_conn_auth_info_cb_register (& auth_info_cb );
259+ }
260+
208261 LOG_INF ("Bluetooth initialized" );
209262
210263 pouch_gateway_scan_start ();
0 commit comments