Version mismatch is harder to miss. (#1088)

This commit is contained in:
Chris Gerth
2023-12-30 14:34:52 -06:00
committed by GitHub
parent ef039da728
commit e3eff8731f
3 changed files with 85 additions and 14 deletions

View File

@@ -26,6 +26,8 @@
#include <hal/FRCUsageReporting.h>
#include <string_view>
#include <frc/Errors.h>
#include <frc/Timer.h>
#include <opencv2/core.hpp>
@@ -34,6 +36,29 @@
#include "PhotonVersion.h"
#include "photon/dataflow/structures/Packet.h"
namespace {
static constexpr const std::string_view bfw =
"\n\n\n\n"
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
">>> ____ _________ ____ ________ ___________ __ \n"
">>> / __ \\/ ____/ | / __ \\ /_ __/ / / / _/ ___/ / / \n"
">>> / /_/ / __/ / /| | / / / / / / / /_/ // / \\__ \\ / / \n"
">>> / _, _/ /___/ ___ |/ /_/ / / / / __ // / ___/ / /_/ \n"
">>>/_/ |_/_____/_/ |_/_____/ /_/ /_/ /_/___//____/ (_) \n"
">>> \n"
">>> You are running an incompatible version \n"
">>> of PhotonVision on your coprocessor! \n"
">>> \n"
">>> This is neither tested nor supported. \n"
">>> You MUST update either PhotonVision, PhotonLib, or both. \n"
">>> \n"
">>> Your code will now crash. We hope your day gets better. \n"
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
"\n\n";
} // namespace
namespace photon {
constexpr const units::second_t VERSION_CHECK_INTERVAL = 5_s;
@@ -200,9 +225,12 @@ void PhotonCamera::VerifyVersion() {
cameraNameOutString);
}
} else if (!VersionMatches(versionString)) {
FRC_ReportError(frc::warn::Warning,
"Photon version {} does not match coprocessor version {}!",
PhotonVersion::versionString, versionString);
FRC_ReportError(frc::warn::Warning, bfw);
std::string error_str = fmt::format(
"Photonlib version {} does not match coprocessor version {}!",
PhotonVersion::versionString, versionString);
FRC_ReportError(frc::err::Error, "{}", error_str);
throw std::runtime_error(error_str);
}
}