Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding all Art-Net packets #15

Merged
merged 53 commits into from
Aug 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
2d63611
Adding first batch of ksy files
Vitineth Jul 20, 2023
8f87b43
Adding first batch of ksy files
Vitineth Jul 20, 2023
aec17b1
Merge remote-tracking branch 'origin/vitineth/artnet-ksy' into vitine…
Vitineth Jul 21, 2023
6e903c7
Adding verbose output for better logging
Vitineth Jul 21, 2023
69fba29
Adding four new specification files
Vitineth Jul 21, 2023
71b0578
Adding titles to all existing files
Vitineth Jul 22, 2023
463f184
Two new packet types! 9 more definitions to go
Vitineth Jul 22, 2023
4d3e367
ArtTodRequest
theMinorDeveloper Jul 23, 2023
ef26a3a
Tab fixes
theMinorDeveloper Jul 23, 2023
774b32c
ArtTodRequest tabs
theMinorDeveloper Jul 23, 2023
eb51984
Rapidly fixing some docs
Vitineth Jul 24, 2023
33118af
Adding ArtVlc
Vitineth Jul 24, 2023
3a391ba
Fixing a recommendation from ksc
Vitineth Jul 24, 2023
1bb4087
Adding ArtInput and ArtFirmwareMaster
Vitineth Jul 24, 2023
eef6770
Removing pre-built html
Vitineth Jul 24, 2023
9938354
Adding ArtFirmwareReply
Vitineth Jul 24, 2023
e33f1f0
Adding the firmware format even though its not a packet
Vitineth Jul 24, 2023
a939dc4
Setting DMX array min and max
minorDeveloper Aug 3, 2023
46af3a3
Adding ArtTodData
theMinorDeveloper Aug 3, 2023
a5accdf
Adding ArtTodControl
theMinorDeveloper Aug 3, 2023
c112e91
Adding ArtRdm
theMinorDeveloper Aug 3, 2023
8716719
Adding ArtRdmSub
theMinorDeveloper Aug 3, 2023
7b8c403
Migrating RDM UID to custom type
theMinorDeveloper Aug 3, 2023
90b16d1
Merge remote-tracking branch 'origin/vitineth/artnet-ksy' into vitine…
theMinorDeveloper Aug 3, 2023
b5a9f5f
Documenting design choices for EstaMan
Vitineth Aug 5, 2023
1ce27a6
Fixing quotes on Art-Net
Vitineth Aug 5, 2023
96b73dc
Finishing artdiagdata
Vitineth Aug 5, 2023
1ee0734
Adding EstaMan and Oem
Vitineth Aug 5, 2023
d89f4b7
Adding clarity
Vitineth Aug 5, 2023
6a85903
Fixing port address on ArtPollReply
Vitineth Aug 5, 2023
5e16b0b
Integer to array for SwIn/Out in ArtPollReply
Vitineth Aug 5, 2023
86cc808
Adding missing fields to ArtPollReply
Vitineth Aug 5, 2023
a997c98
Fixing field length in ArtPollReply
Vitineth Aug 5, 2023
dcc4320
Simplifying Aux in ArtSync
Vitineth Aug 5, 2023
d531d94
Mandating VLC magic number in ArtVlc
Vitineth Aug 5, 2023
1755a22
Removing invalid field in ArtVlc
Vitineth Aug 5, 2023
ba1294b
Removing note that is now invalid
Vitineth Aug 5, 2023
a336fc3
Merge remote-tracking branch 'origin/vitineth/artnet-ksy' into vitine…
Vitineth Aug 5, 2023
7fe2943
Reverting change to Port Address on ArtPollReply
Vitineth Aug 5, 2023
50aea39
Adding some extra documentation about sizing
Vitineth Aug 5, 2023
781f816
Setting max value for len_address
minorDeveloper Aug 5, 2023
2e50f85
Port documentation formatting
minorDeveloper Aug 5, 2023
96f5ea6
Tabs formatting fix
minorDeveloper Aug 5, 2023
d8418c9
Remove html file
minorDeveloper Aug 5, 2023
fc7985c
Migrating to flexible RDM packet size
minorDeveloper Aug 5, 2023
c181825
Enforcing max data size for ArtTrigger
minorDeveloper Aug 5, 2023
e7c3f13
Converting handling rules into tables
Vitineth Aug 7, 2023
a28e188
Merge remote-tracking branch 'origin/vitineth/artnet-ksy' into vitine…
Vitineth Aug 7, 2023
d3dff39
Making flags and diagpriority non-option in ArtPoll
Vitineth Aug 7, 2023
027382d
Making spare, style and mac required in ArtPollReply
Vitineth Aug 7, 2023
7e3c372
Handling variable size results in ArtTrigger
Vitineth Aug 8, 2023
bc84287
Controlling variable length data for ArtRdm
Vitineth Aug 8, 2023
2c43694
Enums and conditional updates for ArtRdmSub
minorDeveloper Aug 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/compile-ksy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ jobs:
rm kaitai.zip

