Fix all Icom level_gran values

pull/1148/head
Mike Black W9MDB 2022-11-11 23:14:14 -06:00
rodzic 60a6170545
commit c168a99c83
28 zmienionych plików z 157 dodań i 35 usunięć

Wyświetl plik

@ -9,7 +9,7 @@ ICOMSRC = icom.c icom.h icom_defs.h frame.c frame.h ic706.c icr8500.c ic735.c ic
ic707.c ic728.c ic751.c ic761.c \
ic78.c ic7800.c ic785x.c \
ic7000.c ic7100.c ic7200.c ic7300.c ic7600.c ic7610.c ic7700.c icf8101.c \
ic7300.h optoscan.c optoscan.h xiegu.c
ic7300.h optoscan.c optoscan.h xiegu.c level_gran_icom.h
noinst_LTLIBRARIES = libhamlib-icom.la
libhamlib_icom_la_SOURCES = $(ICOMSRC)

Wyświetl plik

@ -218,7 +218,9 @@ const struct rig_caps ic7000_caps =
.has_set_level = RIG_LEVEL_SET(IC7000_LEVELS),
.has_get_parm = IC7000_PARMS,
.has_set_parm = RIG_PARM_SET(IC7000_PARMS),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -110,7 +110,9 @@ const struct rig_caps ic703_caps =
.has_set_level = RIG_LEVEL_SET(IC703_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -174,7 +174,10 @@ const struct rig_caps ic706_caps =
.has_set_level = RIG_LEVEL_NONE,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {}, /* granularity */
.level_gran =
{
#include "level_gran_icom.h"
},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
@ -319,7 +322,10 @@ const struct rig_caps ic706mkii_caps =
.has_set_level = RIG_LEVEL_NONE,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {}, /* granularity */
.level_gran =
{
#include "level_gran_icom.h"
},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
@ -487,7 +493,9 @@ const struct rig_caps ic706mkiig_caps =
.has_set_level = RIG_LEVEL_SET(IC706IIG_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -329,7 +329,9 @@ const struct rig_caps ic7100_caps =
.has_set_level = RIG_LEVEL_SET(IC7100_LEVEL_ALL),
.has_get_parm = IC7100_PARM_ALL,
.has_set_parm = IC7100_PARM_ALL,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -102,7 +102,9 @@ const struct rig_caps ic718_caps =
.has_set_level = RIG_LEVEL_SET(IC718_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -150,7 +150,9 @@ const struct rig_caps ic7200_caps =
.has_set_level = RIG_LEVEL_SET(IC7200_LEVELS),
.has_get_parm = IC7200_PARMS,
.has_set_parm = RIG_PARM_SET(IC7200_PARMS),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -149,7 +149,9 @@ const struct rig_caps ic7410_caps =
.has_set_level = RIG_LEVEL_SET(IC7410_LEVELS),
.has_get_parm = IC7410_PARMS,
.has_set_parm = RIG_PARM_SET(IC7410_PARMS), /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -207,7 +207,9 @@ const struct rig_caps ic746_caps =
.has_set_level = RIG_LEVEL_SET(IC746_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_ANN,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_KEYSPD] = { .min = { .i = 6 }, .max = { .i = 48 }, .step = { .i = 1 } },
@ -437,7 +439,9 @@ const struct rig_caps ic746pro_caps =
.has_set_level = RIG_LEVEL_SET(IC746_LEVEL_ALL),
.has_get_parm = IC746_GET_PARM,
.has_set_parm = IC746_SET_PARM,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},
.parm_gran = {},

Wyświetl plik

@ -111,7 +111,9 @@ const struct rig_caps ic751_caps =
.has_set_level = RIG_LEVEL_NONE,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -163,7 +163,9 @@ const struct rig_caps ic756_caps =
.has_set_level = RIG_LEVEL_NONE,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},
@ -327,7 +329,9 @@ const struct rig_caps ic756pro_caps =
.has_set_level = RIG_LEVEL_SET(IC756PRO_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_KEYSPD] = { .min = { .i = 6 }, .max = { .i = 48 }, .step = { .i = 1 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 900 }, .step = { .i = 1 } },
@ -566,7 +570,9 @@ const struct rig_caps ic756pro2_caps =
.has_set_level = RIG_LEVEL_SET(IC756PROII_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },
[LVL_KEYSPD] = { .min = { .i = 6 }, .max = { .i = 48 }, .step = { .i = 1 } },
@ -1000,7 +1006,9 @@ const struct rig_caps ic756pro3_caps =
.has_set_level = RIG_LEVEL_SET(IC756PROIII_LEVEL_ALL),
.has_get_parm = IC756PROII_PARMS,
.has_set_parm = RIG_PARM_SET(IC756PROII_PARMS),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },
[LVL_KEYSPD] = { .min = { .i = 6 }, .max = { .i = 48 }, .step = { .i = 1 } },

