{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/vhwdebugger-binding-yaml/latest.json",
  "title": "Vector CANoe Hardware Debugger Binding Configuration Schema",
  "x-lintel": {
    "source": "https://www.schemastore.org/vhwdebugger-binding-schema.json",
    "sourceSha256": "1808af50661cac3aedf42d25c4f18d7052db846bc6e653e5263f80b800fec4e5",
    "fileMatch": [
      "vhwdebugger-binding.yaml",
      "*.vhwdebugger-binding.yaml",
      "vhwdebugger-binding.yml",
      "*.vhwdebugger-binding.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "$ref": "#/$defs/7d459/full",
  "$defs": {
    "b06cc": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "object",
        "title": "Debugger Configuration Version 1.1",
        "description": "Debugger configuration for the Vector CANoe hardware debugger binding (version 1.1)",
        "additionalProperties": false,
        "required": [
          "version",
          "debuggers"
        ],
        "properties": {
          "version": {
            "title": "Version",
            "description": "The version of the configuration. Controls what features are available",
            "type": "string",
            "const": "1.1"
          },
          "default-debugger": {
            "title": "Default Debugger",
            "description": "The default debugger if a distributed object is not assigned explicitly. Must reference an element from the `debuggers` list",
            "type": "string",
            "pattern": "^[-_a-zA-Z0-9]+$"
          },
          "debuggers": {
            "title": "Debugger Configurations",
            "description": "List of all configured debuggers. The elements' key determines the name of the debugger",
            "type": "object",
            "additionalProperties": false,
            "minProperties": 1,
            "patternProperties": {
              "^[-_a-zA-Z0-9]+$": {
                "oneOf": [
                  {
                    "title": "Debugger Configuration (Lauterbach)",
                    "description": "Debugger Configuration for TRACE32 (Lauterbach)",
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "type",
                      "node",
                      "port"
                    ],
                    "properties": {
                      "type": {
                        "title": "Debugger Connection Type",
                        "type": "string",
                        "const": "lauterbach"
                      },
                      "reset": {
                        "title": "Target Reset",
                        "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "run": {
                        "title": "Start Execution",
                        "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "auto-connect": {
                        "title": "Auto Connect",
                        "description": "Automatically connects to the TRACE32 instance on measurement start.",
                        "type": "boolean",
                        "default": true,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "node": {
                        "title": "Node Address",
                        "description": "The IP address of the node where the TRACE32 instance is running",
                        "type": "string",
                        "examples": [
                          "localhost",
                          "192.168.0.1"
                        ]
                      },
                      "port": {
                        "title": "Node Port",
                        "description": "The port on which the TRACE32 instance is listening.",
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535,
                        "examples": [
                          5315,
                          20000
                        ]
                      },
                      "lauterbach": {
                        "title": "Lauterbach TRACE32 Settings",
                        "description": "Debugger specific settings for TRACE32 (Lauterbach)",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "pack-len": {
                            "title": "TRACE32 Package Length",
                            "description": "The UDP package length. Must match the package length configured for the TRACE32 instance",
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 1024,
                            "default": 1024
                          }
                        }
                      }
                    },
                    "examples": [
                      {
                        "type": "lauterbach",
                        "node": "localhost",
                        "port": 20000
                      },
                      {
                        "type": "lauterbach",
                        "node": "localhost",
                        "port": 20000,
                        "run": true,
                        "reset": true,
                        "lauterbach": {
                          "pack-len": 512
                        }
                      }
                    ]
                  },
                  {
                    "title": "Debugger Configuration (iSYSTEM / TASKING)",
                    "description": "Debugger Configuration for WinIDEA (iSYSTEM / TASKING)",
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "type",
                      "node",
                      "port"
                    ],
                    "properties": {
                      "type": {
                        "title": "Debugger Connection Type",
                        "type": "string",
                        "const": "isystem"
                      },
                      "reset": {
                        "title": "Target Reset",
                        "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "run": {
                        "title": "Start Execution",
                        "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "auto-connect": {
                        "title": "Auto Connect",
                        "description": "Automatically connects to the winIDEA instance on measurement start.",
                        "type": "boolean",
                        "default": true,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "node": {
                        "title": "Node Address",
                        "description": "The IP address of the node where the winIDEA instance is running",
                        "type": "string",
                        "examples": [
                          "localhost",
                          "192.168.0.1"
                        ]
                      },
                      "port": {
                        "title": "Node Port",
                        "description": "The port on which the winIDEA instance is listening.",
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535,
                        "examples": [
                          5315,
                          20000
                        ]
                      },
                      "isystem": {
                        "title": "iSYSTEM / TASKING winIDEA Settings",
                        "description": "Debugger specific settings for winIDEA (iSYSTEM / TASKING)",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "disable-winidea-polling": {
                            "title": "Disable winIDEA GUI Polling",
                            "description": "Disables the polling of the winIDEA GUI. When set to `true`, it can reduce jitter when communicating with the SIL Adapter on the target. Makes interactive work with the GUI not possible",
                            "type": "boolean",
                            "default": false
                          }
                        }
                      }
                    },
                    "examples": [
                      {
                        "type": "isystem",
                        "node": "localhost",
                        "port": 5315
                      },
                      {
                        "type": "isystem",
                        "node": "localhost",
                        "port": 5315,
                        "run": true,
                        "reset": true,
                        "isystem": {
                          "disable-winidea-polling": true
                        }
                      }
                    ]
                  },
                  {
                    "title": "Debugger Configuration (GDB)",
                    "description": "Debugger Configuration for GDB",
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "type",
                      "node",
                      "port",
                      "run",
                      "gdb"
                    ],
                    "properties": {
                      "type": {
                        "title": "Debugger Connection Type",
                        "type": "string",
                        "const": "gdb"
                      },
                      "reset": {
                        "title": "Target Reset",
                        "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "run": {
                        "title": "Start Execution",
                        "description": "Connecting to the target on measurement start will start execution of the program. Must always be true for GDB",
                        "type": "boolean",
                        "const": true
                      },
                      "auto-connect": {
                        "title": "Auto Connect",
                        "description": "Automatically connects to the GDB server on measurement start.",
                        "type": "boolean",
                        "default": true,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "node": {
                        "title": "Node Address",
                        "description": "The IP address of the node where the GDB server is running",
                        "type": "string",
                        "examples": [
                          "localhost",
                          "192.168.0.1"
                        ]
                      },
                      "port": {
                        "title": "Node Port",
                        "description": "The port on which the GDB server is listening.",
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535,
                        "examples": [
                          5315,
                          20000
                        ]
                      },
                      "gdb": {
                        "title": "GDB Settings",
                        "description": "Debugger specific settings for GDB",
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "path-to-gdb-client",
                          "path-to-symbol-file"
                        ],
                        "properties": {
                          "path-to-gdb-client": {
                            "title": "GDB Client",
                            "description": "Absolute or relative path to the GDB client, which shall be used by CANoe. Path is relative to this configuration file. This is usually supplied with the compiler toolset",
                            "type": "string",
                            "minLength": 1,
                            "examples": [
                              "gdb.exe",
                              "C:/Program Files (x86)/Arm GNU Toolchain arm-none-eabi/bin/arm-none-eabi-gdb.exe"
                            ]
                          },
                          "path-to-symbol-file": {
                            "title": "GDB Symbol File",
                            "description": "Absolute or relative path to the symbol file, which shall be used by GDB. Path is relative to this configuration file. Symbol file must match to the binary running on the target",
                            "type": "string",
                            "minLength": 1,
                            "examples": [
                              "MyBinary.elf",
                              "MyBinarySymbols.elf"
                            ]
                          }
                        }
                      }
                    },
                    "examples": [
                      {
                        "type": "gdb",
                        "node": "localhost",
                        "port": 1234,
                        "run": true,
                        "gdb": {
                          "path-to-gdb-client": "path/to/gdb.exe",
                          "path-to-symbol-file": "path/to/Symbols.elf"
                        }
                      },
                      {
                        "type": "gdb",
                        "node": "localhost",
                        "port": 1234,
                        "run": true,
                        "reset": true,
                        "gdb": {
                          "path-to-gdb-client": "path/to/gdb.exe",
                          "path-to-symbol-file": "path/to/Symbols.elf"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        }
      }
    },
    "a8e9a": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "object",
        "title": "Debugger Configuration Version 1.0",
        "description": "Debugger configuration for the Vector CANoe hardware debugger binding (version 1.0)",
        "additionalProperties": false,
        "required": [
          "version",
          "debuggers"
        ],
        "properties": {
          "version": {
            "title": "Version",
            "description": "The version of the configuration. Controls what features are available",
            "type": "string",
            "const": "1.0"
          },
          "default-debugger": {
            "title": "Default Debugger",
            "description": "The default debugger if a distributed object is not assigned explicitly. Must reference an element from the `debuggers` list",
            "type": "string",
            "pattern": "^[-_a-zA-Z0-9]+$",
            "examples": [
              "my-debugger",
              "LauterbachDebugger",
              "iSYSTEMDebugger"
            ]
          },
          "debuggers": {
            "title": "Debugger Configurations",
            "description": "List of all configured debuggers. The elements' key determines the name of the debugger",
            "type": "object",
            "additionalProperties": false,
            "minProperties": 1,
            "patternProperties": {
              "^[-_a-zA-Z0-9]+$": {
                "oneOf": [
                  {
                    "title": "Debugger Configuration (Lauterbach)",
                    "description": "Debugger Configuration for TRACE32 (Lauterbach)",
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "type",
                      "node",
                      "port"
                    ],
                    "properties": {
                      "type": {
                        "title": "Debugger Connection Type",
                        "type": "string",
                        "const": "lauterbach"
                      },
                      "reset": {
                        "title": "Target Reset",
                        "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "run": {
                        "title": "Start Execution",
                        "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "node": {
                        "title": "Node Address",
                        "description": "The IP address of the node where the TRACE32 instance is running",
                        "type": "string",
                        "examples": [
                          "localhost",
                          "192.168.0.1"
                        ]
                      },
                      "port": {
                        "title": "Node Port",
                        "description": "The port on which the TRACE32 instance is listening.",
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535,
                        "examples": [
                          5315,
                          20000
                        ]
                      },
                      "lauterbach": {
                        "title": "Lauterbach TRACE32 Settings",
                        "description": "Debugger specific settings for TRACE32 (Lauterbach)",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "pack-len": {
                            "title": "TRACE32 Package Length",
                            "description": "The UDP package length. Must match the package length configured for the TRACE32 instance",
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 1024,
                            "default": 1024
                          }
                        }
                      }
                    },
                    "examples": [
                      {
                        "type": "lauterbach",
                        "node": "localhost",
                        "port": 20000
                      },
                      {
                        "type": "lauterbach",
                        "node": "localhost",
                        "port": 20000,
                        "run": true,
                        "reset": true,
                        "lauterbach": {
                          "pack-len": 512
                        }
                      }
                    ]
                  },
                  {
                    "title": "Debugger Configuration (iSYSTEM)",
                    "description": "Debugger Configuration for WinIDEA (iSYSTEM / TASKING)",
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "type",
                      "node",
                      "port"
                    ],
                    "properties": {
                      "type": {
                        "title": "Debugger Connection Type",
                        "type": "string",
                        "const": "isystem"
                      },
                      "reset": {
                        "title": "Target Reset",
                        "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "run": {
                        "title": "Start Execution",
                        "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target",
                        "type": "boolean",
                        "default": false,
                        "examples": [
                          true,
                          false
                        ]
                      },
                      "node": {
                        "title": "Node Address",
                        "description": "The IP address of the node where the winIDEA instance is running",
                        "type": "string",
                        "examples": [
                          "localhost",
                          "192.168.0.1"
                        ]
                      },
                      "port": {
                        "title": "Node Port",
                        "description": "The port on which the winIDEA instance is listening.",
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535,
                        "examples": [
                          5315,
                          20000
                        ]
                      },
                      "isystem": {
                        "title": "iSYSTEM / TASKING winIDEA Settings",
                        "description": "Debugger specific settings for winIDEA (iSYSTEM / TASKING)",
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "disable-winidea-polling": {
                            "title": "Disable winIDEA GUI Polling",
                            "description": "Disables the polling of the winIDEA GUI. When set to `true`, it can reduce jitter when communicating with the SIL Adapter on the target. Makes interactive work with the GUI not possible",
                            "type": "boolean",
                            "default": false
                          }
                        }
                      }
                    },
                    "examples": [
                      {
                        "type": "isystem",
                        "node": "localhost",
                        "port": 5315
                      },
                      {
                        "type": "isystem",
                        "node": "localhost",
                        "port": 5315,
                        "run": true,
                        "reset": true,
                        "isystem": {
                          "disable-winidea-polling": true
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        }
      }
    },
    "7d459": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Vector CANoe Hardware Debugger Binding Configuration Schema",
        "description": "Schema for the debugger configuration of the Vector CANoe hardware debugger binding",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/definitions/b06cc/full"
          },
          {
            "$ref": "#/definitions/a8e9a/full"
          }
        ]
      }
    }
  }
}
