Setting Panel Type/Width/Height at Runtime

Is it possible to set the PanelType/Width/Height at runtime? I’ve got a use case where I may be dealing with several different panel types and I would like the user to be able to push a button until a test picture shows up correctly. Once the proper settings are identified the idea is store them in NVM for future bootups. I’ve worked around height/width by simply allocating a big enough buffer for my largest display (96x16), and then wrapping some offset logic in my display class, but I’m hitting a wall with handing the panel type. Thoughts?

The C++ templates that are used in SmartMatrix Library make it difficult to do what you want. I made a HUB75 refresh class for ESP32 that doesn’t use templates so you can load parameters at runtime, but it’s less efficient at calculating each frame (around 25% I think). There’s no support for updating parameters after matrix.begin() has been called. My current plan is to load parameters from NVM at startup, and if they change, reboot. There’s no plans to do this for Teensy, but you could follow the GitHub commits where I created the ESP32 _NT class from the normal class and make similar changes for Teensy if you’re using Teensy.

I only have one sketch that is using the _NT class, and it’s not yet loading parameters from NVM but will in the future.

I dealt with this with fastled once, yeah templates make things hard.

if (panel1)  < template1>
if (panel2)  < template2>
if (panel3)  < template3>

tempales are stil lhardcoded at build time, but you can switch between them as long as it’s not a big amount.