Commit Graph

3168 Commits

Author SHA1 Message Date
Peter Johnson
932308b497 MjpegServer: Add ability to set compression, etc in code (#1229)
This allows code to set the stream compression, resolution, and FPS used if
not specified in HTTP parameters by the client.
2018-07-27 23:00:15 -07:00
Peter Johnson
9398278250 cscore: Add properties support to VideoSink (#1228)
Refactor the Property internals into PropertyContainer.
2018-07-27 22:12:30 -07:00
Peter Johnson
c9a75a119a cscore: Support multiple levels of JPEG compression (#1223)
This allows two streams with different compression levels, and also allows
a stream to receive a different compression level than provided by a JPEG
camera (decompress and recompress).
2018-07-27 21:51:40 -07:00
Peter Johnson
04ee8dbe79 UsbCamera: In JPEG mode, get size from image instead of mode (#1222)
Some cameras will accept a different resolution as the mode but then provide
JPEG images of a different size.  Trust the JPEG image size if available.

This also validates the JPEG image is actually JPEG.
2018-07-27 21:50:28 -07:00
Peter Johnson
7fd7192b16 Disable UvGetAddrInfo Concurrent test on Windows (#1227)
This test likes to intermittently hang for some unknown reason, so disable it.
2018-07-27 21:41:04 -07:00
Thad House
63c1f80d60 halsim_ds_socket: Update tag parsing, and add rumble support (#1214)
Outputs are now sent. Ensure only the proper number of outputs are actually sent though.

Also adds match time, and proper enable tags.
2018-07-26 01:30:29 -07:00
Tyler Veness
d54c2665dc Update UsageReporting enums and their uses for 2019 (#1218) 2018-07-25 19:58:05 -07:00
Peter Johnson
8aac46542d Add a SimpleBufferPool for uv::Buffer (#1215)
Buffers are reused on a regular basis in many use cases.
2018-07-25 00:58:54 -07:00
Thad House
c78e1499d7 Remove appveyor artifacts, and only build 64 bit (#1212)
There is a limit on artifacts, and doing both builds gains little and doubles build time.
2018-07-22 23:05:25 -07:00
Thad House
a34df5589e Switch DS Sim Sockets to use UV loops (#1211)
Also adds the simulation packet to force switch the DS to local.
2018-07-22 23:03:55 -07:00
PJ Reiniger
eb2c6e19f8 Add sim hooks to set match data (#1191) 2018-07-22 19:43:24 -07:00
Peter Johnson
c25d48fd0c HttpParser: Add Reset() function (#1210)
This allows reuse of the HttpParser object for multiple requests.
2018-07-22 19:41:23 -07:00
Tyler Veness
794403dcea Add shim headers for headers moved to cameraserver and frc folders
Shim headers were placed in the original location to warn users that they
are deprecated and that they should use the headers in the folders
instead.
2018-07-22 19:40:57 -07:00
Tyler Veness
d89b7dd412 Move CameraServer and WPILib headers into their own folder
The old headers were moved into folders because doing so avoids polluting
the system include directories.

Folder names were also normalized to lowercase.
2018-07-22 19:40:57 -07:00
Peter Johnson
31ced30c1e HttpParser: Change Execute() to return StringRef (#1209)
This is more user-friendly than returning the number of parsed bytes.
2018-07-22 15:07:22 -07:00
Jeremy White
74a306d47a Add halsim_ds_socket to allow a simulated robot to talk to the real DS (#1180)
This implements enough of the UDP and TCP protocol used by the FRC
driver station to allow us to talk to either QDriverStation or to the
real Driver Station.

This was inspired by a similar function in Toast by Jaci, and also
uses a lot of the research found in the QDriverStation project.
2018-07-22 15:00:06 -07:00
Peter Johnson
5bf5821138 Cleanup docs in uv::Stream and uv::Tcp (#1207) 2018-07-22 13:01:14 -07:00
Peter Johnson
eed28a5852 Add sockaddr_in overloads for uv::Tcp and uv::Udp (#1206)
These help avoid the need for reinterpret_casts in common use cases.
2018-07-22 13:01:00 -07:00
Peter Johnson
435e026c08 uv::Loop: Add user-defined data (#1205) 2018-07-22 13:00:47 -07:00
Peter Johnson
739267d36d Add Reuse function to uv::Tcp (#1208)
This allows reusing the Tcp object in cases when the connection errors out.
2018-07-22 12:31:50 -07:00
Jeremy White
85118a023d Minor fixes required to enable the simulated robots to run (#1181)
* Fix bugs in PacGoat Java example that prevent it from working.

We have conflicting ports in use, each of which causes a crash
at startup.  These changes fix those issues.

* Change to avoid a crash in Visual C++ when running simulated code.

Without this change, we would get a crash in SendableRobotBase when
constructing a Twine from the 'kOptions' constant string;
we'd get an unable to access memory exception.
2018-07-22 00:58:42 -07:00
Tyler Veness
ae72c0b296 Clean up style issues in wpilibj_frcnetcomm.py (#1199) 2018-07-21 23:50:40 -07:00
Thad House
b72885b4f8 Remove wildcard dep version from gazebo msg (#1203)
We don't want any wildcards in allwpilib.
Also uses plugin repo for protobuf rather then mavenCentral.
2018-07-21 23:50:01 -07:00
Peter Johnson
70b0d7cb03 UDPClient: Add receive functionality (#1204) 2018-07-21 23:49:16 -07:00
Thad House
053ca47d4e Update gradle dependencies (#1202)
ErrorProne fixes some Java 9 issues, vscode cpp fixes a bug and updates for lazy tasks, jni updates for lazy tasks
2018-07-20 16:56:22 -07:00
Jeremy White
74efe5aafe Get halsim_gazebo building again (#1201) 2018-07-20 16:24:48 -07:00
Thad House
fe5d7dd6ba Move DS caching from user level to the HAL (#1143)
Also switch eventName and gameSpecificData to fixed 64-byte arrays to avoid mallocs and
extra NetComm calls.  This behavior matches 2018 LabView.

The DS caching is kept in Java to avoid JNI and/or massive amounts of allocations.
This does not increase latency because Java still only hits NetComm once.

Moving the DS caching benefits all languages other than Java, because it avoids the need
for individual implementations.  If caching is ever added to NetComm, it will then only be
necessary to remove it from the HAL and Java rather than all languages.
2018-07-18 22:22:41 -07:00
Thad House
0b5df467e1 Update Native Utils to fix static allocations (#1196)
Should fix lag after 15 or so builds that was being seen with daemon.
2018-07-18 22:14:24 -07:00
Thad House
80134164a4 Move Java main function from library to user code (#1148)
It is much more reliable than the old approach, as it no longer depends on a magic string
in a manifest file, and if the user changes their main class, or makes it not import from
something RobotBase, it will fail to compile instead of failing at runtime.

With requiring an importer, we should be able to automate this in the importer.
2018-07-18 22:01:19 -07:00
Thad House
76b26c2df5 HAL_InitializePWMPort: Check for MXP port (#1195)
Previously all channels were incorrectly handled as MXP channels.

Closes #1182
2018-07-18 20:39:05 -07:00
Thad House
f8635e8abf Update to gradle 4.9 (#1193)
4.9 will be needed for some things being added to a few of our plugins. It adds the new lazy configuration tasks which help a good amount in some cases.
2018-07-18 20:36:10 -07:00
Peter Johnson
4029b5d84d Update gazebo plugins to Gazebo 9 (#1189)
Note: This breaks Gazebo 7 support.
2018-07-18 20:16:43 -07:00
Thad House
4c527b9b08 Add vscode intellisense settings (#1173) 2018-07-18 12:26:29 -07:00
Peter Johnson
caa03d23a3 Make JxArrayRef less error-prone for jxArray (#1190)
Add a length-taking overload so that if a length happens to be provided for
a jarray, the direct byte buffer overload is not used.
2018-07-17 20:19:49 -07:00
Peter Johnson
297863b17a Add HttpParser and UrlParser C++ wrappers for http_parser. 2018-07-17 02:24:56 -07:00
Peter Johnson
1992b67ee3 Import nodejs/http-parser.
Upstream version: 5b76466c6b9063e2c5982423962a16f7319c81f8
2018-07-17 02:24:56 -07:00
Peter Johnson
e2314f3528 wpiutil: Add C++ libuv wrappers (#1166)
- Provide an EventLoopRunner to run uv::Loop on a separate thread.

- Add raw_ostream wrapper for uv::Buffer.
2018-07-17 01:06:24 -07:00
Jaci Brunning
340b26bada Use ASAN when on Clang (#1187)
This currently only affects MacOS builds, as that's the only platform where clang is used.
2018-07-16 22:48:02 -07:00
Thad House
7f000fecc4 Force a DS mutex release on shutdown on desktop (#1188)
This fixes some issues with freezing tests.
2018-07-16 22:42:04 -07:00
PJ Reiniger
76c901ce78 Add simple motor simulation classes (#1117) 2018-07-12 20:11:26 -07:00
Thad House
57fc614074 Compile C headers in C mode, and fix cscore C (#1179) 2018-07-08 15:42:59 -07:00
Thad House
89d15f061b Fix main function initialization (#1176)
I don't have a good way to ensure this always works, so this is going to be a documentation issue.
But initializeHardwareConfiguration is now reentrant, so we can just have all tests call it.
2018-07-08 15:41:31 -07:00
Austin Shalit
f5b1028b5a Fix race conditions in command tests by increasing the delay time (#1178) 2018-07-08 12:39:15 -07:00
David Vo
ad3e2d7d3b Make HAL headers C-compatible (#1177)
Also fix the return type of HAL_IsNewControlData() and HAL_MatchType's type.

Since UsageReporting is intended to be namespaced, it is hidden when this is being used in C.

Fixes: #476
Closes: #535
Ref: #1122
2018-07-07 22:18:03 -07:00
Thad House
3818a8b3b6 Update to gradle 4.8.1 (#1174) 2018-07-04 09:41:18 -07:00
Thad House
59e8b60267 Add HAL Documentation (#1132) 2018-07-04 00:18:18 -07:00
Peter Johnson
de5d7d3c17 Only use priority_mutex on RoboRIO by default. (#1172)
On all Linux platforms it can be specifically requested by defining
WPI_USE_PRIORITY_MUTEX.
2018-07-03 20:35:07 -07:00
Jeremy White
ebd41fe0bb Bring back the gazebo plugins (#1063)
The models and meshes are not included. We will need
to find an alternate way to reintegrate these and use them.

* Add simulation/gz_msgs back, and build with Gradle.

* Add back in the frc simulation plugins for gazebo.

* Add a new shared library, halsim_gazebo.

This library will become the interface between the
HAL sim layer and gazebo.

* Preserve the first channel number used in created Encoders in the Sim MockData.

This allows us to use the DIO channel number to connect with simulated encoders.

* Have the HAL Simulator set the reverse direction on creation.

This enables a simulator to be aware of the direction.

* Add a drive_motor plugin.

This is a bit of a 'magic' motor, which allows us to build robot
models that drive in a more realistic fashion.  It does this
by apply forces directly to the chassis, rather than relying on
the complex motion dynamics of a driven wheel.

This in turn allows the model to reduce wheel friction,
reducing scrub, and allowing for a more natural driving experience.
2018-06-30 00:45:21 -07:00
Peter Johnson
70960b0251 Signal: rename Signal to Signal_mt and Signal_st to Signal.
The single-threaded version is fine for most of the use cases we're planning
on, and is half the size on most platforms.
2018-06-30 00:21:09 -07:00
Peter Johnson
c8afe9bc2f Signal: Optimize to use plain std::function.
This optimizes the common case of a single simple callback (e.g. std::function
or lambda) so no additional allocation is required.  As a Connection return
value is not possible in this case, provide a separate connect_connection()
function to provide that.
2018-06-30 00:21:09 -07:00