NORDIC BLE MAC ADDR


 
一個ble設備,地址可以分成2大類
   1、Public Device Address(公共設備地址)
    公共設備地址 Public Device Address是48bits的數字,就和電腦mac地址一樣,是全球唯一的,一般傳統藍牙用這種地址。
   2、Random Device Address(隨機設備地址)
    不是固定分配,而是設備啟動后隨機分配,Random Device Address(隨機設備地址)又可以分成2類
     1)Static Device Address( 靜態設備地址)
      最高2bits為“11”,
      剩余46bits是隨機數,不能全0或全1
      在一個上電周期保持不變
      下一次上電可以變也可以不變( 可以用隨機數發生器產生MAC地址
     2)Private Device Address(私密設備地址),分為2類
       a、Non-resolvable private address(不可解析私密地址)
        最高2bits為“00”
        剩余46bits是隨機數,不能全0或全1
        每隔T_GAP周期更新
       b、Resolvable private address(不可解析私密地址)
        高24bits是隨機數,最高2bits為“10”
        低24bits是隨機數和IRK進過hash運算得到hash值,hash=ah(IRK,prand)
        對端BLE掃描到該類型地址后,用本地IRK和該地址的prand進行ah運算,如果得到值和該類型地址低24bits一致才進行后續操作。
 
總結下就4中類型地址:
  Public Device Address(公共設備地址)
  Static Device Address( 靜態設備地址) 11 —nrf52832默認是用這種
  Non-resolvable private address(不可解析私密地址) 00
  Resolvable private address(不可解析私密地址) 10
 
sdk中相關api:
 獲得本地mac地址
[out] p_addr
uint32_t sd_ble_gap_address_get(ble_gap_addr_t *p_addr);
 
ble_gap_addr_t 結構體如下
/**@brief Bluetooth Low Energy address. */
typedef struct{ 
//地址類型 
uint8_t addr_type;                    /**< See @ref BLE_GAP_ADDR_TYPES. */ 
//存放地址的數組 6字節 
uint8_t addr[BLE_GAP_ADDR_LEN];       /**< 48-bit address, LSB format. */
} ble_gap_addr_t;
 
[in]addr_cycle_mode :
/**< Set addresses directly, no automatic address cycling. */
BLE_GAP_ADDR_CYCLE_MODE_NONE      0x00 
/**< Automatically generate and update private addresses. */
BLE_GAP_ADDR_CYCLE_MODE_AUTO      0x01
注意當用他設置成靜態隨機地址Static Device Address時,地址的最高2bits必須為“11”,否則無效
uint32_t sd_ble_gap_address_set(uint8_t addr_cycle_mode, ble_gap_addr_t const *p_addr);
 
下面是把默認地址+1后設置的函數
void mac_set(void)
  ble_gap_addr_t addr;  //獲得地址 
  uint32_t  err_code = sd_ble_gap_address_get(&addr); 
  APP_ERROR_CHECK(err_code); 
  addr.addr[0] += 1; 
  //寫地址 
  err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE, &addr); 
  APP_ERROR_CHECK(err_code);
}

原文鏈接:https://blog.csdn.net/loosen17/article/details/98184652


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM