namespace RPiRgbLEDMatrix;
///
/// Represents the matrix settings.
///
public struct RGBLedMatrixOptions
{
///
/// Name of the hardware mapping used. If passed
/// here, the default is used.
///
public string? HardwareMapping = null;
///
/// The "rows" are the number of rows supported by the display, so 32 or 16.
/// Default: 32.
///
public int Rows = 32;
///
/// The "cols" are the number of columns per panel. Typically something
/// like 32, but also 64 is possible. Sometimes even 40.
/// cols * chain_length is the total length of the display, so you can
/// represent a 64 wide display as cols=32, chain=2 or cols=64, chain=1;
/// same thing, but more convenient to think of.
///
public int Cols = 32;
///
/// The chain_length is the number of displays daisy-chained together
/// (output of one connected to input of next). Default: 1
///
public int ChainLength = 1;
///
/// The number of parallel chains connected to the Pi; in old Pis with 26
/// GPIO pins, that is 1, in newer Pis with 40 interfaces pins, that can also
/// be 2 or 3. The effective number of pixels in vertical direction is then
/// thus rows * parallel. Default: 1
///
public int Parallel = 1;
///
/// Set PWM bits used for output. Default is 11, but if you only deal with limited
/// comic-colors, 1 might be sufficient. Lower require less CPU and increases refresh-rate.
///
public int PwmBits = 11;
///
/// Change the base time-unit for the on-time in the lowest significant bit in
/// nanoseconds. Higher numbers provide better quality (more accurate color, less
/// ghosting), but have a negative impact on the frame rate.
///
public int PwmLsbNanoseconds = 130;
///
/// The lower bits can be time-dithered for higher refresh rate.
///
public int PwmDitherBits = 0;
///
/// The initial brightness of the panel in percent. Valid range is 1..100
///
public int Brightness = 100;
///
/// Scan mode.
///
public ScanModes ScanMode = ScanModes.Progressive;
///
/// Default row address type is 0, corresponding to direct setting of the
/// row, while row address type 1 is used for panels that only have A/B,
/// typically some 64x64 panels
///
public int RowAddressType = 0;
///
/// Type of multiplexing.
///
public Multiplexing Multiplexing = Multiplexing.Direct;
///
/// In case the internal sequence of mapping is not "RGB", this
/// contains the real mapping. Some panels mix up these colors.
///
public string? LedRgbSequence = null;
///
/// A string describing a sequence of pixel mappers that should be applied
/// to this matrix. A semicolon-separated list of pixel-mappers with optional
/// parameter.
public string? PixelMapperConfig = null;
///
/// Panel type. Typically just empty, but certain panels (FM6126)
/// requie an initialization sequence
///
public string? PanelType = null;
///
/// Allow to use the hardware subsystem to create pulses. This won't do
/// anything if output enable is not connected to GPIO 18.
///
public bool DisableHardwarePulsing = false;
public bool ShowRefreshRate = false;
public bool InverseColors = false;
///
/// Limit refresh rate of LED panel. This will help on a loaded system
/// to keep a constant refresh rate. <= 0 for no limit.
///
public int LimitRefreshRateHz = 0;
///
/// Slowdown GPIO. Needed for faster Pis/slower panels.
///
public int GpioSlowdown = 1;
///
/// Creates default matrix settings.
///
public RGBLedMatrixOptions() { }
}