leaps_bh_xfer
写入下行链路数据并读取上行链路数据块. 模块必须配置为桥接节点.
通过 SPI 接口传输上行和下行数据时,上行和下行数据都被编码为 tlv 帧,如 “SPI上的多TVL <#example-interrupt-leaps_bh_xfer>____”所述.
SPI 主站通过**downlink_byte_cnt**告诉从站要传输多少个下行链路字节. 从站在第一次 SPI 传输中读取**下行链路字节数**. 从站在读取下行链路数据时,已经准备好了一些上行链路数据,它希望将这些数据传输给主站. 要同时从主站向从站传输下行链路数据和从站向主站传输上行链路数据,从站必须计算出需要多少字节和多少次 SPI 传输. 主站在第二次 SPI 传输中读取字节数和传输数,详见 “通过 SPI 传输多个 TVL <#example-interrupt-leaps_bh_xfer>__”. 最后,执行传输,并传输上行链路和下行链路. 目前支持的最大传输次数为 5 次,最大有效载荷为 253 字节,即 255 -(TLV 标头)的大小. 一次调用 leaps_bh_xfer 最多支持 5 个上行链路帧和 2 个下行链路帧.
downlink_byte_cnt: 16 位无符号整数(不含 TLV 头的下行链路数据字节数,最多 506 字节)
downlink_chunk:最多 253 字节(作为下行链路发送到从属设备的不透明数据)
output: 5 [上行链路_chunk].
uplink_chunk: 最多 253 字节 (不透明数据作为上行链路发送到主站)
** UART 示例**
UART 接口不可用.
SPI示例(桥接除外)
TLV 请求 |
||
---|---|---|
类型 |
长度 |
价值 downlink_byte_cnt = 下行数据大小 (244 字节) |
0x37 |
0x02 |
0xF4 0x00 |
TLV 响应 |
||
---|---|---|
类型 |
长度 |
价值 |
0x40 |
0x01 |
0x02 |
SPI 示例桥
TLV 请求 |
||
---|---|---|
类型 |
长度 |
值downlink_byte_cnt = 下行链路数据的大小 (244 字节) |
0x37 |
0x02 |
0xF4 0x00 |
此调用具有可变的连续传输次数,它遵循 TLV 请求,请参阅 “API over SPI 接口描述 <#example-interrupt-leaps_bh_xfer>”
TLV 下行链路编号1,2, 3,4,5 |
||
---|---|---|
类型 |
长度 (244 字节) |
价值 |
0x64 |
0xF4 (244) |
下行链路数据块 nr.1 |
0x65 |
0x00 |
空 |
0x66 |
0x00 |
空 |
0x67 |
0x00 |
空 |
0x68 |
0x00 |
空 |
TLV上行链路编号1,2,3,4,5 |
||
---|---|---|
类型 |
长度(980 字节) |
价值 |
0x6E |
0xFD (253) |
上行链路数据块 1 |
0x6F |
0xFD |
上行链路数据块nr.2 |
0x70 |
0xFD |
上行链路数据块 nr.3 |
0x71 |
0xDD (221) |
上行链路数据块 nr.4 |
0x72 |
0x00 |
空 |
通过USB进行BH传输
通过 USB 传输 BH 数据与通过 SPI 传输不同. SPI 数据传输以中断为基础,但 LEAPS RTLS 设备与 PC 之间的 USB 连接无法使用中断线路,因此在 USB 接口上,LEAPS RTLS 设备将主动发送通知(TLV_TYPE_NOTIF_STATUS、TLV_TYPE_NOTIF_BH_STATUS)和上行数据块给网桥主控(PC),而不是使用 TLV_TYPE_CMD_BH_XFER TLV 命令的请求-响应方式. 通知和上行链路数据可以启用/禁用,类似于使用 leaps_int_cfg_set 的中断.