[
    {
        "name": "systemName",
        "label": "system name",
        "type": "string",
        "default": "ESP32NMEA2K",
        "check": "checkSystemName",
        "description": "system name, used for the access point and for services",
        "category": "system"
    },
    {
        "name": "talkerId",
        "label": "NMEA0183 ID",
        "type": "list",
        "default": "GP",
        "list": [
            "AB",
            "AD",
            "AG",
            "AP",
            "AI",
            "AN",
            "AR",
            "AS",
            "AT",
            "AX",
            "BI",
            "BN",
            "CA",
            "CD",
            "CR",
            "CS",
            "CT",
            "CV",
            "CX",
            "DF",
            "DU",
            "DP",
            "EC",
            "EI",
            "EP",
            "ER",
            "FD",
            "FE",
            "FR",
            "FS",
            "GA",
            "GB",
            "GI",
            "GL",
            "GN",
            "GP",
            "GQ",
            "HC",
            "HE",
            "HF",
            "HN",
            "HD",
            "HS",
            "II",
            "IN",
            "JA",
            "JB",
            "JC",
            "JD",
            "JE",
            "JF",
            "JG",
            "JH",
            "LC",
            "NL",
            "NV",
            "RA",
            "RB",
            "RC",
            "RI",
            "SA",
            "SC",
            "SD",
            "SG",
            "SN",
            "SS",
            "TC",
            "TI",
            "UP",
            "VD",
            "VM",
            "VW",
            "VA",
            "VS",
            "VT",
            "VR",
            "WD",
            "WI",
            "WL",
            "YX",
            "ZA",
            "ZC",
            "ZQ",
            "ZV"
        ],
        "description": "the talkerId used in generated NMEA0183 records",
        "category": "system"
    },
    {
        "name": "stopApTime",
        "type": "number",
        "default": "0",
        "check": "checkMinMax",
        "description": "stop the access point after that many minutes if not used",
        "category": "system"
    },
    {
        "name": "apPassword",
        "type": "password",
        "default": "esp32nmea2k",
        "check": "checkApPass",
        "description": "set the password for the Wifi access point",
        "category": "system",
        "capabilities":{"apPwChange":["true"]}
    },
    {
        "name": "apIp",
        "type": "string",
        "default":"192.168.15.1",
        "check": "checkApIp",
        "description": "The IP address for the access point. Clients will get addresses within the same subnet.",
        "category":"system"
    },
    {
        "name": "apMask",
        "type": "string",
        "default":"255.255.255.0",
        "check": "checkNetMask",
        "description": "The net mask for the access point",
        "category":"system"
    },
    {
        "name": "useAdminPass",
        "type": "boolean",
        "default": "true",
        "description": "use a password for config modifications",
        "category": "system"
    },
    {
        "name": "adminPassword",
        "type": "password",
        "default": "esp32admin",
        "check": "checkAdminPass",
        "description": "set the password for config modifications",
        "category": "system"
    },
    {
        "name": "showInvalidData",
        "label": "show all data",
        "type": "boolean",
        "default": "true",
        "description": "show also not received items on data page",
        "category": "system"
    },
    {
        "name":"logLevel",
        "label": "log level",
        "type":"list",
        "default":"0",
        "list": [
            {"l":"off","v":"-1"},
            {"l":"error","v":"0"},
            {"l":"log","v":"1"},
            {"l":"debug","v":"3"}
        ],
        "description": "log level at the USB port",
        "category":"system"
    },
    {
        "name":"ledBrightness",
        "label":"led brightness",
        "type":"number",
        "default":64,
        "min":0,
        "max":255,
        "description":"the brightness of the led (0..255)",
        "category":"system"
    },
    {
        "name": "minXdrInterval",
        "label":"min XDR interval",
        "type": "number",
        "default": "100",
        "check": "checkMinMax",
        "min": 10,
        "description": "min interval in ms between 2 XDR records with the same transducer (> 10)",
        "category": "converter"
    },
    {
        "name": "min2KInterval",
        "label":"min N2K interval",
        "type": "number",
        "default": "50",
        "check": "checkMinMax",
        "min": 5,
        "description": "min interval in ms between 2 NMEA 2000 records with the same PGN and the same source (> 5)",
        "category": "converter"
    },
     {
         "name":"sendN2k",
         "label":"NMEA2000 out",
         "type":"boolean",
         "default":"true",
         "description":"send out the converted data on the NMEA2000 bus\nIf set to off the converted data will still be shown at the data tab.",
         "category":"converter"
     },
     {
        "name": "stbRudderI",
        "label":"stb rudder instance",
        "type": "number",
        "default": "0",
        "check": "checkMinMax",
        "min": 0,
        "max": 253,
        "description": "the n2k instance to be used as starboard(main) rudder 0...253",
        "category": "converter"
    },
    {
        "name": "portRudderI",
        "label":"port rudder instance",
        "type": "number",
        "default": "-1",
        "check": "checkMinMax",
        "min": -1,
        "max": 253,
        "description": "the n2k instance to be used as port rudder 0...253, -1 to disable",
        "category": "converter"
    },
    {
        "name": "usbActisense",
        "label": "USB mode",
        "type": "list",
        "default": "false",
        "description": "send/receive NMEA0183 or actisense format on USB",
        "list": [
            {"l":"actisense","v":"true"},
            {"l":"nmea0183","v":"false"}
        ],
        "category": "usb port"
    },
    {
        "name": "usbBaud",
        "label": "USB baud rate",
        "type": "list",
        "default": "115200",
        "description": "baud rate for the USB port",
        "list": [
            1200,
            2400,
            4800,
            9600,
            14400,
            19200,
            28800,
            38400,
            57600,
            115200,
            230400,
            460800
        ],
        "category": "usb port"
    },
    {
        "name": "sendUsb",
        "label": "NMEA to USB",
        "type": "boolean",
        "default": "true",
        "description": "send out NMEA data on the USB port",
        "category": "usb port",
        "condition":{"usbActisense":"false"}
    },
    {
        "name": "receiveUsb",
        "label": "NMEA from USB",
        "type": "boolean",
        "default": "true",
        "description": "receive NMEA data on the USB port",
        "category": "usb port",
        "condition":{"usbActisense":"false"}
    },
    {
        "name": "usbToN2k",
        "label": "USB to NMEA2000",
        "type": "boolean",
        "default": "true",
        "description": "convert NMEA0183 from the USB port to NMEA2000",
        "category": "usb port",
        "condition":{"usbActisense":"false"}
    },
    {
        "name": "usbReadFilter",
        "label": "USB read Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when reading from USB\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "category": "usb port",
        "condition":{"usbActisense":"false"}
    },
    {
        "name": "usbWriteFilter",
        "label": "USB write Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when writing to USB\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "category": "usb port",
        "condition":{"usbActisense":"false"}
    },
    {
        "name": "usbActSend",
        "label": "N2K to USB actisense",
        "type": "boolean",
        "default": "true",
        "description": "send out N2k data on the USB port in actisense format",
        "category": "usb port",
        "condition":{"usbActisense":"true"}
    },
    {
        "name": "serialDirection",
        "label": "serial direction",
        "type": "list",
        "default": "receive",
        "list": [
            "send",
            "receive",
            "off"
        ],
        "description": "use the serial port to send or receive data",
        "capabilities": {
            "serialmode": [
                "UNI"
            ]
        },
        "category": "serial port"
    },
    {
        "name": "serialBaud",
        "label": "serial baud rate",
        "type": "list",
        "default": "115200",
        "description": "baud rate for the serial port",
        "list": [
            1200,
            2400,
            4800,
            9600,
            14400,
            19200,
            28800,
            38400,
            57600,
            115200,
            230400,
            460800
        ],
        "capabilities": {
            "serialmode": [
                "RX",
                "TX",
                "UNI",
                "BI"
            ]
        },
        "category": "serial port"
    },
    {
        "name": "sendSerial",
        "label": "NMEA to Serial",
        "type": "boolean",
        "default": "true",
        "description": "send out NMEA data on the serial port",
        "capabilities": {
            "serialmode": [
                "TX",
                "BI"
            ]
        },
        "category": "serial port"
    },
    {
        "name": "receiveSerial",
        "label": "NMEA from Serial",
        "type": "boolean",
        "default": "true",
        "description": "receive NMEA data on the serial port",
        "capabilities": {
            "serialmode": [
                "RX",
                "BI"
            ]
        },
        "category": "serial port"
    },
    {
        "name": "serialToN2k",
        "label": "serial to NMEA2000",
        "type": "boolean",
        "default": "true",
        "description": "convert NMEA0183 from the serial port to NMEA2000",
        "capabilities": {
            "serialmode": [
                "RX",
                "BI",
                "UNI"
            ]
        },
        "category": "serial port"
    },
    {
        "name": "serialReadF",
        "label": "serial read Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when reading from serial\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "capabilities": {
            "serialmode": [
                "RX",
                "BI",
                "UNI"
            ]
        },
        "category": "serial port"
    },
    {
        "name": "serialWriteF",
        "label": "serial write Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when writing to serial\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "capabilities": {
            "serialmode": [
                "TX",
                "BI",
                "UNI"
            ]
        },
        "category": "serial port"
    }
    ,
    {
        "name": "serial2Dir",
        "label": "serial2 direction",
        "type": "list",
        "default": "receive",
        "list": [
            "send",
            "receive",
            "off"
        ],
        "description": "use the serial2 port to send or receive data",
        "capabilities": {
            "serial2mode": [
                "UNI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "serial2Baud",
        "label": "serial2 baud rate",
        "type": "list",
        "default": "115200",
        "description": "baud rate for the serial port 2",
        "list": [
            1200,
            2400,
            4800,
            9600,
            14400,
            19200,
            28800,
            38400,
            57600,
            115200,
            230400,
            460800
        ],
        "capabilities": {
            "serial2mode": [
                "RX",
                "TX",
                "UNI",
                "BI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "sendSerial2",
        "label": "NMEA to Serial2",
        "type": "boolean",
        "default": "true",
        "description": "send out NMEA data on the serial port 2",
        "capabilities": {
            "serial2mode": [
                "TX",
                "BI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "receiveSerial2",
        "label": "NMEA from Serial2",
        "type": "boolean",
        "default": "true",
        "description": "receive NMEA data on the serial port 2",
        "capabilities": {
            "serial2mode": [
                "RX",
                "BI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "serial2ToN2k",
        "label": "serial2 to NMEA2000",
        "type": "boolean",
        "default": "true",
        "description": "convert NMEA0183 from the serial port 2 to NMEA2000",
        "capabilities": {
            "serial2mode": [
                "RX",
                "BI",
                "UNI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "serial2ReadF",
        "label": "serial2 read Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when reading from serial2\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "capabilities": {
            "serial2mode": [
                "RX",
                "BI",
                "UNI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "serial2WriteF",
        "label": "serial2 write Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when writing to serial2\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "capabilities": {
            "serial2mode": [
                "TX",
                "BI",
                "UNI"
            ]
        },
        "category": "serial2 port"
    },
    {
        "name": "serverPort",
        "label": "TCP port",
        "type": "number",
        "default": "10110",
        "description": "the TCP port we listen on",
        "category": "TCP server"
    },
    {
        "name": "maxClients",
        "label": "max. TCP clients",
        "type": "number",
        "default": "6",
        "check": "checkMinMax",
        "min": 0,
        "max": 6,
        "description": "the number of clients we allow to connect to us",
        "category": "TCP server"
    },
    {
        "name": "sendTCP",
        "label": "NMEA0183 out",
        "type": "boolean",
        "default": "true",
        "description": "send out NMEA data to connected TCP clients",
        "category": "TCP server"
    },
    {
        "name": "readTCP",
        "label": "NMEA0183 in",
        "type": "boolean",
        "default": "true",
        "description": "receive NMEA data from connected TCP clients",
        "category": "TCP server"
    },
    {
        "name": "tcpToN2k",
        "label": "to NMEA2000",
        "type": "boolean",
        "default": "true",
        "description": "convert NMEA0183 from TCP clients to NMEA2000",
        "category": "TCP server"
    },
    {
        "name": "tcpReadFilter",
        "label": "NMEA read Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when reading from TCP\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "category": "TCP server"
    },
    {
        "name": "tcpWriteFilter",
        "label": "NMEA write Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when writing to TCP\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "category": "TCP server"
    },
    {
        "name": "sendSeasmart",
        "label": "Seasmart out",
        "type": "boolean",
        "default": "false",
        "description": "send NMEA2000 as seasmart to connected TCP clients",
        "category": "TCP server"
    },
    {
        "name": "tclEnabled",
        "label": "enable",
        "type": "boolean",
        "default": "false",
        "description":"enable the TCP client",
        "category":"TCP client"
    },
    {
        "name": "remotePort",
        "label": "remote port",
        "type": "number",
        "default": "10110",
        "description": "the TCP port we connect to",
        "category": "TCP client"
    },
    {
        "name": "remoteAddress",
        "label": "remote address",
        "type": "string",
        "default": "",
        "check": "checkIpAddress",
        "description": "the IP address we connect to in the form 192.168.1.2\nor an MDNS name like ESP32NMEA2K.local",
        "category": "TCP client"
    },
    {
        "name": "sendTCL",
        "label": "NMEA0183 out",
        "type": "boolean",
        "default": "true",
        "description": "send out NMEA data to remote TCP server",
        "category": "TCP client"
    },
    {
        "name": "readTCL",
        "label": "NMEA0183 in",
        "type": "boolean",
        "default": "true",
        "description": "receive NMEA data from remote TCP server",
        "category": "TCP client"
    },
    {
        "name": "tclToN2k",
        "label": "to NMEA2000",
        "type": "boolean",
        "default": "true",
        "description": "convert NMEA0183 from remote TCP server to NMEA2000",
        "category": "TCP client"
    },
    {
        "name": "tclReadFilter",
        "label": "NMEA read Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when reading from remote TCP server\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "category": "TCP client"
    },
    {
        "name": "tclWriteFilter",
        "label": "NMEA write Filter",
        "type": "filter",
        "default": "",
        "description": "filter for NMEA0183 data when writing to remote TCP server\nselect aison|aisoff, set a whitelist or a blacklist with NMEA sentences like RMC,RMB",
        "category": "TCP client"
    },
    {
        "name": "tclSeasmart",
        "label": "Seasmart out",
        "type": "boolean",
        "default": "false",
        "description": "send NMEA2000 as seasmart to remote TCP server",
        "category": "TCP client"
    },
    {
        "name": "wifiClient",
        "label": "wifi client",
        "type": "boolean",
        "default": "false",
        "description": "connect to an external WIFI network",
        "category": "wifi client"
    },
    {
        "name": "wifiSSID",
        "label": "wifi client SSID",
        "type": "string",
        "default": "",
        "check": "checkSSID",
        "description": "the SSID for an external WIFI network",
        "category": "wifi client"
    },
    {
        "name": "wifiPass",
        "label": "wifi client password",
        "type": "password",
        "default": "",
        "description": "the password for an external WIFI network",
        "category": "wifi client"
    },
    {
        "name": "XDR1",
        "label": "XDR1",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr1"
    },
    {
        "name": "XDR2",
        "label": "XDR2",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr2"
    },
    {
        "name": "XDR3",
        "label": "XDR3",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr3"
    },
    {
        "name": "XDR4",
        "label": "XDR4",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr4"
    },
    {
        "name": "XDR5",
        "label": "XDR5",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr5"
    },
    {
        "name": "XDR6",
        "label": "XDR6",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr6"
    },
    {
        "name": "XDR7",
        "label": "XDR7",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr7"
    },
    {
        "name": "XDR8",
        "label": "XDR8",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr8"
    },
    {
        "name": "XDR9",
        "label": "XDR9",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr9"
    },
    {
        "name": "XDR10",
        "label": "XDR10",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr10"
    },
    {
        "name": "XDR11",
        "label": "XDR11",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr11"
    },
    {
        "name": "XDR12",
        "label": "XDR12",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr12"
    },
    {
        "name": "XDR13",
        "label": "XDR13",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr13"
    },
    {
        "name": "XDR14",
        "label": "XDR14",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr14"
    },
    {
        "name": "XDR15",
        "label": "XDR15",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr15"
    },
    {
        "name": "XDR16",
        "label": "XDR16",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr16"
    },
    {
        "name": "XDR17",
        "label": "XDR17",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr17"
    },
    {
        "name": "XDR18",
        "label": "XDR18",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr18"
    },
    {
        "name": "XDR19",
        "label": "XDR19",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr19"
    },
    {
        "name": "XDR20",
        "label": "XDR20",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr20"
    },
    {
        "name": "XDR21",
        "label": "XDR21",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr21"
    },
    {
        "name": "XDR22",
        "label": "XDR22",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr22"
    },
    {
        "name": "XDR23",
        "label": "XDR23",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr23"
    },
    {
        "name": "XDR24",
        "label": "XDR24",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr24"
    },
    {
        "name": "XDR25",
        "label": "XDR25",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr25"
    },
    {
        "name": "XDR26",
        "label": "XDR26",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr26"
    },
    {
        "name": "XDR27",
        "label": "XDR27",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr27"
    },
    {
        "name": "XDR28",
        "label": "XDR28",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr28"
    },
    {
        "name": "XDR29",
        "label": "XDR29",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr29"
    },
    {
        "name": "XDR30",
        "label": "XDR30",
        "type": "xdr",
        "default": "",
        "check": "checkXDR",
        "category": "xdr30"
    }
]