diff --git a/experimental/devices/nrzled/nrzled.go b/experimental/devices/nrzled/nrzled.go index 4943076..da7ec06 100644 --- a/experimental/devices/nrzled/nrzled.go +++ b/experimental/devices/nrzled/nrzled.go @@ -59,10 +59,11 @@ func New(p gpiostream.PinOut, numPixels, hz int, channels int) (*Dev, error) { p: p, numPixels: numPixels, channels: channels, - b: gpiostream.BitStreamMSB{ + b: gpiostream.BitStream{ Res: time.Second / time.Duration(hz), // Each bit is encoded on 3 bits. - Bits: make(gpiostream.BitsMSB, numPixels*3*channels), + Bits: make([]byte, numPixels*3*channels), + LSBF: false, }, }, nil } @@ -71,9 +72,9 @@ func New(p gpiostream.PinOut, numPixels, hz int, channels int) (*Dev, error) { type Dev struct { p gpiostream.PinOut numPixels int - channels int // Number of channels per pixel - b gpiostream.BitStreamMSB // NRZ encoded bits; cached to reduce heap fragmentation - buf []byte // Double buffer of RGB/RGBW pixels; enables partial Draw() + channels int // Number of channels per pixel + b gpiostream.BitStream // NRZ encoded bits; cached to reduce heap fragmentation + buf []byte // Double buffer of RGB/RGBW pixels; enables partial Draw() } func (d *Dev) String() string { diff --git a/experimental/devices/nrzled/nrzled_test.go b/experimental/devices/nrzled/nrzled_test.go index b64244d..04cf5b3 100644 --- a/experimental/devices/nrzled/nrzled_test.go +++ b/experimental/devices/nrzled/nrzled_test.go @@ -47,8 +47,8 @@ func TestNew_3(t *testing.T) { g := gpiostreamtest.PinOutPlayback{ N: "Yo", Ops: []gpiostream.Stream{ - &gpiostream.BitStreamMSB{ - Bits: gpiostream.BitsMSB{ + &gpiostream.BitStream{ + Bits: []byte{ 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, @@ -56,7 +56,8 @@ func TestNew_3(t *testing.T) { 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, }, - Res: 2500 * time.Nanosecond, + Res: 2500 * time.Nanosecond, + LSBF: false, }, }, } @@ -94,8 +95,8 @@ func TestNew_fail(t *testing.T) { func TestDraw_NRGBA_3(t *testing.T) { g := gpiostreamtest.PinOutPlayback{ Ops: []gpiostream.Stream{ - &gpiostream.BitStreamMSB{ - Bits: gpiostream.BitsMSB{ + &gpiostream.BitStream{ + Bits: []byte{ 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, @@ -103,7 +104,8 @@ func TestDraw_NRGBA_3(t *testing.T) { 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0xb6, 0x92, 0x49, 0xb4, 0x92, 0x4d, 0x24, }, - Res: 2500 * time.Nanosecond, + Res: 2500 * time.Nanosecond, + LSBF: false, }, }, } @@ -119,8 +121,8 @@ func TestDraw_NRGBA_3(t *testing.T) { func TestDraw_RGBA_3(t *testing.T) { g := gpiostreamtest.PinOutPlayback{ Ops: []gpiostream.Stream{ - &gpiostream.BitStreamMSB{ - Bits: gpiostream.BitsMSB{ + &gpiostream.BitStream{ + Bits: []byte{ 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, @@ -128,7 +130,8 @@ func TestDraw_RGBA_3(t *testing.T) { 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xa6, 0xdb, 0x6d, 0xa6, 0xdb, 0x6d, 0xa6, 0xda, 0x49, 0xb6, 0xd3, 0x4d, 0x34, 0xdb, 0x49, 0x36, }, - Res: 2500 * time.Nanosecond, + Res: 2500 * time.Nanosecond, + LSBF: false, }, }, } @@ -144,8 +147,8 @@ func TestDraw_RGBA_3(t *testing.T) { func TestDraw_RGBA_4(t *testing.T) { g := gpiostreamtest.PinOutPlayback{ Ops: []gpiostream.Stream{ - &gpiostream.BitStreamMSB{ - Bits: gpiostream.BitsMSB{ + &gpiostream.BitStream{ + Bits: []byte{ 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, @@ -155,7 +158,8 @@ func TestDraw_RGBA_4(t *testing.T) { 0xdb, 0x6d, 0xa6, 0xdb, 0x6d, 0xa6, 0xdb, 0x6d, 0xa6, 0xd2, 0x49, 0x24, 0xda, 0x49, 0xb6, 0xd3, 0x4d, 0x34, 0xdb, 0x49, 0x36, 0x92, 0x4d, 0x26, }, - Res: 2500 * time.Nanosecond, + Res: 2500 * time.Nanosecond, + LSBF: false, }, }, } @@ -171,8 +175,8 @@ func TestDraw_RGBA_4(t *testing.T) { func TestDraw_Limits(t *testing.T) { g := gpiostreamtest.PinOutPlayback{ Ops: []gpiostream.Stream{ - &gpiostream.BitStreamMSB{ - Bits: gpiostream.BitsMSB{ + &gpiostream.BitStream{ + Bits: []byte{ 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, @@ -180,7 +184,8 @@ func TestDraw_Limits(t *testing.T) { 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xa6, 0xdb, 0x6d, 0xa6, 0xdb, 0x6d, 0xa6, 0xda, 0x49, 0xb6, 0xd3, 0x4d, 0x34, 0xdb, 0x49, 0x36, }, - Res: 2500 * time.Nanosecond, + Res: 2500 * time.Nanosecond, + LSBF: false, }, }, } @@ -196,8 +201,8 @@ func TestDraw_Limits(t *testing.T) { func TestWrite_3(t *testing.T) { g := gpiostreamtest.PinOutPlayback{ Ops: []gpiostream.Stream{ - &gpiostream.BitStreamMSB{ - Bits: gpiostream.BitsMSB{ + &gpiostream.BitStream{ + Bits: []byte{ 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0x24, 0x92, 0x49, 0x24, @@ -205,7 +210,8 @@ func TestWrite_3(t *testing.T) { 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x92, 0x49, 0xa4, 0x92, 0x49, 0x36, 0x92, 0x49, 0xa6, 0x92, 0x49, 0xb6, 0x92, 0x49, 0xb4, 0x92, 0x4d, 0x24, }, - Res: 2500 * time.Nanosecond, + Res: 2500 * time.Nanosecond, + LSBF: false, }, }, }