🏠 Home → Software → RTLV → Commands (downlink) — HART (FPort 6)
🤖 Auto-generated from firmware (SSOT). Do not hand-edit — change the descriptor and regenerate. RTLV v3 ·
source_hash eb6b51128c1b
A downlink command = [cmd_id][len][params…] — no envelope, no prefix; multi-byte params are BE unless stated. Full command model on the Overview.
| Port.Cmd | Name | Kind | Params | Magic | Example (request) | Notes (verified) |
|---|---|---|---|---|---|---|
6.0x03 |
hart_set_pv_range | action | slot:uint8; unit:uint8; upper:float32 BE; lower:float32 BE |
030A002042C8000000000000 |
len 10; HART cmd 35. src lorawan_commands_port6.c:1337 | |
6.0x04 |
hart_set_pv_damping | action | slot:uint8; damping_sec:float32 BE |
len 5; HART cmd 34. src lorawan_commands_port6.c:1380 | ||
6.0x05 |
hart_set_pv_unit | action | slot:uint8; unit:uint8 |
len 2; HART cmd 44. src lorawan_commands_port6.c:1406 | ||
6.0x06 |
hart_write_tag | action | slot:uint8; tag:bytes |
len 9. src lorawan_commands_port6.c:1436 | ||
6.0x07 |
hart_trim_pv_zero | action | slot:uint8 |
len 1; HART cmd 43 (non-idempotent). src lorawan_commands_port6.c:1476 | ||
6.0x08 |
hart_trim_dac | action | slot:uint8; trim_type:uint8 {0=zero (expect 3.8-4.2 mA), 1=gain (expect 19.8-20.2 mA)}; measured_ma:float32 BE |
len 6; HART cmd 45 (zero) / 46 (gain). src lorawan_commands_port6.c:1496 | ||
6.0x09 |
hart_device_reset | action | slot:uint8 |
len 1; HART cmd 42 (non-idempotent). src lorawan_commands_port6.c:1534 | ||
6.0x0A |
hart_self_test | action | marker:uint8 |
len 1; HART cmd 41. broadcast resp 0xF1 [0xFF][mask][rc][ds]... src lorawan_commands_port6.c:1554 | ||
6.0x0B |
hart_reset_config_changed | action | slot:uint8 |
len 1; HART cmd 38. src lorawan_commands_port6.c:1627 | ||
6.0x0C |
hart_set_pv_transfer_fn | action | slot:uint8; fn:uint8 |
0C020001 |
len 2; HART cmd 47. src lorawan_commands_port6.c:1647 | |
6.0x10 |
hart_poll_data | action | slot:uint8 (opt) |
len0=all / len1=[slot]; ACK only. src lorawan_commands_port6.c:841 | ||
6.0x11 |
hart_scan_bus | action | — | len0; scan addr 0-63; ACK only. src lorawan_commands_port6.c:884 | ||
6.0x12 |
hart_write_address | action | slot:uint8; new_addr:uint8 |
12020002 |
len 2; HART cmd 6 + verify. src lorawan_commands_port6.c:903 | |
6.0x13 |
hart_add_device | action | addr:uint8 |
len>=1; HART cmd 0 discovery, allocates slot; resp 0xF1 [slot]. src lorawan_commands_port6.c:958 | ||
6.0x14 |
hart_remove_device | action | slot:uint8 |
len 1. src lorawan_commands_port6.c:1012 | ||
6.0x15 |
hart_get_ext_status | query | slot:uint8 |
len 1; HART cmd 48; resp 0xF1 [rc][ds][ext...]. src lorawan_commands_port6.c:1038 | ||
6.0x16 |
hart_raw_command | action | slot:uint8; hart_cmd:uint8; tx_data:bytes (opt) |
len>=2; raw passthrough + retry; resp 0xF1 [resp_len][data...]. src lorawan_commands_port6.c:1098 | ||
6.0x17 |
hart_save_config | action | — | len0; save device table to FRAM. src lorawan_commands_port6.c:1142 | ||
6.0x18 |
hart_load_config | action | — | len0; reload device table from FRAM. src lorawan_commands_port6.c:1166 | ||
6.0x19 |
hart_set_monitor | config | slot:uint8; mode:uint8 {0=off, 1=above_high, 2=below_low, 3=out_of_range, 4=in_window}; high:float32 BE; low:float32 BE |
190A000142A0000000000000 |
len 10; PV thresholds; echoes 0xCF FPort-6 tag 0x1F key=slot value=[mode][high BE][low BE]. src lorawan_commands_port6.c:1182 | |
6.0x1A |
hart_get_monitor | query | slot:uint8 |
len 1; resp 0xF1 [slot][mode][high BE][low BE]. src lorawan_commands_port6.c:1235 |
Response — 0xF0 COMMAND_RESPONSE 7-byte envelope, then echo-TLVs @ offset 7 (decoded in the response FPort's namespace):
| Offset | Byte | Field | Meaning |
|---|---|---|---|
| 0 | F0 |
prefix | COMMAND_RESPONSE |
| 1 | LEN |
length | bytes after [F0][LEN]; 0x05 for the bare 7-byte header |
| 2 | — | cmd_id | echoed command id |
| 3 | — | status | 0=OK |
| 4 | — | error_code | command error |
| 5 | — | flags | response flags |
| 6 | — | protocol_version | =0x03 (TLV_PROTOCOL_VERSION) |
| 7… | — | echo-TLVs | port-scoped [tag][len][value] |
The
[0xF0][3]…forms in firmware docstrings are stale shorthand — never mirror them.
Typed writes (0x03–0x0C) lead with a slot byte (0..3); float32 is BE. Shape A response = F0 05 [cmd] 00 00 00 03 F1 03 [slot][rc][ds] (12 B): envelope status=OK means “WLE accepted and ran the transaction” — the real sensor outcome is the HART rc/ds (a sensor NAK still yields status OK). Shape B = envelope ACK only, when WLE rejects before the bus. 0x13 add_device takes a polling addr (0..63), NOT a slot (returns the assigned slot). 0x0A self_test with 0xFF = broadcast over online slots. 0x19 set_monitor echoes 0xCF tag 0x1F (key=slot, value=[mode][high BE][low BE], 9 B).