@@ -230,6 +230,49 @@ static void security_changed(struct bt_conn *conn, bt_security_t level,
230230}
231231#endif
232232
233+ #if defined(CONFIG_BT_REMOTE_INFO )
234+ static const char * ver_str (u8_t ver )
235+ {
236+ const char * const str [] = {
237+ "1.0b" , "1.1" , "1.2" , "2.0" , "2.1" , "3.0" , "4.0" , "4.1" , "4.2" ,
238+ "5.0" , "5.1" ,
239+ };
240+
241+ if (ver < ARRAY_SIZE (str )) {
242+ return str [ver ];
243+ }
244+
245+ return "unknown" ;
246+ }
247+
248+ static void remote_info_available (struct bt_conn * conn ,
249+ struct bt_conn_remote_info * remote_info )
250+ {
251+ struct bt_conn_info info ;
252+
253+ bt_conn_get_info (conn , & info );
254+
255+ if (IS_ENABLED (CONFIG_BT_REMOTE_VERSION )) {
256+ shell_print (ctx_shell ,
257+ "Remote LMP version %s (0x%02x) subversion 0x%04x "
258+ "manufacturer 0x%04x" , ver_str (remote_info -> version ),
259+ remote_info -> version , remote_info -> subversion ,
260+ remote_info -> manufacturer );
261+ }
262+
263+ if (info .type == BT_CONN_TYPE_LE ) {
264+ u8_t features [8 ];
265+ char features_str [2 * sizeof (features ) + 1 ];
266+
267+ sys_memcpy_swap (features , remote_info -> le .features ,
268+ sizeof (features ));
269+ bin2hex (features , sizeof (features ),
270+ features_str , sizeof (features_str ));
271+ shell_print (ctx_shell , "LE Features: 0x%s " , features_str );
272+ }
273+ }
274+ #endif /* defined(CONFIG_BT_REMOTE_INFO) */
275+
233276static struct bt_conn_cb conn_callbacks = {
234277 .connected = connected ,
235278 .disconnected = disconnected ,
@@ -241,6 +284,9 @@ static struct bt_conn_cb conn_callbacks = {
241284#if defined(CONFIG_BT_SMP ) || defined (CONFIG_BT_BREDR )
242285 .security_changed = security_changed ,
243286#endif
287+ #if defined(CONFIG_BT_REMOTE_INFO )
288+ .remote_info_available = remote_info_available ,
289+ #endif
244290};
245291#endif /* CONFIG_BT_CONN */
246292
@@ -834,8 +880,8 @@ static void print_le_addr(const char *desc, const bt_addr_le_t *addr)
834880static int cmd_info (const struct shell * shell , size_t argc , char * argv [])
835881{
836882 struct bt_conn * conn = NULL ;
837- bt_addr_le_t addr ;
838883 struct bt_conn_info info ;
884+ bt_addr_le_t addr ;
839885 int err ;
840886
841887 switch (argc ) {
0 commit comments