mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
SCRIPT: wpiformat
This commit is contained in:
committed by
Peter Johnson
parent
ae6bdc9d25
commit
2109161534
@@ -200,7 +200,8 @@ void SetSourceEnumPropertyChoices(CS_Source source, CS_Property property,
|
||||
extern "C" {
|
||||
void CS_NotifySourceError(CS_Source source, const struct WPI_String* msg,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::NotifySourceError(source, wpi::util::to_string_view(msg), status);
|
||||
return wpi::cs::NotifySourceError(source, wpi::util::to_string_view(msg),
|
||||
status);
|
||||
}
|
||||
|
||||
void CS_SetSourceConnected(CS_Source source, CS_Bool connected,
|
||||
@@ -211,8 +212,8 @@ void CS_SetSourceConnected(CS_Source source, CS_Bool connected,
|
||||
void CS_SetSourceDescription(CS_Source source,
|
||||
const struct WPI_String* description,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::SetSourceDescription(source, wpi::util::to_string_view(description),
|
||||
status);
|
||||
return wpi::cs::SetSourceDescription(
|
||||
source, wpi::util::to_string_view(description), status);
|
||||
}
|
||||
|
||||
CS_Property CS_CreateSourceProperty(CS_Source source,
|
||||
@@ -220,9 +221,9 @@ CS_Property CS_CreateSourceProperty(CS_Source source,
|
||||
enum CS_PropertyKind kind, int minimum,
|
||||
int maximum, int step, int defaultValue,
|
||||
int value, CS_Status* status) {
|
||||
return wpi::cs::CreateSourceProperty(source, wpi::util::to_string_view(name), kind,
|
||||
minimum, maximum, step, defaultValue, value,
|
||||
status);
|
||||
return wpi::cs::CreateSourceProperty(source, wpi::util::to_string_view(name),
|
||||
kind, minimum, maximum, step,
|
||||
defaultValue, value, status);
|
||||
}
|
||||
|
||||
CS_Property CS_CreateSourcePropertyCallback(
|
||||
|
||||
@@ -803,9 +803,9 @@ void Frame::ReleaseFrame() {
|
||||
}
|
||||
|
||||
namespace wpi::cs {
|
||||
std::unique_ptr<Image> CreateImageFromBGRA(wpi::cs::SourceImpl* source, size_t width,
|
||||
size_t height, size_t stride,
|
||||
const uint8_t* data) {
|
||||
std::unique_ptr<Image> CreateImageFromBGRA(wpi::cs::SourceImpl* source,
|
||||
size_t width, size_t height,
|
||||
size_t stride, const uint8_t* data) {
|
||||
cv::Mat finalImage{static_cast<int>(height), static_cast<int>(width), CV_8UC4,
|
||||
const_cast<uint8_t*>(data), stride};
|
||||
std::unique_ptr<Image> dest = source->AllocImage(
|
||||
|
||||
@@ -21,9 +21,9 @@ namespace wpi::cs {
|
||||
|
||||
class SourceImpl;
|
||||
|
||||
std::unique_ptr<Image> CreateImageFromBGRA(wpi::cs::SourceImpl* source, size_t width,
|
||||
size_t height, size_t stride,
|
||||
const uint8_t* data);
|
||||
std::unique_ptr<Image> CreateImageFromBGRA(wpi::cs::SourceImpl* source,
|
||||
size_t width, size_t height,
|
||||
size_t stride, const uint8_t* data);
|
||||
|
||||
class Frame {
|
||||
friend class SourceImpl;
|
||||
|
||||
@@ -164,7 +164,8 @@ wpi::net::HttpConnection* HttpCameraImpl::DeviceStreamConnect(
|
||||
if (m_nextLocation >= m_locations.size()) {
|
||||
m_nextLocation = 0;
|
||||
}
|
||||
req = wpi::net::HttpRequest{m_locations[m_nextLocation++], m_streamSettings};
|
||||
req =
|
||||
wpi::net::HttpRequest{m_locations[m_nextLocation++], m_streamSettings};
|
||||
m_streamSettingsUpdated = false;
|
||||
}
|
||||
|
||||
@@ -176,7 +177,8 @@ wpi::net::HttpConnection* HttpCameraImpl::DeviceStreamConnect(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto connPtr = std::make_unique<wpi::net::HttpConnection>(std::move(stream), 1);
|
||||
auto connPtr =
|
||||
std::make_unique<wpi::net::HttpConnection>(std::move(stream), 1);
|
||||
wpi::net::HttpConnection* conn = connPtr.get();
|
||||
|
||||
// update m_streamConn
|
||||
@@ -195,7 +197,8 @@ wpi::net::HttpConnection* HttpCameraImpl::DeviceStreamConnect(
|
||||
}
|
||||
|
||||
// Parse Content-Type header to get the boundary
|
||||
auto [mediaType, contentType] = wpi::util::split(conn->contentType.str(), ';');
|
||||
auto [mediaType, contentType] =
|
||||
wpi::util::split(conn->contentType.str(), ';');
|
||||
mediaType = wpi::util::trim(mediaType);
|
||||
if (mediaType != "multipart/x-mixed-replace") {
|
||||
SWARNING("\"{}\": unrecognized Content-Type \"{}\"", req.host.str(),
|
||||
@@ -213,7 +216,8 @@ wpi::net::HttpConnection* HttpCameraImpl::DeviceStreamConnect(
|
||||
contentType = wpi::util::ltrim(contentType);
|
||||
auto [key, value] = wpi::util::split(keyvalue, '=');
|
||||
if (wpi::util::trim(key) == "boundary") {
|
||||
value = wpi::util::trim(wpi::util::trim(value), '"'); // value may be quoted
|
||||
value =
|
||||
wpi::util::trim(wpi::util::trim(value), '"'); // value may be quoted
|
||||
if (wpi::util::starts_with(value, "--")) {
|
||||
value = wpi::util::substr(value, 2);
|
||||
}
|
||||
@@ -369,7 +373,8 @@ void HttpCameraImpl::DeviceSendSettings(wpi::net::HttpRequest& req) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto connPtr = std::make_unique<wpi::net::HttpConnection>(std::move(stream), 1);
|
||||
auto connPtr =
|
||||
std::make_unique<wpi::net::HttpConnection>(std::move(stream), 1);
|
||||
wpi::net::HttpConnection* conn = connPtr.get();
|
||||
|
||||
// update m_settingsConn
|
||||
@@ -653,7 +658,8 @@ CS_Source CS_CreateHttpCamera(const struct WPI_String* name,
|
||||
const struct WPI_String* url,
|
||||
CS_HttpCameraKind kind, CS_Status* status) {
|
||||
return wpi::cs::CreateHttpCamera(wpi::util::to_string_view(name),
|
||||
wpi::util::to_string_view(url), kind, status);
|
||||
wpi::util::to_string_view(url), kind,
|
||||
status);
|
||||
}
|
||||
|
||||
CS_Source CS_CreateHttpCameraMulti(const struct WPI_String* name,
|
||||
@@ -664,7 +670,8 @@ CS_Source CS_CreateHttpCameraMulti(const struct WPI_String* name,
|
||||
for (int i = 0; i < count; ++i) {
|
||||
vec.emplace_back(wpi::util::to_string_view(&urls[i]));
|
||||
}
|
||||
return wpi::cs::CreateHttpCamera(wpi::util::to_string_view(name), vec, kind, status);
|
||||
return wpi::cs::CreateHttpCamera(wpi::util::to_string_view(name), vec, kind,
|
||||
status);
|
||||
}
|
||||
|
||||
CS_HttpCameraKind CS_GetHttpCameraKind(CS_Source source, CS_Status* status) {
|
||||
|
||||
@@ -28,7 +28,8 @@ namespace wpi::cs {
|
||||
class HttpCameraImpl : public SourceImpl {
|
||||
public:
|
||||
HttpCameraImpl(std::string_view name, CS_HttpCameraKind kind,
|
||||
wpi::util::Logger& logger, Notifier& notifier, Telemetry& telemetry);
|
||||
wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry);
|
||||
~HttpCameraImpl() override;
|
||||
|
||||
void Start() override;
|
||||
@@ -146,8 +147,8 @@ class HttpCameraImpl : public SourceImpl {
|
||||
|
||||
class AxisCameraImpl : public HttpCameraImpl {
|
||||
public:
|
||||
AxisCameraImpl(std::string_view name, wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry)
|
||||
AxisCameraImpl(std::string_view name, wpi::util::Logger& logger,
|
||||
Notifier& notifier, Telemetry& telemetry)
|
||||
: HttpCameraImpl{name, CS_HTTP_AXIS, logger, notifier, telemetry} {}
|
||||
#if 0
|
||||
void SetProperty(int property, int value, CS_Status* status) override;
|
||||
|
||||
@@ -33,8 +33,8 @@ static void def_log_func(unsigned int level, const char* file,
|
||||
return;
|
||||
}
|
||||
wpi::util::print(stderr, "CS: {}: {} ({}:{})\n", levelmsg, msg,
|
||||
// NOLINTNEXTLINE(build/include_what_you_use)
|
||||
fs::path{file}.filename().string(), line);
|
||||
// NOLINTNEXTLINE(build/include_what_you_use)
|
||||
fs::path{file}.filename().string(), line);
|
||||
}
|
||||
|
||||
Instance::Instance()
|
||||
|
||||
@@ -91,12 +91,13 @@ class Instance {
|
||||
return m_sources.GetAll(vec);
|
||||
}
|
||||
|
||||
std::span<CS_Sink> EnumerateSinkHandles(wpi::util::SmallVectorImpl<CS_Sink>& vec) {
|
||||
std::span<CS_Sink> EnumerateSinkHandles(
|
||||
wpi::util::SmallVectorImpl<CS_Sink>& vec) {
|
||||
return m_sinks.GetAll(vec);
|
||||
}
|
||||
|
||||
std::span<CS_Sink> EnumerateSourceSinks(CS_Source source,
|
||||
wpi::util::SmallVectorImpl<CS_Sink>& vec) {
|
||||
std::span<CS_Sink> EnumerateSourceSinks(
|
||||
CS_Source source, wpi::util::SmallVectorImpl<CS_Sink>& vec) {
|
||||
vec.clear();
|
||||
m_sinks.ForEach([&](CS_Sink sinkHandle, const SinkData& data) {
|
||||
if (source == data.sourceHandle.load()) {
|
||||
|
||||
@@ -146,7 +146,8 @@ static inline void ReadInto(wpi::util::raw_istream& is, std::string& buf,
|
||||
is.read(&(*buf.begin()) + oldSize, len);
|
||||
}
|
||||
|
||||
bool ReadJpeg(wpi::util::raw_istream& is, std::string& buf, int* width, int* height) {
|
||||
bool ReadJpeg(wpi::util::raw_istream& is, std::string& buf, int* width,
|
||||
int* height) {
|
||||
// in case we don't get a SOF
|
||||
*width = 0;
|
||||
*height = 0;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
namespace wpi::util {
|
||||
class raw_istream;
|
||||
} // namespace wpi
|
||||
} // namespace wpi::util
|
||||
|
||||
namespace wpi::cs {
|
||||
|
||||
@@ -22,7 +22,8 @@ bool JpegNeedsDHT(const char* data, size_t* size, size_t* locSOF);
|
||||
|
||||
std::string_view JpegGetDHT();
|
||||
|
||||
bool ReadJpeg(wpi::util::raw_istream& is, std::string& buf, int* width, int* height);
|
||||
bool ReadJpeg(wpi::util::raw_istream& is, std::string& buf, int* width,
|
||||
int* height);
|
||||
|
||||
} // namespace wpi::cs
|
||||
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
|
||||
#include "Log.hpp"
|
||||
|
||||
void wpi::cs::NamedLogV(wpi::util::Logger& logger, unsigned int level, const char* file,
|
||||
unsigned int line, std::string_view name,
|
||||
fmt::string_view format, fmt::format_args args) {
|
||||
void wpi::cs::NamedLogV(wpi::util::Logger& logger, unsigned int level,
|
||||
const char* file, unsigned int line,
|
||||
std::string_view name, fmt::string_view format,
|
||||
fmt::format_args args) {
|
||||
fmt::memory_buffer out;
|
||||
fmt::format_to(fmt::appender{out}, "{}: ", name);
|
||||
fmt::vformat_to(fmt::appender{out}, format, args);
|
||||
|
||||
@@ -16,9 +16,9 @@ void NamedLogV(wpi::util::Logger& logger, unsigned int level, const char* file,
|
||||
fmt::string_view format, fmt::format_args args);
|
||||
|
||||
template <typename S, typename... Args>
|
||||
inline void NamedLog(wpi::util::Logger& logger, unsigned int level, const char* file,
|
||||
unsigned int line, std::string_view name, const S& format,
|
||||
Args&&... args) {
|
||||
inline void NamedLog(wpi::util::Logger& logger, unsigned int level,
|
||||
const char* file, unsigned int line, std::string_view name,
|
||||
const S& format, Args&&... args) {
|
||||
if (logger.HasLogger() && level >= logger.min_level()) {
|
||||
NamedLogV(logger, level, file, line, name, format,
|
||||
fmt::make_format_args(args...));
|
||||
|
||||
@@ -362,9 +362,9 @@ void MjpegServerImpl::ConnThread::SendHTML(wpi::util::raw_ostream& os,
|
||||
switch (kind) {
|
||||
case CS_PROP_BOOLEAN:
|
||||
wpi::util::print(os,
|
||||
"<input id=\"{0}\" type=\"checkbox\" "
|
||||
"onclick=\"update('{0}', this.checked ? 1 : 0)\" ",
|
||||
name);
|
||||
"<input id=\"{0}\" type=\"checkbox\" "
|
||||
"onclick=\"update('{0}', this.checked ? 1 : 0)\" ",
|
||||
name);
|
||||
if (source.GetProperty(prop, &status) != 0) {
|
||||
os << "checked />\n";
|
||||
} else {
|
||||
@@ -377,12 +377,12 @@ void MjpegServerImpl::ConnThread::SendHTML(wpi::util::raw_ostream& os,
|
||||
auto max = source.GetPropertyMax(prop, &status);
|
||||
auto step = source.GetPropertyStep(prop, &status);
|
||||
wpi::util::print(os,
|
||||
"<input type=\"range\" min=\"{1}\" max=\"{2}\" "
|
||||
"value=\"{3}\" id=\"{0}\" step=\"{4}\" "
|
||||
"oninput=\"updateInt('#{0}op', '{0}', value)\" />\n",
|
||||
name, min, max, valI, step);
|
||||
wpi::util::print(os, "<output for=\"{0}\" id=\"{0}op\">{1}</output>\n", name,
|
||||
valI);
|
||||
"<input type=\"range\" min=\"{1}\" max=\"{2}\" "
|
||||
"value=\"{3}\" id=\"{0}\" step=\"{4}\" "
|
||||
"oninput=\"updateInt('#{0}op', '{0}', value)\" />\n",
|
||||
name, min, max, valI, step);
|
||||
wpi::util::print(os, "<output for=\"{0}\" id=\"{0}op\">{1}</output>\n",
|
||||
name, valI);
|
||||
break;
|
||||
}
|
||||
case CS_PROP_ENUM: {
|
||||
@@ -400,27 +400,28 @@ void MjpegServerImpl::ConnThread::SendHTML(wpi::util::raw_ostream& os,
|
||||
ch_name.push_back(wpi::util::isPrint(ch) ? ch : ' ');
|
||||
}
|
||||
wpi::util::print(os,
|
||||
"<input id=\"{0}{1}\" type=\"radio\" name=\"{0}\" "
|
||||
"value=\"{2}\" onclick=\"update('{0}', {1})\"",
|
||||
name, j, ch_name.str());
|
||||
"<input id=\"{0}{1}\" type=\"radio\" name=\"{0}\" "
|
||||
"value=\"{2}\" onclick=\"update('{0}', {1})\"",
|
||||
name, j, ch_name.str());
|
||||
if (j == valE) {
|
||||
os << " checked";
|
||||
}
|
||||
wpi::util::print(os, " /><label for=\"{}{}\">{}</label>\n", name, j,
|
||||
ch_name.str());
|
||||
ch_name.str());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CS_PROP_STRING: {
|
||||
wpi::util::SmallString<128> strval_buf;
|
||||
wpi::util::print(os,
|
||||
"<input type=\"text\" id=\"{0}box\" name=\"{0}\" "
|
||||
"value=\"{1}\" />\n",
|
||||
name, source.GetStringProperty(prop, strval_buf, &status));
|
||||
"<input type=\"text\" id=\"{0}box\" name=\"{0}\" "
|
||||
"value=\"{1}\" />\n",
|
||||
name,
|
||||
source.GetStringProperty(prop, strval_buf, &status));
|
||||
wpi::util::print(os,
|
||||
"<input type=\"button\" value =\"Submit\" "
|
||||
"onclick=\"update('{0}', {0}box.value)\" />\n",
|
||||
name);
|
||||
"<input type=\"button\" value =\"Submit\" "
|
||||
"onclick=\"update('{0}', {0}box.value)\" />\n",
|
||||
name);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -473,8 +474,8 @@ void MjpegServerImpl::ConnThread::SendHTML(wpi::util::raw_ostream& os,
|
||||
os << "unknown";
|
||||
break;
|
||||
}
|
||||
wpi::util::print(os, "</td><td>{}</td><td>{}</td><td>{}</td></tr>", mode.width,
|
||||
mode.height, mode.fps);
|
||||
wpi::util::print(os, "</td><td>{}</td><td>{}</td><td>{}</td></tr>",
|
||||
mode.width, mode.height, mode.fps);
|
||||
}
|
||||
os << "</table>\n";
|
||||
os << endRootPage << "\r\n";
|
||||
@@ -505,12 +506,14 @@ void MjpegServerImpl::ConnThread::SendJSON(wpi::util::raw_ostream& os,
|
||||
wpi::util::print(os, "\n\"name\": \"{}\"", name);
|
||||
wpi::util::print(os, ",\n\"id\": \"{}\"", prop);
|
||||
wpi::util::print(os, ",\n\"type\": \"{}\"", static_cast<int>(kind));
|
||||
wpi::util::print(os, ",\n\"min\": \"{}\"", source.GetPropertyMin(prop, &status));
|
||||
wpi::util::print(os, ",\n\"max\": \"{}\"", source.GetPropertyMax(prop, &status));
|
||||
wpi::util::print(os, ",\n\"min\": \"{}\"",
|
||||
source.GetPropertyMin(prop, &status));
|
||||
wpi::util::print(os, ",\n\"max\": \"{}\"",
|
||||
source.GetPropertyMax(prop, &status));
|
||||
wpi::util::print(os, ",\n\"step\": \"{}\"",
|
||||
source.GetPropertyStep(prop, &status));
|
||||
source.GetPropertyStep(prop, &status));
|
||||
wpi::util::print(os, ",\n\"default\": \"{}\"",
|
||||
source.GetPropertyDefault(prop, &status));
|
||||
source.GetPropertyDefault(prop, &status));
|
||||
os << ",\n\"value\": \"";
|
||||
switch (kind) {
|
||||
case CS_PROP_BOOLEAN:
|
||||
@@ -597,10 +600,10 @@ void MjpegServerImpl::ConnThread::SendJSON(wpi::util::raw_ostream& os,
|
||||
os.flush();
|
||||
}
|
||||
|
||||
MjpegServerImpl::MjpegServerImpl(std::string_view name, wpi::util::Logger& logger,
|
||||
Notifier& notifier, Telemetry& telemetry,
|
||||
std::string_view listenAddress, int port,
|
||||
std::unique_ptr<wpi::net::NetworkAcceptor> acceptor)
|
||||
MjpegServerImpl::MjpegServerImpl(
|
||||
std::string_view name, wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry, std::string_view listenAddress, int port,
|
||||
std::unique_ptr<wpi::net::NetworkAcceptor> acceptor)
|
||||
: SinkImpl{name, logger, notifier, telemetry},
|
||||
m_listenAddress(listenAddress),
|
||||
m_port(port),
|
||||
@@ -813,14 +816,17 @@ void MjpegServerImpl::ConnThread::ProcessRequest() {
|
||||
// compatibility, others are for Axis camera compatibility.
|
||||
if ((pos = req.find("POST /stream")) != std::string_view::npos) {
|
||||
kind = kStream;
|
||||
parameters = wpi::util::substr(wpi::util::substr(req, req.find('?', pos + 12)), 1);
|
||||
parameters =
|
||||
wpi::util::substr(wpi::util::substr(req, req.find('?', pos + 12)), 1);
|
||||
} else if ((pos = req.find("GET /?action=stream")) !=
|
||||
std::string_view::npos) {
|
||||
kind = kStream;
|
||||
parameters = wpi::util::substr(wpi::util::substr(req, req.find('&', pos + 19)), 1);
|
||||
parameters =
|
||||
wpi::util::substr(wpi::util::substr(req, req.find('&', pos + 19)), 1);
|
||||
} else if ((pos = req.find("GET /stream.mjpg")) != std::string_view::npos) {
|
||||
kind = kStream;
|
||||
parameters = wpi::util::substr(wpi::util::substr(req, req.find('?', pos + 16)), 1);
|
||||
parameters =
|
||||
wpi::util::substr(wpi::util::substr(req, req.find('?', pos + 16)), 1);
|
||||
} else if (req.find("GET /settings") != std::string_view::npos &&
|
||||
req.find(".json") != std::string_view::npos) {
|
||||
kind = kGetSettings;
|
||||
@@ -836,7 +842,8 @@ void MjpegServerImpl::ConnThread::ProcessRequest() {
|
||||
} else if ((pos = req.find("GET /?action=command")) !=
|
||||
std::string_view::npos) {
|
||||
kind = kCommand;
|
||||
parameters = wpi::util::substr(wpi::util::substr(req, req.find('&', pos + 20)), 1);
|
||||
parameters =
|
||||
wpi::util::substr(wpi::util::substr(req, req.find('&', pos + 20)), 1);
|
||||
} else if (req.find("GET / ") != std::string_view::npos || req == "GET /\n") {
|
||||
kind = kRootPage;
|
||||
} else {
|
||||
@@ -959,11 +966,12 @@ void MjpegServerImpl::ServerThreadMain() {
|
||||
|
||||
std::scoped_lock lock(m_mutex);
|
||||
// Find unoccupied worker thread, or create one if necessary
|
||||
auto it = std::find_if(m_connThreads.begin(), m_connThreads.end(),
|
||||
[](const wpi::util::SafeThreadOwner<ConnThread>& owner) {
|
||||
auto thr = owner.GetThread();
|
||||
return !thr || !thr->m_stream;
|
||||
});
|
||||
auto it =
|
||||
std::find_if(m_connThreads.begin(), m_connThreads.end(),
|
||||
[](const wpi::util::SafeThreadOwner<ConnThread>& owner) {
|
||||
auto thr = owner.GetThread();
|
||||
return !thr || !thr->m_stream;
|
||||
});
|
||||
if (it == m_connThreads.end()) {
|
||||
m_connThreads.emplace_back();
|
||||
it = std::prev(m_connThreads.end());
|
||||
@@ -1052,13 +1060,14 @@ CS_Sink CS_CreateMjpegServer(const struct WPI_String* name,
|
||||
const struct WPI_String* listenAddress, int port,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::CreateMjpegServer(wpi::util::to_string_view(name),
|
||||
wpi::util::to_string_view(listenAddress), port,
|
||||
status);
|
||||
wpi::util::to_string_view(listenAddress),
|
||||
port, status);
|
||||
}
|
||||
|
||||
void CS_GetMjpegServerListenAddress(CS_Sink sink, WPI_String* listenAddress,
|
||||
CS_Status* status) {
|
||||
wpi::cs::ConvertToC(listenAddress, wpi::cs::GetMjpegServerListenAddress(sink, status));
|
||||
wpi::cs::ConvertToC(listenAddress,
|
||||
wpi::cs::GetMjpegServerListenAddress(sink, status));
|
||||
}
|
||||
|
||||
int CS_GetMjpegServerPort(CS_Sink sink, CS_Status* status) {
|
||||
|
||||
@@ -53,7 +53,8 @@ class NotifierThread
|
||||
|
||||
} // namespace impl
|
||||
|
||||
class Notifier : public wpi::util::CallbackManager<Notifier, impl::NotifierThread> {
|
||||
class Notifier
|
||||
: public wpi::util::CallbackManager<Notifier, impl::NotifierThread> {
|
||||
friend class NotifierTest;
|
||||
|
||||
public:
|
||||
|
||||
@@ -59,7 +59,8 @@ CS_PropertyKind PropertyContainer::GetPropertyKind(int property) const {
|
||||
}
|
||||
|
||||
std::string_view PropertyContainer::GetPropertyName(
|
||||
int property, wpi::util::SmallVectorImpl<char>& buf, CS_Status* status) const {
|
||||
int property, wpi::util::SmallVectorImpl<char>& buf,
|
||||
CS_Status* status) const {
|
||||
if (!m_properties_cached && !CacheProperties(status)) {
|
||||
return {};
|
||||
}
|
||||
@@ -168,7 +169,8 @@ int PropertyContainer::GetPropertyDefault(int property,
|
||||
}
|
||||
|
||||
std::string_view PropertyContainer::GetStringProperty(
|
||||
int property, wpi::util::SmallVectorImpl<char>& buf, CS_Status* status) const {
|
||||
int property, wpi::util::SmallVectorImpl<char>& buf,
|
||||
CS_Status* status) const {
|
||||
if (!m_properties_cached && !CacheProperties(status)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace wpi::util {
|
||||
class Logger;
|
||||
template <typename T>
|
||||
class SmallVectorImpl;
|
||||
} // namespace wpi
|
||||
} // namespace wpi::util
|
||||
|
||||
namespace wpi::cs {
|
||||
|
||||
@@ -52,8 +52,9 @@ class PropertyContainer {
|
||||
std::vector<std::string> GetEnumPropertyChoices(int property,
|
||||
CS_Status* status) const;
|
||||
|
||||
bool SetPropertiesJson(const wpi::util::json& config, wpi::util::Logger& logger,
|
||||
std::string_view logName, CS_Status* status);
|
||||
bool SetPropertiesJson(const wpi::util::json& config,
|
||||
wpi::util::Logger& logger, std::string_view logName,
|
||||
CS_Status* status);
|
||||
wpi::util::json GetPropertiesJsonObject(CS_Status* status);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -233,8 +233,8 @@ uint64_t CS_GrabRawSinkFrameTimeoutWithFrameTime(CS_Sink sink,
|
||||
double timeout,
|
||||
uint64_t lastFrameTime,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::GrabSinkFrameTimeoutLastTime(sink, *image, timeout, lastFrameTime,
|
||||
status);
|
||||
return wpi::cs::GrabSinkFrameTimeoutLastTime(sink, *image, timeout,
|
||||
lastFrameTime, status);
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
@@ -22,10 +22,10 @@ class SourceImpl;
|
||||
|
||||
class RawSinkImpl : public SinkImpl {
|
||||
public:
|
||||
RawSinkImpl(std::string_view name, wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry);
|
||||
RawSinkImpl(std::string_view name, wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry,
|
||||
RawSinkImpl(std::string_view name, wpi::util::Logger& logger,
|
||||
Notifier& notifier, Telemetry& telemetry);
|
||||
RawSinkImpl(std::string_view name, wpi::util::Logger& logger,
|
||||
Notifier& notifier, Telemetry& telemetry,
|
||||
std::function<void(uint64_t time)> processFrame);
|
||||
~RawSinkImpl() override;
|
||||
|
||||
|
||||
@@ -55,7 +55,8 @@ extern "C" {
|
||||
CS_Source CS_CreateRawSource(const struct WPI_String* name, CS_Bool isCv,
|
||||
const CS_VideoMode* mode, CS_Status* status) {
|
||||
return wpi::cs::CreateRawSource(wpi::util::to_string_view(name), isCv,
|
||||
static_cast<const wpi::cs::VideoMode&>(*mode), status);
|
||||
static_cast<const wpi::cs::VideoMode&>(*mode),
|
||||
status);
|
||||
}
|
||||
|
||||
void CS_PutRawSourceFrame(CS_Source source, const struct WPI_RawFrame* image,
|
||||
|
||||
@@ -20,8 +20,9 @@ namespace wpi::cs {
|
||||
|
||||
class RawSourceImpl : public ConfigurableSourceImpl {
|
||||
public:
|
||||
RawSourceImpl(std::string_view name, wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry, const VideoMode& mode);
|
||||
RawSourceImpl(std::string_view name, wpi::util::Logger& logger,
|
||||
Notifier& notifier, Telemetry& telemetry,
|
||||
const VideoMode& mode);
|
||||
~RawSourceImpl() override;
|
||||
|
||||
// Raw-specific functions
|
||||
|
||||
@@ -113,7 +113,8 @@ std::string SinkImpl::GetError() const {
|
||||
return std::string{m_source->GetCurFrame().GetError()};
|
||||
}
|
||||
|
||||
std::string_view SinkImpl::GetError(wpi::util::SmallVectorImpl<char>& buf) const {
|
||||
std::string_view SinkImpl::GetError(
|
||||
wpi::util::SmallVectorImpl<char>& buf) const {
|
||||
std::scoped_lock lock(m_mutex);
|
||||
if (!m_source) {
|
||||
return "no source connected";
|
||||
@@ -221,7 +222,8 @@ std::string GetSinkError(CS_Sink sink, CS_Status* status) {
|
||||
return data->sink->GetError();
|
||||
}
|
||||
|
||||
std::string_view GetSinkError(CS_Sink sink, wpi::util::SmallVectorImpl<char>& buf,
|
||||
std::string_view GetSinkError(CS_Sink sink,
|
||||
wpi::util::SmallVectorImpl<char>& buf,
|
||||
CS_Status* status) {
|
||||
auto data = Instance::GetInstance().GetSink(sink);
|
||||
if (!data || (data->kind & SinkMask) == 0) {
|
||||
@@ -245,7 +247,8 @@ void SetSinkEnabled(CS_Sink sink, bool enabled, CS_Status* status) {
|
||||
extern "C" {
|
||||
void CS_SetSinkDescription(CS_Sink sink, const struct WPI_String* description,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::SetSinkDescription(sink, wpi::util::to_string_view(description), status);
|
||||
return wpi::cs::SetSinkDescription(
|
||||
sink, wpi::util::to_string_view(description), status);
|
||||
}
|
||||
|
||||
void CS_GetSinkError(CS_Sink sink, struct WPI_String* error,
|
||||
|
||||
@@ -190,7 +190,8 @@ bool SourceImpl::SetConfigJson(std::string_view config, CS_Status* status) {
|
||||
return SetConfigJson(j, status);
|
||||
}
|
||||
|
||||
bool SourceImpl::SetConfigJson(const wpi::util::json& config, CS_Status* status) {
|
||||
bool SourceImpl::SetConfigJson(const wpi::util::json& config,
|
||||
CS_Status* status) {
|
||||
VideoMode mode;
|
||||
|
||||
// pixel format
|
||||
@@ -260,8 +261,9 @@ bool SourceImpl::SetConfigJson(const wpi::util::json& config, CS_Status* status)
|
||||
} else {
|
||||
if (mode.pixelFormat != wpi::cs::VideoMode::kUnknown) {
|
||||
SINFO("SetConfigJson: setting pixelFormat {}", mode.pixelFormat);
|
||||
SetPixelFormat(static_cast<wpi::cs::VideoMode::PixelFormat>(mode.pixelFormat),
|
||||
status);
|
||||
SetPixelFormat(
|
||||
static_cast<wpi::cs::VideoMode::PixelFormat>(mode.pixelFormat),
|
||||
status);
|
||||
}
|
||||
if (mode.width != 0 && mode.height != 0) {
|
||||
SINFO("SetConfigJson: setting width {}, height {}", mode.width,
|
||||
|
||||
@@ -32,8 +32,8 @@ class SourceImpl : public PropertyContainer {
|
||||
friend class Frame;
|
||||
|
||||
public:
|
||||
SourceImpl(std::string_view name, wpi::util::Logger& logger, Notifier& notifier,
|
||||
Telemetry& telemetry);
|
||||
SourceImpl(std::string_view name, wpi::util::Logger& logger,
|
||||
Notifier& notifier, Telemetry& telemetry);
|
||||
~SourceImpl() override;
|
||||
SourceImpl(const SourceImpl& oth) = delete;
|
||||
SourceImpl& operator=(const SourceImpl& oth) = delete;
|
||||
|
||||
@@ -35,14 +35,15 @@ extern "C" {
|
||||
|
||||
CS_Source CS_CreateUsbCameraDev(const struct WPI_String* name, int dev,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::CreateUsbCameraDev(wpi::util::to_string_view(name), dev, status);
|
||||
return wpi::cs::CreateUsbCameraDev(wpi::util::to_string_view(name), dev,
|
||||
status);
|
||||
}
|
||||
|
||||
CS_Source CS_CreateUsbCameraPath(const struct WPI_String* name,
|
||||
const struct WPI_String* path,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::CreateUsbCameraPath(wpi::util::to_string_view(name),
|
||||
wpi::util::to_string_view(path), status);
|
||||
wpi::util::to_string_view(path), status);
|
||||
}
|
||||
|
||||
void CS_SetUsbCameraPath(CS_Source source, const struct WPI_String* path,
|
||||
|
||||
@@ -34,7 +34,8 @@ template <typename O, typename I>
|
||||
static O* ConvertToC(std::vector<I>&& in, int* count) {
|
||||
using T = std::vector<I>;
|
||||
size_t size = in.size();
|
||||
O* out = static_cast<O*>(wpi::util::safe_malloc(size * sizeof(O) + sizeof(T)));
|
||||
O* out =
|
||||
static_cast<O*>(wpi::util::safe_malloc(size * sizeof(O) + sizeof(T)));
|
||||
*count = size;
|
||||
for (size_t i = 0; i < size; ++i) {
|
||||
out[i] = ConvertToC(in[i]);
|
||||
@@ -92,7 +93,8 @@ void CS_GetStringProperty(CS_Property property, WPI_String* value,
|
||||
|
||||
void CS_SetStringProperty(CS_Property property, const struct WPI_String* value,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::SetStringProperty(property, wpi::util::to_string_view(value), status);
|
||||
return wpi::cs::SetStringProperty(property, wpi::util::to_string_view(value),
|
||||
status);
|
||||
}
|
||||
|
||||
WPI_String* CS_GetEnumPropertyChoices(CS_Property property, int* count,
|
||||
@@ -118,7 +120,8 @@ void CS_GetSourceName(CS_Source source, WPI_String* name, CS_Status* status) {
|
||||
void CS_GetSourceDescription(CS_Source source, WPI_String* description,
|
||||
CS_Status* status) {
|
||||
wpi::util::SmallString<128> buf;
|
||||
wpi::cs::ConvertToC(description, wpi::cs::GetSourceDescription(source, buf, status));
|
||||
wpi::cs::ConvertToC(description,
|
||||
wpi::cs::GetSourceDescription(source, buf, status));
|
||||
}
|
||||
|
||||
uint64_t CS_GetSourceLastFrameTime(CS_Source source, CS_Status* status) {
|
||||
@@ -142,7 +145,8 @@ CS_Bool CS_IsSourceEnabled(CS_Source source, CS_Status* status) {
|
||||
CS_Property CS_GetSourceProperty(CS_Source source,
|
||||
const struct WPI_String* name,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::GetSourceProperty(source, wpi::util::to_string_view(name), status);
|
||||
return wpi::cs::GetSourceProperty(source, wpi::util::to_string_view(name),
|
||||
status);
|
||||
}
|
||||
|
||||
CS_Property* CS_EnumerateSourceProperties(CS_Source source, int* count,
|
||||
@@ -174,8 +178,8 @@ CS_Bool CS_SetSourceVideoModeDiscrete(CS_Source source,
|
||||
return wpi::cs::SetSourceVideoMode(
|
||||
source,
|
||||
wpi::cs::VideoMode{static_cast<wpi::cs::VideoMode::PixelFormat>(
|
||||
static_cast<int>(pixelFormat)),
|
||||
width, height, fps},
|
||||
static_cast<int>(pixelFormat)),
|
||||
width, height, fps},
|
||||
status);
|
||||
}
|
||||
|
||||
@@ -184,7 +188,8 @@ CS_Bool CS_SetSourcePixelFormat(CS_Source source,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::SetSourcePixelFormat(
|
||||
source,
|
||||
static_cast<wpi::cs::VideoMode::PixelFormat>(static_cast<int>(pixelFormat)),
|
||||
static_cast<wpi::cs::VideoMode::PixelFormat>(
|
||||
static_cast<int>(pixelFormat)),
|
||||
status);
|
||||
}
|
||||
|
||||
@@ -200,7 +205,8 @@ CS_Bool CS_SetSourceFPS(CS_Source source, int fps, CS_Status* status) {
|
||||
CS_Bool CS_SetSourceConfigJson(CS_Source source,
|
||||
const struct WPI_String* config,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::SetSourceConfigJson(source, wpi::util::to_string_view(config), status);
|
||||
return wpi::cs::SetSourceConfigJson(source, wpi::util::to_string_view(config),
|
||||
status);
|
||||
}
|
||||
|
||||
void CS_GetSourceConfigJson(CS_Source source, WPI_String* config,
|
||||
@@ -222,8 +228,8 @@ CS_Sink* CS_EnumerateSourceSinks(CS_Source source, int* count,
|
||||
CS_Status* status) {
|
||||
wpi::util::SmallVector<CS_Sink, 32> buf;
|
||||
auto handles = wpi::cs::EnumerateSourceSinks(source, buf, status);
|
||||
CS_Sink* sinks =
|
||||
static_cast<CS_Sink*>(wpi::util::safe_malloc(handles.size() * sizeof(CS_Sink)));
|
||||
CS_Sink* sinks = static_cast<CS_Sink*>(
|
||||
wpi::util::safe_malloc(handles.size() * sizeof(CS_Sink)));
|
||||
*count = handles.size();
|
||||
std::copy(handles.begin(), handles.end(), sinks);
|
||||
return sinks;
|
||||
@@ -284,12 +290,14 @@ void CS_GetSinkName(CS_Sink sink, WPI_String* name, CS_Status* status) {
|
||||
void CS_GetSinkDescription(CS_Sink sink, WPI_String* description,
|
||||
CS_Status* status) {
|
||||
wpi::util::SmallString<128> buf;
|
||||
wpi::cs::ConvertToC(description, wpi::cs::GetSinkDescription(sink, buf, status));
|
||||
wpi::cs::ConvertToC(description,
|
||||
wpi::cs::GetSinkDescription(sink, buf, status));
|
||||
}
|
||||
|
||||
CS_Property CS_GetSinkProperty(CS_Sink sink, const struct WPI_String* name,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::GetSinkProperty(sink, wpi::util::to_string_view(name), status);
|
||||
return wpi::cs::GetSinkProperty(sink, wpi::util::to_string_view(name),
|
||||
status);
|
||||
}
|
||||
|
||||
CS_Property* CS_EnumerateSinkProperties(CS_Sink sink, int* count,
|
||||
@@ -305,7 +313,8 @@ CS_Property* CS_EnumerateSinkProperties(CS_Sink sink, int* count,
|
||||
|
||||
CS_Bool CS_SetSinkConfigJson(CS_Sink sink, const struct WPI_String* config,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::SetSinkConfigJson(sink, wpi::util::to_string_view(config), status);
|
||||
return wpi::cs::SetSinkConfigJson(sink, wpi::util::to_string_view(config),
|
||||
status);
|
||||
}
|
||||
|
||||
void CS_GetSinkConfigJson(CS_Sink sink, WPI_String* config, CS_Status* status) {
|
||||
@@ -323,7 +332,8 @@ CS_Source CS_GetSinkSource(CS_Sink sink, CS_Status* status) {
|
||||
CS_Property CS_GetSinkSourceProperty(CS_Sink sink,
|
||||
const struct WPI_String* name,
|
||||
CS_Status* status) {
|
||||
return wpi::cs::GetSinkSourceProperty(sink, wpi::util::to_string_view(name), status);
|
||||
return wpi::cs::GetSinkSourceProperty(sink, wpi::util::to_string_view(name),
|
||||
status);
|
||||
}
|
||||
|
||||
CS_Sink CS_CopySink(CS_Sink sink, CS_Status* status) {
|
||||
@@ -464,8 +474,8 @@ void CS_ReleaseEnumeratedSources(CS_Source* sources, int count) {
|
||||
CS_Sink* CS_EnumerateSinks(int* count, CS_Status* status) {
|
||||
wpi::util::SmallVector<CS_Sink, 32> buf;
|
||||
auto handles = wpi::cs::EnumerateSinkHandles(buf, status);
|
||||
CS_Sink* sinks =
|
||||
static_cast<CS_Sink*>(wpi::util::safe_malloc(handles.size() * sizeof(CS_Sink)));
|
||||
CS_Sink* sinks = static_cast<CS_Sink*>(
|
||||
wpi::util::safe_malloc(handles.size() * sizeof(CS_Sink)));
|
||||
*count = handles.size();
|
||||
std::copy(handles.begin(), handles.end(), sinks);
|
||||
return sinks;
|
||||
|
||||
@@ -401,9 +401,9 @@ std::vector<VideoMode> EnumerateSourceVideoModes(CS_Source source,
|
||||
return data->source->EnumerateVideoModes(status);
|
||||
}
|
||||
|
||||
std::span<CS_Sink> EnumerateSourceSinks(CS_Source source,
|
||||
wpi::util::SmallVectorImpl<CS_Sink>& vec,
|
||||
CS_Status* status) {
|
||||
std::span<CS_Sink> EnumerateSourceSinks(
|
||||
CS_Source source, wpi::util::SmallVectorImpl<CS_Sink>& vec,
|
||||
CS_Status* status) {
|
||||
auto& inst = Instance::GetInstance();
|
||||
auto data = inst.GetSource(source);
|
||||
if (!data) {
|
||||
@@ -540,7 +540,8 @@ std::string GetSinkName(CS_Sink sink, CS_Status* status) {
|
||||
return std::string{data->sink->GetName()};
|
||||
}
|
||||
|
||||
std::string_view GetSinkName(CS_Sink sink, wpi::util::SmallVectorImpl<char>& buf,
|
||||
std::string_view GetSinkName(CS_Sink sink,
|
||||
wpi::util::SmallVectorImpl<char>& buf,
|
||||
CS_Status* status) {
|
||||
auto data = Instance::GetInstance().GetSink(sink);
|
||||
if (!data) {
|
||||
@@ -587,7 +588,8 @@ CS_Property GetSinkProperty(CS_Sink sink, std::string_view name,
|
||||
}
|
||||
|
||||
std::span<CS_Property> EnumerateSinkProperties(
|
||||
CS_Sink sink, wpi::util::SmallVectorImpl<CS_Property>& vec, CS_Status* status) {
|
||||
CS_Sink sink, wpi::util::SmallVectorImpl<CS_Property>& vec,
|
||||
CS_Status* status) {
|
||||
auto data = Instance::GetInstance().GetSink(sink);
|
||||
if (!data) {
|
||||
*status = CS_INVALID_HANDLE;
|
||||
@@ -873,8 +875,8 @@ std::span<CS_Source> EnumerateSourceHandles(
|
||||
return Instance::GetInstance().EnumerateSourceHandles(vec);
|
||||
}
|
||||
|
||||
std::span<CS_Sink> EnumerateSinkHandles(wpi::util::SmallVectorImpl<CS_Sink>& vec,
|
||||
CS_Status* status) {
|
||||
std::span<CS_Sink> EnumerateSinkHandles(
|
||||
wpi::util::SmallVectorImpl<CS_Sink>& vec, CS_Status* status) {
|
||||
return Instance::GetInstance().EnumerateSinkHandles(vec);
|
||||
}
|
||||
|
||||
|
||||
@@ -475,7 +475,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_createUsbCameraDev
|
||||
return 0;
|
||||
}
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::CreateUsbCameraDev(JStringRef{env, name}.str(), dev, &status);
|
||||
auto val =
|
||||
wpi::cs::CreateUsbCameraDev(JStringRef{env, name}.str(), dev, &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -499,7 +500,7 @@ Java_org_wpilib_vision_camera_CameraServerJNI_createUsbCameraPath
|
||||
}
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::CreateUsbCameraPath(JStringRef{env, name}.str(),
|
||||
JStringRef{env, path}.str(), &status);
|
||||
JStringRef{env, path}.str(), &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -561,7 +562,7 @@ Java_org_wpilib_vision_camera_CameraServerJNI_createHttpCameraMulti
|
||||
CS_Status status = 0;
|
||||
auto val =
|
||||
wpi::cs::CreateHttpCamera(JStringRef{env, name}.str(), vec,
|
||||
static_cast<CS_HttpCameraKind>(kind), &status);
|
||||
static_cast<CS_HttpCameraKind>(kind), &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -583,9 +584,10 @@ Java_org_wpilib_vision_camera_CameraServerJNI_createRawSource
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::CreateRawSource(
|
||||
JStringRef{env, name}.str(), isCv,
|
||||
wpi::cs::VideoMode{static_cast<wpi::cs::VideoMode::PixelFormat>(pixelFormat),
|
||||
static_cast<int>(width), static_cast<int>(height),
|
||||
static_cast<int>(fps)},
|
||||
wpi::cs::VideoMode{
|
||||
static_cast<wpi::cs::VideoMode::PixelFormat>(pixelFormat),
|
||||
static_cast<int>(width), static_cast<int>(height),
|
||||
static_cast<int>(fps)},
|
||||
&status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
@@ -770,8 +772,9 @@ Java_org_wpilib_vision_camera_CameraServerJNI_setSourceVideoMode
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::SetSourceVideoMode(
|
||||
source,
|
||||
wpi::cs::VideoMode(static_cast<wpi::cs::VideoMode::PixelFormat>(pixelFormat), width,
|
||||
height, fps),
|
||||
wpi::cs::VideoMode(
|
||||
static_cast<wpi::cs::VideoMode::PixelFormat>(pixelFormat), width,
|
||||
height, fps),
|
||||
&status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
@@ -788,7 +791,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_setSourcePixelFormat
|
||||
{
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::SetSourcePixelFormat(
|
||||
source, static_cast<wpi::cs::VideoMode::PixelFormat>(pixelFormat), &status);
|
||||
source, static_cast<wpi::cs::VideoMode::PixelFormat>(pixelFormat),
|
||||
&status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -833,7 +837,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_setSourceConfigJson
|
||||
(JNIEnv* env, jclass, jint source, jstring config)
|
||||
{
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::SetSourceConfigJson(source, JStringRef{env, config}, &status);
|
||||
auto val =
|
||||
wpi::cs::SetSourceConfigJson(source, JStringRef{env, config}, &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -1271,7 +1276,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_setSourceDescription
|
||||
return;
|
||||
}
|
||||
CS_Status status = 0;
|
||||
wpi::cs::SetSourceDescription(source, JStringRef{env, description}.str(), &status);
|
||||
wpi::cs::SetSourceDescription(source, JStringRef{env, description}.str(),
|
||||
&status);
|
||||
CheckStatus(env, status);
|
||||
}
|
||||
|
||||
@@ -1342,8 +1348,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_createMjpegServer
|
||||
}
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::CreateMjpegServer(JStringRef{env, name}.str(),
|
||||
JStringRef{env, listenAddress}.str(), port,
|
||||
&status);
|
||||
JStringRef{env, listenAddress}.str(),
|
||||
port, &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -1432,7 +1438,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_getSinkProperty
|
||||
return 0;
|
||||
}
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::GetSinkProperty(sink, JStringRef{env, name}.str(), &status);
|
||||
auto val =
|
||||
wpi::cs::GetSinkProperty(sink, JStringRef{env, name}.str(), &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -1465,7 +1472,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_setSinkConfigJson
|
||||
(JNIEnv* env, jclass, jint source, jstring config)
|
||||
{
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::SetSinkConfigJson(source, JStringRef{env, config}, &status);
|
||||
auto val =
|
||||
wpi::cs::SetSinkConfigJson(source, JStringRef{env, config}, &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -1513,8 +1521,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_getSinkSourceProperty
|
||||
return 0;
|
||||
}
|
||||
CS_Status status = 0;
|
||||
auto val =
|
||||
wpi::cs::GetSinkSourceProperty(sink, JStringRef{env, name}.str(), &status);
|
||||
auto val = wpi::cs::GetSinkSourceProperty(sink, JStringRef{env, name}.str(),
|
||||
&status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
@@ -1609,7 +1617,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_setSinkDescription
|
||||
return;
|
||||
}
|
||||
CS_Status status = 0;
|
||||
wpi::cs::SetSinkDescription(sink, JStringRef{env, description}.str(), &status);
|
||||
wpi::cs::SetSinkDescription(sink, JStringRef{env, description}.str(),
|
||||
&status);
|
||||
CheckStatus(env, status);
|
||||
}
|
||||
|
||||
@@ -1630,7 +1639,7 @@ Java_org_wpilib_vision_camera_CameraServerJNI_grabRawSinkFrame
|
||||
return 0;
|
||||
}
|
||||
wpi::util::SetFrameData(env, rawFrameCls, frameObj, *frame,
|
||||
origData != frame->data);
|
||||
origData != frame->data);
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -1648,12 +1657,12 @@ Java_org_wpilib_vision_camera_CameraServerJNI_grabRawSinkFrameTimeout
|
||||
auto origData = frame->data;
|
||||
CS_Status status = 0;
|
||||
auto rv = wpi::cs::GrabSinkFrameTimeout(static_cast<CS_Sink>(sink), *frame,
|
||||
timeout, &status);
|
||||
timeout, &status);
|
||||
if (!CheckStatus(env, status)) {
|
||||
return 0;
|
||||
}
|
||||
wpi::util::SetFrameData(env, rawFrameCls, frameObj, *frame,
|
||||
origData != frame->data);
|
||||
origData != frame->data);
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -1801,7 +1810,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_addPolledListener
|
||||
(JNIEnv* env, jclass, jint poller, jint eventMask, jboolean immediateNotify)
|
||||
{
|
||||
CS_Status status = 0;
|
||||
auto rv = wpi::cs::AddPolledListener(poller, eventMask, immediateNotify, &status);
|
||||
auto rv =
|
||||
wpi::cs::AddPolledListener(poller, eventMask, immediateNotify, &status);
|
||||
CheckStatus(env, status);
|
||||
return rv;
|
||||
}
|
||||
@@ -1887,8 +1897,8 @@ Java_org_wpilib_vision_camera_CameraServerJNI_getTelemetryValue
|
||||
(JNIEnv* env, jclass, jint handle, jint kind)
|
||||
{
|
||||
CS_Status status = 0;
|
||||
auto val = wpi::cs::GetTelemetryValue(handle, static_cast<CS_TelemetryKind>(kind),
|
||||
&status);
|
||||
auto val = wpi::cs::GetTelemetryValue(
|
||||
handle, static_cast<CS_TelemetryKind>(kind), &status);
|
||||
CheckStatus(env, status);
|
||||
return val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user