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 アドレスから特定のインターフェイスへの固定マッピングを次のように使用します:
UWB
BLE
イーサネット
无线网络
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
|
... |
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 仕様を参照してください。