commit | b11776712d9cd49156430a8f37c06f7fa9e02944 | [log] [tgz] |
---|---|---|
author | Stephan Pleines <pleines.stephan@gmail.com> | Mon May 27 17:48:32 2024 -0700 |
committer | Stephan Pleines <pleines.stephan@gmail.com> | Mon May 27 17:48:52 2024 -0700 |
tree | 8b2a8f6be88b89e972022f43ef68a5d1b1179d2a | |
parent | dedcef3591b575b6c4e759e93f0415a6e69821a5 [diff] |
iwyu: //aos/util/... The full include-list for aos/util/threaded_consumer.h: <functional> // for function <optional> // for optional <thread> // for thread "aos/condition.h" // for Condition "aos/containers/ring_buffer.h" // for RingBuffer "aos/mutex/mutex.h" // for MutexLocker, Mutex "aos/realtime.h" // for SetCurrentThreadRealtimePriority, UnsetCurrentThreadRealtimePriority "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal The full include-list for aos/util/threaded_consumer_test.cc: "aos/util/threaded_consumer.h" <atomic> // for atomic, __atomic_base <chrono> // for milliseconds <initializer_list> // for initializer_list <memory> // for allocator <ostream> // for char_traits, basic_ostream::operator<<, operator<<, basic_ostream "gtest/gtest.h" // for Test, AssertionResult, Message, TestPartResult, TestInfo, EXPECT_TRUE, TEST, EXPECT_EQ, EXPECT_FALSE The full include-list for aos/util/log_to_mcap.cc: <algorithm> // for copy <memory> // for unique_ptr, allocator, make_unique <optional> // for optional <ostream> // for operator<<, basic_ostream <set> // for set, _Rb_tree_const_iterator <string> // for char_traits, operator<<, operator==, string, basic_string <vector> // for vector "aos/configuration.h" // for GetNode, Configuration, AddChannelToConfiguration, MultiNode, Node "aos/events/event_loop.h" // for EventLoop "aos/events/logging/log_reader.h" // for LogReader "aos/events/logging/logfile_sorting.h" // for LogFile, FindLogs, LoggerNodes, SortParts "aos/events/simulated_event_loop.h" // for SimulatedEventLoopFactory, NodeEventLoopFactory "aos/flatbuffers.h" // for FlatbufferDetachedBuffer, FlatbufferSpan "aos/init.h" // for InitGoogle "aos/util/clock_publisher.h" // for ClockPublisher "aos/util/clock_timepoints_schema.h" // for ClockTimepointsSchema "aos/util/mcap_logger.h" // for McapLogger "flatbuffers/reflection_generated.h" // for Schema "gflags/gflags.h" // for DEFINE_bool, DEFINE_string "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, Check_LTImpl, LogMessageFatal, LOG, LogMessage, CHECK_LT, COMPACT_GOOGLE_LOG_ERROR, COMPACT_GOOGLE_LOG_INFO The full include-list for aos/util/threaded_queue_test.cc: "aos/util/threaded_queue.h" <atomic> // for atomic, __atomic_base <memory> // for allocator <utility> // for move "gtest/gtest.h" // for Test, Message, TestPartResult, ASSERT_EQ, CmpHelperGE, TestInfo, CmpHelperLT, TEST, ASSERT_GE, ASSERT_LT The full include-list for aos/util/mcap_logger.h: <stddef.h> // for size_t <stdint.h> // for uint64_t, uint16_t, uint32_t, uint8_t <iosfwd> // for ofstream, ostream, stringstream <map> // for map <memory> // for unique_ptr <optional> // for optional <string> // for string <string_view> // for string_view <utility> // for pair <vector> // for vector "aos/configuration_generated.h" // for Channel, Configuration, Node "aos/events/context.h" // for Context "aos/events/event_loop.h" // for EventLoop, RawFetcher "aos/fast_string_builder.h" // for FastStringBuilder "aos/flatbuffer_utils.h" // for FlatbufferType "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/time/time.h" // for monotonic_clock "nlohmann/json_fwd.hpp" // for json The full include-list for aos/util/mcap_logger_test.cc: "aos/util/mcap_logger.h" "flatbuffers/reflection_generated.h" // for Schema "gtest/gtest.h" // for Test, TestInfo, EXPECT_EQ, Message, TEST, TestPartResult "nlohmann/json.hpp" // for basic_json The full include-list for aos/util/trapezoid_profile.h: <chrono> // for nanoseconds "Eigen/Core" // for StorageOptions, outer_stride_at_compile_time<>::ret, inner_stride_at_compile_time<>::ret, traits<>::Flags, DirectionType, DenseBase<>::ColsAtCompileTime, AccessorLevels, DenseBase<>::RowsAtCompileTime, is_arithmetic<>::value, DenseBase<>::IsRowMajor, traits<>::ColsAtCompileTime, traits<>::RowsAtCompileTime, TraversalType, AlignmentType, accessors_level<>::value, traits<>::MaxColsAtCompileTime, traits<>::MaxRowsAtCompileTime, GenericNumTraits<>::IsComplex, is_const<>::value, is_same<>::value, DenseBase<>::SizeAtCompileTime, UnrollingType, unpacket_traits<>::alignment, Matrix, ComparisonName, DenseBase<>::MaxColsAtCompileTime, DenseBase<>::MaxRowsAtCompileTime, DenseBase<>::MaxSizeAtCompileTime, packet_traits<>::Vectorizable, DenseBase<>::IsVectorAtCompileTime, compute_default_alignment<>::value, compute_matrix_flags<>::ret, size_at_compile_time<>::ret, evaluator<>::CoeffReadCost, evaluator<>::Flags, unpacket_traits<>::size, DenseBase<>::InnerSizeAtCompileTime, DenseCoeffsBase, GenericNumTraits<>::ReadCost, evaluator<>::Alignment, size_of_xpr_at_compile_time<>::ret, functor_traits<>::PacketAccess, has_ReturnType<>::value, is_lvalue<>::value "aos/macros.h" // for DISALLOW_COPY_AND_ASSIGN The full include-list for aos/util/trapezoid_profile_test.cc: "aos/util/trapezoid_profile.h" <compare> // for operator>, strong_ordering <cstdlib> // for abs <memory> // for allocator <ratio> // for ratio "Eigen/Dense" "gtest/gtest.h" // for AssertionResult, Message, TestPartResult, EXPECT_TRUE, TestInfo, TEST_F, AssertionFailure, AssertionSuccess, EXPECT_EQ, EXPECT_NEAR, ASSERT_EQ, EXPECT_FALSE, Test The full include-list for aos/util/foxglove_websocket.cc: <string> // for allocator, operator==, char_traits, basic_string "aos/configuration.h" // for ReadConfig, Configuration "aos/events/shm_event_loop.h" // for ShmEventLoop "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/init.h" // for InitGoogle "aos/util/foxglove_websocket_lib.h" // for FoxgloveWebsocketServer "gflags/gflags.h" // for SetUsageMessage, DEFINE_bool, DEFINE_string, DEFINE_uint32 The full include-list for aos/util/scoped_pipe.h: <stddef.h> // for size_t <stdint.h> // for uint32_t, uint8_t <memory> // for unique_ptr <optional> // for optional <string> // for string "absl/types/span.h" // for Span namespace aos::util { class ScopedPipe::ScopedReadPipe; } // lines 16-16 namespace aos::util { class ScopedPipe::ScopedWritePipe; } // lines 17-17 The full include-list for aos/util/scoped_pipe_test.cc: "aos/util/scoped_pipe.h" <fcntl.h> // for fcntl, FD_CLOEXEC, F_GETFD <algorithm> // for fill_n <array> // for array <string> // for string "gtest/gtest.h" // for Test, Message, AssertionResult, TestPartResult, ASSERT_EQ, TestInfo, TEST, CmpHelperNE, ASSERT_TRUE, ASSERT_FALSE, ASSERT_NE The full include-list for aos/util/foxglove_websocket_lib.h: <stdint.h> // for uint32_t <map> // for map <memory> // for unique_ptr <set> // for set "aos/events/event_loop.h" // for RawFetcher, EventLoop "foxglove/websocket/server.hpp" // for ChannelId, Server The full include-list for aos/util/foxglove_websocket_lib.cc: "aos/util/foxglove_websocket_lib.h" <chrono> // for operator<=>, operator-, operator/, duration, milliseconds, time_point <compare> // for operator<=, strong_ordering <foxglove/websocket/server.hpp> // for Server, ChannelWithoutId <string> // for operator+, char_traits, basic_string, string <utility> // for pair, make_pair "absl/container/btree_set.h" // for btree_set, btree_iterator "absl/strings/escaping.h" // for Base64Escape "absl/types/span.h" // for Span "aos/configuration.h" // for Channel, ChannelIsReadableOnNode, ReadMethod, Configuration "aos/events/context.h" // for Context "aos/flatbuffer_merge.h" // for RecursiveCopyFlatBuffer "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/json_to_flatbuffer.h" // for FlatbufferToJson "aos/time/time.h" // for monotonic_clock "aos/util/mcap_logger.h" // for JsonSchemaForFlatbuffer, ShortenedChannelName "flatbuffers/reflection_generated.h" // for Schema "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector, VectorIterator "gflags/gflags.h" // for DEFINE_uint32 "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal "nlohmann/json.hpp" // for basic_json The full include-list for aos/util/simulation_logger.h: <memory> // for unique_ptr <string> // for string <string_view> // for string_view <vector> // for vector "aos/configuration_generated.h" // for Node "aos/events/event_loop.h" // for EventLoop "aos/events/logging/log_namer.h" // for LogNamer "aos/events/logging/log_writer.h" // for Logger "aos/events/simulated_event_loop.h" // for SimulatedEventLoopFactory The full include-list for aos/util/simulation_logger.cc: "aos/util/simulation_logger.h" <algorithm> // for max <chrono> // for operator* <utility> // for move "absl/strings/str_cat.h" // for StrCat "aos/configuration.h" // for GetNode, GetNodes, Node "aos/events/logging/logfile_utils.h" // for MaybeNodeName "aos/time/time.h" // for monotonic_clock The full include-list for aos/util/wrapping_counter_test.cc: "aos/util/wrapping_counter.h" <memory> // for allocator "gtest/gtest.h" // for Test, EXPECT_EQ, Message, TestPartResult, TestInfo, TEST The full include-list for aos/util/file.h: <stdint.h> // for uint8_t, int32_t <sys/stat.h> // for mode_t, S_IRWXU <sys/types.h> // for mode_t, size_t <array> // for array <memory> // for shared_ptr <optional> // for optional, nullopt <string> // for string <string_view> // for string_view <vector> // for vector "absl/types/span.h" // for Span "aos/scoped/scoped_fd.h" // for ScopedFD "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal The full include-list for aos/util/file.cc: "aos/util/file.h" <errno.h> // for errno, EEXIST, ENOSPC, EREMOTEIO <fcntl.h> // for open, O_RDONLY, O_CREAT, O_RDWR, O_TRUNC, O_WRONLY <fts.h> // for fts_close, fts_open, fts_read, FTS, FTSENT, FTS_D, FTS_DC, FTS_DEFAULT, FTS_DNR, FTS_DOT, FTS_DP, FTS_ERR, FTS_F, FTS_NOCHDIR, FTS_NS, FTS_NSOK, FTS_PHYSICAL, FTS_SL, FTS_SLNONE, FTS_XDEV <stdio.h> // for remove, SEEK_SET <string.h> // for strerror <sys/mman.h> // for mmap, msync, munmap, PROT_READ, MAP_FAILED, MAP_SHARED, MS_SYNC, PROT_WRITE <sys/stat.h> // for stat, fstat, mkdir <sys/types.h> // for ssize_t, mode_t, size_t <unistd.h> // for read, NULL, close, lseek, write <algorithm> // for copy <iterator> // for back_insert_iterator, back_inserter <optional> // for optional, nullopt <ostream> // for operator<<, basic_ostream <string_view> // for operator<<, string_view "aos/scoped/scoped_fd.h" // for ScopedFD "flatbuffers/util.h" // for StringToNumber The full include-list for aos/util/scoped_pipe.h: <stddef.h> // for size_t <stdint.h> // for uint32_t, uint8_t <memory> // for unique_ptr <optional> // for optional <string> // for string "absl/types/span.h" // for Span namespace aos::util { class ScopedPipe::ScopedReadPipe; } // lines 16-16 namespace aos::util { class ScopedPipe::ScopedWritePipe; } // lines 17-17 The full include-list for aos/util/scoped_pipe.cc: "aos/util/scoped_pipe.h" <errno.h> // for errno, EAGAIN, EWOULDBLOCK <fcntl.h> // for fcntl, F_GETFL, F_SETFL, O_NONBLOCK, FD_CLOEXEC, F_GETFD, F_SETFD <unistd.h> // for close, read, write, size_t, ssize_t, pipe <ostream> // for operator<< "glog/logging.h" // for ErrnoLogMessage, Check_EQImpl, PCHECK, CHECK_EQ, CheckNotNull, CHECK_NOTNULL, PLOG The full include-list for aos/util/clock_publisher.h: "aos/events/event_loop.h" // for EventLoop, Sender "aos/events/simulated_event_loop.h" // for SimulatedEventLoopFactory "aos/util/clock_timepoints_generated.h" // for ClockTimepoints The full include-list for aos/util/clock_publisher.cc: "aos/util/clock_publisher.h" <algorithm> // for max <chrono> // for duration, seconds <vector> // for vector "aos/configuration_generated.h" // for Node "aos/events/context.h" // for Context "flatbuffers/buffer.h" // for Offset, AlignOf "flatbuffers/flatbuffer_builder.h" // for FlatBufferBuilder "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector The full include-list for aos/util/error_counter.h: <stddef.h> // for size_t <array> // for array "flatbuffers/buffer.h" // for Offset "flatbuffers/flatbuffer_builder.h" // for FlatBufferBuilder, GetMutableTemporaryPointer "flatbuffers/vector.h" // for Vector "glog/logging.h" // for CHECK_NOTNULL, DCHECK_LT, CHECK, COMPACT_GOOGLE_LOG_FATAL, DCHECK_EQ, LogMessageFatal The full include-list for aos/util/error_counter_test.cc: "aos/util/error_counter.h" <algorithm> // for fill_n <memory> // for allocator "aos/events/event_loop_generated.h" // for SendError, Sender, SendErrorCount "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "gtest/gtest.h" // for Test, Message, TestPartResult, EXPECT_EQ, TestInfo, ASSERT_EQ, TEST The full include-list for aos/util/top.h: <stdint.h> // for uint64_t, int64_t <sys/types.h> // for pid_t <chrono> // for nanoseconds, duration, time_point, seconds <functional> // for function <map> // for map <optional> // for optional, nullopt <set> // for set <string> // for string <utility> // for move "aos/containers/ring_buffer.h" // for RingBuffer "aos/events/event_loop.h" // for EventLoop "aos/time/time.h" // for monotonic_clock "aos/util/process_info_generated.h" // for ProcessInfo, ThreadState, TopProcessesFbs "flatbuffers/buffer.h" // for Offset "flatbuffers/flatbuffer_builder.h" // for FlatBufferBuilder The full include-list for aos/util/top.cc: "aos/util/top.h" <dirent.h> // for closedir, opendir, readdir, dirent, DIR, DT_DIR <errno.h> // for errno <unistd.h> // for pid_t, sysconf, size_t, _SC_CLK_TCK, _SC_PAGESIZE <algorithm> // for max <array> // for array <atomic> // for atomic <cstring> // for strcmp, strerror <istream> // for operator<<, basic_ostream, basic_ostream::operator<<, basic_istream::read, ifstream, ios_base <queue> // for priority_queue <ratio> // for ratio <string> // for char_traits, string, operator<<, basic_string, operator==, to_string <string_view> // for operator<<, string_view, basic_string_view <vector> // for vector "absl/numeric/int128.h" // for int128 "absl/strings/numbers.h" // for SimpleAtoi "absl/strings/str_cat.h" // for StrCat "absl/strings/str_format.h" // for StrFormat "absl/strings/str_split.h" // for SkipWhitespace, StrSplit, Splitter "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector "glog/logging.h" // for LogMessage, COMPACT_GOOGLE_LOG_INFO, VLOG, LOG, COMPACT_GOOGLE_LOG_FATAL, COMPACT_GOOGLE_LOG_WARNING, ErrnoLogMessage, LOG_EVERY_T, LogMessageFatal, PLOG The full include-list for aos/util/options.h: The full include-list for aos/util/options_test.cc: "aos/util/options.h" <memory> // for allocator "gtest/gtest.h" // for AssertionResult, Message, TestPartResult, EXPECT_FALSE, EXPECT_TRUE, TestInfo, TEST_F, Test The full include-list for aos/util/math.h: <cmath> // for M_PI "Eigen/Core" // for Matrix, Ref The full include-list for aos/util/math_test.cc: "aos/util/math.h" <memory> // for allocator "gtest/gtest.h" // for AssertionResult, Test, Message, TestPartResult, EXPECT_FALSE, TestInfo, AssertPred1Helper, AssertPred2Helper, TEST, EXPECT_TRUE, EXPECT_PRED1, EXPECT_PRED2 The full include-list for aos/util/mcap_logger.h: <stddef.h> // for size_t <stdint.h> // for uint64_t, uint16_t, uint32_t, uint8_t <iosfwd> // for ofstream, ostream, stringstream <map> // for map <memory> // for unique_ptr <optional> // for optional <string> // for string <string_view> // for string_view <utility> // for pair <vector> // for vector "aos/configuration_generated.h" // for Channel, Configuration, Node "aos/events/context.h" // for Context "aos/events/event_loop.h" // for RawFetcher, EventLoop "aos/fast_string_builder.h" // for FastStringBuilder "aos/flatbuffer_utils.h" // for FlatbufferType "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/time/time.h" // for monotonic_clock "nlohmann/json_fwd.hpp" // for json The full include-list for aos/util/mcap_logger.cc: "aos/util/mcap_logger.h" <algorithm> // for max, min, sort, fill_n <chrono> // for time_point, duration, operator<=> <numeric> // for accumulate <ostream> // for operator<<, basic_ostream, basic_ostream::tellp, basic_ostream::put, basic_ostream::write, ostream <set> // for set "absl/strings/str_cat.h" // for StrCat "absl/types/span.h" // for Span "aos/configuration.h" // for ChannelIsReadableOnNode, GetChannelAliases, StrippedChannelToString "aos/configuration_schema.h" // for ConfigurationSchema "aos/flatbuffer_merge.h" // for CopyFlatBuffer, RecursiveCopyFlatBuffer "aos/json_to_flatbuffer.h" // for FlatbufferToJson "flatbuffers/buffer.h" // for Offset "flatbuffers/detached_buffer.h" // for DetachedBuffer "flatbuffers/flatbuffer_builder.h" // for FlatBufferBuilder "flatbuffers/reflection.h" // for Verify "flatbuffers/reflection_generated.h" // for Schema "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector, VectorIterator "gflags/gflags.h" // for DEFINE_bool, DEFINE_uint64 "glog/logging.h" // for COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal, CHECK, LOG, COMPACT_GOOGLE_LOG_INFO, CheckNotNull, Check_NEImpl, LogMessage, CHECK_NE, CHECK_NOTNULL, VLOG "glog/vlog_is_on.h" // for VLOG_IS_ON "lz4/lz4frame.h" // for LZ4F_compressFrame, LZ4F_compressFrameBound, LZ4F_isError, LZ4F_preferences_t "nlohmann/json.hpp" // for basic_json The full include-list for aos/util/filesystem_monitor.cc: <stddef.h> // for size_t <sys/statvfs.h> // for statvfs <algorithm> // for max <chrono> // for seconds <istream> // for operator<<, basic_ostream, basic_istream::read, ifstream, ios_base <optional> // for optional, nullopt <string> // for char_traits, string, operator<<, basic_string <string_view> // for operator==, basic_string_view, operator<<, string_view <vector> // for vector "absl/strings/str_split.h" // for SkipWhitespace, StrSplit, Splitter, operator!=, SplitIterator "aos/configuration.h" // for ReadConfig, Configuration "aos/events/event_loop.h" // for EventLoop, Sender, TimerHandler, Sender::MakeBuilder "aos/events/shm_event_loop.h" // for ShmEventLoop "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/init.h" // for InitGoogle "aos/util/filesystem_generated.h" // for FilesystemStatus, Filesystem "flatbuffers/buffer.h" // for Offset, AlignOf "flatbuffers/flatbuffer_builder.h" // for FlatBufferBuilder "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector "gflags/gflags.h" // for DEFINE_string "glog/logging.h" // for COMPACT_GOOGLE_LOG_INFO, Check_LTImpl, LogMessage, VLOG, CHECK, CHECK_LT, COMPACT_GOOGLE_LOG_FATAL, ErrnoLogMessage, LogMessageFatal, PCHECK The full include-list for aos/util/file.h: <stdint.h> // for uint8_t, int32_t <sys/stat.h> // for mode_t, S_IRWXU <sys/types.h> // for mode_t, size_t <array> // for array <memory> // for shared_ptr <optional> // for optional, nullopt <string> // for string <string_view> // for string_view <vector> // for vector "absl/types/span.h" // for Span "aos/scoped/scoped_fd.h" // for ScopedFD "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal The full include-list for aos/util/file_test.cc: "aos/util/file.h" <unistd.h> // for getpid, close, unlink <cstdlib> // for system <optional> // for optional <string> // for operator+, string, basic_string, to_string, char_traits "aos/realtime.h" // for ScopedRealtime "aos/testing/tmpdir.h" // for TestTmpDir "gmock/gmock.h" // for ElementsAre, MakePredicateFormatterFromMatcher, EXPECT_THAT "gtest/gtest.h" // for Test, AssertionResult, Message, TestPartResult, TestInfo, EXPECT_EQ, TEST, ASSERT_EQ, ASSERT_TRUE, ASSERT_FALSE, EXPECT_FALSE, EXPECT_TRUE The full include-list for aos/util/top.h: <stdint.h> // for uint64_t, int64_t <sys/types.h> // for pid_t <chrono> // for nanoseconds, seconds <functional> // for function <map> // for map <optional> // for optional, nullopt <set> // for set <string> // for string <utility> // for move "aos/containers/ring_buffer.h" // for RingBuffer "aos/events/event_loop.h" // for EventLoop "aos/time/time.h" // for monotonic_clock "aos/util/process_info_generated.h" // for ProcessInfo, ThreadState, TopProcessesFbs "flatbuffers/buffer.h" // for Offset "flatbuffers/flatbuffer_builder.h" // for FlatBufferBuilder The full include-list for aos/util/top_test.cc: "aos/util/top.h" <pthread.h> // for pthread_self, pthread_setname_np <signal.h> // for kill, SIGINT <unistd.h> // for getpid, pid_t, fork <algorithm> // for max <atomic> // for atomic <limits> // for numeric_limits <ostream> // for operator<< <string> // for allocator, string, operator+, operator<< <string_view> // for operator<=>, string_view <thread> // for thread <vector> // for vector "aos/configuration.h" // for ReadConfig, Configuration "aos/events/shm_event_loop.h" // for ShmEventLoop "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/ipc_lib/shm_base.h" // for FLAGS_shm_base "aos/json_to_flatbuffer.h" // for FlatbufferToJson "aos/testing/path.h" // for ArtifactPath "aos/testing/tmpdir.h" // for TestTmpDir "aos/util/file.h" // for UnlinkRecursive "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector, VectorIterator "gflags/gflags.h" // for FlagSaver "glog/logging.h" // for LOG, COMPACT_GOOGLE_LOG_INFO, LogMessage, CHECK_NE, COMPACT_GOOGLE_LOG_FATAL, ErrnoLogMessage, LogMessageFatal, PCHECK "gmock/gmock.h" // for Contains, MakePredicateFormatterFromMatcher, ASSERT_THAT "gtest/gtest.h" // for AssertionResult, Message, TestPartResult, CmpHelperGT, CmpHelperLT, ASSERT_EQ, TestInfo, CmpHelperLE, ASSERT_GT, ASSERT_LT, ASSERT_TRUE, CmpHelperGE, TEST_F, ASSERT_LE, ASSERT_GE, SCOPED_TRACE, ASSERT_FALSE, Test The full include-list for aos/util/phased_loop.h: <chrono> // for operator- <optional> // for optional, nullopt "aos/time/time.h" // for monotonic_clock, sleep_until The full include-list for aos/util/phased_loop.cc: "aos/util/phased_loop.h" <compare> // for operator>, operator>=, strong_ordering, operator<, operator<= <ratio> // for ratio "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal, Check_EQImpl, CHECK_EQ The full include-list for aos/util/global_factory.h: <functional> // for function <memory> // for unique_ptr <string> // for string <unordered_map> // for unordered_map <utility> // for forward namespace aos { template <typename BaseClass, typename ...FactoryArgs> class GlobalFactory; } namespace aos { template <typename SubClass> class GlobalFactory::SubClassRegisterer; } namespace aos { template <typename SubClass> class GlobalFactory::SubClassRegisterer; } The full include-list for aos/util/trapezoid_profile.h: <chrono> // for nanoseconds "Eigen/Core" // for StorageOptions, outer_stride_at_compile_time<>::ret, inner_stride_at_compile_time<>::ret, traits<>::Flags, DirectionType, DenseBase<>::ColsAtCompileTime, AccessorLevels, DenseBase<>::RowsAtCompileTime, is_arithmetic<>::value, DenseBase<>::IsRowMajor, traits<>::ColsAtCompileTime, traits<>::RowsAtCompileTime, TraversalType, AlignmentType, accessors_level<>::value, traits<>::MaxColsAtCompileTime, traits<>::MaxRowsAtCompileTime, GenericNumTraits<>::IsComplex, is_const<>::value, is_same<>::value, DenseBase<>::SizeAtCompileTime, UnrollingType, unpacket_traits<>::alignment, Matrix, ComparisonName, DenseBase<>::MaxColsAtCompileTime, DenseBase<>::MaxRowsAtCompileTime, DenseBase<>::MaxSizeAtCompileTime, packet_traits<>::Vectorizable, DenseBase<>::IsVectorAtCompileTime, compute_default_alignment<>::value, compute_matrix_flags<>::ret, size_at_compile_time<>::ret, evaluator<>::CoeffReadCost, evaluator<>::Flags, unpacket_traits<>::size, DenseBase<>::InnerSizeAtCompileTime, DenseCoeffsBase, GenericNumTraits<>::ReadCost, evaluator<>::Alignment, size_of_xpr_at_compile_time<>::ret, functor_traits<>::PacketAccess, has_ReturnType<>::value, is_lvalue<>::value "aos/macros.h" // for DISALLOW_COPY_AND_ASSIGN The full include-list for aos/util/trapezoid_profile.cc: "aos/util/trapezoid_profile.h" <math.h> // for sqrt <algorithm> // for min <cstdlib> // for abs <ostream> // for operator<< "aos/time/time.h" // for DurationInSeconds "glog/logging.h" // for GetReferenceableValue, Check_GEImpl, Check_GTImpl, CHECK_GE, CHECK_GT, COMPACT_GOOGLE_LOG_FATAL, LOG, LogMessageFatal The full include-list for aos/util/bitpacking.h: <stddef.h> // for size_t <stdint.h> // for uint32_t, uint8_t, UINT32_C <algorithm> // for min, max <cassert> // for assert <type_traits> // for enable_if, is_unsigned "absl/types/span.h" // for Span The full include-list for aos/util/bitpacking_test.cc: "aos/util/bitpacking.h" <array> // for array <cstdint> // for uint8_t, uint16_t, uint64_t, UINT64_C <memory> // for allocator "gtest/gtest.h" // for EXPECT_EQ, Message, TestPartResult, Test, TestInfo, TEST The full include-list for aos/util/config_validator_lib.h: "aos/configuration.h" // for Configuration "aos/util/config_validator_config_generated.h" // for ConfigValidatorConfig The full include-list for aos/util/config_validator_lib_test.cc: "aos/util/config_validator_lib.h" <memory> // for allocator "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/json_to_flatbuffer.h" // for JsonToFlatbuffer "aos/testing/path.h" // for ArtifactPath "gtest/gtest-spi.h" "gtest/gtest-spi.h" "gtest/gtest.h" // for Test, TestInfo, TEST, EXPECT_FATAL_FAILURE, DeathTest, EXPECT_NONFATAL_FAILURE, EXPECT_DEATH, Message, TestPartResult The full include-list for aos/util/config_validator_lib.h: "aos/configuration.h" // for Configuration "aos/util/config_validator_config_generated.h" // for ConfigValidatorConfig The full include-list for aos/util/config_validator_lib.cc: "aos/util/config_validator_lib.h" <algorithm> // for max <chrono> // for seconds <cstdlib> // for exit, EXIT_SUCCESS, size_t <initializer_list> // for initializer_list <map> // for map, operator==, _Rb_tree_const_iterator, _Rb_tree_iterator <memory> // for unique_ptr <ostream> // for operator<<, basic_ostream <set> // for set <string> // for char_traits, operator<<, string, operator+, operator<=> <string_view> // for operator<<, operator== <utility> // for pair, make_pair <vector> // for vector "aos/events/event_loop.h" // for EventLoop, RawFetcher, RawSender, RawFetcher::Fetch, RawSender::Send "aos/events/logging/log_reader.h" // for LogReader "aos/events/logging/logfile_sorting.h" // for FindLogs, SortParts "aos/events/logging/logfile_utils.h" // for MaybeNodeName "aos/events/simulated_event_loop.h" // for SimulatedEventLoopFactory "aos/flatbuffers/builder.h" // for Builder "aos/flatbuffers/static_vector.h" // for String, Vector "aos/json_to_flatbuffer.h" // for FlatbufferToJson, JsonToFlatbuffer "aos/network/remote_message_generated.h" // for RemoteMessage "aos/network/timestamp_channel.h" // for ChannelTimestampFinder "aos/testing/tmpdir.h" // for TestTmpDir "aos/util/config_validator_config_static.h" // for LoggerNodeSetValidationStatic, ConfigValidatorConfigStatic, LoggingConfigValidationStatic "aos/util/file.h" // for UnlinkRecursive "aos/util/simulation_logger.h" // for LoggerState, MakeLoggersForAllNodes, MakeLoggersForNodes "flatbuffers/buffer.h" // for Offset "flatbuffers/detached_buffer.h" // for DetachedBuffer "flatbuffers/string.h" // for String "flatbuffers/vector.h" // for Vector, VectorIterator "gflags/gflags_declare.h" // for DECLARE_bool "glog/logging.h" // for CHECK, COMPACT_GOOGLE_LOG_FATAL, COMPACT_GOOGLE_LOG_WARNING, LOG, LogMessage, LogMessageFatal, CheckNotNull, CHECK_NOTNULL "gtest/gtest.h" // for AssertionResult, Message, TestPartResult, ASSERT_TRUE, DeathTest, ExitedWithCode, SCOPED_TRACE, ASSERT_EXIT, EXPECT_TRUE, FAIL The full include-list for aos/util/phased_loop.h: <chrono> // for operator- <optional> // for nullopt, optional "aos/time/time.h" // for monotonic_clock, sleep_until The full include-list for aos/util/phased_loop_test.cc: "aos/util/phased_loop.h" <memory> // for allocator <ratio> // for ratio "aos/time/time.h" // for monotonic_clock "gtest/gtest.h" // for Message, TestPartResult, EXPECT_EQ, TestInfo, TEST_F, DeathTest, EXPECT_DEATH, ASSERT_EQ, Test The full include-list for aos/util/generate_test_log.cc: <chrono> // for seconds <memory> // for unique_ptr "aos/configuration.h" // for ReadConfig, Configuration "aos/events/event_loop.h" // for EventLoop "aos/events/logging/log_writer.h" // for Logger "aos/events/ping_lib.h" // for Ping "aos/events/pong_lib.h" // for Pong "aos/events/simulated_event_loop.h" // for SimulatedEventLoopFactory "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/init.h" // for InitGoogle "aos/testing/path.h" // for ArtifactPath "gflags/gflags.h" // for DEFINE_string The full include-list for aos/util/config_validator.cc: <memory> // for allocator "aos/configuration.h" // for ReadConfig, Configuration "aos/flatbuffers.h" // for FlatbufferDetachedBuffer "aos/json_to_flatbuffer.h" // for JsonToFlatbuffer "aos/util/config_validator_config_generated.h" // for ConfigValidatorConfig "aos/util/config_validator_lib.h" // for ConfigIsValid "gflags/gflags.h" // for DEFINE_string "gtest/gtest.h" // for Test, AssertionResult, TestInfo, ASSERT_TRUE, Message, TEST, TestPartResult Signed-off-by: Stephan Pleines <pleines.stephan@gmail.com> Change-Id: I29dc3f73f60642bee8bcc3ff3d6bd36558f12123
This is FRC Team 971's main code repository. There are README*
files throughout the source tree documenting specifics for their respective folders.
All development of AOS is done on our gerrit instance at https://software.frc971.org/gerrit with github being a read-only mirror. We are happy to add external contributors. If you are interested, reach out to Austin Schuh or Stephan Massalt and we will help you get access. In case of disputes over if a patch should be taken or not, Austin has final say.
Submissions must be made under the terms of the following Developer Certificate of Origin.
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
To do this, add the following to your commit message. Gerrit will enforce that all commits have been signed off.
Signed-off-by: Random J Developer <random@developer.example.org>
Git has support for adding Signed-off-by lines by using git commit -s
, or you can setup a git commit hook to automatically sign off your commits. Stack Overflow has instructions for how to do this if you are interested.
The main central location for our code is our Gerrit server at https://software.frc971.org/gerrit. If you are on a platform not compatible with our codebase follow the instructions here to set up access to the build server. To download a copy of the 971 code on your computer, follow these steps:
#coding
channel in slack.ssh-keygen -t ed25519
. This will create a public/private key pair-- the default location for your public key will be ~/.ssh/id_ed25519.pub
Settings->SSH Keys
and paste your public key into the New SSH Key
text box and clicking on ADD NEW SSH KEY
git
: sudo apt install git
clone with commit-msg hook
commandclone with commit-msg hook
will save you trouble later.To learn more about git, open a terminal and run man git
, or see git(1) (especially the NOTES section).
The instructions below assume you have the following:
x86\_64 GNU/Linux
system (e.g., Ubuntu 20.04), but that's not at all well-tested.vim
, emacs
ssh
into target CPU's like the roborio and Raspberry PiWe use Bazel to build the code. Bazel has extensive docs, including a nice build encyclopedia reference, and does a great job with fast, correct incremental rebuilds.
There are a couple options for building code that are given here-- setting up either your own computer, or using the frc971 build server.
Install any Bazel version:
apt-cache search bazel
or just try sudo apt install bazel
apt-key
instead of gnupg
in setting up the key:sudo apt install curl curl -fsSL https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel
Install the required packages:
sudo apt-get update sudo apt-get install python
Change settings to allow Bazel's sandboxing to work-- follow the directions in doc/frc971.conf
. For example, the commands to do this would be:
sudo cp doc/frc971.conf /etc/sysctl.d/
sudo sysctl --system
In order to run certain tests, you need to give yourself permissions--follow the "Set up real-time niceties" section of aos/events/README.md.
In order to use the build server, you'll first need to get ssh access set up. (NOTE: you don't need to do any of the other setup steps done for your own computer, since things like bazel
, python
, etc. are already installed on the build server)
# In windows: # Important use Powershell! cd ~/.ssh ssh-keygen -t ed25519 -f id_971_ed25519 chmod 600 id_971_ed25519
# In Linux and MacOS: cd ~ ssh-keygen -t ed25519 -f ~/.ssh/id_971_ed25519 chmod 600 ./.ssh/id_971_ed25519
#coding
channel in slack.id_971_ed25519.pub
cat ~/.ssh/id_971_ed25519.pub # This output is your public SSH key for the request form.
ssh REPLACE_WITH_YOUR_USERNAME@build.frc971.org -p 2222 -i ~/.ssh/id_971_ed25519
exit
command and then SSH tunnel.ssh REPLACE_WITH_YOUR_USERNAME@build.frc971.org -p 2222 -i ~/.ssh/id_971_ed25519 -L 9971:127.0.0.1:3389
127.0.0.1:9971
for the computer name, and use your gerrit username. Once you get connected, accept the server certificate and then enter your password that you gave Stephan. (It's either something unique or your gerrit pwd) Then select the Default panel config. You can exit the Remote Desktop if you are good w/ the raw cmd line interface. And for future logins all you have to do is tunnel and then login using the app. Now if you have a graphical application that you are developing (e.g., spline UI), then you have to run the build command in the Remote Desktop application.git
. To do this, run the following command, replacing <YOUR EMAIL>
with the email that you are using for Gerrit:git config --global user.email "<YOUR EMAIL>"
If there are any questions, post to the #coding Slack channel so that other people who may reach the same issue can refer back to that.
bazel test //... bazel build --config=roborio -c opt //...
# For the roborio: bazel build --config=roborio -c opt //y2020/...
# For the raspberry pi: bazel build --config=armv7 -c opt //y2020/...
bazel run -c opt //frc971/config:setup_roborio -- roboRIO-XXX-frc.local
# For the roborio bazel run --config=roborio -c opt //y2020:download_stripped -- roboRIO-971-frc.local
This assumes the roborio is reachable at roboRIO-971-frc.local
. If that does not work, you can try with a static IP address like 10.9.71.2
(see troubleshooting below)
# For the raspberry pi's bazel run --config=armv7 -c opt //y2020:pi_download_stripped -- 10.9.71.101
NOTE:
download_stripped
(or pi_download_stripped
) targets. These will rsync only the changed files, and so are pretty efficient.//y2020/vision:calibration
) for the pi (armv7
), run:bazel run --config=armv7 -c opt //y2020/vision:calibration_strippedYou will then need to manually copy the resulting file over to the robot.
We want all code to at least have a second person look it over before it gets merged into the master
branch. Gerrit has extensive documentation on starting reviews. There is also a good intro User Guide and an intro to working with Gerrit and Gerrit workflows
TL;DR: Make and commit your changes, do git push origin HEAD:refs/for/master
, and then click on the provided link to add reviewers. If you just upload a change without adding any reviewers, it might sit around for a long time before anybody else notices it.
git-review can make the upload process simpler.
These aren't strictly necessary to build the code, but Michael found the additional tools provided by these packages useful to install when working with the code on May 13, 2018.
# Get some useful packages including git and subversion. apt-get update apt-get install git git-gui vim-gtk3 apt-get install vim-doc git-doc exim4-doc-html yapf apt-get install bazel clang-format apt-get install python avahi-daemon # Install apt-file so that packages can be searched apt-get install apt-file apt-file update # Install sysstat so that you can tell how many resources are being used during # the compile. apt-get install sysstat # iostat is used to observe how hard the disk is being worked and other # performance metrics. iostat -dx 1 # gitg is a graphical user interface for git. I find it useful for # understanding the revision history of the repository and viewing # log messages and changes. apt-get install gitg # Also may want to install `buildifier` for formatting BUILD files
It is also handy to alias logins to the raspberry pi's by adding lines like this to your ~/.ssh/config file:
Host pi-7971-2 User pi ForwardAgent yes HostName 10.79.71.102 StrictHostKeyChecking no
or, for the roborio:
Host roborio-971 User admin HostName 10.9.71.2 StrictHostKeyChecking no
This allows you to use the alias to ping
, ssh
, or run commands like:
# Download code to robot #7971's raspberry pi #2 bazel run --config=armv7 -c opt //y2020:download_stripped -- pi-7971-2
Currently (as of 2020.02.26), top tends to produce misleading statistics. As such, you can get more useful information about CPU usage by using kernel traces. Sample usage:
# Note that you will need to install the trace-cmd package on the roborio. # This may be not be a trivial task. # Start the trace trace-cmd start -e sched_switch -e workqueue # Stop the trace trace-cmd stop # Save the trace to trace.dat trace-cmd extract
You can then scp the trace.dat
file to your computer and run kernelshark trace.dat
(may require installing the kernelshark
apt package).
If the roboRIO has been configued to use a static IP address like 10.9.71.2, set the laptop to have an IP address on the 10.9.71.x subnet with a netmask of 255.0.0.0. The ".x" is different than the .2 for the roboRIO or any other device on the network. The driver station uses .5 or .6 so avoid those. The radio uses .1 or .50 so avoid those too. A good choice might be in the 90-99 range. If you are at the school, disconnect from the student wireless network or try setting your netmask to 255.255.255.0 if you want to be on both networks. The student wireless network is on a 10.?.?.? subnet which can cause problems with connecting to the robot.
If running Bazel on the download_stripped
target does not work for the IP address you're using for the roborio or the raspberry pi, it probably means that the robot and laptop are on different subnets. They need to be on the same subnet for the laptop to connect to the robot. Connecting can be confirmed by using ping.
ping roboRIO-971-frc.local
or
ping 10.9.71.2
If this does not work, perhaps the roboRIO has not been configured to have a static IP address. Use a USB cable to connect from a Windows laptop to the roboRIO and use a web browser (Chrome is preferred, IE/Edge is not-- see this technical note) to configure the roboRIO to have a static IP address of 10.9.71.2. Browse to http://roborio-971-frc.local or http://172.22.11.2. Click on the "Ethernet" icon on the left, select "Static" for the "Configure IPv4 Address" option. Set the "IPv4 Address" to 10.9.71.2. Set the "Subnet Mask" to "255.0.0.0". Finally click on "Save" at the bottom of the screen. If you have trouble using an Ethernet cable, try using a USB cable (USB A->B).
Another option is to configure the laptop to have a link-local connection by using the "Network Settings" GUI. The laptop will then be on the same subnet in the address range of 169.254.0.0 to 169.254.255.255. James thinks this will only work over Ethernet (i.e., not USB; he is not sure what will happen if you attempt this over USB), and if the robot does not have a static IP address set and there is no DHCP server assigning an IP address to the roboRIO. James says to also note that this implies that the roboRIO will also have a 169.254.. IP addresss, and that the only simple way to figure it out is to use mDNS.
You can run bazel run //tools:gen_rust_project
to generate a rust-project.json file which rust-analyzer will pick up. You will need to execute this rule periodically as it will be outdated whenever the BUILD files change.
Note that there's currently no way to tell rust-analyzer how to compile the code, so while it will give you completion support, go to definition, and other niceties, it won't show compilation errors or warnings at this point.
TODOs:
apt install libsigsegv2
, but this should be temporary