{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug SITL (shell)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [
                "${workspaceFolder}/ROMFS/px4fmu_common",
                "-s",
                "etc/init.d-posix/rcS",
                "-t",
                "${workspaceFolder}/test_data"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/build/px4_sitl_default/tmp",
            "environment": [
                {
                    "name": "PX4_SIM_MODEL",
                    "value": "shell"
                }
            ],
            "linux": {
                "MIMode": "gdb",
                "externalConsole": false,
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description": "PX4 ignore wq signals",
                        "text": "handle SIGCONT nostop noprint nopass",
                        "ignoreFailures": true
                    }
                ]
            },
            "osx": {
                "MIMode": "lldb",
                "externalConsole": true,
                "setupCommands": [
                    {
                        "text": "pro hand -p true -s false -n false SIGCONT",
                    }
                ]
            }
        },
        {
            "name": "Debug SITL (gazebo iris)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [
                "${workspaceFolder}/ROMFS/px4fmu_common",
                "-s",
                "etc/init.d-posix/rcS",
                "-t",
                "${workspaceFolder}/test_data"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/build/px4_sitl_default/tmp",
            "environment": [
                {
                    "name": "PX4_SIM_MODEL",
                    "value": "iris"
                }
            ],
            "externalConsole": false,
            "preLaunchTask": "gazebo iris",
            "postDebugTask": "gazebo kill",
            "linux": {
                "MIMode": "gdb",
                "externalConsole": false,
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description": "PX4 ignore wq signals",
                        "text": "handle SIGCONT nostop noprint nopass",
                        "ignoreFailures": true
                    }
                ]
            },
            "osx": {
                "MIMode": "lldb",
                "externalConsole": true,
                "setupCommands": [
                    {
                        "text": "pro hand -p true -s false -n false SIGCONT",
                    }
                ]
            }
        },
        {
            "name": "Debug SITL (jmavsim iris)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [
                "${workspaceFolder}/ROMFS/px4fmu_common",
                "-s",
                "etc/init.d-posix/rcS",
                "-t",
                "${workspaceFolder}/test_data"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/build/px4_sitl_default/tmp",
            "environment": [
                {
                    "name": "PX4_SIM_MODEL",
                    "value": "iris"
                }
            ],
            "preLaunchTask": "jmavsim",
            "postDebugTask": "jmavsim kill",
            "linux": {
                "MIMode": "gdb",
                "externalConsole": false,
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description": "PX4 ignore wq signals",
                        "text": "handle SIGCONT nostop noprint nopass",
                        "ignoreFailures": true
                    }
                ]
            },
            "osx": {
                "MIMode": "lldb",
                "externalConsole": true,
                "setupCommands": [
                    {
                        "text": "pro hand -p true -s false -n false SIGCONT",
                    }
                ]
            }
        },
        {
            "name": "Debug px4_fmu-v2/v3/v4 (jlink)",
            "device": "STM32F427VI",
            "svdFile": "${workspaceRoot}/../cmsis-svd/data/STMicro/STM32F427.svd",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "interface": "swd",
            "cwd": "${workspaceRoot}",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceRoot}/platforms/nuttx/Debug/PX4",
                "source ${workspaceRoot}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceRoot}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty",
            ]
        },
        {
            "name": "Debug px4_fmu-v2/v3/v4 (blackmagic)",
            "device": "STM32F427VI",
            "svdFile": "${workspaceRoot}/../cmsis-svd/data/STMicro/STM32F427.svd",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "bmp",
            "BMPGDBSerialPort": "/dev/ttyACM0",
            "interface": "swd",
            "cwd": "${workspaceRoot}",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceRoot}/platforms/nuttx/Debug/PX4",
                "source ${workspaceRoot}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceRoot}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty",
            ]
        },
        {
            "name": "Debug px4_fmu-v4pro (jlink)",
            "device": "STM32F469VI",
            "svdFile": "${workspaceRoot}/../cmsis-svd/data/STMicro/STM32F469.svd",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "interface": "swd",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceRoot}/platforms/nuttx/Debug/PX4",
                "source ${workspaceRoot}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceRoot}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty",
            ]
        },
        {
            "name": "Debug px4_fmu-v5/v5x (jlink)",
            "device": "STM32F765VI",
            "svdFile": "${workspaceRoot}/../cmsis-svd/data/STMicro/STM32F7x5.svd",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "interface": "swd",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceRoot}/platforms/nuttx/Debug/PX4",
                "source ${workspaceRoot}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceRoot}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty",
            ]
        },
        {
            "name": "Debug av_x-v1/mro_ctrl-zero-f7 (jlink)",
            "device": "STM32F777NI",
            "svdFile": "${workspaceRoot}/../cmsis-svd/data/STMicro/STM32F7x7.svd",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "interface": "swd",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceRoot}/platforms/nuttx/Debug/PX4",
                "source ${workspaceRoot}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceRoot}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty",
            ]
        },
        {
            "name": "Debug nxp_fmuk66-v3 (jlink)",
            "device": "MK66FN2M0xxx18",
            //"svdFile": "${workspaceRoot}/../cmsis-svd/data/STMicro/XXXX.svd",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "interface": "swd",
            "cwd": "${workspaceRoot}",
            "internalConsoleOptions": "openOnSessionStart",
            "preLaunchCommands": [
                "source ${workspaceRoot}/platforms/nuttx/Debug/PX4",
                "source ${workspaceRoot}/platforms/nuttx/Debug/NuttX",
                "source ${workspaceRoot}/platforms/nuttx/Debug/ARMv7M",
                "set mem inaccessible-by-default off",
                "set print pretty"
            ]
        }
    ]
}
