sacn

package module
v0.0.0-...-ad088db Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2024 License: MIT Imports: 8 Imported by: 0

README

sACN in go

A library for sACN (ANSI E1.31) in Go.

Fully supports and complies to the specification:

  • All Packet types (Data, Sync and Discovery)
  • Receiver with callbacks on sync packet reception
  • Transmitter sending discovery packets

Usage

go get gitlab.com/patopest/go-sacn
  • Receiver
package main

import (
    "fmt"
    "time"
    "net"

    "gitlab.com/patopest/go-sacn"
    "gitlab.com/patopest/go-sacn/packet"
)

func main() {
    fmt.Println("hello")

    itf, _ := net.InterfaceByName("en0") // change based on your machine
    receiver := sacn.NewReceiver(itf)
    receiver.JoinUniverse(1)
    receiver.RegisterPacketCallback(packet.PacketTypeData, dataPacketCallback)
    receiver.Start()

    for {
        time.Sleep(1)
    }
}

func dataPacketCallback(p packet.SACNPacket, source string) {
    d, ok := p.(*packet.DataPacket)
    if ok == false {
        return
    }
    fmt.Printf("Received Data Packet for universe %d from %s\n", d.Universe, source)
}
  • Transmitter

TODO

See examples directory for more examples.

Development

  • Run an example to test your code
go run examples/receiver/receiver.go
  • Tests
go test ./...

References

Similar projects
  • sACN-Monitor: An app to view data from all sACN universes, built using this library.
  • Hundemeier's go-sacn: Only supports Data packets
  • go-artnet
  • Open Lighting Architecure (OLA) framework (C implementations of control protocols).
Documentation

Documentation

Index

Constants

View Source
const (
	SACN_PORT                   = 5568
	DISCOVERY_UNIVERSE          = 64214
	UNIVERSE_DISCOVERY_INTERVAL = 10   // in seconds
	NETWORK_DATA_LOSS_TIMEOUT   = 2500 // in milliseconds
)

Variables

This section is empty.

Functions

This section is empty.

Types

type PacketCallbackFunc

type PacketCallbackFunc func(p packet.SACNPacket, source string)

type Receiver

type Receiver struct {
	// contains filtered or unexported fields
}

func NewReceiver

func NewReceiver(itf *net.Interface) *Receiver

func (*Receiver) JoinUniverse

func (r *Receiver) JoinUniverse(universe uint16) error

func (*Receiver) LeaveUniverse

func (r *Receiver) LeaveUniverse(universe uint16) error

func (*Receiver) RegisterPacketCallback

func (r *Receiver) RegisterPacketCallback(packetType packet.SACNPacketType, callback PacketCallbackFunc)

func (*Receiver) RegisterTerminationCallback

func (r *Receiver) RegisterTerminationCallback(callback TerminationCallbackFunc)

func (*Receiver) Start

func (r *Receiver) Start()

func (*Receiver) Stop

func (r *Receiver) Stop()

type TerminationCallbackFunc

type TerminationCallbackFunc func(universe uint16)

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL