moved things to places that make more sense
diff --git a/aos/common/common.gyp b/aos/common/common.gyp
index d6bb27a..702a21f 100644
--- a/aos/common/common.gyp
+++ b/aos/common/common.gyp
@@ -180,8 +180,8 @@
'control_loop_queues',
'<(AOS)/common/logging/logging.gyp:queue_logging',
'<(AOS)/common/util/util.gyp:log_interval',
- '<(DEPTH)/bbb_cape/src/bbb/bbb.gyp:sensor_generation',
- '<(DEPTH)/frc971/queues/queues.gyp:output_check',
+ '<(AOS)/common/controls/controls.gyp:sensor_generation',
+ '<(AOS)/common/controls/controls.gyp:output_check',
],
'export_dependent_settings': [
'<(AOS)/common/messages/messages.gyp:robot_state',
@@ -191,8 +191,8 @@
'control_loop_queues',
'<(AOS)/common/logging/logging.gyp:queue_logging',
'<(AOS)/common/util/util.gyp:log_interval',
- '<(DEPTH)/bbb_cape/src/bbb/bbb.gyp:sensor_generation',
- '<(DEPTH)/frc971/queues/queues.gyp:output_check',
+ '<(AOS)/common/controls/controls.gyp:sensor_generation',
+ '<(AOS)/common/controls/controls.gyp:output_check',
],
},
{
diff --git a/aos/common/controls/control_loop-tmpl.h b/aos/common/controls/control_loop-tmpl.h
index 404425a..ba26c68 100644
--- a/aos/common/controls/control_loop-tmpl.h
+++ b/aos/common/controls/control_loop-tmpl.h
@@ -4,12 +4,11 @@
#include "aos/common/messages/robot_state.q.h"
#include "aos/common/logging/queue_logging.h"
#include "aos/common/util/phased_loop.h"
-
-#include "bbb/sensor_generation.q.h"
-#include "frc971/queues/output_check.q.h"
+#include "aos/common/controls/sensor_generation.q.h"
+#include "aos/common/controls/output_check.q.h"
namespace aos {
-namespace control_loops {
+namespace controls {
// TODO(aschuh): Tests.
@@ -51,20 +50,20 @@
}
}
- ::bbb::sensor_generation.FetchLatest();
- if (::bbb::sensor_generation.get() == nullptr) {
+ sensor_generation.FetchLatest();
+ if (sensor_generation.get() == nullptr) {
LOG_INTERVAL(no_sensor_generation_);
ZeroOutputs();
return;
}
if (!has_sensor_reset_counters_ ||
- ::bbb::sensor_generation->reader_pid != reader_pid_ ||
- ::bbb::sensor_generation->cape_resets != cape_resets_) {
+ sensor_generation->reader_pid != reader_pid_ ||
+ sensor_generation->cape_resets != cape_resets_) {
LOG_STRUCT(INFO, "new sensor_generation message",
- *::bbb::sensor_generation.get());
+ *sensor_generation.get());
- reader_pid_ = ::bbb::sensor_generation->reader_pid;
- cape_resets_ = ::bbb::sensor_generation->cape_resets;
+ reader_pid_ = sensor_generation->reader_pid;
+ cape_resets_ = sensor_generation->cape_resets;
has_sensor_reset_counters_ = true;
reset_ = true;
}
@@ -121,13 +120,14 @@
}
}
- ::frc971::output_check_received.FetchLatest();
+ ::aos::controls::output_check_received.FetchLatest();
// True if we're enabled but the motors aren't working.
// The 100ms is the result of disabling the robot while it's putting out a lot
// of power and looking at the time delay between the last PWM pulse and the
// battery voltage coming back up.
- const bool motors_off = !::frc971::output_check_received.get() ||
- !::frc971::output_check_received.IsNewerThanMS(100);
+ const bool motors_off =
+ !::aos::controls::output_check_received.get() ||
+ !::aos::controls::output_check_received.IsNewerThanMS(100);
motors_off_log_.Print();
if (motors_off) {
if (!::aos::robot_state.get() || ::aos::robot_state->enabled) {
@@ -172,5 +172,5 @@
}
}
-} // namespace control_loops
+} // namespace controls
} // namespace aos
diff --git a/aos/common/controls/control_loop.cc b/aos/common/controls/control_loop.cc
index 11d7a47..72201bf 100644
--- a/aos/common/controls/control_loop.cc
+++ b/aos/common/controls/control_loop.cc
@@ -1,7 +1,7 @@
#include "aos/common/controls/control_loop.h"
namespace aos {
-namespace control_loops {
+namespace controls {
time::Time NextLoopTime(time::Time start) {
return (start / static_cast<int32_t>(kLoopFrequency.ToNSec())) *
@@ -9,5 +9,5 @@
kLoopFrequency;
}
-} // namespace control_loops
+} // namespace controls
} // namespace aos
diff --git a/aos/common/controls/control_loop.h b/aos/common/controls/control_loop.h
index a79f1e6..76c06e7 100644
--- a/aos/common/controls/control_loop.h
+++ b/aos/common/controls/control_loop.h
@@ -9,7 +9,7 @@
#include "aos/common/util/log_interval.h"
namespace aos {
-namespace control_loops {
+namespace controls {
// Interface to describe runnable jobs.
class Runnable {
@@ -179,7 +179,7 @@
SimpleLogInterval(kStaleLogInterval, WARNING, "motors disabled");
};
-} // namespace control_loops
+} // namespace controls
} // namespace aos
#include "aos/common/controls/control_loop-tmpl.h" // IWYU pragma: export
diff --git a/aos/common/controls/controls.gyp b/aos/common/controls/controls.gyp
index 0551fe3..1f5e76f 100644
--- a/aos/common/controls/controls.gyp
+++ b/aos/common/controls/controls.gyp
@@ -15,5 +15,27 @@
'<(EXTERNALS):libcdd',
],
},
+ {
+ 'target_name': 'sensor_generation',
+ 'type': 'static_library',
+ 'sources': [
+ 'sensor_generation.q',
+ ],
+ 'variables': {
+ 'header_path': 'aos/common/controls',
+ },
+ 'includes': ['../../../aos/build/queues.gypi'],
+ },
+ {
+ 'target_name': 'output_check',
+ 'type': 'static_library',
+ 'sources': [
+ 'output_check.q',
+ ],
+ 'variables': {
+ 'header_path': 'aos/common/controls',
+ },
+ 'includes': ['../../../aos/build/queues.gypi'],
+ },
],
}
diff --git a/frc971/queues/output_check.q b/aos/common/controls/output_check.q
similarity index 69%
rename from frc971/queues/output_check.q
rename to aos/common/controls/output_check.q
index 11b3497..76f5cd7 100644
--- a/frc971/queues/output_check.q
+++ b/aos/common/controls/output_check.q
@@ -1,4 +1,4 @@
-package frc971;
+package aos.controls;
message OutputCheck {
// The 1-255 sent to the FPGA.
@@ -11,4 +11,6 @@
// The sent timestamp of the message is when the value was sent.
queue OutputCheck output_check_sent;
+// Each message here represents a value that was received by the sensor.
+// The sent timestamp of the message is when it was received.
queue OutputCheck output_check_received;
diff --git a/bbb_cape/src/bbb/sensor_generation.q b/aos/common/controls/sensor_generation.q
similarity index 95%
rename from bbb_cape/src/bbb/sensor_generation.q
rename to aos/common/controls/sensor_generation.q
index a121999..50e17e3 100644
--- a/bbb_cape/src/bbb/sensor_generation.q
+++ b/aos/common/controls/sensor_generation.q
@@ -1,4 +1,4 @@
-package bbb;
+package aos.controls;
// Each different set of values here represents a different set of sensor
// values (ie different encoder zeros etc).
diff --git a/bbb_cape/src/bbb/bbb.gyp b/bbb_cape/src/bbb/bbb.gyp
index 5f5b590..e154cef 100644
--- a/bbb_cape/src/bbb/bbb.gyp
+++ b/bbb_cape/src/bbb/bbb.gyp
@@ -100,17 +100,6 @@
],
},
{
- 'target_name': 'sensor_generation',
- 'type': 'static_library',
- 'sources': [
- 'sensor_generation.q',
- ],
- 'variables': {
- 'header_path': 'bbb',
- },
- 'includes': ['../../../aos/build/queues.gypi'],
- },
- {
'target_name': 'packet_finder',
'type': 'static_library',
'sources': [
@@ -183,7 +172,7 @@
'<(AOS)/common/common.gyp:time',
'hex_byte_reader',
'crc',
- 'sensor_generation',
+ '<(AOS)/common/controls/controls.gyp:sensor_generation',
'<(AOS)/linux_code/linux_code.gyp:configuration',
'<(AOS)/common/util/util.gyp:log_interval',
],
diff --git a/bbb_cape/src/bbb/sensor_reader.cc b/bbb_cape/src/bbb/sensor_reader.cc
index c6d6521..b65df89 100644
--- a/bbb_cape/src/bbb/sensor_reader.cc
+++ b/bbb_cape/src/bbb/sensor_reader.cc
@@ -6,8 +6,8 @@
#include <stdint.h>
#include "aos/linux_code/configuration.h"
+#include "aos/common/controls/sensor_generation.q.h"
-#include "bbb/sensor_generation.q.h"
#include "bbb/crc.h"
#include "bbb/hex_byte_reader.h"
@@ -21,8 +21,8 @@
size_t i = 0;
uint8_t buffer[1024];
while (i < kSkipBytes) {
- ssize_t read =
- reader.ReadBytes(buffer, ::std::min<size_t>(sizeof(buffer), kSkipBytes - i));
+ ssize_t read = reader.ReadBytes(
+ buffer, ::std::min<size_t>(sizeof(buffer), kSkipBytes - i));
if (read < 0) {
LOG(FATAL, "error skipping bytes before actual data\n");
}
@@ -40,8 +40,9 @@
manager_(),
packet_finder_(manager_.uart(), DATA_STRUCT_SEND_SIZE - 4),
expected_checksum_(ReadChecksum(hex_filename_)) {
- static_assert(sizeof(SensorGeneration::reader_pid) >= sizeof(pid_t),
- "pid_t is really big?");
+ static_assert(
+ sizeof(::aos::controls::SensorGeneration::reader_pid) >= sizeof(pid_t),
+ "pid_t is really big?");
ResetHappened();
}
@@ -93,7 +94,7 @@
}
void SensorReader::ResetHappened() {
- sensor_generation.MakeWithBuilder().reader_pid(getpid())
+ ::aos::controls::sensor_generation.MakeWithBuilder().reader_pid(getpid())
.cape_resets(cape_resets_++).Send();
last_received_time_ = ::aos::time::Time::Now();
last_cape_timestamp_ = 0;
diff --git a/frc971/control_loops/claw/claw.cc b/frc971/control_loops/claw/claw.cc
index ded45bf..c38fd23 100644
--- a/frc971/control_loops/claw/claw.cc
+++ b/frc971/control_loops/claw/claw.cc
@@ -342,7 +342,7 @@
}
ClawMotor::ClawMotor(control_loops::ClawGroup *my_claw)
- : aos::control_loops::ControlLoop<control_loops::ClawGroup, true, true,
+ : aos::controls::ControlLoop<control_loops::ClawGroup, true, true,
false>(my_claw),
has_top_claw_goal_(false),
top_claw_goal_(0.0),
diff --git a/frc971/control_loops/claw/claw.h b/frc971/control_loops/claw/claw.h
index 35bbf0f..13d911e 100644
--- a/frc971/control_loops/claw/claw.h
+++ b/frc971/control_loops/claw/claw.h
@@ -184,7 +184,7 @@
const constants::Values::Claws::Claw &claw_values);
};
-class ClawMotor : public aos::control_loops::ControlLoop<
+class ClawMotor : public aos::controls::ControlLoop<
control_loops::ClawGroup, true, true, false> {
public:
explicit ClawMotor(control_loops::ClawGroup *my_claw =
diff --git a/frc971/control_loops/claw/claw_lib_test.cc b/frc971/control_loops/claw/claw_lib_test.cc
index 61813bc..a385b93 100644
--- a/frc971/control_loops/claw/claw_lib_test.cc
+++ b/frc971/control_loops/claw/claw_lib_test.cc
@@ -279,8 +279,8 @@
// test.
::aos::robot_state.Clear();
SendDSPacket(true);
- ::bbb::sensor_generation.Clear();
- ::bbb::sensor_generation.MakeWithBuilder()
+ ::aos::controls::sensor_generation.Clear();
+ ::aos::controls::sensor_generation.MakeWithBuilder()
.reader_pid(254)
.cape_resets(5)
.Send();
@@ -310,7 +310,7 @@
virtual ~ClawTest() {
::aos::robot_state.Clear();
- ::bbb::sensor_generation.Clear();
+ ::aos::controls::sensor_generation.Clear();
::aos::time::Time::DisableMockTime();
}
};
diff --git a/frc971/control_loops/drivetrain/drivetrain.h b/frc971/control_loops/drivetrain/drivetrain.h
index 0130828..cba0e9a 100644
--- a/frc971/control_loops/drivetrain/drivetrain.h
+++ b/frc971/control_loops/drivetrain/drivetrain.h
@@ -13,13 +13,13 @@
namespace control_loops {
class DrivetrainLoop
- : public aos::control_loops::ControlLoop<control_loops::Drivetrain, true, false> {
+ : public aos::controls::ControlLoop<control_loops::Drivetrain, true, false> {
public:
// Constructs a control loop which can take a Drivetrain or defaults to the
// drivetrain at frc971::control_loops::drivetrain
explicit DrivetrainLoop(
control_loops::Drivetrain *my_drivetrain = &control_loops::drivetrain)
- : aos::control_loops::ControlLoop<control_loops::Drivetrain, true, false>(
+ : aos::controls::ControlLoop<control_loops::Drivetrain, true, false>(
my_drivetrain) {
::aos::controls::HPolytope<0>::Init();
}
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index a2567e4..2d510f6 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -129,8 +129,8 @@
// Flush the robot state queue so we can use clean shared memory for this
// test, also for the gyro.
::aos::robot_state.Clear();
- ::bbb::sensor_generation.Clear();
- ::bbb::sensor_generation.MakeWithBuilder()
+ ::aos::controls::sensor_generation.Clear();
+ ::aos::controls::sensor_generation.MakeWithBuilder()
.reader_pid(254)
.cape_resets(5)
.Send();
@@ -159,7 +159,7 @@
virtual ~DrivetrainTest() {
::aos::robot_state.Clear();
::frc971::sensors::gyro_reading.Clear();
- ::bbb::sensor_generation.Clear();
+ ::aos::controls::sensor_generation.Clear();
}
};
diff --git a/frc971/control_loops/shooter/shooter.cc b/frc971/control_loops/shooter/shooter.cc
index aabfca5..d8240db 100755
--- a/frc971/control_loops/shooter/shooter.cc
+++ b/frc971/control_loops/shooter/shooter.cc
@@ -104,7 +104,7 @@
}
ShooterMotor::ShooterMotor(control_loops::ShooterGroup *my_shooter)
- : aos::control_loops::ControlLoop<control_loops::ShooterGroup>(my_shooter),
+ : aos::controls::ControlLoop<control_loops::ShooterGroup>(my_shooter),
shooter_(MakeShooterLoop()),
state_(STATE_INITIALIZE),
loading_problem_end_time_(0, 0),
@@ -320,7 +320,7 @@
latch_piston_ = true;
}
if (output == nullptr) {
- load_timeout_ += ::aos::control_loops::kLoopFrequency;
+ load_timeout_ += ::aos::controls::kLoopFrequency;
}
// Go to 0, which should be the latch position, or trigger a hall effect
// on the way. If we don't see edges where we are supposed to, the
diff --git a/frc971/control_loops/shooter/shooter.h b/frc971/control_loops/shooter/shooter.h
index a909d40..1352c49 100755
--- a/frc971/control_loops/shooter/shooter.h
+++ b/frc971/control_loops/shooter/shooter.h
@@ -115,7 +115,7 @@
const Time kPrepareFireEndTime = Time::InMS(40);
class ShooterMotor
- : public aos::control_loops::ControlLoop<control_loops::ShooterGroup> {
+ : public aos::controls::ControlLoop<control_loops::ShooterGroup> {
public:
explicit ShooterMotor(control_loops::ShooterGroup *my_shooter =
&control_loops::shooter_queue_group);
diff --git a/frc971/control_loops/shooter/shooter_lib_test.cc b/frc971/control_loops/shooter/shooter_lib_test.cc
index 669e147..641885f 100755
--- a/frc971/control_loops/shooter/shooter_lib_test.cc
+++ b/frc971/control_loops/shooter/shooter_lib_test.cc
@@ -315,8 +315,8 @@
// test.
::aos::robot_state.Clear();
SendDSPacket(true);
- ::bbb::sensor_generation.Clear();
- ::bbb::sensor_generation.MakeWithBuilder()
+ ::aos::controls::sensor_generation.Clear();
+ ::aos::controls::sensor_generation.MakeWithBuilder()
.reader_pid(254)
.cape_resets(5)
.Send();
@@ -341,7 +341,7 @@
virtual ~ShooterTest() {
::aos::robot_state.Clear();
- ::bbb::sensor_generation.Clear();
+ ::aos::controls::sensor_generation.Clear();
::aos::time::Time::DisableMockTime();
}
};
diff --git a/frc971/input/input.gyp b/frc971/input/input.gyp
index b7204d4..43ebd67 100644
--- a/frc971/input/input.gyp
+++ b/frc971/input/input.gyp
@@ -43,7 +43,7 @@
'<(AOS)/common/logging/logging.gyp:queue_logging',
'<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_loop',
'<(DEPTH)/frc971/control_loops/shooter/shooter.gyp:shooter_loop',
- '<(DEPTH)/frc971/queues/queues.gyp:output_check',
+ '<(AOS)/common/controls/controls.gyp:output_check',
],
},
],
diff --git a/frc971/input/sensor_receiver.cc b/frc971/input/sensor_receiver.cc
index 3c16b39..a4f4f29 100644
--- a/frc971/input/sensor_receiver.cc
+++ b/frc971/input/sensor_receiver.cc
@@ -5,6 +5,7 @@
#include "aos/common/util/wrapping_counter.h"
#include "aos/common/time.h"
#include "aos/common/logging/queue_logging.h"
+#include "aos/common/controls/output_check.q.h"
#include "bbb/sensor_reader.h"
@@ -14,7 +15,6 @@
#include "frc971/queues/to_log.q.h"
#include "frc971/control_loops/shooter/shooter.q.h"
#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/queues/output_check.q.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846
@@ -182,7 +182,7 @@
}
if (data->main.output_check_pulse_length != 0) {
- auto message = ::frc971::output_check_received.MakeMessage();
+ auto message = ::aos::controls::output_check_received.MakeMessage();
// TODO(brians): Fix this math to match what the cRIO actually does.
// It's close but not quite right.
message->pulse_length =
diff --git a/frc971/output/motor_writer.cc b/frc971/output/motor_writer.cc
index fa3fe33..a81896f 100644
--- a/frc971/output/motor_writer.cc
+++ b/frc971/output/motor_writer.cc
@@ -8,11 +8,11 @@
#include "aos/common/util/log_interval.h"
#include "aos/common/time.h"
#include "aos/common/logging/queue_logging.h"
+#include "aos/common/controls/output_check.q.h"
#include "frc971/control_loops/drivetrain/drivetrain.q.h"
#include "frc971/control_loops/claw/claw.q.h"
#include "frc971/control_loops/shooter/shooter.q.h"
-#include "frc971/queues/output_check.q.h"
using ::aos::util::SimpleLogInterval;
@@ -95,7 +95,7 @@
}
{
- auto message = ::frc971::output_check_sent.MakeMessage();
+ auto message = ::aos::controls::output_check_sent.MakeMessage();
++output_check_;
if (output_check_ == 0) output_check_ = 1;
SetRawPWMOutput(10, output_check_);
diff --git a/frc971/output/output.gyp b/frc971/output/output.gyp
index de41943..d94e598 100644
--- a/frc971/output/output.gyp
+++ b/frc971/output/output.gyp
@@ -53,7 +53,7 @@
'<(AOS)/common/logging/logging.gyp:queue_logging',
'<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_loop',
'<(DEPTH)/frc971/control_loops/shooter/shooter.gyp:shooter_loop',
- '<(DEPTH)/frc971/queues/queues.gyp:output_check',
+ '<(AOS)/common/controls/controls.gyp:output_check',
],
},
],
diff --git a/frc971/queues/queues.gyp b/frc971/queues/queues.gyp
index d71be25..8af1f10 100644
--- a/frc971/queues/queues.gyp
+++ b/frc971/queues/queues.gyp
@@ -21,16 +21,5 @@
],
'includes': ['../../aos/build/queues.gypi'],
},
- {
- 'target_name': 'output_check',
- 'type': 'static_library',
- 'sources': [
- 'output_check.q',
- ],
- 'variables': {
- 'header_path': 'frc971/queues',
- },
- 'includes': ['../../aos/build/queues.gypi'],
- },
],
}