- name: Generate for all files
run: find ./ -type f -iname "*.ksy" -not -path "./kaitai-struct-compiler-0.10/*" -print0 | xargs -r -0 -n1 ./kaitai-struct-compiler-0.10/bin/kaitai-struct-compiler -t html
run: find ./ -type f -iname "*.ksy" -not -path "./kaitai-struct-compiler-0.10/*" -print0 | xargs -t -r -0 -n1 -- ./kaitai-struct-compiler-0.10/bin/kaitai-struct-compiler -t html


338 changes: 338 additions & 0 deletions artnet/ksy/artaddress.ksy
Original file line number Diff line number Diff line change
@@ -0,0 +1,338 @@
# Development Notes

meta:
id: artaddress
title: ArtAddress

doc: |
A Controlleror monitoring device on the network can reprogram numerous controls of a node remotely. This,for example, would allow the lighting console to re-route DMX512 data at remote locations. This is achieved by sending an ArtAddress packet to the Node’s IP address. (The IP address is returned in the ArtPoll packet). The node replies with an ArtPollReply packet.
Fields 5 to 13 contain the data that will be programmed into the node

| Handling Rules | |
| -- | -- |
| **Controller** | |
| Receive | No Action |
| Unicast Transmit | Controller transmits to a specific node IP address. |
| Broadcast | Not Allowed |
| **Node** | |
| Receive | Reply by unicasting ArtPollReply |
| Unicast Transmit | Not Allowed |
| Broadcast | Not Allowed |
| **Media Server** | |
| Receive | Reply by unicasting ArtPollReply |
| Unicast Transmit | Not Allowed |
| Broadcast | Not Allowed |

seq:
- id: id
contents: [0x41, 0x72, 0x74, 0x2d, 0x4e, 0x65, 0x74, 0x00]
doc: |
Array of 8 characters, the final character is a null termination.
Value = 'A' 'r' 't' '-' 'N' 'e' 't' 0x00

- id: opcode
contents: [0x00, 0x60]
doc: OpAddress (transmitted little endian)

- id: proto_version
contents: [0x00, 0x0e]
doc: Protocol version (constant 14, transmitted big endian)

- id: net_switch
type: u1
doc: |
Bits 14-8 of the 15 bit Port-Address are encoded into the bottom 7 bits of this field. This is used in combination with SubSwitch and SwIn[] or SwOut[] to produce the full universe address.
This value is ignored unless bit 7 is high. i.e. to program a value 0x07, send the value as 0x87.
Send 0x00 to reset this value to the physical switch setting.

- id: bind_index
type: u1
doc: |
The BindIndex defines the bound node which originated this packet and is used to uniquely identify the bound node when identical IP addresses are in use. This number represents the order of bound devices. A lower number means closer to root device.
A value of 1 meansroot device.

