diff --git a/simulation/halsim_gui/src/main/native/cpp/main.cpp b/simulation/halsim_gui/src/main/native/cpp/main.cpp index 1f89929354..d0db8d4b16 100644 --- a/simulation/halsim_gui/src/main/native/cpp/main.cpp +++ b/simulation/halsim_gui/src/main/native/cpp/main.cpp @@ -23,6 +23,7 @@ #include "DriverStationGui.h" #include "EncoderSimGui.h" #include "HALSimGui.h" +#include "HALSimGuiExt.h" #include "NetworkTablesSimGui.h" #include "PCMSimGui.h" #include "PWMSimGui.h" @@ -50,6 +51,17 @@ __declspec(dllexport) glass::SetStorageName("simgui"); + HAL_RegisterExtension(HALSIMGUI_EXT_ADDGUIINIT, + reinterpret_cast((AddGuiInitFn)&AddGuiInit)); + HAL_RegisterExtension( + HALSIMGUI_EXT_ADDGUILATEEXECUTE, + reinterpret_cast((AddGuiLateExecuteFn)&AddGuiLateExecute)); + HAL_RegisterExtension( + HALSIMGUI_EXT_ADDGUIEARLYEXECUTE, + reinterpret_cast((AddGuiEarlyExecuteFn)&AddGuiEarlyExecute)); + HAL_RegisterExtension(HALSIMGUI_EXT_GUIEXIT, + reinterpret_cast((GuiExitFn)&GuiExit)); + HALSimGui::GlobalInit(); DriverStationGui::GlobalInit(); gPlotProvider = std::make_unique( diff --git a/simulation/halsim_gui/src/main/native/include/HALSimGuiExt.h b/simulation/halsim_gui/src/main/native/include/HALSimGuiExt.h new file mode 100644 index 0000000000..e60976e346 --- /dev/null +++ b/simulation/halsim_gui/src/main/native/include/HALSimGuiExt.h @@ -0,0 +1,26 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +#pragma once + +#include + +namespace halsimgui { + +// These functions can be used to hook into the GUI, and can be accessed +// via HAL_RegisterExtensionListener + +#define HALSIMGUI_EXT_ADDGUIINIT "halsimgui::AddGuiInit" +using AddGuiInitFn = void (*)(std::function initialize); + +#define HALSIMGUI_EXT_ADDGUILATEEXECUTE "halsimgui::AddGuiLateExecute" +using AddGuiLateExecuteFn = void (*)(std::function execute); + +#define HALSIMGUI_EXT_ADDGUIEARLYEXECUTE "halsimgui::AddGuiEarlyExecute" +using AddGuiEarlyExecuteFn = void (*)(std::function execute); + +#define HALSIMGUI_EXT_GUIEXIT "halsimgui::GuiExit" +using GuiExitFn = void (*)(); + +} // namespace halsimgui