6 Further Information
6.1 Algorithm Integeration
A command line tool called alg
which performs the same algorithm as Real-time Locating Demo
is provided in the RTL sub-directory of SDK.
It uses ASCII strings over standard input/output as external interface,
and can be integrated into locating systems easily.
alg
reads a whole line as input, and output a line containing the result in JSON format, as
shown in Table 6.1.
The input is a prefix “EXT0:” followed by the Base64 encoding of below packed data structure
le_meta_pro_connless_iq_report
:
typedef struct le_iq_sample
{
int8_t i;
int8_t q;
} le_iq_sample_t;
typedef struct le_meta_pro_connless_iq_report
{
uint8_t addr_type;
uint8_t addr[6];
phy_type_t rx_phy;
uint8_t channel_index;
int16_t rssi;
uint8_t rssi_ant_id;
uint8_t cte_type;
uint8_t slot_durations;
uint8_t packet_status;
uint8_t sample_count;
le_iq_sample_t samples[0];
} le_meta_pro_connless_iq_report_t;
Field | Note |
---|---|
status | A string describing if error occurs in the processing of the input. |
id | A string representing the tag’s address. Only available when status is “ok”. |
azimuth | Estimated azimuth of the tag in degree. Only available when status is “ok”. |
elevation | Estimated elevation of the tag in degree. Only available when status is “ok”. |
An example session of alg
:
EXT0:ABTzMRQuhAERPv4AAAEAUt7PziEgMjTh4s3LHRw1N+gdE5o/Ka0+1ykTnyI
E3jv6NjPB+NjYId40J8MH8LQ59g0fhwBKyUr3HCSc6xXlNxgVRszb8cks8xo8xuo
WtzcQ/SKWx1v3RRsHLbG/HvImLfNJ5MgLyC4I/UHY0TfKJyrtHLydVCUtOvIr2qE
iAgk70DgCwCXVJB7cNfXDS+0NOeEO+Ig7Rg1J3x4MmhwT7Ti7GyHK
{"status": "ok", "id": "P:84:2E:14:31:F3:14", "azimuth": 174.0,
"elevation": 48.0 }
Note that, the input must be in a single line.
6.2 Evaluation of Different Antenna Array Types
To assist the evaluation of different antenna array types, both alg
and Real-time Locating Demo
might accept an additional command option to specify a sub portion of the whole antenna array board
by “alg -array {TYPE}
” or “RTLing_xx -array {TYPE}
”. When using this option, the switching pattern used
in the firmware (Central CTE example) should be updated accordingly.
{TYPE} | Switching Pattern | Note |
---|---|---|
4x4 | \(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15\) | Whole array is used (default) |
3x3 | \(0, 1, 2, 4, 5, 6, 8, 9, 10\) | \(3 \times 3\) URA sub-array |
2x2 | \(0, 1, 4, 5\) | \(2 \times 2\) URA sub-array |
1x4 | \(0, 1, 2, 3\) | \(1 \times 4\) ULA sub-array |
1x3 | \(0, 1, 2\) | \(1 \times 3\) ULA sub-array |
1100 | \(0, 1\) | \(1 \times 2\) ULA sub-array |
1010 | \(0, 2\) | \(1 \times 2\) ULA sub-array |
1001 | \(0, 3\) | \(1 \times 2\) ULA sub-array |
{TYPE} | Switching Pattern | Note |
---|---|---|
o3x3 | \(0, 1, 2, 3, 4, 5, 6, 7, 8\) | Whole array is used |
For example, if we want to evaluate the performance of 1x4 ULA sub-array on 4x4 Antenna Array Board (Rectangle), then
- Change the switching pattern used in Central CTE to \(0, 1, 2, 3\),
- Build Central CTE and download it to the Antenna Array Board,
- Start
alg
byalg -array 1x4
, or, - Start Real-time Locating Demo by “
RTLing_dx -array 1x4
” or “RTLing_gl -array 1x4
”.