dwm_mac_addr_get

デバイスが使用するMACアドレスリストを取得します。デバイスは、ユーザーが指定したアドレスまたはデフォルトのアドレスを使用します。各インターフェースのデフォルトMACアドレスは、dwm_mac_addr_set_once*を呼び出すことで1回のみ変更できます。このMACアドレスはOTPメモリに書き込まれ、新しいデフォルトMACアドレスとなります。ユーザーは*dwm_mac_addr_set*を呼び出すことでカスタムMACアドレスを設定できます。ユーザーが変更したデフォルトMACアドレスは、工場出荷時設定へのリセット(*dwm_factory_reset を参照)によって復元できます。デバイスは、リスト内の MAC アドレスから特定のインターフェイスへの固定マッピングを次のように使用します:

  1. UWB

  2. BLE

  3. イーサネット

  4. 无线网络

BLE アドレスには、ランダム BLE アドレスまたはパブリック BLE アドレスを指定できます。特定のインターフェイスがサポートされていない場合、リスト内の対応する MAC アドレスは空になります。

void dwm_mac_addr_get(dwm_mac_addr_list_t *mac_addr_list)
パラメータ
  • output -- ステータスコード, type_0, type_1, type_2, type_3, mac_addr_0, mac_addr_1, mac_addr_2, mac_addr_3

  • type_N -- ステータス、フラグ (リストのインデックス 0 にある MAC アドレスを説明するタイプ)

  • status -- 2 ビット (* MAC アドレスのステータス: MAC_ADDR_EMPTY = 0、MAC_ADDR_DEFAULT = 1、MAC_ADDR_USER_SPECIFIED = 2、MAC_ADDR_MUTABLE_DEFAULT = 3*)

  • flags -- 6 ビット (アドレスが PUBLIC_BLE_ADDR の場合、ビット 0 が設定され、残りのビットは将来の使用のために予約されています)

  • mac_addr_N -- 48 ビット値 (リトルエンディアン)

Cコード例

dwm_mac_addr_list_t mac_addr_list;
rv: dwm_mac_addr_get(&mac_addr_list);
if (rv == DWM_OK) {
  printf("UWB MAC 0x%02x%02x%02x%02x%02x%02x status=x%02x\n",
  mac_addr_list.mac[0][0],
  mac_addr_list.mac[0][1],
  mac_addr_list.mac[0][2],
  mac_addr_list.mac[0][3],
  mac_addr_list.mac[0][4],
  mac_addr_list.mac[0][5],
  mac_addr_list.type[0].status);
} else {
  printf("can't get MAC address list, error %d\n", rv);
}

SPI/UART 例

TLV 要求

タイプ

長さ

0x83

0x00

タイプ 0x83 (131 dec) はコマンドを意味しますdwm_mac_addr_get

TLV 応答

タイプ

長さ

値(エラーコードを参照)

タイプ

長さ

価値

0x40

0x01

0x00

0xC1

0x18

(バイト 0 ~ 4) リスト内の MAC アドレスの種類
(バイト 5-10) リトルエンディアンの MAC アドレス 0
(バイト 11-16) リトルエンディアンの MAC アドレス 1
(バイト 17-22) リトルエンディアンの MAC アドレス 2
(バイト 23-28) リトルエンディアンの MAC アドレス 3

...

タイプ0x40は、直前のコマンドの ステータスコード を意味する
タイプ 0xC1(193 dec) は MAC アドレスリストを意味します

MAC アドレス フラグのエンコーディング

MAC アドレスリストのフラグ

バイト 0

バイト1

バイト2

バイト3

ビット 2 ~ 7

ビット0~1

ビット 11 ~ 15

ビット10

ビット 8 ~ 9

ビット 18 ~ 23

ビット 16 ~ 17

ビット 26-31

ビット 24-25

R

S_0

R

P_1

S_1

R

S_2

R

S_3

R は将来の使用のために予約済みです。S_0、S_1、S_2、S_3 は MAC アドレスのステータスを示します。ステータスには次の値を指定できます。

  • 0 - 空の MAC アドレス

  • 1 - OTP メモリからのデフォルトの MAC アドレス。

  • 2 - ユーザーが指定した MAC アドレス

  • 3 - 変更可能なデフォルト MAC アドレスは、dwm_mac_addr_set_once を使用して 1 回だけ書き換えることができます。

BLE アドレスがパブリック BLE アドレスの場合、P_1 が設定されます。 BLE MAC アドレスがランダムな場合、フラグはクリアされます。 BLE アドレス タイプの詳細については、BLE 仕様を参照してください。