From b3e8a617a7b6531f7fab539e4e83c0817f05401f Mon Sep 17 00:00:00 2001 From: David Lick Date: Thu, 21 Dec 2023 11:08:35 -0500 Subject: [PATCH] get args passed in --- go-rpi-rgb-led-matrix/matrix.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/go-rpi-rgb-led-matrix/matrix.go b/go-rpi-rgb-led-matrix/matrix.go index 7c0a2f9..fdf1c3a 100644 --- a/go-rpi-rgb-led-matrix/matrix.go +++ b/go-rpi-rgb-led-matrix/matrix.go @@ -156,6 +156,18 @@ type RGBLedMatrix struct { const MatrixEmulatorENV = "MATRIX_EMULATOR" +func stringsToC(s []string) **C.char { + cArray := C.malloc(C.size_t(len(s)) * C.size_t(unsafe.Sizeof(uintptr(0)))) + + a := (*[2000]*C.char)(cArray) + + for idx, substring := range s { + a[idx] = C.CString(substring) + } + + return (**C.char)(cArray) +} + // NewRGBLedMatrix returns a new matrix using the given size and config func NewRGBLedMatrix(config *HardwareConfig) (c Matrix, err error) { defer func() { @@ -173,7 +185,9 @@ func NewRGBLedMatrix(config *HardwareConfig) (c Matrix, err error) { } w, h := config.geometry() - m := C.led_matrix_create_from_options(config.toC(), nil, nil) + cargc := C.int(len(os.Args)) + cargv := stringsToC(os.Args) + m := C.led_matrix_create_from_options(config.toC(), &cargc, &cargv) b := C.led_matrix_create_offscreen_canvas(m) c = &RGBLedMatrix{ Config: config,