dwm_anchor_list_get

周囲のアンカーのリストを読み込み、アンカーに対してのみ動作する。リスト内のアンカーは、同じネットワークのものでも、近隣のネットワークのものでもよい。

void dwm_anchor_list_get(dwm_anchor_list_t *list)
パラメータ
  • input -- (SPI/UART) '0' | '1'(ページ番号(SPI/UARTのみ、ユーザーアプリケーションは1回の呼び出しでリスト全体を読み込む)、有効な番号は0,1)

  • input -- (ユーザーアプリケーション) (なし)

  • output -- ステータスコード, cnt, {node_id, position, rssi, seat, neighbor_network}

  • cnt -- 1バイト? (要素数。SPI/UARTでは最大15、ユーザーアプリケーションでは最大30)

  • node_id -- 2バイト(アンカーID

  • position -- 12 バイト?

  • rssi -- 1バイト符号付き?(信号強度インジケーター

  • seat -- 5ビット(アンカーの座席番号

  • neighbor_network -- 1ビット(アンカーが現在のネットワークからのものか、近隣ネットワークからのものかを示すステータスフラグ

Cコード例

dwm_anchor_list_t list;
int i;
dwm_anchor_list_get(&list);
for (i:0; i < list.cnt; ++i) {
     printf("%d. id=0x%04X pos=[%ld,%ld,%ld] rssi=%d seat=%u neighbor=%d\n", i,
                     list.v[i].node_id,
                     list.v[i].x,
                     list.v[i].y,
                     list.v[i].z,
                     list.v[i].rssi,
                     list.v[i].seat,
                     list.v[i].neighbor_network);
}

SPI/UART 例 1

TLV 要求

タイプ

長さ

価値

0x0B

0x01

0x00

タイプ 0x0B は、コマンド dwm_an_list_get を意味する

TLV 応答

タイプ

長さ

価値

タイプ

長さ

価値

uint8 - エラーコード

uint8 - 符号化要素数

uint16 - リトルエンディアンのUWBアドレス

アンカーnr.1

アンカーnr. 2 ... nr.15

3 x int32 - リトルエンディアンの位置座標 x, y, z

int8 - RSSI

uint8 - フラッグ
(ビット 0-4) 座席番号
(ビット5) 近隣ネットワーク
(ビット 6-7) 予約

...

0x40

0x01

0x00

0x56

0xE1

0x0F

0xAB 0x1E ...

...

タイプ0x40は、直前のコマンドの ステータスコード を意味する
タイプ0x56はアンカーリストを意味する

SPI/UART 例 2

TLV 要求

タイプ

長さ

価値

0x0B

0x01

0x01

タイプ 0x0B は、コマンド dwm_an_list_get を意味する

TLV 応答(アンカーリストは空です)

タイプ

長さ

価値

タイプ

長さ

価値

0x40

0x01

0x00

0x56

0x01

uint8 - 値にエンコードされている要素数

0x00

タイプ0x40は、直前のコマンドの ステータスコード を意味する
タイプ0x56はアンカーリストを意味する