Wyświetl plik

@ -292,7 +292,9 @@ const struct rig_caps ic7600_caps =
.has_set_level = RIG_LEVEL_SET(IC7600_LEVELS),
.has_get_parm = IC7600_PARMS,
.has_set_parm = RIG_PARM_SET(IC7600_PARMS),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -274,7 +274,9 @@ const struct rig_caps ic7700_caps =
.has_set_level = RIG_LEVEL_SET(IC7700_LEVELS),
.has_get_parm = IC7700_PARMS,
.has_set_parm = RIG_PARM_SET(IC7700_PARMS), /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -93,7 +93,9 @@ const struct rig_caps ic78_caps =
.has_set_level = RIG_LEVEL_SET(IC78_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -176,7 +176,9 @@ const struct rig_caps ic7800_caps =
.has_set_level = RIG_LEVEL_SET(IC7800_LEVELS),
.has_get_parm = IC7800_PARMS,
.has_set_parm = RIG_PARM_SET(IC7800_PARMS), /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -225,7 +225,9 @@ const struct rig_caps ic910_caps =
.has_set_level = IC910_LEVEL_ALL,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -65,7 +65,6 @@
#define IC9100_LEVEL_ALL (RIG_LEVEL_AF| \
RIG_LEVEL_RF| \
RIG_LEVEL_SQL| \
RIG_LEVEL_IF| \
RIG_LEVEL_NR| \
RIG_LEVEL_CWPITCH| \
RIG_LEVEL_RFPOWER| \
@ -112,7 +111,7 @@ const struct rig_caps ic9100_caps =
RIG_MODEL(RIG_MODEL_IC9100),
.model_name = "IC-9100",
.mfg_name = "Icom",
.version = BACKEND_VER ".3",
.version = BACKEND_VER ".4",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -135,7 +134,9 @@ const struct rig_caps ic9100_caps =
.has_set_level = IC9100_LEVEL_ALL,
.has_get_parm = IC9100_PARM_ALL,
.has_set_parm = IC9100_PARM_ALL,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },

Wyświetl plik

@ -122,7 +122,9 @@ const struct rig_caps ic92d_caps =
.has_set_level = RIG_LEVEL_SET(IC92D_LEVEL_ALL),
.has_get_parm = IC92D_PARM_ALL,
.has_set_parm = IC92D_PARM_ALL,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -81,7 +81,9 @@ const struct rig_caps icr10_caps =
.has_set_level = RIG_LEVEL_NONE,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -81,7 +81,9 @@ const struct rig_caps icr20_caps =
.has_set_level = RIG_LEVEL_NONE,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -133,7 +133,9 @@ const struct rig_caps icr75_caps =
.has_set_level = RIG_LEVEL_SET(ICR75_LEVEL_ALL),
.has_get_parm = ICR75_PARM_ALL,
.has_set_parm = RIG_PARM_SET(ICR75_PARM_ALL),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_PBT_IN] = { .min = { .f = -1280 }, .max = { .f = +1280 }, .step = { .f = 15 } },

Wyświetl plik

@ -101,7 +101,9 @@ const struct rig_caps icr8500_caps =
.has_set_level = RIG_LEVEL_SET(ICR8500_LEVEL_ALL | RIG_LEVEL_AF),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_IF] = { .min = { .i = 0 }, .max = { .i = 255 }, .step = { .i = 1 } },

