mirror of
https://github.com/jwetzell/ddp-go.git
synced 2026-08-19 05:43:58 +00:00
initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net"
|
||||
|
||||
"github.com/jwetzell/ddp-go"
|
||||
)
|
||||
|
||||
// receive data from WLED virtual output
|
||||
func main() {
|
||||
addr, err := net.ResolveUDPAddr("udp", "0.0.0.0:4048")
|
||||
if err != nil {
|
||||
slog.Error("error making UDP address", "err", err)
|
||||
return
|
||||
}
|
||||
|
||||
client, err := net.ListenUDP("udp", addr)
|
||||
if err != nil {
|
||||
slog.Error("error listening to UDP", "err", err)
|
||||
return
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
for {
|
||||
buffer := make([]byte, 2048)
|
||||
|
||||
length, _, err := client.ReadFromUDP(buffer)
|
||||
if err != nil {
|
||||
slog.Error("error reading from UDP", "err", err)
|
||||
} else if length > 0 {
|
||||
message, err := ddp.Decode(buffer[0:length])
|
||||
if err != nil {
|
||||
slog.Error("error decoding", "err", err)
|
||||
}
|
||||
ledCount := uint32(message.Header.DataLength) / uint32(message.Header.DataType.BitsPerPixel/8) / 3
|
||||
|
||||
for i := 0; i < int(ledCount); i++ {
|
||||
ledOffset := i * 3
|
||||
ledR := message.Data[ledOffset+0]
|
||||
ledG := message.Data[ledOffset+1]
|
||||
ledB := message.Data[ledOffset+2]
|
||||
|
||||
fmt.Printf("led %d:\tr=%d\tg=%d\tb=%d\n", i, ledR, ledG, ledB)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user