- id: short_name
type: str
encoding: utf8
size: 18
doc: |
The array represents a nullterminated short name for the Node. The Controlleruses the ArtAddress packet to program this string. Max length is 17 characters plus the null. The Node will ignore this value if the string is null.
This is a fixed length field, although the string it contains can be shorter than the field.

- id: long_name
type: str
encoding: utf8
size: 64
doc: |
The array represents a null terminated long name for the Node. The Controlleruses the ArtAddress packet to program this string. Max length is 63 characters plus the null. The Node will ignore this value if the string is null.
This is a fixed length field, although the string it contains can be shorter than the field.

- id: sw_in
type: u1
repeat: expr
repeat-expr: 4
doc: |
Bits 3-0 of the 15 bit Port-Addressfor a given input port are encoded into the bottom 4 bits of this field.
This is used in combination with NetSwitch and SubSwitch to produce the full universe address.
This value is ignored unless bit 7 is high. i.e. to program a value 0x07, send the value as 0x87.
Send 0x00 to reset this value to the physical switch setting

- id: sw_out
type: u1
repeat: expr
repeat-expr: 4
doc: |
Bits 3-0 of the 15 bit Port-Addressfor a given input port are encoded into the bottom 4 bits of this field.
This is used in combination with NetSwitch and SubSwitch to produce the full universe address.
This value is ignored unless bit 7 is high. i.e. to program a value 0x07, send the value as 0x87.
Send 0x00 to reset this value to the physical switch setting

- id: sub_switch
type: u1
doc: |
Bits 7-4 of the 15 bit Port-Address are encodedinto the bottom 4 bits of this field. This is used in combination with NetSwitch and SwIn[] or SwOut[] to produce the full universe address.
This value is ignored unless bit 7 is high. i.e. to program a value 0x07, send the value as 0x87.
Send 0x00 to reset this value to the physical switch setting

- id: acn_priority
type: u1
doc: |
Sets the sACN Priority field for sACN generated on all 4 ports encoded into this packet. A value of 255 represents no change. Values of 0 to 200 inclusive are valid.

- id: command
type: u1
enum: command
doc: Node configuration command

enums:
command:
0:
id: ac_none
doc: No action
1:
id: ac_cancel_merge
doc: |
If Node is currently in merge mode, cancel merge mode upon receipt of next ArtDmx packet.
See discussion of merge operation

2:
id: ac_led_normal
doc: The front panel indicators of the Node operate normally

3:
id: ac_led_mute
doc: The front panel indicators of the Node are disabled and switched off

4:
id: ac_led_locate
doc: Rapid flashing of the Node's front panel indicators. It is intended as an outlet identifiers for large installations

5:
id: ac_reset_rx_flags
doc: |
Resets the Node's Sip, Text, Test and data error flags.
If an output short is being flagged, forces the test to re-run

6:
id: ac_analysis_on
doc: Enable analysis and debugging mode

7:
id: ac_analysis_off
doc: Diable analysis and debugging mode

8:
id: ac_fail_hold
doc: Set the node to hold last state in the event of loss of network data

9:
id: ac_fail_zero
doc: Set the node's output to zero in the event of loss of network data

10:
id: ac_fail_full
doc: Set the node's output to full in the event of loss of network data

11:
id: ac_fail_scene
doc: Set the node's outputs to play the failsafe scene in the event of loss of network data

12:
id: ac_fail_record
doc: Record the current output state as the failsafe scene

16:
id: ac_merge_ltp_0
doc: Set DMX Port 0 to Merge in LTP mode.

17:
id: ac_merge_ltp_1
doc: Set DMX Port 1 to Merge in LTP mode.

18:
id: ac_merge_ltp_2
doc: Set DMX Port 2 to Merge in LTP mode.

19:
id: ac_merge_ltp_3
doc: Set DMX Port 3 to Merge in LTP mode.

32:
id: ac_direction_tx_0
doc: Set Port 0 direction to output.

33:
id: ac_direction_tx_1
doc: Set Port 1 direction to output.

34:
id: ac_direction_tx_2
doc: Set Port 2 direction to output.

