WPILibC++ 2027.0.0-alpha-4
Loading...
Searching...
No Matches
cscore_cpp.hpp
Go to the documentation of this file.
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5#pragma once
6
7#include <stdint.h>
8
9#include <functional>
10#include <span>
11#include <string>
12#include <string_view>
13#include <vector>
14
15#include "wpi/cs/RawEvent.hpp"
17#include "wpi/cs/VideoMode.hpp"
18#include "wpi/cs/cscore_c.h"
20#include "wpi/util/SmallVector.hpp"
21#include "wpi/util/json_fwd.hpp"
22
23#ifdef _WIN32
24// Disable uninitialized variable warnings
25#pragma warning(push)
26#pragma warning(disable : 26495)
27#endif
28
29/** CameraServer (cscore) namespace */
30namespace wpi::cs {
31
32/**
33 * @defgroup cscore_cpp_api cscore C++ function API
34 *
35 * Handle-based interface for C++. Users are encouraged to use the
36 * object oriented interface instead; this interface is intended for use
37 * in applications such as JNI which require handle-based access.
38 *
39 * @{
40 */
41
42/**
43 * @defgroup cscore_property_func Property Functions
44 * @{
45 */
47std::string GetPropertyName(CS_Property property, CS_Status* status);
48std::string_view GetPropertyName(CS_Property property,
50 CS_Status* status);
51int GetProperty(CS_Property property, CS_Status* status);
52void SetProperty(CS_Property property, int value, CS_Status* status);
53int GetPropertyMin(CS_Property property, CS_Status* status);
54int GetPropertyMax(CS_Property property, CS_Status* status);
55int GetPropertyStep(CS_Property property, CS_Status* status);
57std::string GetStringProperty(CS_Property property, CS_Status* status);
58std::string_view GetStringProperty(CS_Property property,
60 CS_Status* status);
61void SetStringProperty(CS_Property property, std::string_view value,
62 CS_Status* status);
63std::vector<std::string> GetEnumPropertyChoices(CS_Property property,
64 CS_Status* status);
65/** @} */
66
67/**
68 * @defgroup cscore_source_create_func Source Creation Functions
69 * @{
70 */
71CS_Source CreateUsbCameraDev(std::string_view name, int dev, CS_Status* status);
72CS_Source CreateUsbCameraPath(std::string_view name, std::string_view path,
73 CS_Status* status);
74CS_Source CreateHttpCamera(std::string_view name, std::string_view url,
75 CS_HttpCameraKind kind, CS_Status* status);
77 std::span<const std::string> urls,
78 CS_HttpCameraKind kind, CS_Status* status);
79CS_Source CreateCvSource(std::string_view name, const VideoMode& mode,
80 CS_Status* status);
81/** @} */
82
83/**
84 * @defgroup cscore_source_func Source Functions
85 * @{
86 */
91 CS_Status* status);
95 CS_Status* status);
98 CS_ConnectionStrategy strategy,
99 CS_Status* status);
103 CS_Status* status);
104std::span<CS_Property> EnumerateSourceProperties(
106 CS_Status* status);
109 CS_Status* status);
111 CS_Status* status);
112bool SetSourceResolution(CS_Source source, int width, int height,
113 CS_Status* status);
114bool SetSourceFPS(CS_Source source, int fps, CS_Status* status);
115bool SetSourceConfigJson(CS_Source source, std::string_view config,
116 CS_Status* status);
117bool SetSourceConfigJson(CS_Source source, const wpi::util::json& config,
118 CS_Status* status);
122 CS_Status* status);
123std::span<CS_Sink> EnumerateSourceSinks(
125 CS_Status* status);
128/** @} */
129
130/**
131 * @defgroup cscore_camera_property_func Camera Source Common Property Functions
132 * @{
133 */
134void SetCameraBrightness(CS_Source source, int brightness, CS_Status* status);
139 CS_Status* status);
143/** @} */
144
145/**
146 * @defgroup cscore_usbcamera_func UsbCamera Source Functions
147 * @{
148 */
149void SetUsbCameraPath(CS_Source, std::string_view path, CS_Status* status);
152/** @} */
153
154/**
155 * @defgroup cscore_httpcamera_func HttpCamera Source Functions
156 * @{
157 */
159void SetHttpCameraUrls(CS_Source source, std::span<const std::string> urls,
160 CS_Status* status);
161std::vector<std::string> GetHttpCameraUrls(CS_Source source, CS_Status* status);
162/** @} */
163
164/**
165 * @defgroup cscore_frame_source_func Frame Source Functions
166 * @{
167 */
168void NotifySourceError(CS_Source source, std::string_view msg,
169 CS_Status* status);
170void SetSourceConnected(CS_Source source, bool connected, CS_Status* status);
171void SetSourceDescription(CS_Source source, std::string_view description,
172 CS_Status* status);
174 CS_PropertyKind kind, int minimum, int maximum,
175 int step, int defaultValue, int value,
176 CS_Status* status);
178 std::span<const std::string> choices,
179 CS_Status* status);
180/** @} */
181
182/**
183 * @defgroup cscore_sink_create_func Sink Creation Functions
184 * @{
185 */
186CS_Sink CreateMjpegServer(std::string_view name, std::string_view listenAddress,
187 int port, CS_Status* status);
188CS_Sink CreateCvSink(std::string_view name, wpi::util::PixelFormat pixelFormat,
189 CS_Status* status);
191 wpi::util::PixelFormat pixelFormat,
192 std::function<void(uint64_t time)> processFrame,
193 CS_Status* status);
194
195/** @} */
196
197/**
198 * @defgroup cscore_sink_func Sink Functions
199 * @{
200 */
202std::string GetSinkName(CS_Sink sink, CS_Status* status);
203std::string_view GetSinkName(CS_Sink sink,
205 CS_Status* status);
206std::string GetSinkDescription(CS_Sink sink, CS_Status* status);
207std::string_view GetSinkDescription(CS_Sink sink,
209 CS_Status* status);
211 CS_Status* status);
212std::span<CS_Property> EnumerateSinkProperties(
214 CS_Status* status);
217 CS_Status* status);
218bool SetSinkConfigJson(CS_Sink sink, std::string_view config,
219 CS_Status* status);
220bool SetSinkConfigJson(CS_Sink sink, const wpi::util::json& config,
221 CS_Status* status);
222std::string GetSinkConfigJson(CS_Sink sink, CS_Status* status);
223wpi::util::json GetSinkConfigJsonObject(CS_Sink sink, CS_Status* status);
226void ReleaseSink(CS_Sink sink, CS_Status* status);
227/** @} */
228
229/**
230 * @defgroup cscore_mjpegserver_func MjpegServer Sink Functions
231 * @{
232 */
235/** @} */
236
237/**
238 * @defgroup cscore_frame_sink_func Frame Sink Functions
239 * @{
240 */
241void SetSinkDescription(CS_Sink sink, std::string_view description,
242 CS_Status* status);
243std::string GetSinkError(CS_Sink sink, CS_Status* status);
244std::string_view GetSinkError(CS_Sink sink,
246 CS_Status* status);
247void SetSinkEnabled(CS_Sink sink, bool enabled, CS_Status* status);
248/** @} */
249
250/**
251 * @defgroup cscore_listener_func Listener Functions
252 * @{
253 */
254void SetListenerOnStart(std::function<void()> onStart);
255void SetListenerOnExit(std::function<void()> onExit);
256
257CS_Listener AddListener(std::function<void(const RawEvent& event)> callback,
258 int eventMask, bool immediateNotify, CS_Status* status);
259
261
265 bool immediateNotify, CS_Status* status);
266std::vector<RawEvent> PollListener(CS_ListenerPoller poller);
267std::vector<RawEvent> PollListener(CS_ListenerPoller poller, double timeout,
268 bool* timedOut);
270/** @} */
271
273
274/**
275 * @defgroup cscore_telemetry_func Telemetry Functions
276 * @{
277 */
278void SetTelemetryPeriod(double seconds);
281 CS_Status* status);
283 CS_Status* status);
284/** @} */
285
286/**
287 * @defgroup cscore_logging_func Logging Functions
288 * @{
289 */
290using LogFunc = std::function<void(unsigned int level, const char* file,
291 unsigned int line, const char* msg)>;
292void SetLogger(LogFunc func, unsigned int min_level);
293void SetDefaultLogger(unsigned int min_level);
294/** @} */
295
296/**
297 * @defgroup cscore_shutdown_func Library Shutdown Function
298 * @{
299 */
300void Shutdown();
301/** @} */
302
303/**
304 * @defgroup cscore_utility_func Utility Functions
305 * @{
306 */
307std::vector<UsbCameraInfo> EnumerateUsbCameras(CS_Status* status);
308
309std::span<CS_Source> EnumerateSourceHandles(
311std::span<CS_Sink> EnumerateSinkHandles(
313
314std::string GetHostname();
315
316std::vector<std::string> GetNetworkInterfaces();
317/** @} */
318
319/** @} */
320
321} // namespace wpi::cs
322
323#ifdef _WIN32
324// Disable uninitialized variable warnings
325#pragma warning(pop)
326#endif
then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file
Definition ThirdPartyNotices.txt:204
and restrictions which apply to each piece of software is included later in this file and or inside of the individual applicable source files The disclaimer of warranty in the WPILib license above applies to all code in and nothing in any of the other licenses gives permission to use the names of FIRST nor the names of the WPILib contributors to endorse or promote products derived from this software The following pieces of software have additional or alternate and or glfw and nanopb were modified for use in Google Inc All rights reserved Redistribution and use in source and binary with or without are permitted provided that the following conditions are this list of conditions and the following disclaimer *Redistributions in binary form must reproduce the above copyright this list of conditions and the following disclaimer in the documentation and or other materials provided with the distribution *Neither the name of Google Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY OR CONSEQUENTIAL WHETHER IN STRICT OR EVEN IF ADVISED OF THE POSSIBILITY OF SUCH January AND DISTRIBUTION Definitions License shall mean the terms and conditions for and distribution as defined by Sections through of this document Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License Legal Entity shall mean the union of the acting entity and all other entities that control are controlled by or are under common control with that entity For the purposes of this definition control direct or to cause the direction or management of such whether by contract or including but not limited to software source documentation source
Definition ThirdPartyNotices.txt:123
@ name
Definition base.h:690
Definition BooleanTopic.hpp:24
CS_ConnectionStrategy
Connection strategy.
Definition cscore_c.h:170
CS_HttpCameraKind
HTTP Camera kinds.
Definition cscore_c.h:119
CS_PropertyKind
Property kinds.
Definition cscore_c.h:97
CS_TelemetryKind
Telemetry kinds.
Definition cscore_c.h:164
CS_SinkKind
Sink kinds.
Definition cscore_c.h:128
CS_SourceKind
Source kinds.
Definition cscore_c.h:108
void SetCameraWhiteBalanceManual(CS_Source source, int value, CS_Status *status)
int GetCameraBrightness(CS_Source source, CS_Status *status)
void SetCameraExposureAuto(CS_Source source, CS_Status *status)
void SetCameraWhiteBalanceHoldCurrent(CS_Source source, CS_Status *status)
void SetCameraBrightness(CS_Source source, int brightness, CS_Status *status)
void SetCameraExposureManual(CS_Source source, int value, CS_Status *status)
void SetCameraExposureHoldCurrent(CS_Source source, CS_Status *status)
void SetCameraWhiteBalanceAuto(CS_Source source, CS_Status *status)
bool NotifierDestroyed()
std::string GetSinkError(CS_Sink sink, CS_Status *status)
void SetSinkDescription(CS_Sink sink, std::string_view description, CS_Status *status)
void SetSinkEnabled(CS_Sink sink, bool enabled, CS_Status *status)
void SetSourceConnected(CS_Source source, bool connected, CS_Status *status)
CS_Property CreateSourceProperty(CS_Source source, std::string_view name, CS_PropertyKind kind, int minimum, int maximum, int step, int defaultValue, int value, CS_Status *status)
void SetSourceDescription(CS_Source source, std::string_view description, CS_Status *status)
void SetSourceEnumPropertyChoices(CS_Source source, CS_Property property, std::span< const std::string > choices, CS_Status *status)
void NotifySourceError(CS_Source source, std::string_view msg, CS_Status *status)
void SetHttpCameraUrls(CS_Source source, std::span< const std::string > urls, CS_Status *status)
CS_HttpCameraKind GetHttpCameraKind(CS_Source source, CS_Status *status)
std::vector< std::string > GetHttpCameraUrls(CS_Source source, CS_Status *status)
CS_ListenerPoller CreateListenerPoller()
void SetListenerOnStart(std::function< void()> onStart)
void RemoveListener(CS_Listener handle, CS_Status *status)
CS_Listener AddListener(std::function< void(const RawEvent &event)> callback, int eventMask, bool immediateNotify, CS_Status *status)
std::vector< RawEvent > PollListener(CS_ListenerPoller poller)
void SetListenerOnExit(std::function< void()> onExit)
void DestroyListenerPoller(CS_ListenerPoller poller)
void CancelPollListener(CS_ListenerPoller poller)
CS_Listener AddPolledListener(CS_ListenerPoller poller, int eventMask, bool immediateNotify, CS_Status *status)
void SetDefaultLogger(unsigned int min_level)
void SetLogger(LogFunc func, unsigned int min_level)
std::function< void(unsigned int level, const char *file, unsigned int line, const char *msg)> LogFunc
Definition cscore_cpp.hpp:290
std::string GetMjpegServerListenAddress(CS_Sink sink, CS_Status *status)
int GetMjpegServerPort(CS_Sink sink, CS_Status *status)
int GetPropertyMin(CS_Property property, CS_Status *status)
std::string GetPropertyName(CS_Property property, CS_Status *status)
int GetPropertyDefault(CS_Property property, CS_Status *status)
int GetPropertyMax(CS_Property property, CS_Status *status)
void SetStringProperty(CS_Property property, std::string_view value, CS_Status *status)
CS_PropertyKind GetPropertyKind(CS_Property property, CS_Status *status)
std::string GetStringProperty(CS_Property property, CS_Status *status)
void SetProperty(CS_Property property, int value, CS_Status *status)
int GetPropertyStep(CS_Property property, CS_Status *status)
std::vector< std::string > GetEnumPropertyChoices(CS_Property property, CS_Status *status)
int GetProperty(CS_Property property, CS_Status *status)
void Shutdown()
CS_Sink CreateMjpegServer(std::string_view name, std::string_view listenAddress, int port, CS_Status *status)
CS_Sink CreateCvSinkCallback(std::string_view name, wpi::util::PixelFormat pixelFormat, std::function< void(uint64_t time)> processFrame, CS_Status *status)
CS_Sink CreateCvSink(std::string_view name, wpi::util::PixelFormat pixelFormat, CS_Status *status)
CS_Property GetSinkSourceProperty(CS_Sink sink, std::string_view name, CS_Status *status)
CS_Property GetSinkProperty(CS_Sink sink, std::string_view name, CS_Status *status)
std::string GetSinkConfigJson(CS_Sink sink, CS_Status *status)
void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status *status)
std::span< CS_Property > EnumerateSinkProperties(CS_Sink sink, wpi::util::SmallVectorImpl< CS_Property > &vec, CS_Status *status)
CS_SinkKind GetSinkKind(CS_Sink sink, CS_Status *status)
std::string GetSinkDescription(CS_Sink sink, CS_Status *status)
bool SetSinkConfigJson(CS_Sink sink, std::string_view config, CS_Status *status)
wpi::util::json GetSinkConfigJsonObject(CS_Sink sink, CS_Status *status)
CS_Sink CopySink(CS_Sink sink, CS_Status *status)
std::string GetSinkName(CS_Sink sink, CS_Status *status)
void ReleaseSink(CS_Sink sink, CS_Status *status)
CS_Source GetSinkSource(CS_Sink sink, CS_Status *status)
CS_Source CreateHttpCamera(std::string_view name, std::string_view url, CS_HttpCameraKind kind, CS_Status *status)
CS_Source CreateCvSource(std::string_view name, const VideoMode &mode, CS_Status *status)
CS_Source CreateUsbCameraPath(std::string_view name, std::string_view path, CS_Status *status)
CS_Source CreateUsbCameraDev(std::string_view name, int dev, CS_Status *status)
VideoMode GetSourceVideoMode(CS_Source source, CS_Status *status)
bool SetSourceResolution(CS_Source source, int width, int height, CS_Status *status)
std::string GetSourceConfigJson(CS_Source source, CS_Status *status)
void SetSourceConnectionStrategy(CS_Source source, CS_ConnectionStrategy strategy, CS_Status *status)
std::span< CS_Sink > EnumerateSourceSinks(CS_Source source, wpi::util::SmallVectorImpl< CS_Sink > &vec, CS_Status *status)
bool SetSourceFPS(CS_Source source, int fps, CS_Status *status)
void ReleaseSource(CS_Source source, CS_Status *status)
std::string GetSourceDescription(CS_Source source, CS_Status *status)
std::vector< VideoMode > EnumerateSourceVideoModes(CS_Source source, CS_Status *status)
uint64_t GetSourceLastFrameTime(CS_Source source, CS_Status *status)
bool IsSourceEnabled(CS_Source source, CS_Status *status)
CS_Source CopySource(CS_Source source, CS_Status *status)
bool SetSourceConfigJson(CS_Source source, std::string_view config, CS_Status *status)
wpi::util::json GetSourceConfigJsonObject(CS_Source source, CS_Status *status)
CS_Property GetSourceProperty(CS_Source source, std::string_view name, CS_Status *status)
CS_SourceKind GetSourceKind(CS_Source source, CS_Status *status)
std::string GetSourceName(CS_Source source, CS_Status *status)
bool SetSourcePixelFormat(CS_Source source, wpi::util::PixelFormat pixelFormat, CS_Status *status)
bool SetSourceVideoMode(CS_Source source, const VideoMode &mode, CS_Status *status)
bool IsSourceConnected(CS_Source source, CS_Status *status)
std::span< CS_Property > EnumerateSourceProperties(CS_Source source, wpi::util::SmallVectorImpl< CS_Property > &vec, CS_Status *status)
void SetTelemetryPeriod(double seconds)
double GetTelemetryAverageValue(CS_Handle handle, CS_TelemetryKind kind, CS_Status *status)
int64_t GetTelemetryValue(CS_Handle handle, CS_TelemetryKind kind, CS_Status *status)
double GetTelemetryElapsedTime()
CS_Handle CS_Source
Definition cscore_c.h:48
int CS_Status
Definition cscore_c.h:41
CS_Handle CS_ListenerPoller
Definition cscore_c.h:46
CS_Handle CS_Property
Definition cscore_c.h:44
CS_Handle CS_Sink
Definition cscore_c.h:47
int CS_Handle
Definition cscore_c.h:43
CS_Handle CS_Listener
Definition cscore_c.h:45
UsbCameraInfo GetUsbCameraInfo(CS_Source source, CS_Status *status)
void SetUsbCameraPath(CS_Source, std::string_view path, CS_Status *status)
std::string GetUsbCameraPath(CS_Source source, CS_Status *status)
std::vector< std::string > GetNetworkInterfaces()
std::string GetHostname()
std::vector< UsbCameraInfo > EnumerateUsbCameras(CS_Status *status)
std::span< CS_Source > EnumerateSourceHandles(wpi::util::SmallVectorImpl< CS_Source > &vec, CS_Status *status)
std::span< CS_Sink > EnumerateSinkHandles(wpi::util::SmallVectorImpl< CS_Sink > &vec, CS_Status *status)
CameraServer (cscore) namespace.
Definition CvSource.hpp:15
PixelFormat
Pixel formats.
Definition PixelFormat.hpp:14
Listener event.
Definition RawEvent.hpp:18
USB camera information.
Definition UsbCameraInfo.hpp:15
Video mode.
Definition VideoMode.hpp:15