Commit Graph

4058 Commits

Author SHA1 Message Date
Peter Johnson
a9af4589ac Don't send empty message lists from dispatch.
This terminates the write thread.
2015-07-31 22:49:43 -07:00
Peter Johnson
4356e313ec Add logging framework.
DEBUG messages are completely optimized out if NDEBUG is defined.
2015-07-31 22:41:26 -07:00
Peter Johnson
afcfdb13a0 Clean up CMakeLists.txt a bit. 2015-07-31 20:57:56 -07:00
Peter Johnson
3a570add4e Build as a shared rather than static library. 2015-07-31 20:54:25 -07:00
Peter Johnson
ead125555c Implement client/server handshaking. 2015-07-31 20:32:52 -07:00
Peter Johnson
98ad6d1b43 Message: Handle receiving Server Hello. 2015-07-31 20:14:15 -07:00
Peter Johnson
978cdadda0 Storage::GetEntryType(): Check for null entry. 2015-07-31 14:16:13 -07:00
Peter Johnson
cde7782c21 Make StorageEntry a struct and move into Storage class. 2015-07-31 13:48:33 -07:00
Peter Johnson
138ebf5b4d Storage: generate messages rather than intermediate updates. 2015-07-31 13:21:19 -07:00
Tyler Veness
f0e3bb5164 artf4165: D term of PID controller now uses change in input instead of change in error
This avoids large additions introduced by the D term when a step change occurs in the setpoint. Otherwise, the changes return the same values. Let error = setpoint - input and prevError = prevSetpoint - prevInput. If the D term is calculated via error - prevError, then:

error - prevError = (setpoint - input) - (prevSetpoint - prevInput)

If we ignore the setpoint changing, then we get:

error - prevError = (setpoint - input) - (setpoint - prevInput)
                  = prevInput - input

Change-Id: Ifa4af9b265e3c4bd263e8541355f2b80269693e9
2015-07-30 08:55:28 -07:00
Tyler Veness
918cde0c0f artf4155: Move Port.h from hal/lib/Athena to hal/include/HAL
Change-Id: I76a8d8baf4d77b7383c321d16a9286537632c3e9
2015-07-30 08:54:02 -07:00
peter mitrano
43f16510fa moved ctre includes from C++Devices into Hal
Change-Id: I0d0460516b5e26345faa321ed6e24d80eba65358
2015-07-30 07:57:14 -07:00
Brad Miller (WPI)
959f8775d0 Merge "Temporarily disable MutexTests until artf4167 is resolved." 2015-07-30 07:51:14 -07:00
Brad Miller (WPI)
0d70a39f67 Merge "Replaced ::std with std for readability/consistency." 2015-07-30 07:47:38 -07:00
James Kuszmaul
ba57c7f24d Make gradle actually build command tests in C++.
Change-Id: I7052f526facc557eb0a0ca58467e1220722f7d18
2015-07-30 10:00:53 -04:00
Peter Johnson
a127bca0e4 Push down null check for m_queue_outgoing. 2015-07-30 00:06:50 -07:00
Peter Johnson
83be99e78c Immediately process incoming messages.
This required moving message processing into the Storage class.
2015-07-29 23:45:04 -07:00
Peter Johnson
5b5e3ae6aa Dispatcher: Start implementing processing of incoming messages. 2015-07-29 20:33:26 -07:00
Peter Johnson
f6576b18f7 Storage: Add more Dispatcher accessors. 2015-07-29 20:33:13 -07:00
Peter Johnson
9a621e9272 Various NetworkConnection improvements.
- Keep connection state.
- Store remote id
- Getter for proto_rev
- Cleanup on Stop()
- Cleaner termination of write thread.
2015-07-29 20:31:59 -07:00
James Kuszmaul
4b575e3e7e Replaced ::std with std for readability/consistency.
Change-Id: I65f9673c237d3513f99827e28963eb22ae9df0c2
2015-07-29 16:48:04 -04:00
Peter Johnson
c01f2977ac StorageEntry: Make value() const. 2015-07-28 22:29:58 -07:00
Peter Johnson
683c53babc Message::str(): Return StringRef. 2015-07-28 22:07:02 -07:00
Peter Johnson
5823e3c780 Storage: Add CreateEntry function for Dispatcher use. 2015-07-28 22:06:42 -07:00
James Kuszmaul
cbc372c71e Temporarily disable MutexTests until artf4167 is resolved.
Change-Id: I09f4e48ff304df312daf4ebb77681965acf6066d
2015-07-27 11:51:29 -04:00
Peter Johnson
a0d30ffef1 Storage: Use StringMap instead of ConcurrentQueue for updates.
Updates are merged or themselves updated as user code changes.  This avoids
the need for the dispatcher to do this and also avoids the need for disabling
updates when the dispatcher isn't running, because there's no risk of memory
usage piling up.
2015-07-26 20:41:48 -07:00
Peter Johnson
fb1b82e239 StorageEntry: Also store copy of name here.
This wastes a bit of space but is necessary for assign message generation.
2015-07-26 10:28:20 -07:00
Peter Johnson
3bc5699ba1 Storage: Provide accessor for global mutex. 2015-07-26 09:42:14 -07:00
Peter Johnson
18659257d3 Storage: Make setters globally atomic.
Previously, setters were locally but not globally atomic because they
used GetEntry() (globally atomic) in conjunction with locally atomic
gets/sets to the StorageEntry.  To support synchronizing network handshakes
they need to be globally atomic.