35:
id: ac_direction_tx_3
doc: Set Port 3 direction to output.

48:
id: ac_direction_rx_0
doc: Set Port 0 direction to input.

49:
id: ac_direction_rx_1
doc: Set Port 1 direction to input.

50:
id: ac_direction_rx_2
doc: Set Port 2 direction to input.

51:
id: ac_direction_rx_3
doc: Set Port 3 direction to input.

80:
id: ac_merge_htp_0
doc: Set DMX Port 0 to Merge in HTP (default) mode.

81:
id: ac_merge_htp_1
doc: Set DMX Port 1 to Merge in HTP (default) mode.

82:
id: ac_merge_htp_2
doc: Set DMX Port 2 to Merge in HTP (default) mode.

83:
id: ac_merge_htp_3
doc: Set DMX Port 3 to Merge in HTP (default) mode.

96:
id: ac_art_net_sel_0
doc: Set DMX Port 0 to output both DMX512 and RDM packets from the Art-Net protocol (default).

97:
id: ac_art_net_sel_1
doc: Set DMX Port 1 to output both DMX512 and RDM packetsfrom the Art-Net protocol (default).

98:
id: ac_art_net_sel_2
doc: Set DMX Port 2 to output both DMX512 and RDM packets from the Art-Net protocol (default).

99:
id: ac_art_net_sel_3
doc: Set DMX Port 3 to output both DMX512 and RDM packets from the Art-Net protocol (default).

112:
id: ac_acn_sel_0
doc: Set DMX Port 0 to output DMX512 data from the sACNprotocol and RDM data from the Art-Net protocol.

113:
id: ac_acn_sel_1
doc: Set DMX Port 1 to output DMX512 data from the sACN protocol and RDM data from the Art-Net protocol.

114:
id: ac_acn_sel_2
doc: Set DMX Port 2 to output DMX512 data from the sACN protocol and RDM data from the Art-Net protocol.

115:
id: ac_acn_sel_3
doc: Set DMX Port 3 to output DMX512 data from the sACN protocol and RDM data from the Art-Net protocol.

144:
id: ac_clear_op_0
doc: Clear DMX Output buffer for Port 0

145:
id: ac_clear_op_1
doc: Clear DMX Output buffer for Port 1

146:
id: ac_clear_op_2
doc: Clear DMX Output buffer for Port 2

147:
id: ac_clear_op_3
doc: Clear DMX Output buffer for Port 3

160:
id: ac_style_delta_0
doc: Set output style to delta mode (DMX frame triggered by ArtDmx) for Port 0

161:
id: ac_style_delta_1
doc: Set output style to delta mode (DMX frame triggered by ArtDmx) for Port 1

162:
id: ac_style_delta_2
doc: Set output style to delta mode (DMX frame triggered by ArtDmx) for Port 2

163:
id: ac_style_delta_3
doc: Set output style to delta mode (DMX frame triggered by ArtDmx) for Port 3

176:
id: ac_style_const_0
doc: Set output style to constant mode (DMX output is continuous) for Port 0

177:
id: ac_style_const_1
doc: Set output style to constant mode (DMX output is continuous) for Port 1

178:
id: ac_style_const_2
doc: Set output style to constant mode (DMX output is continuous) for Port 2

179:
id: ac_style_const_3
doc: Set output style to constant mode (DMX output is continuous) for Port 3

192:
id: ac_rdm_enable_0
doc: Enable RDM for Port 0

193:
id: ac_rdm_enable_1
doc: Enable RDM for Port 1

194:
id: ac_rdm_enable_2
doc: Enable RDM for Port 2

195:
id: ac_rdm_enable_3
doc: Enable RDM for Port 3

208:
id: ac_rdm_disable_0
doc: Disable RDM for Port 0

209:
id: ac_rdm_disable_1
doc: Disable RDM for Port 1

210:
id: ac_rdm_disable_2
doc: Disable RDM for Port 2

211:
id: ac_rdm_disable_3
doc: Disable RDM for Port 3
Loading