Releases: Pixout-Lighting/sig-net
Releases · Pixout-Lighting/sig-net
v0.7.0 — Protocol spec v0.19
Breaking Changes 💥
- TID_PATCH → TID_UNIVERSE — renamed everywhere (constants, TLV encoder, parser). Old name kept as
#[deprecated]alias. - Ephemeral TUID → Dynamic TUID —
generate_ephemeral_tuid/signet_generate_ephemeral_tuidrenamed togenerate_dynamic_tuid/signet_generate_dynamic_tuid. - Beacon/Lost URI
/0suffix —node_beacon/{TUID}/0andnode_lost/{TUID}/0per v0.19 spec. Packet builders and URI builders updated. - PATCH_ANNOUNCE_INTERVAL_SECS → UNIVERSE_ANNOUNCE_INTERVAL_SECS — renamed without deprecated alias (0.x SemVer: backward compatibility not guaranteed).
Added 🚀
SECURITY_MODE_OPEN_MODEconstant (0x01) for unauthenticated operation.GuestKeysstruct andexport_guest_keys(k0)— exports(Km_global, Ks, Kc)for Guest Manager key provisioning.- Tests:
export_guest_keys_roundtrip(56 total).
Changed 🧰
to_hex_display()— now uses uppercase hex characters (ABCDEF), matching §6.6 of the spec.
Migration Guide 🚢
- Replace
TID_PATCH→TID_UNIVERSE(deprecated alias available). - Replace
generate_ephemeral_tuid/signet_generate_ephemeral_tuid→generate_dynamic_tuid/signet_generate_dynamic_tuid. - Beacon/lost packet URIs now include trailing
/0. PATCH_ANNOUNCE_INTERVAL_SECS→UNIVERSE_ANNOUNCE_INTERVAL_SECS.to_hex_display()now returns uppercase hex (previously lowercase).
v0.6.1 — Updated docs
New features 🚀
- updated docs;
v0.6.0 — Protocol spec v0.18
Breaking changes 💥
- SoemCode type alias — mfg_code: u16 + product_variant_id: u16 merged into a single SoemCode = u32. Use soem_code(mfg,
variant) to construct, soem_code_mfg(sc) / soem_code_variant(sc) to unpack. - build_dmx_packet — new scope: &str parameter (was hardcoded to "local").
- build_announce_packet — new endpoint_count: u16 parameter.
- build_startup_announce_payload — new endpoint_count: u16 parameter; now encodes TID_RT_ENDPOINT_COUNT in the canonical §10.2.5 TLV order.
- machine_version_id in TID_RT_FIRMWARE_VERSION — type changed from u16 to u32 (4 bytes on the wire).
- TUID in URIs — always uppercase (534C00000001). TUID::to_hex() deprecated in favour of to_hex_upper() (URIs) / to_hex_display() (UI).
- TID_RT_UNPROVISION — renamed to TID_RT_OFFBOARD; old name kept as a #[deprecated] alias.
New features 🚀
New TIDs:
- TID_PREVIEW (0x0103) — DMX data for preview stream
- TID_TIMECODE (0x0202) — 5 bytes: hours / minutes / seconds / frames / type
- TID_PATCH (0x0203) — 7 bytes: universe / command / multicast IP
- TID_RT_MULT_OVERRIDE (0x0606) — multicast override state
- TID_RT_OTW_CAPABILITY (0x060D) — listener port + protocols bitfield
New packet builders (send):
- build_beacon_packet — Security-Mode 0xFF, HMAC = zeros, scope always "local", no key parameter
- build_node_lost_packet — signed with citizen key (Kc)
- build_timecode_packet
- build_preview_packet
- build_manager_command_packet — uses Km_local (per-node key)
New URI builders (coap):
- build_node_beacon_uri_string → /node_beacon/{TUID}
- build_node_lost_uri_string → /node_lost/{TUID}
- build_manager_uri_string → /manager/{TUID}/{endpoint}
- build_timecode_uri_string → /timecode/{stream}
- build_preview_uri_string → /preview/{universe}
New TLV encoders / parsers:
- tlv::encode_tid_timecode, encode_tid_patch, encode_tid_preview, encode_tid_rt_mult_override,
encode_tid_rt_otw_capability, encode_tid_rt_reboot - parse::parse_tid_timecode, parse_tid_patch
New protocol timing constants (§16 Appendix B):
POLL_BACKOFF_MAX_MS, POLL_TIME_SECS, NODE_LOST_TIMEOUT_POLLS, UNIVERSE_LOST_TIMEOUT_SECS, OFFBOARD_LOCKOUT_SECS, SYNC_LOST_TIMEOUT_MS, IP_ROLLBACK_TIMER_SECS, TIMECODE_LOST_TIMEOUT_SECS, MANAGER_POLL_JITTER_MS, BEACON_MIN_INTERVAL_SECS, BEACON_TIMEOUT_SECS, NODE_PROCESSING_MAX_MS, ENDPOINT_SPACING_DELAY_MS, PATCH_ANNOUNCE_INTERVAL_SECS, STATUS_PUBLISH_RATE_SECS
Other 🧢
- SigNetError::SessionIdOverflow variant added
- MULTICAST_PREVIEW_IP = "239.254.255.249" added to constants
- CI via GitHub Actions (test + clippy + FFI build on every push and PR)
Tests 🤖
55 integration tests (up from 24), covering all new TIDs, packet builders, URI uppercase enforcement, firmware version, wire format, and HMAC round-trips for all new packet types.