Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ApplicationCode ¶
type ApplicationCode uint32
const ( ApplicationCodePublic ApplicationCode = 0x0000 ApplicationCodePioneerDJ ApplicationCode = 0x0AA0 // http://www.pioneerdj.com ApplicationCodeTCSupplyShowKontrol ApplicationCode = 0x0AAA // http://www.showkontrol.com ApplicationCodeTCSupplyPyrotechnicSystems ApplicationCode = 0x0AAB // http://www.tc-supply.com ApplicationCodeTCSupplyRideControlSystems ApplicationCode = 0x0AAC // http://www.tc-supply.com ApplicationCodeAvolitesLighting ApplicationCode = 0x0AB0 // http://www.avolites.com ApplicationCodeMALighting ApplicationCode = 0x0AB1 // http://www.malighting.com ApplicationCodeChamsysLighting ApplicationCode = 0x0AB3 // http://www.chamsys.co.uk ApplicationCodeObsidianControl ApplicationCode = 0x0AB4 // http://www.obsidiancontrol.com ApplicationCodeArkaosSoftware ApplicationCode = 0x0ABA // http://www.arkaos.net ApplicationCodeBLCKBOOKTimeCodeSync ApplicationCode = 0x0ABB // http://www.timecodesync.com ApplicationCodeResolumeSoftware ApplicationCode = 0x0ABC // http://www.resolume.com ApplicationCodeGreenHippo ApplicationCode = 0x0ABD // http://www.green-hippo.com ApplicationCodeRDShowCockpit ApplicationCode = 0x0ABE // http://www.showcockpit.com ApplicationCodeDisguise ApplicationCode = 0x0ABF // http://disguise.one ApplicationCodeOrangePI ApplicationCode = 0x0ACA // http://orangepi.dmx.org ApplicationCodeRedPillVR ApplicationCode = 0x0ACB // http://www.redpillvr.com ApplicationCodePublic2 ApplicationCode = 0xFFFF )
type Header ¶
type Header struct { // Unique Node ID. When multiple applications/services are running on same IP, this number must be unique. NodeID NodeID // Protocol version of source that sends the packet. - Example: 1.00 would be: 01 00 Version flame.Version // TCNet Protocol Header (Must be “TCN”) Header string // Message type of packet. MessageType MessageType // GW Code of software/machine/source that sends packet. (8 Characters). NodeName string // Sequence number of packet. Sequence uint8 // Node Type. NodeType NodeType // Node options. (Bit field). NodeOptions NodeOption // Time stamp in microseconds that is used to calculate network latency. Timestamp uint32 }
type MessageType ¶
type MessageType uint8
const ( MessageTypeOptIn MessageType = 002 // Present and keep alive a node into a TCNet network. MessageTypeOptOut MessageType = 003 // Notifies other nodes that node leaves network. MessageTypeStatus MessageType = 005 // Status packet of current settings on node. MessageTypeTimeSync MessageType = 010 // Send and Receive Time Sync Data. // Notification messages. MessageTypeErrorNotification MessageType = 013 // Notifies that a request is not handled. MessageTypeRequest MessageType = 020 // Request Data from other Node. MessageTypeApplicationSpecific MessageType = 030 MessageTypeControl MessageType = 101 // Send and Receive Control Packets to control nodes remotely. MessageTypeTextData MessageType = 128 // Send and Receive Text Data Packets to control nodes remotely. MessageTypeKeyboardData MessageType = 133 // Send and Receive Realtime Keyboard Data Packets to control nodes remotely. MessageTypeData MessageType = 200 // Updates Metrics Data for Layer. MessageTypeFileData MessageType = 204 // Contains Low Res Artwork file (JPEG Format). MessageTypeApplicationSpecifcData MessageType = 213 // Application Specific Broadcasted Data. MessageTypeTime MessageType = 254 // Constant stream of timing data of layers. )
type NodeOption ¶
type NodeOption uint16
const ( // NodeOptionNeedsAuthentication signifies that authentication for extended communication with the node is needed. NodeOptionNeedsAuthentication NodeOption = 1 << iota // NodeOptionSupportsTCNCM signifies that the node listens to TCNet Control Messages. NodeOptionSupportsTCNCM // NodeOptionSupportsTCNASDP signifies that the node listens to TCNet Application Specific Data Packet. NodeOptionSupportsTCNASDP // NodeOptionDND signifies that the node is in do not disturb/sleeping mode. The node will request data itself if needed to avoid traffic. NodeOptionDND )
type OptInData ¶
type OptInData struct { // Number of nodes registered by system. NodeCount uint16 // Listener port of node (Used to receive unicast messages). NodeListenerPort uint16 // Up time of Node in seconds. (!) Must Roll over / Reset every 12 hours. Uptime uint16 // Name of Vendor of Node. VendorName string // Name of Application/Device (Node). NodeName string // Major Version of Node. NodeVersionMajor uint8 // Minor Version of Node. NodeVersionMinor uint8 // Bug Version of Node. NodeVersionBug uint8 }
Opt-in message data.
In order to correctly implement the Opt-In usage, the following steps are needed.
Step 1: Create a Opt-IN packet and make sure your Node Listeners Port value is correct.
Step 2: Broadcast every 1000ms a Opt-IN packet to port 60000
Step 3: Unicast every 1000ms a Opt-IN packet to each discovered node, targeting that node’s port. This ensures that when a node doesn’t receive broadcast messages, it still can discover your node.
type OptOutData ¶
type OptOutData struct { // Number of nodes registered by system. NodeCount uint16 // Listener port of node (Used to receive unicast messages). NodeListenerPort uint16 }
Opt-out message data.
TIP: In case of a disconnect of a Master Node in the network, the next master is chosen by looking at all Nodes running as Node Type 1 (Auto Master). The node that has the highest Uptime including Timestamp becomes the new master. This node changes its type to 2 (Master) and starts its services as such.