GetEntry() has been removed due to this issue, so a helper was added to
StorageTest instead.
2015-07-26 09:27:23 -07:00
Peter Johnson
3c7cb363ba NetworkConnection: Prefer emplace to push. 2015-07-25 10:47:53 -07:00
Peter Johnson
787d39851b Update gradle build to match cmake build. 2015-07-25 01:33:15 -07:00
Peter Johnson
ae070aca70 Value: Add type check functions. 2015-07-24 22:11:57 -07:00
Peter Johnson
63dd895e6d Pass CMAKE_TOOLCHAIN_FILE down to external project (gmock). 2015-07-23 22:31:51 -07:00
Peter Johnson
507b083e77 WireEncoderTest.cpp: Don't test compiler truncation. 2015-07-23 22:06:57 -07:00
Peter Johnson
13bc05d9ec leb128Test: Fix incorrectly sized constants. 2015-07-23 22:04:51 -07:00
Peter Johnson
3f24b86875 ITable: Add Persist function to make a key persistent. 2015-07-23 21:53:33 -07:00
Peter Johnson
1368f0ec8f NetworkTable: Use networktables.ini as persistence filename. 2015-07-23 21:47:54 -07:00
Peter Johnson
196fcf791b ITable: Const'ify getter functions. 2015-07-23 21:46:30 -07:00
Peter Johnson
6bccf528d7 ITableListener.h: Forward declare ITable. 2015-07-23 21:41:30 -07:00
Peter Johnson
1fc03803cd ITableListener::ValueChanged: Don't make key const. 2015-07-23 21:40:24 -07:00
Brad Miller (WPI)
f74ca87e26 Merge "NamedSendable::GetName() is now const qualified" 2015-07-23 07:49:02 -07:00
Brad Miller (WPI)
5756be5c23 Merge "Fix std::unique_ptrs using incomplete types" 2015-07-23 07:48:05 -07:00
Brad Miller (WPI)
2da3f7f89b Merge "Replaced all uses of DISALLOW_COPY_AND_ASSIGN macro" 2015-07-23 07:46:51 -07:00
Brad Miller (WPI)
cf965d26a0 Merge "Make test scripts spawn driverstation as admin." 2015-07-23 07:45:17 -07:00
Brad Miller (WPI)
af3eaae090 Merge "Comment out SetPriority() in Task constructor." 2015-07-23 07:43:17 -07:00
Peter Johnson
8fa0e6c914 Add shims for old NetworkTable interface.
This provides classes for virtual subtables using path delimiters within
the global NetworkTable namespace.
2015-07-23 01:23:09 -07:00
Peter Johnson
6f940bcaaf Add immediate_notify and is_new to entry listener.
On the callback function, is_new indicates the value is newly added.

On adding a callback function, immediate_notify indicates the callback
should be called once (with is_new=true) for each matching entry that
already exists.
2015-07-23 01:02:53 -07:00
Peter Johnson
79f732f239 Import llvm::SmallString and dependencies.
Update StringRef and StringExtras with SmallVector functions.
2015-07-22 22:29:46 -07:00
Peter Johnson
593bc28446 Move StringMap.h and StringExtras.h to public includes.
While these aren't required by the public interface, they are generally
useful classes for users of the library.
2015-07-22 22:10:56 -07:00
Peter Johnson
9c204533e8 Value: Disambiguate std::string&& and StringRef.
Making the former a template causes the compiler to prefer the latter
when given a bare C string.
2015-07-22 22:08:13 -07:00