Wyświetl plik

@ -97,7 +97,9 @@ const struct rig_caps icr9000_caps =
.has_set_level = RIG_LEVEL_SET(ICR9000_LEVELS),
.has_get_parm = ICR9000_PARMS,
.has_set_parm = RIG_PARM_SET(ICR9000_PARMS),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -112,7 +112,9 @@ const struct rig_caps icr9500_caps =
.has_set_level = RIG_LEVEL_SET(ICR9500_LEVELS),
.has_get_parm = ICR9500_PARMS,
.has_set_parm = RIG_PARM_SET(ICR9500_PARMS),
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -79,7 +79,9 @@ const struct rig_caps icrx7_caps =
.has_set_level = RIG_LEVEL_SET(ICRX7_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -97,7 +97,9 @@ const struct rig_caps id1_caps =
.has_set_level = RIG_LEVEL_SET(ID1_LEVEL_ALL),
.has_get_parm = ID1_PARM_ALL,
.has_set_parm = ID1_PARM_ALL,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -109,7 +109,9 @@ const struct rig_caps id5100_caps =
.has_set_level = RIG_LEVEL_SET(ID5100_LEVEL_ALL),
.has_get_parm = ID5100_PARM_ALL,
.has_set_parm = ID5100_PARM_ALL,
.level_gran = {
.level_gran =
{
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},

Wyświetl plik

@ -0,0 +1,57 @@
/*
LVL_IF
LVL_RAWSTR
LVL_SPECTRUM_AVG
LVL_SPECTRUM_REF
LVL_SPECTRUM_SPEED
LVL_PBT_IN
LVL_PBT_OUT
LVL_KEYSPD
*/
// Once included these values can be overidden in the back-end
// Known variants are AGC_TIME, PREAMP, ATT, NB, CWPITCH, IF, NOTCHF, VOXDELAY, BKINDL, BKIN_DLYMS, RFPOWER_METER(255 or 100), RFPOWER_METER_WATTS(255 or 100)
// cppcheck-suppress *
/* raw data */
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
/* levels with dB units */
[LVL_PREAMP] = { .min = { .i = 10 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 12 }, .max = { .i = 12 }, .step = { .i = 0 } },
[LVL_STRENGTH] = { .min = { .i = 0 }, .max = { .i = 60 }, .step = { .i = 0 } },
[LVL_NB] = { .min = { .f = 0 }, .max = { .f = 10 }, .step = { .f = 1 } },
/* levels with WPM units */
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
/* levels with Hz units */
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 900 }, .step = { .i = 5 } },
[LVL_IF] = { .min = { .i = -1200 }, .max = { .i = 1200 }, .step = { .i = 20 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
/* levels with time units */
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },
[LVL_BKINDL] = { .min = { .i = 30 }, .max = { .i = 3000 }, .step = { .i = 1 } },
[LVL_BKIN_DLYMS] = { .min = { .i = 30 }, .max = { .i = 3000 }, .step = { .i = 1 } },
[LVL_AGC_TIME] = { .min = { .i = 0 }, .max = { .i = 8000 }, .step = { .i = 1 } },
/* level with misc units */
[LVL_SWR] = { .min = { .f = 0 }, .max = { .f = 5.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_BAND_SELECT] = { .min = { .i = 0 }, .max = { .i = 16 }, .step = { .i = 1 } },
/* levels with 0-1 values -- increment based on rig's range */
[LVL_NR] = { .min = { .f = 0 }, .max = { .f = 1 }, .step = { .f = 1.0f/15.0f } },
[LVL_AF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_RF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_RFPOWER] = { .min = { .f = .05 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_RFPOWER_METER] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_RFPOWER_METER_WATTS] = { .min = { .f = .0 }, .max = { .f = 100 }, .step = { .f = 1.0f/255.0f } },
[LVL_COMP_METER] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_ID_METER] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_VD_METER] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_SQL] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_MICGAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_MONITOR_GAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_COMP] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },
[LVL_VOXGAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_ANTIVOX] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_ALC] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/120.0f } },
[LVL_USB_AF] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_PBT_IN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_PBT_OUT] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },