Browse Source

Merge branch 'bugfix/btdm_string_to_bdaddr_error_when_opening_nano' into 'master'

component/bt: Fix bug: string_to_bdaddr() error when opening nano

See merge request idf/esp-idf!1981
Jiang Jiang Jian 8 years ago
parent
commit
047870fd80
1 changed files with 6 additions and 3 deletions
  1. 6 3
      components/bt/bluedroid/btcore/bdaddr.c

+ 6 - 3
components/bt/bluedroid/btcore/bdaddr.c

@@ -102,10 +102,13 @@ bool string_to_bdaddr(const char *string, bt_bdaddr_t *addr)
 
     bt_bdaddr_t new_addr;
     uint8_t *ptr = new_addr.address;
-    bool ret = sscanf(string, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
-                      &ptr[0], &ptr[1], &ptr[2], &ptr[3], &ptr[4], &ptr[5]) == 6;
-
+    uint32_t ptr_32[6];
+    bool ret  = sscanf(string, "%02x:%02x:%02x:%02x:%02x:%02x",
+                      &ptr_32[0], &ptr_32[1], &ptr_32[2], &ptr_32[3], &ptr_32[4], &ptr_32[5]) == 6;
     if (ret) {
+        for (uint8_t i = 0; i < 6; i++){
+            ptr[i] = (uint8_t) ptr_32[i];
+        }
         memcpy(addr, &new_addr, sizeof(bt_bdaddr_t));
     }