dwm_loc_get
測距アンカーまでの最新の距離を取得し、位置を取得します。イベントが生成され、すべてのTWR測定が完了するとステータスが変更され、新しい位置データがユーザーに提供されます。低電力モードを使用している場合も、同様に動作します。
アンカー ノードの場合、位置と距離は、自動位置決め手順が完了している場合にのみ使用できます。自動位置決め手順は、BLE インターフェイス経由で実行されます。
- 
void dwm_loc_get(dwm_loc_data_t *loc);
 - パラメータ
 output -- ステータスコード, [position], [cnt, {an_pos, addr, distance, pqf}]
cnt -- 0,1,2,3,4 (アンカーまでの距離)
an_pos -- 位置 (距離に対応するアンカーの位置)
addr -- 16 ビット整数 (特定のアンカーの UWB アドレス/ID)
distance -- 32 ビット整数 (特定のアンカーまでの距離 (ミリメートル))
pqf -- 8 ビット整数 (品質係数)
注釈
パラメータ an_pos は タグ ノード にのみ適用されます
Cコード例
dwm_loc_data_t loc;
int rv, i;
/* if pos_available is false, position data are not read, and the function returns without error */
rv: dwm_loc_get(&loc);
if (0 == rv) {
if (loc.pos_available) {
             printf("[%ld,%ld,%ld,%u] ", loc.pos.x, loc.pos.y, loc.pos.z,
                     loc.pos.qf);
}
     for (i: 0; i < loc.anchors.dist.cnt; ++i) {
             printf("%u)", i);
             printf("0x%04x", loc.anchors.dist.addr[i]);
             if (i < loc.anchors.an_pos.cnt) {
printf("[%ld,%ld,%ld,%u]", loc.anchors.an_pos.pos[i].x,
                                     loc.anchors.an_pos.pos[i].y,
                                     loc.anchors.an_pos.pos[i].z,
                                     loc.anchors.an_pos.pos[i].qf);
             }
             printf("=%lu,%u ", loc.anchors.dist.dist[i], loc.anchors.dist.qf[i]);
     }
     printf("\n");
} else {
     printf("err code: %d\n", rv);
}
SPI/UART の例 1 (タグ ノード)
TLV 要求  | 
|
|---|---|
タイプ  | 
長さ  | 
0x0C  | 
0x00  | 
タイプ 0x0C はコマンド loc_get を意味します
TLV 応答  | 
||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ  | 
長さ  | 
値  | 
タイプ  | 
長さ  | 
値  | 
タイプ  | 
長さ  | 
値  | 
||||||||||||
0x40  | 
0x01  | 
0x00  | 
0x41  | 
0x0D  | 
int32 - ミリメートル単位の x 座標  | 
int32 - ミリメートル単位の y 座標  | 
int32 - ミリメートル単位の Z 座標  | 
uint8 - 位置品質係数 (パーセント単位)  | 
0x49  | 
0x51  | 
uint8 -距離の数  | 
位置と距離番号。 1  | 
位置と距離 nr.2、3、4  | 
|||||||
int16 - UWB アドレス  | 
uint32 - ミリメートル単位の距離  | 
uint8 - パーセント単位の距離品質係数  | 
3 x int32 + uint8 - x、y、z (ミリメートル) + 品質係数 (パーセント)  | 
...  | 
||||||||||||||||
0x4b 0x0a 0x00 0x00 0x1f 0x04 0x00 0x00 0x9c 0x0e 0x00 0x00 0x64  | 
0x04  | 
0xab 0xbc  | 
0x0e 0x03 0x00 0x00  | 
0x64  | 
...  | 
...  | 
||||||||||||||
SPI/UART の例 2 (アンカー ノード)
TLV 要求  | 
|
|---|---|
タイプ  | 
長さ  | 
0x0C  | 
0x00  | 
タイプ 0x0C はコマンド loc_get を意味します
TLV 応答  | 
|||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ  | 
長さ  | 
値  | 
タイプ  | 
長さ  | 
値  | 
タイプ  | 
長さ  | 
値  | 
|||||||||||
0x40  | 
0x01  | 
0x00  | 
0x41  | 
0x0D  | 
int32 - ミリメートル単位の x 座標  | 
int32 - ミリメートル単位の y 座標  | 
int32 - ミリメートル単位の Z 座標  | 
uint8 - 位置品質係数 (パーセント単位)  | 
0x48  | 
0x63  | 
uint8 -距離の数  | 
距離番号。 1  | 
距離 nr.2,..., nr. 14  | 
||||||
int16 - UWB アドレス  | 
uint32 - ミリメートル単位の距離  | 
uint8 - パーセント単位の距離品質係数  | 
...  | 
||||||||||||||||
0x4b 0x0a 0x00 0x00 0x1f 0x04 0x00 0x00 0x9c 0x0e 0x00 0x00 0x64  | 
0x0E  | 
0xab 0xbc  | 
0x0e 0x03 0x00 0x00  | 
0x64  | 
...  | 
||||||||||||||